From e85ab165147c37b571ea67ce6f6ae9ae55a96070 Mon Sep 17 00:00:00 2001
From: xuruiqian <xu.ruiqian@icloud.com>
Date: Tue, 25 Feb 2025 12:14:10 +0800
Subject: [PATCH] initial
---
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RabbitConfig.java | 59
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/ercode.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemConfigService.java | 253
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/FileListData.java | 22
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterPaperRelationQueryObject.java | 148
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/store/basicInfo.js | 70
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberCode.java | 13
04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/ifc/IFCService.java | 90
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperCategoryService.java | 506
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderActiveExtend.java | 18
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/type.vue | 135
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-list-title/use-list-title.vue | 90
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMaster.java | 236
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionCategoryViewModel.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.xml | 862
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/RoleOption.java | 8
05-Test/02-Test Design/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/search/index.vue | 66
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMajorController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/svgIcon.vue | 73
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.xml | 409
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaper.java | 166
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordQueryObject.java | 137
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/pay/pay.vue | 174
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationDepartmentQueryObject.java | 207
06-Deployment/01-Manual/01-Draft/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtils.java | 187
04-Development/02-Code/bwf/com.farriver.bwf.web/pom.xml | 79
04-Development/01-Software Development Plan/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.xml | 599
04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/rbac/RBACService.java | 201
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClass.java | 295
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectKnowledgePointQueryObject.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-copyright/use-copyright.vue | 54
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganizationExample.java | 1943
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWallet.java | 106
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-solid-900.woff2 | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionsViewModel.java | 36
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterWriteViewModel.java | 146
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramAccessToken.java | 40
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryQueryObject.java | 408
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionRoleView.java | 73
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubject.java | 85
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-youshe.css | 6
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/SMSMessageConfig.java | 153
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActiveExample.java | 1654
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderHistoryExtend.java | 18
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfig.java | 95
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/loginlogo.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationGradeController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/HistoryOrder.vue | 587
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleViewModel.java | 86
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.xml | 322
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserModel.java | 236
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestNotification.vue | 99
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/product/index.vue | 92
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RestTemplateConfig.java | 27
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AppMenuButton.vue | 107
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategory.java | 95
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/security/login.vue | 362
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserRoleViewQueryObject.java | 83
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/plugins/svgBuilder.js | 74
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponHistoryQueryObject.java | 218
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/statistics.js | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductMasterViewModel.java | 257
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterRoleRelationViewModel.java | 116
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelation.java | 125
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMajor.vue | 823
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MySQLLimitPlugin.java | 114
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMailLogViewModel.java | 115
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponActiveViewModel.java | 217
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWriteViewModel.java | 127
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveController.java | 138
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductCategoryQueryObject.java | 87
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.xml | 430
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtil.java | 149
04-Development/02-Code/bwf/com.farriver.bwf.webui/package.json | 69
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveProductViewModel.java | 247
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterRoleRelationQueryObject.java | 139
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeValueViewModel.java | 106
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatSession.java | 22
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveProductService.java | 298
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.xml | 526
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/DashboardController.java | 23
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/task/VIPMasterPaperRelationCheckTask.java | 71
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/EnterpriseWeChatService.java | 53
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelationExample.java | 1224
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterViewModel.java | 237
03-Design/03-FDS/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectGradeRelationController.java | 86
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponseData.java | 31
04-Development/02-Code/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperCategoryViewModel.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeViewModel.java | 349
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMenuController.java | 59
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperCategoryController.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/VerificationCode.java | 112
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/masterdata.js | 18
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/GlobalErrorController.java | 32
00-Product Introduction/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiData.java | 77
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartProductController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserWeChatViewModel.java | 103
04-Development/04-Database/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.xml | 304
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeValueQueryObject.java | 107
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartController.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/favicon.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MapDataType.java | 8
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Login.vue | 551
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.xml | 267
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionGroup.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/index.js | 453
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/UUIDUtil.java | 91
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FlipDown.vue | 379
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivity.java | 136
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Notification.vue | 723
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectGradeRelationViewModel.java | 126
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectKnowledgePointController.java | 85
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrderActiveController.java | 39
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/axioshttp.js | 186
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierQueryObject.java | 258
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponActiveService.java | 315
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/security/SecurityController.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectKnowledgePointViewModel.java | 137
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/share.vue | 91
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterBenefit.vue | 15
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationGrade.vue | 675
03-Design/02-Detail Design/03-Prototype Design/README.md | 5
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-hot-goods/use-hot-goods.vue | 0
03-Design/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/index.vue | 132
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/svg/profile.svg | 12
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/Alert.java | 31
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/ifc/IFCController.java | 139
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Config.vue | 952
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/OperationViewModel.java | 50
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/ExportBOLViewModel.java | 25
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Menu.vue | 650
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperExample.java | 1364
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaGZHConfig.java | 271
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FileUtil.java | 556
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQuestionMasterRelationQueryObject.java | 167
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MasterDataStatus.vue | 54
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/ShoppingCartExtend.java | 18
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperQuestionList.vue | 574
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionRoleRelationViewModel.java | 116
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuWriteViewModel.java | 176
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/zh_cn.json | 775
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigForGZHModel.java | 67
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderReceiverController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/DBTypeOption.java | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionGradeSubjectsViewModel.java | 28
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CustomCacheResolver.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartProductService.java | 274
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/DFSClientConfig.java | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.xml | 508
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-awesome-all.css | 7937 ++
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterPaperRelationService.java | 318
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebMvcConfiguration.java | 35
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_UserRole.java | 73
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductMasterQueryObject.java | 258
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubjectKnowledgePoint.vue | 696
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelationExample.java | 1103
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.xml | 420
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/my.vue | 162
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/config.js | 11
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/main.js | 28
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/dashboardprogressExt.vue | 31
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionRoleRelationQueryObject.java | 139
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadExportTemplate.vue | 154
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterCategory.vue | 15
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/common.js | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponActiveQueryObject.java | 218
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/PortalOauthController.java | 89
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajor.java | 155
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/pom.xml | 75
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroup.java | 85
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogCommentStatusOptions.java | 10
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiverExample.java | 1323
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-brands-400.woff2 | 0
05-Test/01-Test Plan/README.md | 0
06-Deployment/01-Manual/04-ToCustomer/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/statistics/DashboardDataViewModel.java | 34
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PhoneFormatCheckUtils.java | 50
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.xml | 398
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemAuditTrailController.java | 60
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/product/ProductService.java | 69
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderTypeOptions.java | 7
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemConfigController.java | 59
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/bootstrap.yml | 32
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrderDetail.vue | 534
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlDeleteByExamplePlugin.java | 62
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePoint.java | 115
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/aop/AuditTrailAop.java | 53
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterOptionQueryObject.java | 87
README.md | 2
06-Deployment/01-Manual/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderReceiverService.java | 235
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/shims-uni.d.ts | 10
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PdfFontUtil.java | 77
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/FRLog.java | 70
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterOrganizationQueryObject.java | 247
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthController.java | 309
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/JwtConfig.java | 170
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart.png | 0
03-Design/02-Detail Design/01-Databse Design/01-Draft/fr_oqb.sql | 1854
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/KeyValue.java | 27
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/License.vue | 216
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterExample.java | 1834
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenuExample.java | 1503
03-Design/03-FDS/01-Draft/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/AuthBean.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/element-variables.scss | 236
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchTaskQueryObject.java | 223
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleQueryObject.java | 77
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/category/index.vue | 301
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartQueryObject.java | 138
02-Requirement/Customer Input/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterService.java | 707
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileUploadExt.vue | 155
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchNotificationViewModel.java | 230
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/open.js | 3
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserInfo.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationGradeQueryObject.java | 267
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryViewModel.java | 418
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordHistoryViewModel.java | 165
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/OperationResult.java | 8
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/404.vue | 51
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryProductService.java | 283
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/VIPMasterPaperRelationStatusOptions.java | 7
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiPageData.java | 113
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatQuestionController.java | 99
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterService.java | 326
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationClass.vue | 517
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/vite.config.js | 8
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajorExample.java | 1313
04-Development/02-Code/bwf/com.farriver.bwf.web/src/test/java/com/farriver/bwf/WebApplicationTests.java | 16
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/EntryController.java | 12
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryProductController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationViewModel.java | 229
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeKeyQueryObject.java | 67
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routeList.js | 40
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActive.java | 216
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/security/login.vue | 326
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalTemplateQueryObject.java | 147
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistory.java | 216
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserInfoModel.java | 234
03-Design/02-Detail Design/01-Databse Design/01-Draft/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatProductController.java | 74
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleView.java | 73
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAuditTrailService.java | 424
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeOrganizationPositionRelationQueryObject.java | 139
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductRelationViewModel.java | 126
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/ApplicationMasterViewModel.java | 115
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/TokenInterceptor.java | 106
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterRoleRelationViewModel.java | 116
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-v4compatibility.woff2 | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectGradeRelationQueryObject.java | 127
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProductExample.java | 1884
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveService.java | 812
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProduct.java | 246
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.java | 40
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveProductQueryObject.java | 248
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductsViewModel.java | 26
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletRechargeViewModel.java | 27
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMajorViewModel.java | 156
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponActiveController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePointExample.java | 1033
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionGroupQueryObject.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/LangConstants.java | 63
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Navigation.vue | 377
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterQueryObject.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveProductController.java | 66
07-QA/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/CustomerStatusOptions.java | 6
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrder.vue | 588
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/network.js | 115
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationDepartmentService.java | 308
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/ercode.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/validator.js | 46
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaNativeConfig.java | 271
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleViewModel.java | 179
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.java | 36
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatTokenModel.java | 40
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Role.java | 85
03-Design/03-FDS/03-Submitted/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.webui/index.html | 70
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterPermissionGroupRelationQueryObject.java | 139
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionMaster.vue | 1067
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermission.java | 133
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/uni.scss | 76
.gitignore | 67
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.xml | 322
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleGroupViewModel.java | 26
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/EnterpriseWeChatController.java | 37
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestApproval.vue | 122
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/activity/index.vue | 159
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponse.java | 23
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-smscode/use-smscode.vue | 110
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/common.js | 9
03-Design/03-FDS/04-ToCustomer/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/ExternalProfile.java | 25
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Log.vue | 201
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigModel.java | 76
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/i18n.js | 116
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperCategory.vue | 697
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperService.java | 304
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/en_us.json | 775
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMailLogController.java | 54
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/svgIcon.vue | 81
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionWriteViewModel.java | 158
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatPayConfigViewModel.java | 49
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswerExample.java | 763
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/directive.js | 145
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/QueryObjectBase.java | 326
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalCategoryViewModel.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.service/pom.xml | 38
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMaster.vue | 837
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterExample.java | 1504
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductCategoryViewModel.java | 107
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PasswordViewModel.java | 77
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/card.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/JsapiTicket.java | 41
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/StatisticsDashboardDataQueryObject.java | 16
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderReceiverQueryObject.java | 157
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/iconfont/iconfont.css | 375
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/pay/pay.vue | 174
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/config.js | 17
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/card.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.xml | 649
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperViewModel.java | 168
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/NoGenerator.java | 18
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadImportTemplate.vue | 154
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchApprovalQueryObject.java | 213
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/lineprogressExt.vue | 47
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemAuditTrailViewModel.java | 135
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartService.java | 448
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserInfo.java | 22
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/package.json | 76
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationClassQueryObject.java | 297
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationClassService.java | 330
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/.gitignore | 5
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.xml | 414
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-empty/use-empty.vue | 109
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/wangEditorExt.vue | 123
01-Project Management/03-Report/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQueryObject.java | 158
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMasterService.java | 289
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminOauthController.java | 88
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/UserProfile.vue | 401
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/organization.js | 74
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderProductStatusOptions.java | 9
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProductExample.java | 1424
03-Design/01-Basic Design/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectGradeRelationService.java | 352
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/IndexController.java | 13
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterViewModel.java | 248
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenu.java | 185
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletViewModel.java | 107
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/ApplicationMasterQueryObject.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.java | 30
03-Design/01-Basic Design/系统概念设计.vsdx | 0
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiDataStatus.java | 8
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationGradeViewModel.java | 266
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/qrcode.js | 1201
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderReceiverViewModel.java | 156
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/application.yml | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/AuditTrail.vue | 658
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterOrganizationViewModel.java | 246
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.xml | 407
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/store/basicInfo.js | 104
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProduct.java | 246
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterOrganizationService.java | 349
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterQueryObject.java | 188
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/IgnoreExceptionCacheErrorHandler.java | 33
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterQueryObject.java | 238
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuViewModel.java | 209
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/index/index.vue | 288
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/option.vue | 181
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/myquestion.vue | 125
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/ListUtils.java | 77
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionCategoryService.java | 506
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/stem.vue | 72
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MailStatus.java | 8
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterAnswerViewModel.java | 86
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/NacosRegisterOnWar.java | 53
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/MailConstants.java | 12
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/shims-uni.d.ts | 10
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/system.js | 85
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.java | 33
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/manifest.json | 73
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/comment/MyCommentGenerator.java | 76
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleViewViewModel.java | 83
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrganizationController.java | 81
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.xml | 478
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Permission.java | 105
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramJSCode2Session.java | 49
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryExample.java | 2874
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganization.java | 245
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMasterViewModel.java | 176
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActive.java | 406
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMasterController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/DatabaseNamesPlugin.java | 153
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/setting.vue | 128
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/network.js | 115
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/SerialNumberGenerator.java | 27
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/StatusOperationViewModel.java | 50
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermissionRole.java | 73
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartProductViewModel.java | 187
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/shoppingcart/index.vue | 74
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/NotificationStatusOptions.java | 8
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/SystemNotificationStatusOptions.java | 8
04-Development/03-Build/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/package-lock.json | 13735 +++
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.xml | 321
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionCategoryQueryObject.java | 87
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/Extattr.java | 14
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemLogViewModel.java | 70
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadBOL.vue | 158
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryService.java | 522
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionViewModel.java | 125
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationWriteViewModel.java | 196
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/zhanku/站酷庆科黄油体.ttf | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotification.java | 155
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProductExample.java | 1884
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartViewModel.java | 148
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartExample.java | 1154
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterWalletQueryObject.java | 108
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategoryExample.java | 893
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductBrandQueryObject.java | 127
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.java | 30
10-SAT/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemPrintService.java | 44
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-mask/use-mask.vue | 76
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/answer.vue | 155
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/controlbar.vue | 158
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.xml | 332
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/use-qrcode.vue | 201
01-Project Management/01-Project Schedule/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/common.js | 7
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/User.java | 195
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminControllerBase.java | 61
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/nacos-logback.xml | 110
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/ordernumber.js | 14
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.xml | 353
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectViewModel.java | 116
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileImporter.vue | 113
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadSingleFile.vue | 151
03-Design/02-Detail Design/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordHistoryQueryObject.java | 137
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchTaskViewModel.java | 232
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/RoutingDataSource.java | 17
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierViewModel.java | 257
03-Design/02-Detail Design/04-Report Design/README.md | 5
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/youshe/YSHaoShenTi.ttf | 0
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceAop.java | 49
04-Development/02-Code/bwf/com.farriver.bwf.common/pom.xml | 18
01-Project Management/04-Product Quotation/README.md | 0
03-Design/03-FDS/02-Review/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistoryExample.java | 1654
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/security/SecurityService.java | 276
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPDepositActivityController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/MailSendLog.vue | 211
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPDepositActivityViewModel.java | 137
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/ServiceBase.java | 23
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponHistoryController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperQuestionMasterRelationService.java | 384
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperCategoryQueryObject.java | 87
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/UserStatusOptions.java | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotificationExample.java | 1223
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaMiniProgramConfig.java | 83
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/api.js | 79
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionCategoryController.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Workbench.vue | 354
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-totop/use-totop.vue | 84
06-Deployment/01-Manual/04-ToCustomer/~$PQ FDS R01 - ToCustomer.docx | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestTask.vue | 123
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/ordernumber.js | 14
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/logback-spring.xml | 59
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/open/OpenApiController.java | 14
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectStatusOptions.java | 21
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/exception/GlobalExceptionHandler.java | 28
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleWriteViewModel.java | 156
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.java | 33
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationQueryObject.java | 197
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWithPermissions.java | 15
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemAuditTrailQueryObject.java | 137
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/WeChatUserService.java | 214
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceConfig.java | 51
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemLogService.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.xml | 526
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserViewModel.java | 288
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionCategory.vue | 699
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/AuthBean.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMenuService.java | 416
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/AccountActivation.vue | 15
06-Deployment/01-Manual/02-Review/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.xml | 454
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchNotificationQueryObject.java | 221
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/sockjs.js | 6018 +
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/OrganizationGradeSubjectRelation.vue | 527
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/masterdataNavigator.js | 13
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.xml | 352
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CacheConfig.java | 102
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeOrganizationPositionRelationViewModel.java | 115
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterGroupRelationViewModel.java | 115
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/StatisticsDashboardService.java | 21
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLogExample.java | 1023
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectScheduleStatusOptions.java | 8
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemNotificationQueryObject.java | 157
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WechatChannels.java | 22
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiver.java | 155
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/svg/profile.svg | 12
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-header/use-header.vue | 80
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/EncryptUtil.java | 68
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/test/java/com/farriver/bwf/ApplicationTests.java | 13
03-Design/02-Detail Design/02-Workflow Design/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatQueryObject.java | 105
05-Test/03-Test Data/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/DashboardDataQueryObject.java | 16
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/Master.java | 5
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProduct.java | 176
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/stomp.js | 501
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/main.js | 120
04-Development/02-Code/bwf/com.farriver.bwf.webui/README.md | 3
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasic.java | 245
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterOptionViewModel.java | 86
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartment.java | 205
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/ActionType.java | 16
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionViewModel.java | 166
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/recharge.vue | 207
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadReport.vue | 154
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/ifc.js | 19
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOptionExample.java | 763
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperQuestionMasterRelationController.java | 87
08-SCM/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserIdModel.java | 43
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPDepositActivityService.java | 298
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages.json | 128
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SytemLog.java | 70
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatRawData.java | 67
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routedata/masterdata.js | 24
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category.png | 0
04-Development/06-Development Environment/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/common.js | 234
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswer.java | 85
04-Development/05-Publish/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierProductRelationQueryObject.java | 127
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Layout.vue | 961
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterWalletService.java | 301
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-regular-400.woff2 | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartmentExample.java | 1653
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterController.java | 66
03-Design/02-Detail Design/01-Databse Design/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberParam.java | 22
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/uni.scss | 169
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberResult.java | 31
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/question.vue | 62
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchApprovalViewModel.java | 252
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionMasterController.java | 83
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/order.js | 79
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemNotificationService.java | 254
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/authapi.js | 56
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayController.java | 98
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserQueryObject.java | 257
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMajorService.java | 295
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductBrandViewModel.java | 131
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaojsapi_ticket.java | 40
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMailLogService.java | 226
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterWithBLOBs.java | 43
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemConfigQueryObject.java | 97
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveExample.java | 2874
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClassExample.java | 2283
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateConverter.java | 79
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissions.java | 15
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.xml | 379
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMenuQueryObject.java | 167
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/index.css | 314
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/OnlineUserQueryObject.java | 227
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterViewModel.java | 149
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMailLogQueryObject.java | 117
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FastDFSController.java | 33
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRole.java | 75
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterQueryObject.java | 267
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemConfigViewModel.java | 95
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMaster.vue | 555
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/favicon.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterPaperRelationViewModel.java | 147
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/api.js | 55
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-number-box/use-number-box.vue | 210
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationDepartment.vue | 697
04-Development/02-Code/bwf/README.md | 17
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatLoginInfo.java | 67
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/common.js | 9
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.java | 36
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-zhanku.css | 6
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.xml | 527
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/setting.vue | 129
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPDepositActivityQueryObject.java | 128
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/QuestionPaperTypeOptions.java | 7
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/test.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/common.js | 29
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGrade.java | 265
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterWriteViewModel.java | 127
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FileService.java | 188
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/recharge.jpg | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterQueryObject.java | 147
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMaster.java | 186
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/shime-uni.d.ts | 6
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index_fill.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMaster.java | 175
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLog.java | 115
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/TransactionsOrderPay.java | 13
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionPermissionGroup.java | 75
02-Requirement/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasicWithRoles.java | 15
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterWalletController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/security.js | 53
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FileController.java | 56
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelation.java | 146
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionMasterRelationViewModel.java | 166
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FastJson2JsonRedisSerializer.java | 59
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpUtil.java | 287
01-Project Management/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelation.java | 165
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-popup/use-popup.vue | 303
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/vip.js | 94
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/recharge.vue | 207
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPDepositActivity.vue | 611
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/share.vue | 91
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MenuButton.vue | 121
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/.gitignore | 21
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/index.html | 20
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/question.js | 156
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlPagePlugin.java | 128
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterPermissionGroupRelationViewModel.java | 116
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping.png | 0
06-Deployment/01-Manual/03-Submitted/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAppAccessToken.java | 22
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeQueryObject.java | 337
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterGroupRelationQueryObject.java | 139
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogStatusOptions.java | 10
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/PaymentMethodOptions.java | 21
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectService.java | 270
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAProfessionalTitleQueryObject.java | 157
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAliyunSMSService.java | 103
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveViewModel.java | 418
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAccessToken.java | 49
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemNotificationViewModel.java | 155
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/wangEditorShow.vue | 69
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategoryExample.java | 893
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaMiniProgramConfig.java | 359
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages.json | 104
01-Project Management/02-MOM/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package.json | 76
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.xml | 379
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordViewModel.java | 165
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryProductQueryObject.java | 248
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveQueryObject.java | 408
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/.gitignore | 21
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionQueryObject.java | 147
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/App.vue | 18
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryProductViewModel.java | 247
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.java | 33
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationDepartmentController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.webui/.babelrc | 11
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.xml | 478
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebSocketConfig.java | 26
04-Development/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/pom.xml | 28
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/mobile/question.js | 19
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/WebApplication.java | 34
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/OnlineUserViewModel.java | 245
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/validator.js | 46
03-Design/02-Detail Design/01-Databse Design/04-Script/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/userProfile/userProfile.vue | 154
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissionGroups.java | 16
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/basicInfo.js | 186
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Register.vue | 13
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectQueryObject.java | 87
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserWeChatQueryObject.java | 105
04-Development/02-Code/bwf/com.farriver.bwf.webui/pom.xml | 18
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponHistory.vue | 700
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.xml | 325
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterViewModel.java | 169
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrail.java | 135
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/manifest.json | 73
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGradeExample.java | 2073
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.java | 36
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/WelcomeWebRequestInterceptor.java | 24
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionQueryObject.java | 136
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivityExample.java | 1134
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumber.java | 40
05-Test/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.xml | 368
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/config.js | 18
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/shime-uni.d.ts | 6
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/LicenseSecrecy.vue | 636
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaper.vue | 886
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectExample.java | 823
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterViewModel.java | 223
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemLogController.java | 29
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/authapi.js | 56
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatVipController.java | 104
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/resources/generatorConfig.xml | 40
04-Development/02-Code/bwf/pom.xml | 370
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaGZHConfig.java | 51
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping-active.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpClientUtil.java | 86
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCart.java | 136
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelationExample.java | 1383
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalCategoryQueryObject.java | 97
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.xml | 288
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AvatarUploadExt.vue | 123
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RedisUtil.java | 559
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalTemplateViewModel.java | 215
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/icons/svg/404.svg | 208
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectKnowledgePointService.java | 555
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/list.vue | 576
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfigExample.java | 903
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/favicon.ico | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/QuestionMasterWithBLOBsExtend.java | 28
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/vite.config.js | 8
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponActive.vue | 745
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.xml | 552
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemLogQueryObject.java | 62
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/portal/security.js | 51
03-Design/02-Detail Design/01-Databse Design/03-Submitted/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMajorQueryObject.java | 157
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletChargeViewModel.java | 27
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterRoleRelationQueryObject.java | 139
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterOptionService.java | 237
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWalletExample.java | 954
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DocxExportUtil.java | 368
03-Design/02-Detail Design/01-Databse Design/02-Review/README.md | 7
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.xml | 457
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/LombokPlugin.java | 270
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/App.vue | 11
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/components/userProfile/userProfile.vue | 155
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DBContextHolder.java | 51
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FastDFSClientConfig.java | 86
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategory.java | 95
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/mobilequestion.js | 19
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponHistoryViewModel.java | 217
09-FAT/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponHistoryService.java | 267
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/home/index.vue | 319
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/mobile/question/question.vue | 279
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/index.html | 20
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/App.vue | 18
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubject.vue | 569
04-Development/02-Code/bwf/com.farriver.bwf.webui/vite.config.js | 156
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeKeyViewModel.java | 77
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistory.java | 406
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/MyBatisConfig.java | 33
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateTimeUtils.java | 213
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilderNode.java | 13
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/DashboardService.java | 38
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterAnswerQueryObject.java | 87
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FastDFSService.java | 288
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationClassViewModel.java | 296
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/OptionsInterceptor.java | 37
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/MenuButton.vue | 114
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/CrossInterceptor.java | 36
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/UploadTemplateData.java | 33
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/main.js | 31
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterPaperRelationController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/basicNavigator.js | 36
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Admin404.vue | 51
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-navbar/use-navbar.vue | 175
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.service.extend/pom.xml | 33
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMasterQueryObject.java | 177
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationClassController.java | 66
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartProductQueryObject.java | 178
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupViewModel.java | 149
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package-lock.json | 14055 ++++
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOption.java | 85
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemNotificationController.java | 54
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.xml | 289
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/charge.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilder.java | 56
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FeignConfig.java | 19
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/recharge.jpg | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMasterExample.java | 1443
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.xml | 862
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.xml | 288
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationDepartmentViewModel.java | 206
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterQueryObject.java | 147
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/RetrievePassword.vue | 261
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderStatusOptions.java | 12
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user.png | 0
04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/js/babel.min.js | 43
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.java | 30
04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/AppMenuButton.vue | 104
04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadDocument.vue | 154
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationGradeService.java | 320
04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/templates/template.html | 10
04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrailExample.java | 1173
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/MDStatusOptions.java | 6
04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterAnswerService.java | 235
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/IQueryObject.java | 4
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterViewModel.java | 299
06-Deployment/02-FAT release/README.md | 0
04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectBiddingRecordStatusOptions.java | 12
862 files changed, 209,555 insertions(+), 1 deletions(-)
diff --git a/.gitignore b/.gitignore
index 32858aa..5abb427 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,39 @@
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Compiled class file
*.class
+
+# Eclipse
+.project
+.classpath
+.settings/
+
+# Intellij
+*.ipr
+*.iml
+*.iws
+.idea/
+
+# Maven
+target/
+
+# Gradle
+build
+.gradle
+
+# Log file
+*.log
+
+# out
+**/out/
+
+# hbuilderx
+.hbuilderx/
+unpackage/
+
+# BlueJ files
+*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
@@ -6,7 +41,39 @@
# Package Files #
*.jar
*.war
+*.nar
*.ear
+*.zip
+*.tar
+*.tar.gz
+*.rar
+*.pid
+*.orig
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
+
+# Mac
+.DS_Store
+
+# VUE
+node_modules/
+/dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+{{#unit}}
+/test/unit/coverage/
+{{/unit}}
+{{#e2e}}
+/test/e2e/reports/
+selenium-debug.log
+{{/e2e}}
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
diff --git a/00-Product Introduction/README.md b/00-Product Introduction/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/00-Product Introduction/README.md
diff --git a/01-Project Management/01-Project Schedule/README.md b/01-Project Management/01-Project Schedule/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/01-Project Management/01-Project Schedule/README.md
diff --git a/01-Project Management/02-MOM/README.md b/01-Project Management/02-MOM/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/01-Project Management/02-MOM/README.md
diff --git a/01-Project Management/03-Report/README.md b/01-Project Management/03-Report/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/01-Project Management/03-Report/README.md
diff --git a/01-Project Management/04-Product Quotation/README.md b/01-Project Management/04-Product Quotation/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/01-Project Management/04-Product Quotation/README.md
diff --git a/01-Project Management/README.md b/01-Project Management/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/01-Project Management/README.md
diff --git a/02-Requirement/Customer Input/README.md b/02-Requirement/Customer Input/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/02-Requirement/Customer Input/README.md
diff --git a/02-Requirement/README.md b/02-Requirement/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/02-Requirement/README.md
diff --git a/03-Design/01-Basic Design/README.md b/03-Design/01-Basic Design/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/03-Design/01-Basic Design/README.md
diff --git "a/03-Design/01-Basic Design/\347\263\273\347\273\237\346\246\202\345\277\265\350\256\276\350\256\241.vsdx" "b/03-Design/01-Basic Design/\347\263\273\347\273\237\346\246\202\345\277\265\350\256\276\350\256\241.vsdx"
new file mode 100644
index 0000000..1cd8f24
--- /dev/null
+++ "b/03-Design/01-Basic Design/\347\263\273\347\273\237\346\246\202\345\277\265\350\256\276\350\256\241.vsdx"
Binary files differ
diff --git a/03-Design/02-Detail Design/01-Databse Design/01-Draft/README.md b/03-Design/02-Detail Design/01-Databse Design/01-Draft/README.md
new file mode 100644
index 0000000..fe92883
--- /dev/null
+++ b/03-Design/02-Detail Design/01-Databse Design/01-Draft/README.md
@@ -0,0 +1,7 @@
+## Database design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted for customer to comment and approve.
+
+
+
diff --git a/03-Design/02-Detail Design/01-Databse Design/01-Draft/fr_oqb.sql b/03-Design/02-Detail Design/01-Databse Design/01-Draft/fr_oqb.sql
new file mode 100644
index 0000000..0c9c31f
--- /dev/null
+++ b/03-Design/02-Detail Design/01-Databse Design/01-Draft/fr_oqb.sql
@@ -0,0 +1,1854 @@
+/*
+Navicat MySQL Data Transfer
+
+Source Server : 39.98.182.30
+Source Server Version : 50535
+Source Host : 39.98.182.30:3306
+Source Database : fr_oqb
+
+Target Server Type : MYSQL
+Target Server Version : 50535
+File Encoding : 65001
+
+Date: 2024-02-23 11:52:25
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for order_active
+-- ----------------------------
+DROP TABLE IF EXISTS `order_active`;
+CREATE TABLE `order_active` (
+ `id` varchar(64) NOT NULL,
+ `no` varchar(128) DEFAULT NULL COMMENT '订单编号',
+ `totalmoney` decimal(18,5) DEFAULT NULL COMMENT '订单总金额',
+ `payedmoney` decimal(18,5) DEFAULT NULL COMMENT '已支付金额',
+ `paymentmethod` int(11) DEFAULT NULL,
+ `discountmoney` decimal(18,5) DEFAULT NULL COMMENT '折扣金额',
+ `status` int(11) DEFAULT NULL COMMENT '状态',
+ `ordertime` datetime DEFAULT NULL COMMENT '下单时间',
+ `paytime` datetime DEFAULT NULL COMMENT '支付时间',
+ `sendtime` datetime DEFAULT NULL COMMENT '发货时间',
+ `receivetime` datetime DEFAULT NULL COMMENT '收货时间',
+ `commenttime` datetime DEFAULT NULL COMMENT '评价时间',
+ `completetime` datetime DEFAULT NULL COMMENT '完成时间',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `sendername` varchar(128) DEFAULT NULL COMMENT '发货人名称',
+ `sendercode` varchar(64) DEFAULT NULL COMMENT '发货人编号',
+ `sendercontactno` int(64) DEFAULT NULL COMMENT '发货人联系方式',
+ `targetaddress` varchar(1024) DEFAULT NULL COMMENT '收货地址',
+ `deliveryaddress` varchar(1024) DEFAULT NULL COMMENT '发货地址',
+ `optimalcoupon` varchar(1024) DEFAULT NULL COMMENT '优惠券',
+ `logisticscompany` varchar(64) DEFAULT NULL COMMENT '物流公司',
+ `logisticsno` varchar(64) DEFAULT NULL COMMENT '物流编号',
+ `transportmode` varchar(64) DEFAULT NULL COMMENT '运输方式',
+ `boxcount` int(11) DEFAULT NULL COMMENT '箱数',
+ `boxweight` decimal(18,5) DEFAULT NULL COMMENT '重量',
+ `freight` decimal(18,5) DEFAULT NULL COMMENT '运费',
+ `commentcontent` varchar(1024) DEFAULT NULL COMMENT '评价内容',
+ `commentlevel` int(11) DEFAULT NULL COMMENT '评价等级',
+ `receiverid` varchar(64) DEFAULT NULL COMMENT '收货人ID',
+ `vipuserId` varchar(64) DEFAULT NULL COMMENT '会员ID',
+ `vipname` varchar(128) DEFAULT NULL COMMENT '会员名称',
+ `vipphone` varchar(32) DEFAULT NULL COMMENT '会员联系电话',
+ `vipdiamondtype` int(11) DEFAULT NULL COMMENT '会员等级',
+ `viptype` int(11) DEFAULT NULL COMMENT '会员类型',
+ `vippicture` varchar(1024) DEFAULT NULL COMMENT '会员肖像',
+ `vipcarddiscountrate` decimal(18,5) DEFAULT NULL COMMENT '会员卡折扣率',
+ `type` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of order_active
+-- ----------------------------
+INSERT INTO `order_active` VALUES ('09ecfc99-a97a-4d16-a6cb-8b2b8311f65b', 'A000000006', '0.10000', null, null, null, '0', '2024-02-20 14:12:54', null, null, null, null, null, '0', null, '2024-02-20 14:12:54', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '1');
+INSERT INTO `order_active` VALUES ('42836373-b78b-4e4f-b749-88863a6e2e56', 'A000000002', '0.01000', '0.01000', '2', null, '4', '2024-01-31 15:01:39', '2024-01-31 15:02:19', null, null, null, null, '0', null, '2024-01-31 15:01:39', '2024-01-31 15:02:19', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '0d9d1d9c-9be8-4dc1-9102-be8b10110c27', null, '15122116943', null, null, 'https://www.farriver.top:443/static/picture//ohzrgMbsGBZ6e04adb165d4f310fdd7f838895ae590c-20240125093313.png', null, '0');
+INSERT INTO `order_active` VALUES ('5b9acb50-eb53-4588-a53a-68fc7c0ec60f', 'A000000004', '0.10000', '0.10000', '0', null, '4', '2024-01-31 15:06:45', '2024-01-31 15:06:45', null, null, null, null, '0', null, '2024-01-31 15:06:45', '2024-01-31 15:06:45', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '0d9d1d9c-9be8-4dc1-9102-be8b10110c27', null, '15122116943', null, null, 'https://www.farriver.top:443/static/picture//ohzrgMbsGBZ6e04adb165d4f310fdd7f838895ae590c-20240125093313.png', null, '1');
+INSERT INTO `order_active` VALUES ('720b16d8-ae77-401d-90ea-08f76ae08afa', 'A000000001', '0.01000', null, null, null, '0', '2024-01-31 14:46:08', null, null, null, null, null, '0', null, '2024-01-31 14:46:08', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '0d9d1d9c-9be8-4dc1-9102-be8b10110c27', null, '15122116943', null, null, 'https://www.farriver.top:443/static/picture//ohzrgMbsGBZ6e04adb165d4f310fdd7f838895ae590c-20240125093313.png', null, '0');
+INSERT INTO `order_active` VALUES ('7b166ca2-52b2-4e2c-8ee4-cab7cc30fcc4', 'A000000012', '0.10000', null, null, null, '0', '2024-02-20 14:33:36', null, null, null, null, null, '0', null, '2024-02-20 14:33:36', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '1');
+INSERT INTO `order_active` VALUES ('93e25d3e-e962-4e36-9679-8b3afe29c94e', 'A000000011', '0.10000', null, null, null, '0', '2024-02-20 14:13:58', null, null, null, null, null, '0', null, '2024-02-20 14:13:58', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '1');
+INSERT INTO `order_active` VALUES ('9fee1b0c-abf5-4ca3-b570-0fd889a17e34', 'A000000009', '0.10000', null, null, null, '0', '2024-02-20 14:13:19', null, null, null, null, null, '0', null, '2024-02-20 14:13:19', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '1');
+INSERT INTO `order_active` VALUES ('a3eb0ed9-2eef-4083-883e-5e6bcffd4f86', 'A000000010', '0.01000', '0.01000', '2', null, '4', '2024-02-20 14:13:43', '2024-02-20 14:13:49', null, null, null, null, '0', null, '2024-02-20 14:13:43', '2024-02-20 14:13:49', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '0');
+INSERT INTO `order_active` VALUES ('a426d99c-ae00-485a-b887-13762ee89670', 'A000000008', '0.10000', null, null, null, '0', '2024-02-20 14:13:16', null, null, null, null, null, '0', null, '2024-02-20 14:13:16', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '1');
+INSERT INTO `order_active` VALUES ('b62603c7-4dd4-4a38-be23-fa5717283988', 'A000000013', '0.01000', null, null, null, '0', '2024-02-20 22:04:15', null, null, null, null, null, '0', null, '2024-02-20 22:04:15', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '0');
+INSERT INTO `order_active` VALUES ('d0993a0e-ea3a-4913-9417-f4736a03de1e', 'A000000007', '0.10000', null, null, null, '0', '2024-02-20 14:13:12', null, null, null, null, null, '0', null, '2024-02-20 14:13:12', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '1');
+INSERT INTO `order_active` VALUES ('d95a1e55-b704-4d22-8741-f60ff29f1ff1', 'A000000005', '0.01000', null, null, null, '0', '2024-02-07 11:29:17', null, null, null, null, null, '0', null, '2024-02-07 11:29:17', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '2', null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, '0');
+INSERT INTO `order_active` VALUES ('f6eec033-8324-45c1-86d7-2da5492c2ce4', 'A000000003', '0.01000', '0.01000', '2', null, '4', '2024-01-31 15:05:15', '2024-01-31 15:05:32', null, null, null, null, '0', null, '2024-01-31 15:05:15', '2024-01-31 15:05:32', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, '0d9d1d9c-9be8-4dc1-9102-be8b10110c27', null, '15122116943', null, null, 'https://www.farriver.top:443/static/picture//ohzrgMbsGBZ6e04adb165d4f310fdd7f838895ae590c-20240125093313.png', null, '0');
+
+-- ----------------------------
+-- Table structure for order_active_product
+-- ----------------------------
+DROP TABLE IF EXISTS `order_active_product`;
+CREATE TABLE `order_active_product` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `productid` varchar(64) DEFAULT NULL COMMENT '产品ID',
+ `productcode` varchar(64) DEFAULT NULL COMMENT '产品编号',
+ `productname` varchar(256) DEFAULT NULL COMMENT '产品名称',
+ `status` int(11) DEFAULT NULL COMMENT '状态',
+ `color` varchar(32) DEFAULT NULL COMMENT '颜色',
+ `size` varchar(32) DEFAULT NULL COMMENT '尺码',
+ `count` int(11) DEFAULT NULL COMMENT '数量',
+ `image` varchar(256) DEFAULT NULL COMMENT '产品图片',
+ `price` decimal(18,5) DEFAULT NULL COMMENT '产品原价',
+ `saleprice` decimal(18,5) DEFAULT NULL COMMENT '售价',
+ `rejectreason` varchar(1024) DEFAULT NULL COMMENT '拒绝理由',
+ `rejectcomment` varchar(1024) DEFAULT NULL COMMENT '拒绝注释',
+ `rejecttime` datetime DEFAULT NULL COMMENT '拒绝时间',
+ `payer` varchar(256) DEFAULT NULL COMMENT '支付人',
+ `payedmoney` decimal(18,5) DEFAULT NULL COMMENT '支付金额',
+ `discount` decimal(18,5) DEFAULT NULL COMMENT '折扣金额',
+ `payee` varchar(256) DEFAULT NULL COMMENT '收款人',
+ `orderid` varchar(64) DEFAULT NULL,
+ `orderno` varchar(128) DEFAULT NULL COMMENT '订单编号',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of order_active_product
+-- ----------------------------
+INSERT INTO `order_active_product` VALUES ('21b242ff-b486-4af4-b658-6e909c7441d7', '0', null, '2024-02-07 11:29:17', null, 'b1a5ca4e-ecad-420f-8049-c7897e9b09b5', null, '0.1', '0', null, null, null, null, '0.01000', null, null, null, null, null, null, null, null, 'd95a1e55-b704-4d22-8741-f60ff29f1ff1', 'A000000005');
+INSERT INTO `order_active_product` VALUES ('26c77d55-bfd5-4b20-951e-f089543f8efe', '0', null, '2024-02-20 14:13:58', null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '0', null, null, null, null, '0.10000', null, null, null, null, null, null, null, null, '93e25d3e-e962-4e36-9679-8b3afe29c94e', 'A000000011');
+INSERT INTO `order_active_product` VALUES ('65dcbe62-0012-4f24-9bcd-bd936b73d848', '0', null, '2024-02-20 14:13:19', null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '0', null, null, null, null, '0.10000', null, null, null, null, null, null, null, null, '9fee1b0c-abf5-4ca3-b570-0fd889a17e34', 'A000000009');
+INSERT INTO `order_active_product` VALUES ('66236cd6-e046-4dbe-adac-a46939a21f9d', '0', null, '2024-02-20 14:13:43', null, 'b1a5ca4e-ecad-420f-8049-c7897e9b09b5', null, '0.1', '0', null, null, null, null, '0.01000', null, null, null, null, null, null, null, null, 'a3eb0ed9-2eef-4083-883e-5e6bcffd4f86', 'A000000010');
+INSERT INTO `order_active_product` VALUES ('673f6950-2118-4ad6-b13a-a8a9f94f3637', '0', null, '2024-01-31 14:46:08', null, 'b1a5ca4e-ecad-420f-8049-c7897e9b09b5', null, '0.1', '0', null, null, null, null, '0.01000', null, null, null, null, null, null, null, null, '720b16d8-ae77-401d-90ea-08f76ae08afa', 'A000000001');
+INSERT INTO `order_active_product` VALUES ('74d18ed8-110d-4ccd-bae9-d5a44929ff81', '0', null, '2024-02-20 14:33:36', null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '0', null, null, null, null, '0.10000', null, null, null, null, null, null, null, null, '7b166ca2-52b2-4e2c-8ee4-cab7cc30fcc4', 'A000000012');
+INSERT INTO `order_active_product` VALUES ('83ec3f00-369a-4ddb-91a9-ecefbbab499c', '0', null, '2024-02-20 14:13:16', null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '0', null, null, null, null, '0.10000', null, null, null, null, null, null, null, null, 'a426d99c-ae00-485a-b887-13762ee89670', 'A000000008');
+INSERT INTO `order_active_product` VALUES ('8abfa515-6c46-4471-8293-b24c421ffa00', '0', null, '2024-02-20 14:12:54', null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '0', null, null, null, null, '0.10000', null, null, null, null, null, null, null, null, '09ecfc99-a97a-4d16-a6cb-8b2b8311f65b', 'A000000006');
+INSERT INTO `order_active_product` VALUES ('8da14ffc-cdac-47be-aba5-08047569cc8e', '0', null, '2024-02-20 22:04:15', null, 'b1a5ca4e-ecad-420f-8049-c7897e9b09b5', null, '0.1', '0', null, null, null, null, '0.01000', null, null, null, null, null, null, null, null, 'b62603c7-4dd4-4a38-be23-fa5717283988', 'A000000013');
+INSERT INTO `order_active_product` VALUES ('ab12d76d-06c3-458e-aedb-ee77bb3711d2', '0', null, '2024-01-31 15:06:45', null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '0', null, null, null, null, '0.10000', null, null, null, null, null, null, null, null, '5b9acb50-eb53-4588-a53a-68fc7c0ec60f', 'A000000004');
+INSERT INTO `order_active_product` VALUES ('af423938-697d-474e-8968-0e6a13e08ecc', '0', null, '2024-02-20 14:13:12', null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '0', null, null, null, null, '0.10000', null, null, null, null, null, null, null, null, 'd0993a0e-ea3a-4913-9417-f4736a03de1e', 'A000000007');
+INSERT INTO `order_active_product` VALUES ('c02ef08a-f466-4791-803e-ee5366084e9e', '0', null, '2024-01-31 15:01:39', null, 'b1a5ca4e-ecad-420f-8049-c7897e9b09b5', null, '0.1', '0', null, null, null, null, '0.01000', null, null, null, null, null, null, null, null, '42836373-b78b-4e4f-b749-88863a6e2e56', 'A000000002');
+INSERT INTO `order_active_product` VALUES ('edc3e2e7-119f-496f-b2c7-95e52910726a', '0', null, '2024-01-31 15:05:15', null, 'b1a5ca4e-ecad-420f-8049-c7897e9b09b5', null, '0.1', '0', null, null, null, null, '0.01000', null, null, null, null, null, null, null, null, 'f6eec033-8324-45c1-86d7-2da5492c2ce4', 'A000000003');
+
+-- ----------------------------
+-- Table structure for order_history
+-- ----------------------------
+DROP TABLE IF EXISTS `order_history`;
+CREATE TABLE `order_history` (
+ `id` varchar(64) NOT NULL,
+ `no` varchar(128) DEFAULT NULL COMMENT '订单编号',
+ `totalmoney` decimal(18,5) DEFAULT NULL COMMENT '订单总金额',
+ `payedmoney` decimal(18,5) DEFAULT NULL COMMENT '已支付金额',
+ `paymentmethod` int(11) DEFAULT NULL,
+ `discountmoney` decimal(18,5) DEFAULT NULL COMMENT '折扣金额',
+ `status` int(11) DEFAULT NULL COMMENT '状态',
+ `ordertime` datetime DEFAULT NULL COMMENT '下单时间',
+ `paytime` datetime DEFAULT NULL COMMENT '支付时间',
+ `sendtime` datetime DEFAULT NULL COMMENT '发货时间',
+ `receivetime` datetime DEFAULT NULL COMMENT '收货时间',
+ `commenttime` datetime DEFAULT NULL COMMENT '评价时间',
+ `completetime` datetime DEFAULT NULL COMMENT '完成时间',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `sendername` varchar(128) DEFAULT NULL COMMENT '发货人名称',
+ `sendercode` varchar(64) DEFAULT NULL COMMENT '发货人编号',
+ `sendercontactno` int(64) DEFAULT NULL COMMENT '发货人联系方式',
+ `targetaddress` varchar(1024) DEFAULT NULL COMMENT '收货地址',
+ `deliveryaddress` varchar(1024) DEFAULT NULL COMMENT '发货地址',
+ `optimalcoupon` varchar(1024) DEFAULT NULL COMMENT '优惠券',
+ `logisticscompany` varchar(64) DEFAULT NULL COMMENT '物流公司',
+ `logisticsno` varchar(64) DEFAULT NULL COMMENT '物流编号',
+ `transportmode` varchar(64) DEFAULT NULL COMMENT '运输方式',
+ `boxcount` int(11) DEFAULT NULL COMMENT '箱数',
+ `boxweight` decimal(18,5) DEFAULT NULL COMMENT '重量',
+ `freight` decimal(18,5) DEFAULT NULL COMMENT '运费',
+ `commentcontent` varchar(1024) DEFAULT NULL COMMENT '评价内容',
+ `commentlevel` int(11) DEFAULT NULL COMMENT '评价等级',
+ `receiverid` varchar(64) DEFAULT NULL COMMENT '收货人ID',
+ `vipuserId` varchar(64) DEFAULT NULL COMMENT '会员ID',
+ `vipname` varchar(128) DEFAULT NULL COMMENT '会员名称',
+ `vipphone` varchar(32) DEFAULT NULL COMMENT '会员联系电话',
+ `vipdiamondtype` int(11) DEFAULT NULL COMMENT '会员等级',
+ `viptype` int(11) DEFAULT NULL COMMENT '会员类型',
+ `vippicture` varchar(1024) DEFAULT NULL COMMENT '会员肖像',
+ `vipcarddiscountrate` decimal(18,5) DEFAULT NULL COMMENT '会员卡折扣率',
+ `type` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of order_history
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for order_history_product
+-- ----------------------------
+DROP TABLE IF EXISTS `order_history_product`;
+CREATE TABLE `order_history_product` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `productid` varchar(64) DEFAULT NULL COMMENT '产品ID',
+ `productcode` varchar(64) DEFAULT NULL COMMENT '产品编号',
+ `productname` varchar(256) DEFAULT NULL COMMENT '产品名称',
+ `status` int(11) DEFAULT NULL COMMENT '状态',
+ `color` varchar(32) DEFAULT NULL COMMENT '颜色',
+ `size` varchar(32) DEFAULT NULL COMMENT '尺码',
+ `count` int(11) DEFAULT NULL COMMENT '数量',
+ `image` varchar(256) DEFAULT NULL COMMENT '产品图片',
+ `price` decimal(18,5) DEFAULT NULL COMMENT '产品原价',
+ `saleprice` decimal(18,5) DEFAULT NULL COMMENT '售价',
+ `rejectreason` varchar(1024) DEFAULT NULL COMMENT '拒绝理由',
+ `rejectcomment` varchar(1024) DEFAULT NULL COMMENT '拒绝注释',
+ `rejecttime` datetime DEFAULT NULL COMMENT '拒绝时间',
+ `payer` varchar(256) DEFAULT NULL COMMENT '支付人',
+ `payedmoney` decimal(18,5) DEFAULT NULL COMMENT '支付金额',
+ `discount` decimal(18,5) DEFAULT NULL COMMENT '折扣金额',
+ `payee` varchar(256) DEFAULT NULL COMMENT '收款人',
+ `orderno` varchar(128) DEFAULT NULL COMMENT '订单编号',
+ `orderid` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of order_history_product
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for order_receiver
+-- ----------------------------
+DROP TABLE IF EXISTS `order_receiver`;
+CREATE TABLE `order_receiver` (
+ `id` varchar(64) NOT NULL,
+ `userid` varchar(64) DEFAULT NULL,
+ `code` varchar(128) DEFAULT NULL,
+ `name` varchar(128) DEFAULT NULL,
+ `contactno` varchar(64) DEFAULT NULL,
+ `country` varchar(64) DEFAULT NULL,
+ `province` varchar(64) DEFAULT NULL,
+ `city` varchar(64) DEFAULT NULL,
+ `region` varchar(128) DEFAULT NULL,
+ `receiveaddress` varchar(512) DEFAULT NULL,
+ `isoftenused` varchar(64) DEFAULT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of order_receiver
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for organization_class
+-- ----------------------------
+DROP TABLE IF EXISTS `organization_class`;
+CREATE TABLE `organization_class` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `outerphone` varchar(32) DEFAULT NULL,
+ `innerphone` varchar(32) DEFAULT NULL,
+ `supervisor` varchar(64) DEFAULT NULL,
+ `supervisorassistant` varchar(64) DEFAULT NULL,
+ `fax` varchar(64) DEFAULT NULL,
+ `zipcode` varchar(32) DEFAULT NULL,
+ `address` varchar(256) DEFAULT NULL,
+ `parentid` varchar(64) DEFAULT NULL COMMENT 'parent id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `deplevel` int(3) DEFAULT NULL COMMENT 'department level',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `organizationid` varchar(64) DEFAULT NULL,
+ `organizationname` varchar(256) DEFAULT NULL,
+ `organizationcode` varchar(256) DEFAULT NULL,
+ `departmentid` varchar(64) DEFAULT NULL,
+ `departmentname` varchar(256) DEFAULT NULL,
+ `departmentcode` varchar(256) DEFAULT NULL,
+ `majorid` varchar(64) DEFAULT NULL,
+ `majorname` varchar(256) DEFAULT NULL,
+ `majorcode` varchar(256) DEFAULT NULL,
+ `gradeid` varchar(64) DEFAULT NULL,
+ `gradename` varchar(256) DEFAULT NULL,
+ `gradecode` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of organization_class
+-- ----------------------------
+INSERT INTO `organization_class` VALUES ('1403c68e-b376-4c6b-84eb-46d90b74cc39', 'C001', '1', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:41:10', null, null, null, null, null, null, null, null, null, null, '094cef8e-7328-4ca8-8c36-889978bbdcdb', null, null);
+INSERT INTO `organization_class` VALUES ('274665f9-3d76-4565-a50e-fe643f46a6a2', 'C005', '5', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:41:25', null, null, null, null, null, null, null, null, null, null, '094cef8e-7328-4ca8-8c36-889978bbdcdb', null, null);
+INSERT INTO `organization_class` VALUES ('7662d6de-e6f6-4b00-8054-49dbb2b208aa', 'C004', '4', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:41:21', null, null, null, null, null, null, null, null, null, null, '094cef8e-7328-4ca8-8c36-889978bbdcdb', null, null);
+INSERT INTO `organization_class` VALUES ('b5394e1b-7cdc-4757-bc4e-db0d8d13ee00', 'C003', '3', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:41:17', null, null, null, null, null, null, null, null, null, null, '094cef8e-7328-4ca8-8c36-889978bbdcdb', null, null);
+INSERT INTO `organization_class` VALUES ('c5656c24-4377-4abb-8cf0-a5f77c06760c', 'C006', '6', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:41:29', null, null, null, null, null, null, null, null, null, null, '094cef8e-7328-4ca8-8c36-889978bbdcdb', null, null);
+INSERT INTO `organization_class` VALUES ('daf060e0-b7a8-49b4-abb6-9e3a0173d9d1', 'C002', '2', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:41:14', null, null, null, null, null, null, null, null, null, null, '094cef8e-7328-4ca8-8c36-889978bbdcdb', null, null);
+
+-- ----------------------------
+-- Table structure for organization_department
+-- ----------------------------
+DROP TABLE IF EXISTS `organization_department`;
+CREATE TABLE `organization_department` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `outerphone` varchar(32) DEFAULT NULL,
+ `innerphone` varchar(32) DEFAULT NULL,
+ `supervisor` varchar(64) DEFAULT NULL,
+ `supervisorassistant` varchar(64) DEFAULT NULL,
+ `fax` varchar(64) DEFAULT NULL,
+ `zipcode` varchar(32) DEFAULT NULL,
+ `address` varchar(256) DEFAULT NULL,
+ `parentid` varchar(64) DEFAULT NULL COMMENT 'parent id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `deplevel` int(3) DEFAULT NULL COMMENT 'department level',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `organizationid` varchar(64) DEFAULT NULL,
+ `organizationname` varchar(256) DEFAULT NULL,
+ `organizationcode` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of organization_department
+-- ----------------------------
+INSERT INTO `organization_department` VALUES ('6b29043d-d224-48ff-9d17-ab652fd584f5', 'D005', '计算机学院', '', '', '', '', '', '', '', '', '0', null, '0', '', '2024-01-31 09:56:13', null, 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002');
+INSERT INTO `organization_department` VALUES ('90b99fb5-d9bf-4e16-928e-e4ab95595b72', 'D004', '商学院', '', '', '', '', '', '', '', '', '0', null, '0', '', '2024-01-31 09:56:04', null, 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002');
+INSERT INTO `organization_department` VALUES ('cfb8f51e-7988-4023-8dca-b5b3cd15c7a5', 'D002', '土木工程管理', null, null, null, null, null, null, null, null, '0', null, '0', '测试数据', '2024-01-18 11:29:48', '2024-01-22 16:43:47', 'cd738fee-5cae-4e2a-b057-32e2138f9bdb', '中南大学', 'A0005');
+INSERT INTO `organization_department` VALUES ('e27244bc-8240-4b12-bef2-003ded033148', 'D003', '工商管理学院', null, null, null, null, null, null, null, null, '0', null, '0', '测试数据', '2024-01-18 11:30:22', '2024-01-22 16:47:53', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002');
+
+-- ----------------------------
+-- Table structure for organization_grade
+-- ----------------------------
+DROP TABLE IF EXISTS `organization_grade`;
+CREATE TABLE `organization_grade` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `outerphone` varchar(32) DEFAULT NULL,
+ `innerphone` varchar(32) DEFAULT NULL,
+ `supervisor` varchar(64) DEFAULT NULL,
+ `supervisorassistant` varchar(64) DEFAULT NULL,
+ `fax` varchar(64) DEFAULT NULL,
+ `zipcode` varchar(32) DEFAULT NULL,
+ `address` varchar(256) DEFAULT NULL,
+ `parentid` varchar(64) DEFAULT NULL COMMENT 'parent id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `deplevel` int(3) DEFAULT NULL COMMENT 'department level',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `organizationid` varchar(64) DEFAULT NULL,
+ `organizationname` varchar(256) DEFAULT NULL,
+ `organizationcode` varchar(256) DEFAULT NULL,
+ `departmentid` varchar(64) DEFAULT NULL,
+ `departmentname` varchar(256) DEFAULT NULL,
+ `departmentcode` varchar(256) DEFAULT NULL,
+ `majorid` varchar(64) DEFAULT NULL,
+ `majorname` varchar(256) DEFAULT NULL,
+ `majorcode` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of organization_grade
+-- ----------------------------
+INSERT INTO `organization_grade` VALUES ('094cef8e-7328-4ca8-8c36-889978bbdcdb', 'G001', '一年级', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:39:53', '2024-01-22 18:28:43', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '9ead598e-4faf-49e1-9863-165c766631ed', '工商管理', 'M003');
+INSERT INTO `organization_grade` VALUES ('13d2cbb0-6aaf-41dd-ba44-18650e3268b7', 'G009', '一年级', '', '', '', '', '', '', '', '', '0', null, '0', '', '2024-01-27 15:20:22', null, 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '5b718983-9508-40f4-aeba-22aad1b55e47', '电子信息与科学', 'M007');
+INSERT INTO `organization_grade` VALUES ('1e1e0815-0575-465f-be30-4b445cf2dc30', 'G003', '三年级', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:40:07', '2024-01-22 18:28:50', '1df5035a-d251-4d19-9045-59a377c123fc', '哈佛大学', 'B0001', '', '', '', '', '', '');
+INSERT INTO `organization_grade` VALUES ('7af84337-44b5-4132-8e62-117b5bdf8014', 'G008', '二年级', '', '', '', '', '', '', '', '', '0', null, '0', '', '2024-01-27 15:20:07', '2024-01-27 15:20:37', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '5b718983-9508-40f4-aeba-22aad1b55e47', '电子信息与科学', 'M007');
+INSERT INTO `organization_grade` VALUES ('89252e80-1fab-431d-bc92-c9e7418a36b6', 'G005', '五年级', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:40:25', '2024-01-22 18:27:17', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '1edb42fc-a10b-4f39-a2bc-6c2bcb276547', '土木工程', 'M002');
+INSERT INTO `organization_grade` VALUES ('93aeebf0-7e96-4c82-b4c3-fe61e0e741c4', 'G002', '二年级', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:40:01', '2024-01-22 18:29:00', '59299abc-06ca-48f2-b026-4638ced717b4', '清华大学', 'A0002', '', '', '', '', '', '');
+INSERT INTO `organization_grade` VALUES ('93bd9f0e-b05c-454d-8dcb-758a35ad804f', 'G006', '六年级', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:40:32', '2024-01-22 18:25:42', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '9ead598e-4faf-49e1-9863-165c766631ed', '工商管理', 'M003');
+INSERT INTO `organization_grade` VALUES ('b302d31a-82fe-44d1-bb11-fd9b487d579c', 'G007', '三年级', '', '', '', '', '', '', '', '', '0', null, '0', '', '2024-01-27 15:15:23', '2024-01-27 15:21:36', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '5b718983-9508-40f4-aeba-22aad1b55e47', '电子信息与科学', 'M007');
+INSERT INTO `organization_grade` VALUES ('f5160257-9dc3-41e4-818e-5fff2f1dab5f', 'G004', '四年级', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-08 22:40:17', '2024-01-22 18:27:34', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '8e4c4549-760a-44f2-b730-3131f6cc5645', '软件工程', 'M001');
+
+-- ----------------------------
+-- Table structure for organization_major
+-- ----------------------------
+DROP TABLE IF EXISTS `organization_major`;
+CREATE TABLE `organization_major` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `parentid` varchar(64) DEFAULT NULL COMMENT 'parent id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `organizationid` varchar(64) DEFAULT NULL,
+ `organizationname` varchar(256) DEFAULT NULL,
+ `organizationcode` varchar(256) DEFAULT NULL,
+ `departmentid` varchar(64) DEFAULT NULL,
+ `departmentname` varchar(256) DEFAULT NULL,
+ `departmentcode` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of organization_major
+-- ----------------------------
+INSERT INTO `organization_major` VALUES ('03f1eb77-9638-4c6d-b554-f37b43435945', 'M005', '环境工程', '', '0', '0', '', '2024-01-22 16:44:54', null, 'cd738fee-5cae-4e2a-b057-32e2138f9bdb', '中南大学', 'A0005', 'cfb8f51e-7988-4023-8dca-b5b3cd15c7a5', '土木工程管理', 'D002');
+INSERT INTO `organization_major` VALUES ('1edb42fc-a10b-4f39-a2bc-6c2bcb276547', 'M002', '土木工程', null, '0', '0', '', '2024-01-08 22:39:09', '2024-01-22 16:42:17', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003');
+INSERT INTO `organization_major` VALUES ('2511b9d5-72ca-4c9a-a3a4-1540acd90b69', 'M004', '电气工程', null, '0', '0', '测试数据', '2024-01-08 22:39:33', '2024-01-22 16:44:03', '1df5035a-d251-4d19-9045-59a377c123fc', '哈佛大学', 'B0001', 'cfb8f51e-7988-4023-8dca-b5b3cd15c7a5', '土木工程管理', 'D002');
+INSERT INTO `organization_major` VALUES ('3e2224bb-3e5f-4556-aea1-6f1a5e4239b5', 'M006', 'A', '', '0', '0', '', '2024-01-22 17:52:53', '2024-01-22 17:53:02', '276be9b7-6737-47b0-9d68-caf3e4c3dadd', '复旦大学', 'A0003', '', '', '');
+INSERT INTO `organization_major` VALUES ('5b718983-9508-40f4-aeba-22aad1b55e47', 'M007', '电子信息与科学', '', '0', '0', '', '2024-01-27 15:15:07', null, 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003');
+INSERT INTO `organization_major` VALUES ('8e4c4549-760a-44f2-b730-3131f6cc5645', 'M001', '软件工程', null, '0', '0', '', '2024-01-08 22:39:01', '2024-01-22 16:42:25', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003');
+INSERT INTO `organization_major` VALUES ('9ead598e-4faf-49e1-9863-165c766631ed', 'M003', '工商管理', null, '0', '0', '', '2024-01-08 22:39:19', '2024-01-22 16:42:06', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003');
+
+-- ----------------------------
+-- Table structure for organization_master
+-- ----------------------------
+DROP TABLE IF EXISTS `organization_master`;
+CREATE TABLE `organization_master` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `outerphone` varchar(32) DEFAULT NULL,
+ `innerphone` varchar(32) DEFAULT NULL,
+ `supervisor` varchar(64) DEFAULT NULL,
+ `supervisorassistant` varchar(64) DEFAULT NULL,
+ `fax` varchar(64) DEFAULT NULL,
+ `zipcode` varchar(32) DEFAULT NULL,
+ `address` varchar(256) DEFAULT NULL,
+ `parentid` varchar(64) DEFAULT NULL COMMENT 'parent id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `deplevel` int(3) DEFAULT NULL COMMENT 'department level',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of organization_master
+-- ----------------------------
+INSERT INTO `organization_master` VALUES ('1df5035a-d251-4d19-9045-59a377c123fc', 'B0001', '哈佛大学', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-06 16:13:25', null);
+INSERT INTO `organization_master` VALUES ('276be9b7-6737-47b0-9d68-caf3e4c3dadd', 'A0003', '复旦大学', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-06 16:12:05', null);
+INSERT INTO `organization_master` VALUES ('59299abc-06ca-48f2-b026-4638ced717b4', 'A0002', '清华大学', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-06 16:11:47', '2024-01-06 16:12:10');
+INSERT INTO `organization_master` VALUES ('cd738fee-5cae-4e2a-b057-32e2138f9bdb', 'A0005', '中南大学', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-06 16:13:07', null);
+INSERT INTO `organization_master` VALUES ('e704a3f2-c4b6-4a76-b0fe-d7d8f8b031f5', 'A0004', '上海交通大学', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-06 16:12:29', null);
+INSERT INTO `organization_master` VALUES ('fd41d4da-042a-41ed-943b-f8917251e227', 'A0001', '北京大学', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-06 16:09:56', null);
+INSERT INTO `organization_master` VALUES ('fd53196d-a456-4801-a524-bbed67104056', 'B0002', '麻省理工大学', null, null, null, null, null, null, null, null, '0', null, '0', '', '2024-01-06 16:13:39', null);
+
+-- ----------------------------
+-- Table structure for product_attribute_key
+-- ----------------------------
+DROP TABLE IF EXISTS `product_attribute_key`;
+CREATE TABLE `product_attribute_key` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(256) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of product_attribute_key
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for product_attribute_value
+-- ----------------------------
+DROP TABLE IF EXISTS `product_attribute_value`;
+CREATE TABLE `product_attribute_value` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `value` varchar(256) DEFAULT NULL,
+ `attribute_id` varchar(256) DEFAULT NULL,
+ `attribute_name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `productid` varchar(64) DEFAULT NULL,
+ `productcode` varchar(128) DEFAULT NULL,
+ `productname` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of product_attribute_value
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for product_brand
+-- ----------------------------
+DROP TABLE IF EXISTS `product_brand`;
+CREATE TABLE `product_brand` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(10) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(256) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `website` varchar(256) DEFAULT NULL,
+ `logoimage` varchar(256) DEFAULT NULL,
+ `description` text,
+ `foundedyear` date DEFAULT NULL,
+ `countryoforigin` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of product_brand
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for product_category
+-- ----------------------------
+DROP TABLE IF EXISTS `product_category`;
+CREATE TABLE `product_category` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `parentid` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of product_category
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for product_master
+-- ----------------------------
+DROP TABLE IF EXISTS `product_master`;
+CREATE TABLE `product_master` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(10) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(256) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `formation` varchar(1024) DEFAULT NULL COMMENT '相关信息',
+ `buyprice` varchar(256) DEFAULT NULL COMMENT '进货价',
+ `sellprice` varchar(128) DEFAULT NULL COMMENT '卖价',
+ `provider` varchar(128) DEFAULT NULL COMMENT '供应商',
+ `discount` varchar(128) DEFAULT NULL COMMENT '优惠价',
+ `keyword` varchar(128) DEFAULT NULL,
+ `count` varchar(1027) DEFAULT NULL COMMENT '数量',
+ `image` varchar(256) DEFAULT NULL COMMENT '图片',
+ `size` varchar(128) DEFAULT NULL COMMENT '尺码',
+ `color` varchar(128) DEFAULT NULL COMMENT '颜色',
+ `specifications` text,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `brandid` varchar(64) DEFAULT NULL,
+ `brandname` varchar(256) DEFAULT NULL,
+ `brandcode` varchar(256) DEFAULT NULL,
+ `model` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of product_master
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for product_supplier
+-- ----------------------------
+DROP TABLE IF EXISTS `product_supplier`;
+CREATE TABLE `product_supplier` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(10) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(256) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `logo` varchar(256) DEFAULT NULL,
+ `description` text,
+ `contactor` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL,
+ `contactortitle` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL,
+ `telphone` varchar(128) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '负责人',
+ `cellphone` varchar(128) DEFAULT NULL,
+ `website` varchar(256) CHARACTER SET utf8mb4 DEFAULT NULL,
+ `email` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
+ `fax` varchar(255) DEFAULT NULL,
+ `tax` varchar(256) DEFAULT NULL,
+ `companyaddress` varchar(512) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '省市区',
+ `registrationaddress` varchar(512) DEFAULT NULL,
+ `businessscope` varchar(1024) DEFAULT NULL,
+ `bankname` varchar(256) DEFAULT NULL,
+ `bankaccount` varchar(256) DEFAULT NULL,
+ `creditrating` varchar(256) DEFAULT NULL,
+ `registrationcapital` decimal(18,5) DEFAULT NULL,
+ `establishmentdate` datetime DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of product_supplier
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for question_category
+-- ----------------------------
+DROP TABLE IF EXISTS `question_category`;
+CREATE TABLE `question_category` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `parentid` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `status` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_category
+-- ----------------------------
+INSERT INTO `question_category` VALUES ('133aaba2-5403-4f46-817c-855908070623', null, '多选题', '0', '', '2024-01-06 15:45:43', null, '0');
+INSERT INTO `question_category` VALUES ('249cd5ed-4033-435e-ab3d-cff8fc1cab30', null, '判断题', '0', '', '2024-01-06 15:47:01', null, '0');
+INSERT INTO `question_category` VALUES ('4a7ae831-8bf0-4210-a324-a6d78939f858', null, '论述题', '0', '', '2024-01-06 15:47:16', null, '0');
+INSERT INTO `question_category` VALUES ('5bd96dfb-0e85-4b03-87d9-cfd131b58580', null, '填空题', '0', '', '2024-01-06 15:46:37', null, '0');
+INSERT INTO `question_category` VALUES ('808518fa-aa04-4f05-9556-79117197c6a4', null, '单选题', '0', '', '2024-01-06 15:45:16', null, '0');
+INSERT INTO `question_category` VALUES ('9fb78cc5-b7f6-415d-8401-034efa8b17ea', null, '简答题', '0', '', '2024-01-06 15:47:08', null, '0');
+INSERT INTO `question_category` VALUES ('a5a92cdc-0299-4dbc-9fe1-4a54ba8eda50', null, '案例分析题', '0', '', '2024-01-06 15:47:41', null, '0');
+INSERT INTO `question_category` VALUES ('aa71363b-145f-4d2f-b733-ebcabfa30e73', null, '分析题', '0', '', '2024-01-06 15:47:23', null, '0');
+INSERT INTO `question_category` VALUES ('b77502b7-67c0-470d-8d2f-966285ac7734', null, '案例选择题', '0', '', '2024-01-06 15:47:32', null, '0');
+INSERT INTO `question_category` VALUES ('b79c879b-f1ac-4118-93d8-f2f8a118fa5f', null, '名词解释', '0', '', '2024-01-06 15:46:53', null, '0');
+
+-- ----------------------------
+-- Table structure for question_master
+-- ----------------------------
+DROP TABLE IF EXISTS `question_master`;
+CREATE TABLE `question_master` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `paperid` varchar(64) DEFAULT NULL,
+ `papername` varchar(256) DEFAULT NULL,
+ `papercode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `stem` text,
+ `answer` text,
+ `casebody` text,
+ `analysis` text,
+ `level` int(10) DEFAULT NULL,
+ `score` decimal(18,5) DEFAULT NULL,
+ `optiona` varchar(256) DEFAULT NULL,
+ `optionb` varchar(256) DEFAULT NULL,
+ `optionc` varchar(256) DEFAULT NULL,
+ `optiond` varchar(256) DEFAULT NULL,
+ `optione` varchar(256) DEFAULT NULL,
+ `optionf` varchar(256) DEFAULT NULL,
+ `optiong` varchar(256) DEFAULT NULL,
+ `optionh` varchar(256) DEFAULT NULL,
+ `knowledgepointid` varchar(64) DEFAULT NULL,
+ `knowledgepointname` varchar(256) DEFAULT NULL,
+ `knowledgepointcode` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_master
+-- ----------------------------
+INSERT INTO `question_master` VALUES ('03891fb4-0ec8-4d2c-8822-187879a778bc', '0', '0', '', '2024-02-02 14:31:00', '2024-02-02 16:51:15', 'Q0000006', '单选1', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第一题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>B</p>', null, '<p>xxxadwawdawd</p>', '0', null, '', '', '', '', '', '', '', '', null, null, null);
+INSERT INTO `question_master` VALUES ('56e600e5-b44d-49de-9795-14344351ddfb', '0', '0', '', '2024-01-08 22:38:27', '2024-01-26 11:28:17', 'Q0000005', '0555', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '4a7ae831-8bf0-4210-a324-a6d78939f858', '论述题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"{\\textstyle \\sum_{a}^{b}}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '4', '10.00000', null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master` VALUES ('586159ee-938f-4a08-a16e-1dd569598eb2', '0', '0', '', '2024-02-02 14:31:37', '2024-02-06 18:16:58', 'Q0000007', '单选2', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第二题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>A</p>', null, '<p>d4w5a6d4564</p>', '3', '1.00000', '', '', '', '', '', '', '', '', 'f3c11f2c-a78f-4713-9da4-1597684a092d', '动量', null);
+INSERT INTO `question_master` VALUES ('81fe2e08-804b-454d-8143-f270cb2914f4', '0', '0', '', '2024-01-08 22:38:14', '2024-01-26 11:08:09', 'Q0000003', '0333', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><br></p>', '<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(248, 249, 249); font-size: 14px;\">C</span></p>', null, '<p><br></p>', null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master` VALUES ('88c74aef-f20b-4b09-b356-481a43ceec61', '0', '0', '', '2024-01-08 22:38:05', '2024-01-26 10:43:56', 'Q0000002', '0222', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '0', null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master` VALUES ('b5b0ba85-7471-4eb8-aedd-add3856887c7', '0', '0', '', '2024-01-08 22:37:59', '2024-01-22 18:54:37', 'Q0000001', '0111', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '133aaba2-5403-4f46-817c-855908070623', '多选题', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master` VALUES ('fd154665-c484-4842-a487-931063a844b0', '0', '0', '', '2024-01-08 22:38:21', '2024-01-22 18:54:43', 'Q0000004', '0444', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '5bd96dfb-0e85-4b03-87d9-cfd131b58580', '填空题', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for question_master_blank_filling
+-- ----------------------------
+DROP TABLE IF EXISTS `question_master_blank_filling`;
+CREATE TABLE `question_master_blank_filling` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `paperid` varchar(64) DEFAULT NULL,
+ `papername` varchar(256) DEFAULT NULL,
+ `papercode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `stem` text,
+ `answer` text,
+ `casebody` text,
+ `analysis` text,
+ `level` int(10) DEFAULT NULL,
+ `score` decimal(18,5) DEFAULT NULL,
+ `optiona` varchar(256) DEFAULT NULL,
+ `optionb` varchar(256) DEFAULT NULL,
+ `optionc` varchar(256) DEFAULT NULL,
+ `optiond` varchar(256) DEFAULT NULL,
+ `optione` varchar(256) DEFAULT NULL,
+ `optionf` varchar(256) DEFAULT NULL,
+ `optiong` varchar(256) DEFAULT NULL,
+ `optionh` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_master_blank_filling
+-- ----------------------------
+INSERT INTO `question_master_blank_filling` VALUES ('03891fb4-0ec8-4d2c-8822-187879a778bc', '0', '0', '', '2024-02-02 14:31:00', '2024-02-02 16:51:15', 'Q0000006', '单选1', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第一题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>B</p>', null, '<p>xxxadwawdawd</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_blank_filling` VALUES ('56e600e5-b44d-49de-9795-14344351ddfb', '0', '0', '', '2024-01-08 22:38:27', '2024-01-26 11:28:17', 'Q0000005', '0555', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '4a7ae831-8bf0-4210-a324-a6d78939f858', '论述题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"{\\textstyle \\sum_{a}^{b}}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '4', '10.00000', null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_blank_filling` VALUES ('586159ee-938f-4a08-a16e-1dd569598eb2', '0', '0', '', '2024-02-02 14:31:37', '2024-02-02 16:51:03', 'Q0000007', '单选2', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第二题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>A</p>', null, '<p>d4w5a6d4564</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_blank_filling` VALUES ('81fe2e08-804b-454d-8143-f270cb2914f4', '0', '0', '', '2024-01-08 22:38:14', '2024-01-26 11:08:09', 'Q0000003', '0333', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><br></p>', '<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(248, 249, 249); font-size: 14px;\">C</span></p>', null, '<p><br></p>', null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_blank_filling` VALUES ('88c74aef-f20b-4b09-b356-481a43ceec61', '0', '0', '', '2024-01-08 22:38:05', '2024-01-26 10:43:56', 'Q0000002', '0222', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '0', null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_blank_filling` VALUES ('b5b0ba85-7471-4eb8-aedd-add3856887c7', '0', '0', '', '2024-01-08 22:37:59', '2024-01-22 18:54:37', 'Q0000001', '0111', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '133aaba2-5403-4f46-817c-855908070623', '多选题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_blank_filling` VALUES ('fd154665-c484-4842-a487-931063a844b0', '0', '0', '', '2024-01-08 22:38:21', '2024-01-22 18:54:43', 'Q0000004', '0444', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '5bd96dfb-0e85-4b03-87d9-cfd131b58580', '填空题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for question_master_case_analysis
+-- ----------------------------
+DROP TABLE IF EXISTS `question_master_case_analysis`;
+CREATE TABLE `question_master_case_analysis` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `paperid` varchar(64) DEFAULT NULL,
+ `papername` varchar(256) DEFAULT NULL,
+ `papercode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `stem` text,
+ `answer` text,
+ `casebody` text,
+ `analysis` text,
+ `level` int(10) DEFAULT NULL,
+ `score` decimal(18,5) DEFAULT NULL,
+ `optiona` varchar(256) DEFAULT NULL,
+ `optionb` varchar(256) DEFAULT NULL,
+ `optionc` varchar(256) DEFAULT NULL,
+ `optiond` varchar(256) DEFAULT NULL,
+ `optione` varchar(256) DEFAULT NULL,
+ `optionf` varchar(256) DEFAULT NULL,
+ `optiong` varchar(256) DEFAULT NULL,
+ `optionh` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_master_case_analysis
+-- ----------------------------
+INSERT INTO `question_master_case_analysis` VALUES ('03891fb4-0ec8-4d2c-8822-187879a778bc', '0', '0', '', '2024-02-02 14:31:00', '2024-02-02 16:51:15', 'Q0000006', '单选1', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第一题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>B</p>', null, '<p>xxxadwawdawd</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_case_analysis` VALUES ('56e600e5-b44d-49de-9795-14344351ddfb', '0', '0', '', '2024-01-08 22:38:27', '2024-01-26 11:28:17', 'Q0000005', '0555', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '4a7ae831-8bf0-4210-a324-a6d78939f858', '论述题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"{\\textstyle \\sum_{a}^{b}}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '4', '10.00000', null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_case_analysis` VALUES ('586159ee-938f-4a08-a16e-1dd569598eb2', '0', '0', '', '2024-02-02 14:31:37', '2024-02-02 16:51:03', 'Q0000007', '单选2', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第二题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>A</p>', null, '<p>d4w5a6d4564</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_case_analysis` VALUES ('81fe2e08-804b-454d-8143-f270cb2914f4', '0', '0', '', '2024-01-08 22:38:14', '2024-01-26 11:08:09', 'Q0000003', '0333', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><br></p>', '<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(248, 249, 249); font-size: 14px;\">C</span></p>', null, '<p><br></p>', null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_case_analysis` VALUES ('88c74aef-f20b-4b09-b356-481a43ceec61', '0', '0', '', '2024-01-08 22:38:05', '2024-01-26 10:43:56', 'Q0000002', '0222', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '0', null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_case_analysis` VALUES ('b5b0ba85-7471-4eb8-aedd-add3856887c7', '0', '0', '', '2024-01-08 22:37:59', '2024-01-22 18:54:37', 'Q0000001', '0111', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '133aaba2-5403-4f46-817c-855908070623', '多选题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_case_analysis` VALUES ('fd154665-c484-4842-a487-931063a844b0', '0', '0', '', '2024-01-08 22:38:21', '2024-01-22 18:54:43', 'Q0000004', '0444', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '5bd96dfb-0e85-4b03-87d9-cfd131b58580', '填空题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for question_master_choice
+-- ----------------------------
+DROP TABLE IF EXISTS `question_master_choice`;
+CREATE TABLE `question_master_choice` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `paperid` varchar(64) DEFAULT NULL,
+ `papername` varchar(256) DEFAULT NULL,
+ `papercode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `stem` text,
+ `answer` text,
+ `casebody` text,
+ `analysis` text,
+ `level` int(10) DEFAULT NULL,
+ `score` decimal(18,5) DEFAULT NULL,
+ `optiona` varchar(256) DEFAULT NULL,
+ `optionb` varchar(256) DEFAULT NULL,
+ `optionc` varchar(256) DEFAULT NULL,
+ `optiond` varchar(256) DEFAULT NULL,
+ `optione` varchar(256) DEFAULT NULL,
+ `optionf` varchar(256) DEFAULT NULL,
+ `optiong` varchar(256) DEFAULT NULL,
+ `optionh` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_master_choice
+-- ----------------------------
+INSERT INTO `question_master_choice` VALUES ('03891fb4-0ec8-4d2c-8822-187879a778bc', '0', '0', '', '2024-02-02 14:31:00', '2024-02-02 16:51:15', 'Q0000006', '单选1', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第一题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>B</p>', null, '<p>xxxadwawdawd</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_choice` VALUES ('56e600e5-b44d-49de-9795-14344351ddfb', '0', '0', '', '2024-01-08 22:38:27', '2024-01-26 11:28:17', 'Q0000005', '0555', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '4a7ae831-8bf0-4210-a324-a6d78939f858', '论述题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"{\\textstyle \\sum_{a}^{b}}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '4', '10.00000', null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice` VALUES ('586159ee-938f-4a08-a16e-1dd569598eb2', '0', '0', '', '2024-02-02 14:31:37', '2024-02-02 16:51:03', 'Q0000007', '单选2', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第二题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>A</p>', null, '<p>d4w5a6d4564</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_choice` VALUES ('81fe2e08-804b-454d-8143-f270cb2914f4', '0', '0', '', '2024-01-08 22:38:14', '2024-01-26 11:08:09', 'Q0000003', '0333', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><br></p>', '<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(248, 249, 249); font-size: 14px;\">C</span></p>', null, '<p><br></p>', null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice` VALUES ('88c74aef-f20b-4b09-b356-481a43ceec61', '0', '0', '', '2024-01-08 22:38:05', '2024-01-26 10:43:56', 'Q0000002', '0222', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '0', null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice` VALUES ('b5b0ba85-7471-4eb8-aedd-add3856887c7', '0', '0', '', '2024-01-08 22:37:59', '2024-01-22 18:54:37', 'Q0000001', '0111', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '133aaba2-5403-4f46-817c-855908070623', '多选题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice` VALUES ('fd154665-c484-4842-a487-931063a844b0', '0', '0', '', '2024-01-08 22:38:21', '2024-01-22 18:54:43', 'Q0000004', '0444', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '5bd96dfb-0e85-4b03-87d9-cfd131b58580', '填空题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for question_master_choice_multiple
+-- ----------------------------
+DROP TABLE IF EXISTS `question_master_choice_multiple`;
+CREATE TABLE `question_master_choice_multiple` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `paperid` varchar(64) DEFAULT NULL,
+ `papername` varchar(256) DEFAULT NULL,
+ `papercode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `stem` text,
+ `answer` text,
+ `casebody` text,
+ `analysis` text,
+ `level` int(10) DEFAULT NULL,
+ `score` decimal(18,5) DEFAULT NULL,
+ `optiona` varchar(256) DEFAULT NULL,
+ `optionb` varchar(256) DEFAULT NULL,
+ `optionc` varchar(256) DEFAULT NULL,
+ `optiond` varchar(256) DEFAULT NULL,
+ `optione` varchar(256) DEFAULT NULL,
+ `optionf` varchar(256) DEFAULT NULL,
+ `optiong` varchar(256) DEFAULT NULL,
+ `optionh` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_master_choice_multiple
+-- ----------------------------
+INSERT INTO `question_master_choice_multiple` VALUES ('03891fb4-0ec8-4d2c-8822-187879a778bc', '0', '0', '', '2024-02-02 14:31:00', '2024-02-02 16:51:15', 'Q0000006', '单选1', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第一题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>B</p>', null, '<p>xxxadwawdawd</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_choice_multiple` VALUES ('56e600e5-b44d-49de-9795-14344351ddfb', '0', '0', '', '2024-01-08 22:38:27', '2024-01-26 11:28:17', 'Q0000005', '0555', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '4a7ae831-8bf0-4210-a324-a6d78939f858', '论述题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"{\\textstyle \\sum_{a}^{b}}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '4', '10.00000', null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice_multiple` VALUES ('586159ee-938f-4a08-a16e-1dd569598eb2', '0', '0', '', '2024-02-02 14:31:37', '2024-02-02 16:51:03', 'Q0000007', '单选2', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第二题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>A</p>', null, '<p>d4w5a6d4564</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_choice_multiple` VALUES ('81fe2e08-804b-454d-8143-f270cb2914f4', '0', '0', '', '2024-01-08 22:38:14', '2024-01-26 11:08:09', 'Q0000003', '0333', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><br></p>', '<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(248, 249, 249); font-size: 14px;\">C</span></p>', null, '<p><br></p>', null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice_multiple` VALUES ('88c74aef-f20b-4b09-b356-481a43ceec61', '0', '0', '', '2024-01-08 22:38:05', '2024-01-26 10:43:56', 'Q0000002', '0222', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '0', null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice_multiple` VALUES ('b5b0ba85-7471-4eb8-aedd-add3856887c7', '0', '0', '', '2024-01-08 22:37:59', '2024-01-22 18:54:37', 'Q0000001', '0111', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '133aaba2-5403-4f46-817c-855908070623', '多选题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_choice_multiple` VALUES ('fd154665-c484-4842-a487-931063a844b0', '0', '0', '', '2024-01-08 22:38:21', '2024-01-22 18:54:43', 'Q0000004', '0444', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '5bd96dfb-0e85-4b03-87d9-cfd131b58580', '填空题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for question_master_judge
+-- ----------------------------
+DROP TABLE IF EXISTS `question_master_judge`;
+CREATE TABLE `question_master_judge` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `paperid` varchar(64) DEFAULT NULL,
+ `papername` varchar(256) DEFAULT NULL,
+ `papercode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `stem` text,
+ `answer` text,
+ `casebody` text,
+ `analysis` text,
+ `level` int(10) DEFAULT NULL,
+ `score` decimal(18,5) DEFAULT NULL,
+ `optiona` varchar(256) DEFAULT NULL,
+ `optionb` varchar(256) DEFAULT NULL,
+ `optionc` varchar(256) DEFAULT NULL,
+ `optiond` varchar(256) DEFAULT NULL,
+ `optione` varchar(256) DEFAULT NULL,
+ `optionf` varchar(256) DEFAULT NULL,
+ `optiong` varchar(256) DEFAULT NULL,
+ `optionh` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_master_judge
+-- ----------------------------
+INSERT INTO `question_master_judge` VALUES ('03891fb4-0ec8-4d2c-8822-187879a778bc', '0', '0', '', '2024-02-02 14:31:00', '2024-02-02 16:51:15', 'Q0000006', '单选1', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第一题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>B</p>', null, '<p>xxxadwawdawd</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_judge` VALUES ('56e600e5-b44d-49de-9795-14344351ddfb', '0', '0', '', '2024-01-08 22:38:27', '2024-01-26 11:28:17', 'Q0000005', '0555', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '4a7ae831-8bf0-4210-a324-a6d78939f858', '论述题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"{\\textstyle \\sum_{a}^{b}}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '4', '10.00000', null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_judge` VALUES ('586159ee-938f-4a08-a16e-1dd569598eb2', '0', '0', '', '2024-02-02 14:31:37', '2024-02-02 16:51:03', 'Q0000007', '单选2', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第二题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>A</p>', null, '<p>d4w5a6d4564</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_judge` VALUES ('81fe2e08-804b-454d-8143-f270cb2914f4', '0', '0', '', '2024-01-08 22:38:14', '2024-01-26 11:08:09', 'Q0000003', '0333', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><br></p>', '<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(248, 249, 249); font-size: 14px;\">C</span></p>', null, '<p><br></p>', null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_judge` VALUES ('88c74aef-f20b-4b09-b356-481a43ceec61', '0', '0', '', '2024-01-08 22:38:05', '2024-01-26 10:43:56', 'Q0000002', '0222', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '0', null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_judge` VALUES ('b5b0ba85-7471-4eb8-aedd-add3856887c7', '0', '0', '', '2024-01-08 22:37:59', '2024-01-22 18:54:37', 'Q0000001', '0111', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '133aaba2-5403-4f46-817c-855908070623', '多选题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_judge` VALUES ('fd154665-c484-4842-a487-931063a844b0', '0', '0', '', '2024-01-08 22:38:21', '2024-01-22 18:54:43', 'Q0000004', '0444', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '5bd96dfb-0e85-4b03-87d9-cfd131b58580', '填空题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for question_master_translate
+-- ----------------------------
+DROP TABLE IF EXISTS `question_master_translate`;
+CREATE TABLE `question_master_translate` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `paperid` varchar(64) DEFAULT NULL,
+ `papername` varchar(256) DEFAULT NULL,
+ `papercode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `stem` text,
+ `answer` text,
+ `casebody` text,
+ `analysis` text,
+ `level` int(10) DEFAULT NULL,
+ `score` decimal(18,5) DEFAULT NULL,
+ `optiona` varchar(256) DEFAULT NULL,
+ `optionb` varchar(256) DEFAULT NULL,
+ `optionc` varchar(256) DEFAULT NULL,
+ `optiond` varchar(256) DEFAULT NULL,
+ `optione` varchar(256) DEFAULT NULL,
+ `optionf` varchar(256) DEFAULT NULL,
+ `optiong` varchar(256) DEFAULT NULL,
+ `optionh` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_master_translate
+-- ----------------------------
+INSERT INTO `question_master_translate` VALUES ('03891fb4-0ec8-4d2c-8822-187879a778bc', '0', '0', '', '2024-02-02 14:31:00', '2024-02-02 16:51:15', 'Q0000006', '单选1', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第一题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>B</p>', null, '<p>xxxadwawdawd</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_translate` VALUES ('56e600e5-b44d-49de-9795-14344351ddfb', '0', '0', '', '2024-01-08 22:38:27', '2024-01-26 11:28:17', 'Q0000005', '0555', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '4a7ae831-8bf0-4210-a324-a6d78939f858', '论述题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"{\\textstyle \\sum_{a}^{b}}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '4', '10.00000', null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_translate` VALUES ('586159ee-938f-4a08-a16e-1dd569598eb2', '0', '0', '', '2024-02-02 14:31:37', '2024-02-02 16:51:03', 'Q0000007', '单选2', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '808518fa-aa04-4f05-9556-79117197c6a4', '单选题', '<p>1+1=?第二题</p><p>A 1</p><p>B 2</p><p>C 3</p><p>D 4</p>', '<p>A</p>', null, '<p>d4w5a6d4564</p>', '0', null, '', '', '', '', '', '', '', '');
+INSERT INTO `question_master_translate` VALUES ('81fe2e08-804b-454d-8143-f270cb2914f4', '0', '0', '', '2024-01-08 22:38:14', '2024-01-26 11:08:09', 'Q0000003', '0333', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><br></p>', '<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(248, 249, 249); font-size: 14px;\">C</span></p>', null, '<p><br></p>', null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_translate` VALUES ('88c74aef-f20b-4b09-b356-481a43ceec61', '0', '0', '', '2024-01-08 22:38:05', '2024-01-26 10:43:56', 'Q0000002', '0222', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '9fb78cc5-b7f6-415d-8401-034efa8b17ea', '简答题', '<p><span data-w-e-type=\"formula\" data-w-e-is-void data-w-e-is-inline data-value=\"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd}\"></span></p>', '<p><br></p>', null, '<p><br></p>', '0', null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_translate` VALUES ('b5b0ba85-7471-4eb8-aedd-add3856887c7', '0', '0', '', '2024-01-08 22:37:59', '2024-01-22 18:54:37', 'Q0000001', '0111', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '133aaba2-5403-4f46-817c-855908070623', '多选题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `question_master_translate` VALUES ('fd154665-c484-4842-a487-931063a844b0', '0', '0', '', '2024-01-08 22:38:21', '2024-01-22 18:54:43', 'Q0000004', '0444', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', '99cb7d08-314b-49d3-92f1-14e87ddd8af8', null, null, '5bd96dfb-0e85-4b03-87d9-cfd131b58580', '填空题', null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for question_paper
+-- ----------------------------
+DROP TABLE IF EXISTS `question_paper`;
+CREATE TABLE `question_paper` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ `categoryid` varchar(64) DEFAULT NULL,
+ `categoryname` varchar(256) DEFAULT NULL,
+ `price` decimal(18,5) DEFAULT NULL,
+ `type` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_paper
+-- ----------------------------
+INSERT INTO `question_paper` VALUES ('3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', '0', '0', '', '2024-01-18 09:42:41', '2024-01-26 11:07:57', 'P0000003', '实训答辩', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '5d922a9a-132d-4df4-94b6-e977533fa88f', '专项练习', '0.10000', '2');
+INSERT INTO `question_paper` VALUES ('99cb7d08-314b-49d3-92f1-14e87ddd8af8', '0', '0', '', '2024-01-08 22:42:17', '2024-01-22 19:28:32', 'P0000002', '期末复习', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '5d922a9a-132d-4df4-94b6-e977533fa88f', '专项练习', '0.00000', '1');
+INSERT INTO `question_paper` VALUES ('afa74a91-92ca-48b4-9a21-bd8bb57a75fc', '0', '0', '', '2024-01-08 22:32:18', '2024-01-22 19:29:31', 'P0000001', '2024 期中考试', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001', 'ffd099a0-2ff1-487d-8a72-f30f1b60d303', '2024年度考试', '0.00000', '0');
+INSERT INTO `question_paper` VALUES ('b17b5358-0632-463c-ac12-eb94cdee130d', '0', '0', '', '2024-01-31 15:16:25', null, 'P0000004', 'aaa', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003', '5d922a9a-132d-4df4-94b6-e977533fa88f', '专项练习', '0.00000', '0');
+INSERT INTO `question_paper` VALUES ('d6a17cd6-d89a-4592-ab8d-d68c45084a5c', '0', '0', '', '2024-02-02 17:30:50', null, 'P0000005', '发的地方', 'a727fc6f-b706-416a-ab61-a0854c049c0f', '高等数学二', 'S0000005', 'ad9da6a5-682b-4e81-b1e1-9163fa0f6cce', '能力测验', '0.00000', '0');
+
+-- ----------------------------
+-- Table structure for question_paper_category
+-- ----------------------------
+DROP TABLE IF EXISTS `question_paper_category`;
+CREATE TABLE `question_paper_category` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `parentid` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `status` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_paper_category
+-- ----------------------------
+INSERT INTO `question_paper_category` VALUES ('33b0354e-6c94-4643-b977-5d6f82b84e14', 'ffd099a0-2ff1-487d-8a72-f30f1b60d303', '期中考试', '0', '', '2024-01-06 16:14:34', '2024-01-06 16:15:05', '0');
+INSERT INTO `question_paper_category` VALUES ('5d922a9a-132d-4df4-94b6-e977533fa88f', null, '专项练习', '0', '', '2024-01-06 16:15:42', null, '0');
+INSERT INTO `question_paper_category` VALUES ('74b5bfdb-10d4-488b-98a4-9b41e4238742', 'ffd099a0-2ff1-487d-8a72-f30f1b60d303', '期末考试', '0', '', '2024-01-06 16:14:43', '2024-01-06 16:15:10', '0');
+INSERT INTO `question_paper_category` VALUES ('ad9da6a5-682b-4e81-b1e1-9163fa0f6cce', null, '能力测验', '0', '', '2024-01-06 16:15:28', null, '0');
+INSERT INTO `question_paper_category` VALUES ('ffd099a0-2ff1-487d-8a72-f30f1b60d303', null, '2024年度考试', '0', '', '2024-01-06 16:14:59', null, '0');
+
+-- ----------------------------
+-- Table structure for question_subject
+-- ----------------------------
+DROP TABLE IF EXISTS `question_subject`;
+CREATE TABLE `question_subject` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `status` int(1) DEFAULT NULL COMMENT 'enabled',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `gradeid` varchar(64) DEFAULT NULL,
+ `gradename` varchar(256) DEFAULT NULL,
+ `gradecode` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_subject
+-- ----------------------------
+INSERT INTO `question_subject` VALUES ('5c69046c-9f0c-4356-877e-6f2afed2c45e', '0', '0', '', '2024-01-06 16:08:53', null, '10003', '物理', null, null, null);
+INSERT INTO `question_subject` VALUES ('9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '0', '0', '', '2024-01-06 16:08:32', null, '10002', '英语', null, null, null);
+INSERT INTO `question_subject` VALUES ('a727fc6f-b706-416a-ab61-a0854c049c0f', '0', '0', '', '2024-01-30 16:05:19', null, 'S0000005', '高等数学二', null, null, null);
+INSERT INTO `question_subject` VALUES ('b9b21d1f-aafd-41a3-84bc-87d7c9f28c75', '0', '0', '', '2024-01-30 16:05:12', null, 'S0000004', '高等数学一', null, null, null);
+INSERT INTO `question_subject` VALUES ('f998cc25-32c6-44aa-8869-7545b8347e4d', '0', '0', '', '2024-01-06 15:48:11', '2024-01-06 16:01:49', '10001', '数学', null, null, null);
+
+-- ----------------------------
+-- Table structure for question_subject_grade_relation
+-- ----------------------------
+DROP TABLE IF EXISTS `question_subject_grade_relation`;
+CREATE TABLE `question_subject_grade_relation` (
+ `id` varchar(64) NOT NULL,
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `status` int(11) DEFAULT NULL,
+ `actionby` varchar(128) CHARACTER SET utf8 DEFAULT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `gradeid` varchar(64) CHARACTER SET utf8 DEFAULT NULL,
+ `gradename` varchar(256) CHARACTER SET utf8 DEFAULT NULL,
+ `gradecode` varchar(256) CHARACTER SET utf8 DEFAULT NULL,
+ `subjectid` varchar(64) CHARACTER SET utf8 DEFAULT NULL,
+ `subjectname` varchar(256) CHARACTER SET utf8 DEFAULT NULL,
+ `subjectcode` varchar(256) CHARACTER SET utf8 DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Records of question_subject_grade_relation
+-- ----------------------------
+INSERT INTO `question_subject_grade_relation` VALUES ('25ddf0a6-d672-48fe-8068-cc16e4383ae0', '2024-02-05 15:04:39', null, null, null, '0', '13d2cbb0-6aaf-41dd-ba44-18650e3268b7', 'G009', '一年级', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001');
+INSERT INTO `question_subject_grade_relation` VALUES ('27cf029f-1039-48a9-b7d7-ae0c2c9bdce6', '2024-02-08 11:10:51', null, null, null, '0', '094cef8e-7328-4ca8-8c36-889978bbdcdb', 'G001', '一年级', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002');
+INSERT INTO `question_subject_grade_relation` VALUES ('2b7b7284-9fed-4b98-bcc7-29368dbb991b', '2024-02-05 15:04:29', null, null, null, '0', '13d2cbb0-6aaf-41dd-ba44-18650e3268b7', 'G009', '一年级', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002');
+INSERT INTO `question_subject_grade_relation` VALUES ('318eac06-f74e-429c-945b-2d9ce99593ff', '2024-02-08 11:10:35', null, null, null, '0', '93bd9f0e-b05c-454d-8dcb-758a35ad804f', 'G006', '六年级', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_grade_relation` VALUES ('3a78de10-efbf-4172-ba41-a5d22a648d80', '2024-02-05 15:05:38', null, null, null, '0', '13d2cbb0-6aaf-41dd-ba44-18650e3268b7', 'G009', '一年级', 'a727fc6f-b706-416a-ab61-a0854c049c0f', '高等数学二', 'S0000005');
+INSERT INTO `question_subject_grade_relation` VALUES ('49060c42-c2f9-4638-a3e1-2359257536fb', '2024-02-08 11:10:51', null, null, null, '0', '094cef8e-7328-4ca8-8c36-889978bbdcdb', 'G001', '一年级', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_grade_relation` VALUES ('4bc73cb2-7cfa-4c1b-8fc0-0e7c71e61a56', '2024-02-08 11:10:35', null, null, null, '0', '93bd9f0e-b05c-454d-8dcb-758a35ad804f', 'G006', '六年级', '9983c5b9-1ad1-408d-b8e1-4d1c9b46f9fd', '英语', '10002');
+INSERT INTO `question_subject_grade_relation` VALUES ('523dfb7c-9be7-4bef-a4ce-336bd8c4804c', '2024-02-08 11:10:51', null, null, null, '0', '094cef8e-7328-4ca8-8c36-889978bbdcdb', 'G001', '一年级', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001');
+INSERT INTO `question_subject_grade_relation` VALUES ('59dd7a9d-d72f-410e-95d5-819340bdfc8c', '2024-02-08 11:10:35', null, null, null, '0', '93bd9f0e-b05c-454d-8dcb-758a35ad804f', 'G006', '六年级', 'f998cc25-32c6-44aa-8869-7545b8347e4d', '数学', '10001');
+INSERT INTO `question_subject_grade_relation` VALUES ('5f0fbc51-8f0d-4664-afe3-3845033ff097', '2024-02-08 11:10:35', null, null, null, '0', '93bd9f0e-b05c-454d-8dcb-758a35ad804f', 'G006', '六年级', 'a727fc6f-b706-416a-ab61-a0854c049c0f', '高等数学二', 'S0000005');
+INSERT INTO `question_subject_grade_relation` VALUES ('c359236d-2fcb-46cd-987d-39dc6f49706d', '2024-02-05 15:04:29', null, null, null, '0', '13d2cbb0-6aaf-41dd-ba44-18650e3268b7', 'G009', '一年级', 'b9b21d1f-aafd-41a3-84bc-87d7c9f28c75', '高等数学一', 'S0000004');
+INSERT INTO `question_subject_grade_relation` VALUES ('cb04ad2c-b4ae-4046-b754-ad89a01c0f49', '2024-02-08 11:10:35', null, null, null, '0', '93bd9f0e-b05c-454d-8dcb-758a35ad804f', 'G006', '六年级', 'b9b21d1f-aafd-41a3-84bc-87d7c9f28c75', '高等数学一', 'S0000004');
+INSERT INTO `question_subject_grade_relation` VALUES ('ee6de222-de5d-45b4-a705-e5aa3abc219f', '2024-02-05 15:04:29', null, null, null, '0', '13d2cbb0-6aaf-41dd-ba44-18650e3268b7', 'G009', '一年级', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+
+-- ----------------------------
+-- Table structure for question_subject_knowledge_point
+-- ----------------------------
+DROP TABLE IF EXISTS `question_subject_knowledge_point`;
+CREATE TABLE `question_subject_knowledge_point` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `parentid` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'key',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `status` int(11) DEFAULT NULL,
+ `subjectid` varchar(64) DEFAULT NULL,
+ `subjectname` varchar(256) DEFAULT NULL,
+ `subjectcode` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of question_subject_knowledge_point
+-- ----------------------------
+INSERT INTO `question_subject_knowledge_point` VALUES ('012064ca-855f-4eff-9baf-e97e29388201', 'fe9589be-e23f-43d4-914d-1bb6face3765', '2 固体、液体和气体', '0', '', '2024-01-26 16:48:50', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('068bb84a-1b40-4d4d-9dda-4b82d0a70b40', '956bb085-6aca-442d-a584-63098d7eb238', '机械能', '0', '', '2024-01-26 16:42:57', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('350d9a11-de87-4fb6-955c-534a1a15194d', '956bb085-6aca-442d-a584-63098d7eb238', '曲线运动、万有引力', '0', '', '2024-01-26 16:38:44', '2024-01-26 16:38:56', '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('38811053-0481-4910-a427-846e0befe186', '956bb085-6aca-442d-a584-63098d7eb238', '机械波', '0', '', '2024-01-26 16:43:17', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('8d8262cd-e382-4c30-ab66-7d8d221c8c63', '956bb085-6aca-442d-a584-63098d7eb238', '相互作用、力与机械', '0', '', '2024-01-26 16:30:29', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('956bb085-6aca-442d-a584-63098d7eb238', null, '第一章 力学', '0', '', '2024-01-26 15:57:24', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('b5acfe90-3b41-42c2-a7ab-98f7a77f5b95', '956bb085-6aca-442d-a584-63098d7eb238', '牛顿运动定律', '0', '', '2024-01-26 16:30:37', '2024-01-26 16:38:21', '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('ce7961be-073d-42ae-89ef-9c18d6e32ce9', '956bb085-6aca-442d-a584-63098d7eb238', '机械振动', '0', '', '2024-01-26 16:43:05', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('d2c08b0a-c02b-4163-9647-a95913a3e795', 'fe9589be-e23f-43d4-914d-1bb6face3765', '1 分子热运动和热机', '0', '', '2024-01-26 16:48:44', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('f2197bdb-b7be-4b59-b6e1-039c7d60127b', '956bb085-6aca-442d-a584-63098d7eb238', '运动的描述', '0', '', '2024-01-26 16:17:29', '2024-01-26 16:27:42', '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('f3c11f2c-a78f-4713-9da4-1597684a092d', '956bb085-6aca-442d-a584-63098d7eb238', '动量', '0', '', '2024-01-26 16:39:05', '2024-01-26 16:40:13', '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+INSERT INTO `question_subject_knowledge_point` VALUES ('fe9589be-e23f-43d4-914d-1bb6face3765', '', '第二章 热学', '0', '', '2024-01-26 16:47:44', null, '0', '5c69046c-9f0c-4356-877e-6f2afed2c45e', '物理', '10003');
+
+-- ----------------------------
+-- Table structure for shopping_cart
+-- ----------------------------
+DROP TABLE IF EXISTS `shopping_cart`;
+CREATE TABLE `shopping_cart` (
+ `id` varchar(64) NOT NULL COMMENT '购物车ID',
+ `code` varchar(64) DEFAULT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `vipuserId` varchar(64) DEFAULT NULL COMMENT '会员ID',
+ `vipname` varchar(128) DEFAULT NULL COMMENT '会员名称',
+ `vipphone` varchar(32) DEFAULT NULL COMMENT '会员联系电话',
+ `vipdiamondtype` int(11) DEFAULT NULL COMMENT '会员等级',
+ `viptype` int(11) DEFAULT NULL COMMENT '会员类型',
+ `vippicture` varchar(1024) DEFAULT NULL COMMENT '会员肖像',
+ `vipcarddiscountrate` decimal(18,5) DEFAULT NULL COMMENT '会员卡折扣率',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of shopping_cart
+-- ----------------------------
+INSERT INTO `shopping_cart` VALUES ('b942adf2-53d1-4fcc-b1e6-10345e7f6489', 'C0000001', '0', null, '2024-01-08 21:28:00', '2024-01-08 21:28:48', 'b23ee1ba-3b67-11eb-8afe-00163e033152', null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for shopping_cart_product
+-- ----------------------------
+DROP TABLE IF EXISTS `shopping_cart_product`;
+CREATE TABLE `shopping_cart_product` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `productid` varchar(64) DEFAULT NULL COMMENT '产品ID',
+ `productcode` varchar(64) DEFAULT NULL COMMENT '产品编号',
+ `productname` varchar(256) DEFAULT NULL COMMENT '产品名称',
+ `status` int(11) DEFAULT NULL COMMENT '状态',
+ `color` varchar(32) DEFAULT NULL COMMENT '颜色',
+ `size` varchar(32) DEFAULT NULL COMMENT '尺码',
+ `count` int(11) DEFAULT NULL COMMENT '数量',
+ `image` varchar(256) DEFAULT NULL COMMENT '产品图片',
+ `price` decimal(18,5) DEFAULT NULL COMMENT '产品原价',
+ `saleprice` decimal(18,5) DEFAULT NULL COMMENT '售价',
+ `cartid` varchar(64) DEFAULT NULL,
+ `cartcode` varchar(128) DEFAULT NULL COMMENT '订单编号',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of shopping_cart_product
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_audittrail
+-- ----------------------------
+DROP TABLE IF EXISTS `system_audittrail`;
+CREATE TABLE `system_audittrail` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `message` varchar(1024) DEFAULT NULL,
+ `actionby` varchar(256) DEFAULT NULL COMMENT 'action by some user',
+ `actiontype` varchar(256) DEFAULT NULL COMMENT 'action type: create, update, delete, query',
+ `actionip` varchar(256) DEFAULT NULL COMMENT 'action computer ip',
+ `actiontime` datetime DEFAULT NULL COMMENT 'action time',
+ `module` varchar(256) DEFAULT NULL COMMENT 'module',
+ `beforetarget` varchar(1024) DEFAULT NULL COMMENT 'before target',
+ `aftertarget` varchar(1024) DEFAULT NULL COMMENT 'after target',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of system_audittrail
+-- ----------------------------
+INSERT INTO `system_audittrail` VALUES ('02cc6e21-d349-4138-8b5f-02bed4b0bf48', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 19:26:34', 'Security', null, null, '0', null, '2024-02-18 19:26:34', null);
+INSERT INTO `system_audittrail` VALUES ('03a37e73-a67c-4610-a344-bc9432e71f43', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 16:55:42', 'Security', null, null, '0', null, '2024-01-27 16:55:42', null);
+INSERT INTO `system_audittrail` VALUES ('0404c953-8ba3-4920-88b8-3049d415e63d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 10:51:28', 'Security', null, null, '0', null, '2024-01-26 10:51:28', null);
+INSERT INTO `system_audittrail` VALUES ('06418cc6-2907-443f-b728-f1c315613326', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:09:10', 'Security', null, null, '0', null, '2024-02-02 13:09:10', null);
+INSERT INTO `system_audittrail` VALUES ('0a31b543-f9ef-435b-90e7-4f27f59b0e34', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 15:08:03', 'Security', null, null, '0', null, '2024-02-02 15:08:03', null);
+INSERT INTO `system_audittrail` VALUES ('0a550b23-cdd5-4859-9e0a-1c376b768faf', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-18 08:44:38', 'Security', null, null, '0', null, '2024-02-18 08:44:38', null);
+INSERT INTO `system_audittrail` VALUES ('0a55ad08-1b80-4e4a-9015-0799e8f05c11', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 15:42:50', 'Security', null, null, '0', null, '2024-01-06 15:42:50', null);
+INSERT INTO `system_audittrail` VALUES ('0ac5f047-739e-4649-b730-e6e31336bdba', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 16:26:53', 'Security', null, null, '0', null, '2024-02-02 16:26:53', null);
+INSERT INTO `system_audittrail` VALUES ('0b6a6559-ac16-4e26-ac2f-2cfe0ec06dd3', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-23 08:09:13', 'Security', null, null, '0', null, '2024-01-23 08:09:13', null);
+INSERT INTO `system_audittrail` VALUES ('0bb36d68-40bb-4134-9102-d1a6f20ed84c', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 15:53:35', 'Security', null, null, '0', null, '2024-01-30 15:53:35', null);
+INSERT INTO `system_audittrail` VALUES ('0f80b677-1cc2-4cf5-986e-2209977dd662', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 12:56:31', 'Security', null, null, '0', null, '2024-02-02 12:56:31', null);
+INSERT INTO `system_audittrail` VALUES ('10f5bfa0-4968-451b-b4b7-bf7d1daf8934', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-08 22:29:15', 'Security', null, null, '0', null, '2024-01-08 22:29:15', null);
+INSERT INTO `system_audittrail` VALUES ('127a7e0e-8965-4dfb-9db1-6983b3d53ca0', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-31 11:23:17', 'Security', null, null, '0', null, '2024-01-31 11:23:17', null);
+INSERT INTO `system_audittrail` VALUES ('12b844e4-d421-4d8c-a07e-a50640acf605', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-08 16:31:28', 'Security', null, null, '0', null, '2024-02-08 16:31:28', null);
+INSERT INTO `system_audittrail` VALUES ('15ed47a6-bf67-4c9c-a4d0-6ec87d71fef4', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 17:58:36', 'Security', null, null, '0', null, '2024-02-06 17:58:36', null);
+INSERT INTO `system_audittrail` VALUES ('15f20c93-01b9-4bef-9856-0576b2623f68', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 14:35:15', 'Security', null, null, '0', null, '2024-02-05 14:35:15', null);
+INSERT INTO `system_audittrail` VALUES ('16688c54-8620-4694-ad3d-8437020a97fd', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-19 08:17:44', 'Security', null, null, '0', null, '2024-02-19 08:17:44', null);
+INSERT INTO `system_audittrail` VALUES ('171cfe55-6eaf-4a77-9fb0-be37169fafc0', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 14:47:34', 'Security', null, null, '0', null, '2024-01-27 14:47:34', null);
+INSERT INTO `system_audittrail` VALUES ('178bd431-5bbe-4406-a759-66f27ee7a58b', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-18 18:16:18', 'Security', null, null, '0', null, '2024-02-18 18:16:18', null);
+INSERT INTO `system_audittrail` VALUES ('17957fb8-4ee6-4e13-b9dd-a7e0d6813e9e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 09:49:51', 'Security', null, null, '0', null, '2024-02-02 09:49:51', null);
+INSERT INTO `system_audittrail` VALUES ('1803b537-f245-4e3d-80a2-4e7604256523', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-19 15:05:25', 'Security', null, null, '0', null, '2024-02-19 15:05:25', null);
+INSERT INTO `system_audittrail` VALUES ('18a35d04-aad8-45ab-a459-521939f916b8', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 14:01:05', 'Security', null, null, '0', null, '2024-02-01 14:01:05', null);
+INSERT INTO `system_audittrail` VALUES ('19279f6a-15a8-4270-9483-04cf9bcac2e0', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 09:37:19', 'Security', null, null, '0', null, '2024-02-02 09:37:19', null);
+INSERT INTO `system_audittrail` VALUES ('1af09a0c-5aa7-4d9e-88ad-a32ed6495a8b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 14:46:28', 'Security', null, null, '0', null, '2024-02-06 14:46:28', null);
+INSERT INTO `system_audittrail` VALUES ('1b06081c-7100-46c3-8ba4-c0281cb5d68f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 16:36:58', 'Security', null, null, '0', null, '2024-02-02 16:36:58', null);
+INSERT INTO `system_audittrail` VALUES ('1b8de07a-c287-4f8c-b319-cc21e6a4955e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:01:58', 'Security', null, null, '0', null, '2024-02-02 13:01:58', null);
+INSERT INTO `system_audittrail` VALUES ('1bd608ef-aa3c-47b3-97e3-1ae93d87f063', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 09:25:50', 'Security', null, null, '0', null, '2024-02-05 09:25:50', null);
+INSERT INTO `system_audittrail` VALUES ('1c3d66a9-b2b3-4fb6-8141-16488ab72e7b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 10:53:03', 'Security', null, null, '0', null, '2024-02-02 10:53:03', null);
+INSERT INTO `system_audittrail` VALUES ('1de5a0b3-aff5-4775-9c2e-3454240b3bc9', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-06 17:47:49', 'Security', null, null, '0', null, '2024-02-06 17:47:49', null);
+INSERT INTO `system_audittrail` VALUES ('1e0b0a2a-baf0-43e2-8356-aee01057f67b', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-20 10:15:41', 'Security', null, null, '0', null, '2024-02-20 10:15:41', null);
+INSERT INTO `system_audittrail` VALUES ('1e419f75-3a7e-47d1-941d-c46c4740aa22', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 17:28:28', 'Security', null, null, '0', null, '2024-02-06 17:28:28', null);
+INSERT INTO `system_audittrail` VALUES ('1e533a8e-03f5-4ba9-85fa-ad810f0159ab', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:32:42', 'Security', null, null, '0', null, '2024-02-18 18:32:42', null);
+INSERT INTO `system_audittrail` VALUES ('1eb43d11-e103-4066-ab94-9f210f06cd9d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 22:43:51', 'Security', null, null, '0', null, '2024-01-06 22:43:51', null);
+INSERT INTO `system_audittrail` VALUES ('1f2207a1-f3b4-4f36-bd14-682f889042a5', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-08 10:31:28', 'Security', null, null, '0', null, '2024-02-08 10:31:28', null);
+INSERT INTO `system_audittrail` VALUES ('1f654a91-42e9-48dc-a53f-6488f81f48e9', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-10 10:23:33', 'Security', null, null, '0', null, '2024-02-10 10:23:33', null);
+INSERT INTO `system_audittrail` VALUES ('204ba1d6-35d5-44ac-b33e-089f6b4641f1', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-18 18:37:08', 'Security', null, null, '0', null, '2024-02-18 18:37:08', null);
+INSERT INTO `system_audittrail` VALUES ('214f0e1b-a420-4654-91ce-249a16cddde9', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 08:19:11', 'Security', null, null, '0', null, '2024-02-04 08:19:11', null);
+INSERT INTO `system_audittrail` VALUES ('2171328f-4936-44e3-bba6-be269842eb23', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-08 16:29:02', 'Security', null, null, '0', null, '2024-02-08 16:29:02', null);
+INSERT INTO `system_audittrail` VALUES ('22d85af6-347b-4463-b788-794f60d71733', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 09:57:00', 'Security', null, null, '0', null, '2024-02-05 09:57:00', null);
+INSERT INTO `system_audittrail` VALUES ('2364994b-2de6-4064-a66e-0acb2ae24333', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:28:02', 'Security', null, null, '0', null, '2024-02-02 14:28:02', null);
+INSERT INTO `system_audittrail` VALUES ('23e5a5c2-7f1c-4536-a363-97196ee83a15', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-23 10:51:32', 'Security', null, null, '0', null, '2024-02-23 10:51:32', null);
+INSERT INTO `system_audittrail` VALUES ('24d514de-9e8d-42d3-a18a-3c551662db2b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 18:01:40', 'Security', null, null, '0', null, '2024-02-06 18:01:40', null);
+INSERT INTO `system_audittrail` VALUES ('254f6cc3-1e83-454f-b364-ef19e23744b1', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:29:26', 'Security', null, null, '0', null, '2024-02-02 13:29:26', null);
+INSERT INTO `system_audittrail` VALUES ('26c8e2ef-2b75-41c0-9ee8-017275289bf6', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 10:18:03', 'Security', null, null, '0', null, '2024-02-01 10:18:03', null);
+INSERT INTO `system_audittrail` VALUES ('28bffbfc-9fdc-4463-9071-1f17c134e39b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 09:48:32', 'Security', null, null, '0', null, '2024-02-02 09:48:32', null);
+INSERT INTO `system_audittrail` VALUES ('29c24116-e077-4f3c-8042-3043a1d2b1e8', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 08:33:47', 'Security', null, null, '0', null, '2024-02-04 08:33:47', null);
+INSERT INTO `system_audittrail` VALUES ('2a8653e8-195f-477a-a8f4-2f057f976bad', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:28:21', 'Security', null, null, '0', null, '2024-02-02 14:28:21', null);
+INSERT INTO `system_audittrail` VALUES ('2b6944d0-4ff1-41ed-adc4-6309cb316868', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 10:40:46', 'Security', null, null, '0', null, '2024-02-01 10:40:46', null);
+INSERT INTO `system_audittrail` VALUES ('2c68000f-26e1-47ad-801c-e7ad3ee59856', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-04 22:41:29', 'Security', null, null, '0', null, '2024-01-04 22:41:29', null);
+INSERT INTO `system_audittrail` VALUES ('2dea6541-4797-45d8-8fd9-e7778f761aaa', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 17:49:35', 'Security', null, null, '0', null, '2024-02-06 17:49:35', null);
+INSERT INTO `system_audittrail` VALUES ('2f44df81-b143-4390-86b7-74853ee85e08', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-25 09:26:05', 'Security', null, null, '0', null, '2024-01-25 09:26:05', null);
+INSERT INTO `system_audittrail` VALUES ('3207c59d-62b2-4456-9684-602732125a5e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 17:31:22', 'Security', null, null, '0', null, '2024-02-18 17:31:22', null);
+INSERT INTO `system_audittrail` VALUES ('322cce0f-b359-4047-8fdc-15abf1b76cc7', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-31 11:19:21', 'Security', null, null, '0', null, '2024-01-31 11:19:21', null);
+INSERT INTO `system_audittrail` VALUES ('32b840ee-b149-489d-8632-baaaaeb5db91', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 22:52:46', 'Security', null, null, '0', null, '2024-01-06 22:52:46', null);
+INSERT INTO `system_audittrail` VALUES ('33e0d995-d6c8-4d00-978f-4870839ad8ff', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 19:26:14', 'Security', null, null, '0', null, '2024-02-18 19:26:14', null);
+INSERT INTO `system_audittrail` VALUES ('34157b78-6331-41e4-b6cc-6936d52f9df5', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-18 18:19:14', 'Security', null, null, '0', null, '2024-02-18 18:19:14', null);
+INSERT INTO `system_audittrail` VALUES ('359dd3ac-3d42-4bb4-b4e3-1a4cf765860f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 16:19:58', 'Security', null, null, '0', null, '2024-01-27 16:19:58', null);
+INSERT INTO `system_audittrail` VALUES ('3786a34b-2d20-4574-97ee-d7d7ddff4bb7', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 14:23:22', 'Security', null, null, '0', null, '2024-01-27 14:23:22', null);
+INSERT INTO `system_audittrail` VALUES ('37ebb557-9f59-4d8d-8408-6c0b7286e02d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 15:14:31', 'Security', null, null, '0', null, '2024-01-27 15:14:31', null);
+INSERT INTO `system_audittrail` VALUES ('38863f80-1496-4c1f-b6b9-d2b71c765753', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:50:32', 'Security', null, null, '0', null, '2024-01-06 20:50:32', null);
+INSERT INTO `system_audittrail` VALUES ('38f72d6c-075f-48eb-9302-30e8fe8b923e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 10:27:16', 'Security', null, null, '0', null, '2024-02-02 10:27:16', null);
+INSERT INTO `system_audittrail` VALUES ('395615bc-a4bd-4d9d-9d2b-fdad1cfa04df', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-19 16:17:22', 'Security', null, null, '0', null, '2024-02-19 16:17:22', null);
+INSERT INTO `system_audittrail` VALUES ('39980429-58d6-48e6-aace-bc8e5ec5644a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:05:19', 'Security', null, null, '0', null, '2024-02-02 14:05:19', null);
+INSERT INTO `system_audittrail` VALUES ('3a3ccbd8-a2ad-4c4a-b8bf-c0a1ada6e586', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 10:13:42', 'Security', null, null, '0', null, '2024-01-26 10:13:42', null);
+INSERT INTO `system_audittrail` VALUES ('3a5d86e6-16c8-4a0b-8440-8ccdc9f307bc', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:24:51', 'Security', null, null, '0', null, '2024-02-02 14:24:51', null);
+INSERT INTO `system_audittrail` VALUES ('3d901156-b688-44c0-bacf-3047c26429e6', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-14 14:41:56', 'Security', null, null, '0', null, '2024-01-14 14:41:56', null);
+INSERT INTO `system_audittrail` VALUES ('3eea0ae4-51dc-4fb8-8159-79f54220b698', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:51:04', 'Security', null, null, '0', null, '2024-01-06 20:51:04', null);
+INSERT INTO `system_audittrail` VALUES ('3f04ad5d-85a0-4eab-bf08-451caca0d87d', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:12:31', 'Security', null, null, '0', null, '2024-02-18 18:12:31', null);
+INSERT INTO `system_audittrail` VALUES ('40c82613-1bb1-40f3-a57a-9c63b7f24fc8', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-17 16:41:12', 'Security', null, null, '0', null, '2024-01-17 16:41:12', null);
+INSERT INTO `system_audittrail` VALUES ('42d8d7bc-106f-4738-a1bd-8d77826ddf39', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 18:04:58', 'Security', null, null, '0', null, '2024-02-06 18:04:58', null);
+INSERT INTO `system_audittrail` VALUES ('430ee356-5b5b-4f8c-86de-b65e6097dd3b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-04 18:55:56', 'Security', null, null, '0', null, '2024-01-04 18:55:56', null);
+INSERT INTO `system_audittrail` VALUES ('431b1355-e591-49dd-b58c-bddda42de8df', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-29 08:49:26', 'Security', null, null, '0', null, '2024-01-29 08:49:26', null);
+INSERT INTO `system_audittrail` VALUES ('4404e5fd-ff91-4102-bbbf-4a03270ebddd', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-31 09:34:03', 'Security', null, null, '0', null, '2024-01-31 09:34:03', null);
+INSERT INTO `system_audittrail` VALUES ('44e33417-b02a-4eb9-9ca2-1b433966fde0', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 13:55:05', 'Security', null, null, '0', null, '2024-02-01 13:55:05', null);
+INSERT INTO `system_audittrail` VALUES ('4540f76d-b823-4322-be9b-bfcad932c4bc', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-25 11:25:00', 'Security', null, null, '0', null, '2024-01-25 11:25:00', null);
+INSERT INTO `system_audittrail` VALUES ('454e4b95-0f98-4a2b-b99d-2bdb938b55cc', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-07 09:11:18', 'Security', null, null, '0', null, '2024-02-07 09:11:18', null);
+INSERT INTO `system_audittrail` VALUES ('46021649-b640-43ed-a650-c31306455b90', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 15:07:17', 'Security', null, null, '0', null, '2024-01-27 15:07:17', null);
+INSERT INTO `system_audittrail` VALUES ('46372030-5ea7-40a3-b19b-a9db3347ea3a', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 09:14:23', 'Security', null, null, '0', null, '2024-02-04 09:14:23', null);
+INSERT INTO `system_audittrail` VALUES ('4675e666-9a05-4342-807a-a12ebf5fa450', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 12:05:27', 'Security', null, null, '0', null, '2024-02-01 12:05:27', null);
+INSERT INTO `system_audittrail` VALUES ('46c79a3e-81cd-4f52-a4d0-738fb9c24904', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 17:48:32', 'Security', null, null, '0', null, '2024-02-06 17:48:32', null);
+INSERT INTO `system_audittrail` VALUES ('46d78c67-15ab-4bf2-af38-a93b519a3c77', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 09:23:59', 'Security', null, null, '0', null, '2024-02-01 09:23:59', null);
+INSERT INTO `system_audittrail` VALUES ('46f39f5f-4b3e-44b7-9c72-d5e3c362a9c3', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 22:50:02', 'Security', null, null, '0', null, '2024-01-06 22:50:02', null);
+INSERT INTO `system_audittrail` VALUES ('47333c31-31ab-4424-8378-6b59ae287831', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:23:13', 'Security', null, null, '0', null, '2024-02-02 14:23:13', null);
+INSERT INTO `system_audittrail` VALUES ('47947a46-1b3e-4682-8874-0521fbdf97de', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 08:53:41', 'Security', null, null, '0', null, '2024-02-04 08:53:41', null);
+INSERT INTO `system_audittrail` VALUES ('481cca55-54d3-4808-9325-457a94b6445c', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 18:00:50', 'Security', null, null, '0', null, '2024-02-06 18:00:50', null);
+INSERT INTO `system_audittrail` VALUES ('48a49a94-02a1-44ae-b70e-8647e137ea52', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-12 21:40:21', 'Security', null, null, '0', null, '2024-02-12 21:40:21', null);
+INSERT INTO `system_audittrail` VALUES ('496928e7-12ab-40c7-9802-033b06b88292', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-20 10:11:53', 'Security', null, null, '0', null, '2024-02-20 10:11:53', null);
+INSERT INTO `system_audittrail` VALUES ('4a354e47-2cd9-4be4-9317-2473b46839ee', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 12:04:44', 'Security', null, null, '0', null, '2024-02-01 12:04:44', null);
+INSERT INTO `system_audittrail` VALUES ('4a9f45a3-1e44-4861-993d-6cd05fac7ce5', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-20 08:33:43', 'Security', null, null, '0', null, '2024-02-20 08:33:43', null);
+INSERT INTO `system_audittrail` VALUES ('4ab583d1-6150-4345-aed9-6288939ad73e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 10:21:24', 'Security', null, null, '0', null, '2024-02-02 10:21:24', null);
+INSERT INTO `system_audittrail` VALUES ('4ab989b8-b31d-496c-877a-53724be61f55', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-23 10:36:24', 'Security', null, null, '0', null, '2024-02-23 10:36:24', null);
+INSERT INTO `system_audittrail` VALUES ('4afee9cd-3f2a-4364-908a-bbd44fe4bfae', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:15:57', 'Security', null, null, '0', null, '2024-02-02 13:15:57', null);
+INSERT INTO `system_audittrail` VALUES ('4e84f4ec-c985-4580-bbbc-fd76731ba0b2', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 23:04:26', 'Security', null, null, '0', null, '2024-02-06 23:04:26', null);
+INSERT INTO `system_audittrail` VALUES ('4eb76907-166c-48eb-bd1b-0f3a8f26e5a3', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:39:10', 'Security', null, null, '0', null, '2024-01-06 20:39:10', null);
+INSERT INTO `system_audittrail` VALUES ('4fb423d0-4c3a-42fc-8b84-1c91609d4592', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 09:11:56', 'Security', null, null, '0', null, '2024-01-30 09:11:56', null);
+INSERT INTO `system_audittrail` VALUES ('50e4e04a-8f89-4e9d-acfd-542908ec1e09', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 17:47:56', 'Security', null, null, '0', null, '2024-02-06 17:47:56', null);
+INSERT INTO `system_audittrail` VALUES ('515c1da2-d0e1-4431-8f06-1fcbf26ff3f7', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 16:20:43', 'Security', null, null, '0', null, '2024-02-02 16:20:43', null);
+INSERT INTO `system_audittrail` VALUES ('52b00757-c95c-43cf-9455-310aa5dd1dda', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-06 17:47:49', 'Security', null, null, '0', null, '2024-02-06 17:47:49', null);
+INSERT INTO `system_audittrail` VALUES ('52b755e7-6ced-440b-8739-7f0d1afb5f11', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 15:11:52', 'Security', null, null, '0', null, '2024-02-05 15:11:52', null);
+INSERT INTO `system_audittrail` VALUES ('5401b93e-2a24-433a-bdbb-d37ede51f1ed', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 17:59:11', 'Security', null, null, '0', null, '2024-02-06 17:59:11', null);
+INSERT INTO `system_audittrail` VALUES ('541d34d8-e1c1-46b2-a916-412de479eafe', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 11:42:03', 'Security', null, null, '0', null, '2024-01-30 11:42:03', null);
+INSERT INTO `system_audittrail` VALUES ('5495b3c5-6a44-48a6-be02-f0a98d051683', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-31 15:13:26', 'Security', null, null, '0', null, '2024-01-31 15:13:26', null);
+INSERT INTO `system_audittrail` VALUES ('57391e72-c8da-41c0-b809-0a25c325d699', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 15:46:42', 'Security', null, null, '0', null, '2024-01-30 15:46:42', null);
+INSERT INTO `system_audittrail` VALUES ('58c9dc64-afe9-45bf-ab46-54f7ada27ba1', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-23 23:27:23', 'Security', null, null, '0', null, '2024-01-23 23:27:23', null);
+INSERT INTO `system_audittrail` VALUES ('58dda817-7f61-4fab-980d-38bdc0e22f69', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-07 11:18:49', 'Security', null, null, '0', null, '2024-02-07 11:18:49', null);
+INSERT INTO `system_audittrail` VALUES ('5a6ae7a2-4b0e-4a66-b53d-6a3dd36018e9', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-18 10:33:02', 'Security', null, null, '0', null, '2024-01-18 10:33:02', null);
+INSERT INTO `system_audittrail` VALUES ('5c660ca4-60ff-4574-99b5-a8f1e5f38e2a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 15:22:14', 'Security', null, null, '0', null, '2024-01-27 15:22:14', null);
+INSERT INTO `system_audittrail` VALUES ('5de61180-995d-464c-99fd-6c51da2d8cbe', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 23:06:20', 'Security', null, null, '0', null, '2024-02-06 23:06:20', null);
+INSERT INTO `system_audittrail` VALUES ('5f179b3f-5d1e-49c5-8b2c-53b0343410d1', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-23 12:12:47', 'Security', null, null, '0', null, '2024-01-23 12:12:47', null);
+INSERT INTO `system_audittrail` VALUES ('6021797f-e5b2-462a-a494-c9a9254a06f3', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-18 18:10:20', 'Security', null, null, '0', null, '2024-02-18 18:10:20', null);
+INSERT INTO `system_audittrail` VALUES ('618caf2a-dbe8-4e40-9130-3298419dc53a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-04 11:52:54', 'Security', null, null, '0', null, '2024-01-04 11:52:54', null);
+INSERT INTO `system_audittrail` VALUES ('619b3d30-5810-4f61-8b3e-91e2c4f0d4b7', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-31 09:52:00', 'Security', null, null, '0', null, '2024-01-31 09:52:00', null);
+INSERT INTO `system_audittrail` VALUES ('62a724c8-219d-42cb-9434-bc9537e451b9', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 09:50:33', 'Security', null, null, '0', null, '2024-02-02 09:50:33', null);
+INSERT INTO `system_audittrail` VALUES ('637257d6-1d3d-4eb2-8688-c001d0d5c54f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:13:16', 'Security', null, null, '0', null, '2024-02-18 18:13:16', null);
+INSERT INTO `system_audittrail` VALUES ('63f4ce5f-3297-4031-9df1-955b14473950', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-20 14:37:29', 'Security', null, null, '0', null, '2024-02-20 14:37:29', null);
+INSERT INTO `system_audittrail` VALUES ('64292873-97d3-4826-a380-4df36a6b78af', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-07 11:18:06', 'Security', null, null, '0', null, '2024-02-07 11:18:06', null);
+INSERT INTO `system_audittrail` VALUES ('65dce1d5-6321-4be5-8b06-6069ec3ffef7', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 12:42:57', 'Security', null, null, '0', null, '2024-02-02 12:42:57', null);
+INSERT INTO `system_audittrail` VALUES ('66a3f4e8-568e-439b-9b2b-75945ccce1f0', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 17:49:09', 'Security', null, null, '0', null, '2024-02-06 17:49:09', null);
+INSERT INTO `system_audittrail` VALUES ('6836dde6-7e0b-47b9-bc34-fe3966aadb59', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-10 10:41:06', 'Security', null, null, '0', null, '2024-02-10 10:41:06', null);
+INSERT INTO `system_audittrail` VALUES ('6902b023-2149-4f2a-9290-3af4443c584c', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-29 14:24:28', 'Security', null, null, '0', null, '2024-01-29 14:24:28', null);
+INSERT INTO `system_audittrail` VALUES ('69707bb8-775b-4cfb-9b82-a0a3a272c625', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 10:34:42', 'Security', null, null, '0', null, '2024-02-01 10:34:42', null);
+INSERT INTO `system_audittrail` VALUES ('69a5eb1d-3efe-4bee-bbe8-3429a70ae020', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 10:53:22', 'Security', null, null, '0', null, '2024-01-30 10:53:22', null);
+INSERT INTO `system_audittrail` VALUES ('6b50d9cb-71ff-4b79-ae4b-feb45cb76d93', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 15:51:13', 'Security', null, null, '0', null, '2024-01-30 15:51:13', null);
+INSERT INTO `system_audittrail` VALUES ('6b95c677-a592-4a7b-b025-9e7e68ed4bb9', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-18 18:08:33', 'Security', null, null, '0', null, '2024-02-18 18:08:33', null);
+INSERT INTO `system_audittrail` VALUES ('6c23c218-75cf-4be4-9035-8811fa4e6c4d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 11:10:49', 'Security', null, null, '0', null, '2024-02-01 11:10:49', null);
+INSERT INTO `system_audittrail` VALUES ('6c44cc46-e928-4e38-8fec-9bc91aff1bc4', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-23 14:39:52', 'Security', null, null, '0', null, '2024-01-23 14:39:52', null);
+INSERT INTO `system_audittrail` VALUES ('6ce76872-f6fe-4590-8fa0-0d7489dc4fae', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 09:22:47', 'Security', null, null, '0', null, '2024-02-04 09:22:47', null);
+INSERT INTO `system_audittrail` VALUES ('6d7f104a-6e3f-42df-bcea-570d80d721ec', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-23 10:33:09', 'Security', null, null, '0', null, '2024-02-23 10:33:09', null);
+INSERT INTO `system_audittrail` VALUES ('6e24fec4-c049-413d-ba5c-2c5a248a6933', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-06 23:04:41', 'Security', null, null, '0', null, '2024-02-06 23:04:41', null);
+INSERT INTO `system_audittrail` VALUES ('6e2e0494-41e0-4bae-bda0-a7be58d66825', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-04 11:29:15', 'Security', null, null, '0', null, '2024-01-04 11:29:15', null);
+INSERT INTO `system_audittrail` VALUES ('6e399975-a5d1-4d17-a8a8-936dc0605a0f', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 09:08:30', 'Security', null, null, '0', null, '2024-02-06 09:08:30', null);
+INSERT INTO `system_audittrail` VALUES ('6eba8758-b935-48c9-8917-6cf61eed4a9e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 11:29:51', 'Security', null, null, '0', null, '2024-02-01 11:29:51', null);
+INSERT INTO `system_audittrail` VALUES ('6f192ae5-9851-4782-b142-fd72f5ae662e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 15:07:03', 'Security', null, null, '0', null, '2024-02-05 15:07:03', null);
+INSERT INTO `system_audittrail` VALUES ('6f6e87fb-d6e3-4071-9092-96b0034393cf', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 09:52:49', 'Security', null, null, '0', null, '2024-02-02 09:52:49', null);
+INSERT INTO `system_audittrail` VALUES ('6f85a3a4-cdd1-4d33-85d7-ee91a5bdb6a5', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 09:41:48', 'Security', null, null, '0', null, '2024-01-26 09:41:48', null);
+INSERT INTO `system_audittrail` VALUES ('70e9d343-8d25-4d7e-b2e7-ad00699e02bc', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-29 14:02:04', 'Security', null, null, '0', null, '2024-01-29 14:02:04', null);
+INSERT INTO `system_audittrail` VALUES ('71627000-8df4-4b5d-9781-bf3bf950bdb3', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-08 16:25:46', 'Security', null, null, '0', null, '2024-02-08 16:25:46', null);
+INSERT INTO `system_audittrail` VALUES ('722bb5d6-4469-4134-bd5d-cfcabac506b9', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 15:50:30', 'Security', null, null, '0', null, '2024-01-30 15:50:30', null);
+INSERT INTO `system_audittrail` VALUES ('72fbb6a3-ef36-4633-b3a6-a29a22e7dab0', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 17:35:27', 'Security', null, null, '0', null, '2024-02-02 17:35:27', null);
+INSERT INTO `system_audittrail` VALUES ('734a7273-55db-44ee-9365-20db910d135a', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-21 10:20:40', 'Security', null, null, '0', null, '2024-02-21 10:20:40', null);
+INSERT INTO `system_audittrail` VALUES ('74cc7e1d-4ee1-4bc6-acd6-bdd61553e84e', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 14:44:01', 'Security', null, null, '0', null, '2024-02-05 14:44:01', null);
+INSERT INTO `system_audittrail` VALUES ('764e4c4c-6421-45d7-bec9-944aa8ba3eee', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-08 16:13:09', 'Security', null, null, '0', null, '2024-01-08 16:13:09', null);
+INSERT INTO `system_audittrail` VALUES ('77284293-a298-4227-a067-f15683bfbc9b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 15:37:02', 'Security', null, null, '0', null, '2024-02-02 15:37:02', null);
+INSERT INTO `system_audittrail` VALUES ('77816b1b-4da8-44a0-8b79-6c650e513971', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 15:49:10', 'Security', null, null, '0', null, '2024-01-30 15:49:10', null);
+INSERT INTO `system_audittrail` VALUES ('7839b3c4-0c95-48c5-8ed4-3d6eca7fed90', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 15:05:41', 'Security', null, null, '0', null, '2024-02-01 15:05:41', null);
+INSERT INTO `system_audittrail` VALUES ('78742dfe-a145-4d55-a7b8-f43ede00c414', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:57:47', 'Security', null, null, '0', null, '2024-01-06 20:57:47', null);
+INSERT INTO `system_audittrail` VALUES ('79f134f2-7c1f-4509-a5dd-5d2784f9bb5d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 17:29:18', 'Security', null, null, '0', null, '2024-02-01 17:29:18', null);
+INSERT INTO `system_audittrail` VALUES ('7ac44998-714c-4320-b045-b24b2898bbfe', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 23:04:33', 'Security', null, null, '0', null, '2024-02-06 23:04:33', null);
+INSERT INTO `system_audittrail` VALUES ('7ac85f0f-bea7-4318-abe3-921d8c97cdf8', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:18:08', 'Security', null, null, '0', null, '2024-02-02 13:18:08', null);
+INSERT INTO `system_audittrail` VALUES ('7ad82961-8821-4025-8e8e-d3e49a00862a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 14:05:39', 'Security', null, null, '0', null, '2024-02-01 14:05:39', null);
+INSERT INTO `system_audittrail` VALUES ('7ade5457-094e-4d04-b916-0b176762fd08', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:51:41', 'Security', null, null, '0', null, '2024-02-02 13:51:41', null);
+INSERT INTO `system_audittrail` VALUES ('7b178c01-18a8-4cbe-9505-1a8872e193ee', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 12:35:49', 'Security', null, null, '0', null, '2024-02-02 12:35:49', null);
+INSERT INTO `system_audittrail` VALUES ('7baa99c1-29e9-4d1a-adda-907e36281ab2', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 16:53:22', 'Security', null, null, '0', null, '2024-01-27 16:53:22', null);
+INSERT INTO `system_audittrail` VALUES ('7d14ffcc-f7f8-4ceb-a94f-d822d2f83203', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:54:44', 'Security', null, null, '0', null, '2024-01-06 20:54:44', null);
+INSERT INTO `system_audittrail` VALUES ('7e609b5f-4ec7-4bf2-8a7e-ca62faa5a740', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-19 08:58:34', 'Security', null, null, '0', null, '2024-02-19 08:58:34', null);
+INSERT INTO `system_audittrail` VALUES ('80762968-a028-4918-a8dc-02c7ddd945d0', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-20 20:28:16', 'Security', null, null, '0', null, '2024-02-20 20:28:16', null);
+INSERT INTO `system_audittrail` VALUES ('80d188bd-a170-45ed-8dad-ed3303311c75', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-20 14:37:54', 'Security', null, null, '0', null, '2024-02-20 14:37:54', null);
+INSERT INTO `system_audittrail` VALUES ('80d76817-51f9-4d6a-a1b1-33ee91ae98a1', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-07 11:02:40', 'Security', null, null, '0', null, '2024-02-07 11:02:40', null);
+INSERT INTO `system_audittrail` VALUES ('80db3714-9e2c-489a-a5bf-91bf1bb2b0ef', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 10:45:12', 'Security', null, null, '0', null, '2024-02-01 10:45:12', null);
+INSERT INTO `system_audittrail` VALUES ('81069735-6e48-40f2-b7b6-b8cd19bfdad3', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-04 11:52:34', 'Security', null, null, '0', null, '2024-01-04 11:52:34', null);
+INSERT INTO `system_audittrail` VALUES ('8229ac63-089c-4366-b31f-cd4579163134', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:10:08', 'Security', null, null, '0', null, '2024-02-02 14:10:08', null);
+INSERT INTO `system_audittrail` VALUES ('82382485-f936-4030-ad9c-48adb537d427', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 14:03:53', 'Security', null, null, '0', null, '2024-02-01 14:03:53', null);
+INSERT INTO `system_audittrail` VALUES ('834e6e15-3fac-4b77-861f-e741a86fdd89', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-23 08:13:09', 'Security', null, null, '0', null, '2024-01-23 08:13:09', null);
+INSERT INTO `system_audittrail` VALUES ('83db2aae-d576-4797-a974-5f9b1184b07b', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-23 10:36:17', 'Security', null, null, '0', null, '2024-02-23 10:36:17', null);
+INSERT INTO `system_audittrail` VALUES ('83f01e66-2639-4c68-b5a0-29314bf3ff7b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 18:07:41', 'Security', null, null, '0', null, '2024-02-06 18:07:41', null);
+INSERT INTO `system_audittrail` VALUES ('84ebe8ab-9a85-482b-8323-eeacc8ce9e1f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 17:06:37', 'Security', null, null, '0', null, '2024-02-01 17:06:37', null);
+INSERT INTO `system_audittrail` VALUES ('85f4a655-eb7b-428a-bb44-c410025bc22f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 15:34:04', 'Security', null, null, '0', null, '2024-01-27 15:34:04', null);
+INSERT INTO `system_audittrail` VALUES ('8634c28f-cd6e-4194-9adb-07b67f83290e', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-20 20:30:20', 'Security', null, null, '0', null, '2024-02-20 20:30:20', null);
+INSERT INTO `system_audittrail` VALUES ('86f60446-7fce-48a6-9c70-a8918d7c1975', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-22 10:50:06', 'Security', null, null, '0', null, '2024-02-22 10:50:06', null);
+INSERT INTO `system_audittrail` VALUES ('87edae2b-f3c0-4d42-89c0-a44eef87fb7a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 10:38:29', 'Security', null, null, '0', null, '2024-01-26 10:38:29', null);
+INSERT INTO `system_audittrail` VALUES ('892098c5-bd5c-4a26-97b2-6bdd356774d7', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 15:30:00', 'Security', null, null, '0', null, '2024-01-06 15:30:00', null);
+INSERT INTO `system_audittrail` VALUES ('8a41c566-7527-4091-9694-dff8e4a0a6ff', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-23 10:14:31', 'Security', null, null, '0', null, '2024-02-23 10:14:31', null);
+INSERT INTO `system_audittrail` VALUES ('8a554be9-7981-4a53-b78b-d3a1a623b76d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 08:44:54', 'Security', null, null, '0', null, '2024-02-01 08:44:54', null);
+INSERT INTO `system_audittrail` VALUES ('8acc7e62-a375-4482-973c-b2325669559c', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 17:28:50', 'Security', null, null, '0', null, '2024-02-06 17:28:50', null);
+INSERT INTO `system_audittrail` VALUES ('8cc9607c-66e5-45bf-995b-2a1d03a73f15', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 16:32:16', 'Security', null, null, '0', null, '2024-01-27 16:32:16', null);
+INSERT INTO `system_audittrail` VALUES ('8e09e993-051a-4faf-a7a6-70a65bd0ba66', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 10:52:54', 'Security', null, null, '0', null, '2024-01-30 10:52:54', null);
+INSERT INTO `system_audittrail` VALUES ('8e3bbf6a-efc5-4def-a11e-7bb59adecb8b', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-07 12:15:31', 'Security', null, null, '0', null, '2024-02-07 12:15:31', null);
+INSERT INTO `system_audittrail` VALUES ('900801ea-9256-4f09-97dd-8d1fd20b73c5', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:58:20', 'Security', null, null, '0', null, '2024-01-06 20:58:20', null);
+INSERT INTO `system_audittrail` VALUES ('9051df5e-6bcd-4c36-ab95-3d9c2fb0d454', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-24 15:15:04', 'Security', null, null, '0', null, '2024-01-24 15:15:04', null);
+INSERT INTO `system_audittrail` VALUES ('91365c7a-2c78-4086-a932-5fbe7fa4be9f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 11:08:45', 'Security', null, null, '0', null, '2024-02-01 11:08:45', null);
+INSERT INTO `system_audittrail` VALUES ('96000a88-7314-4fab-b228-b4d91e9eab8e', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-24 11:13:01', 'Security', null, null, '0', null, '2024-01-24 11:13:01', null);
+INSERT INTO `system_audittrail` VALUES ('974f62ee-0bab-40a3-9a2e-62d1daa50f6d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 09:36:36', 'Security', null, null, '0', null, '2024-02-02 09:36:36', null);
+INSERT INTO `system_audittrail` VALUES ('9abfbcd1-7e05-4b64-b20c-ada17d8af013', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-04 11:28:46', 'Security', null, null, '0', null, '2024-01-04 11:28:46', null);
+INSERT INTO `system_audittrail` VALUES ('9acfbf7f-de68-4bb4-8d93-9947ec770b26', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-18 09:31:14', 'Security', null, null, '0', null, '2024-01-18 09:31:14', null);
+INSERT INTO `system_audittrail` VALUES ('9b0b11da-6802-496c-b915-4e4f63d8a1e0', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:43:03', 'Security', null, null, '0', null, '2024-02-02 13:43:03', null);
+INSERT INTO `system_audittrail` VALUES ('9bd851d6-780e-4fec-92e0-5b91776eff47', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 10:15:45', 'Security', null, null, '0', null, '2024-01-26 10:15:45', null);
+INSERT INTO `system_audittrail` VALUES ('9c30c2b3-2dc4-47e3-a462-0b836ead38b3', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 13:51:47', 'Security', null, null, '0', null, '2024-01-27 13:51:47', null);
+INSERT INTO `system_audittrail` VALUES ('9c7a1417-435a-46c1-905b-c73024a3366f', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 15:17:54', 'Security', null, null, '0', null, '2024-01-06 15:17:54', null);
+INSERT INTO `system_audittrail` VALUES ('9d7433e1-f58a-47f7-8eb6-0c88e460e956', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 12:49:53', 'Security', null, null, '0', null, '2024-02-02 12:49:53', null);
+INSERT INTO `system_audittrail` VALUES ('9f9326ed-c7ad-4a6b-8dbc-3cc58b76df5b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-14 14:41:37', 'Security', null, null, '0', null, '2024-01-14 14:41:37', null);
+INSERT INTO `system_audittrail` VALUES ('a05ebc5b-aa50-4a90-997b-2c55b80503e5', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 13:53:01', 'Security', null, null, '0', null, '2024-01-27 13:53:01', null);
+INSERT INTO `system_audittrail` VALUES ('a1e017cb-06c3-445f-a4d2-49e022f3a9be', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 19:36:06', 'Security', null, null, '0', null, '2024-01-06 19:36:06', null);
+INSERT INTO `system_audittrail` VALUES ('a23b32de-ed1f-4a7c-81b4-d6f6c8aff3bc', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 18:36:47', 'Security', null, null, '0', null, '2024-02-06 18:36:47', null);
+INSERT INTO `system_audittrail` VALUES ('a2758e57-8e8e-4447-956b-634405f72577', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:59:33', 'Security', null, null, '0', null, '2024-01-06 20:59:33', null);
+INSERT INTO `system_audittrail` VALUES ('a427a68f-ee49-4dcb-904b-da772c540b6a', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 10:10:37', 'Security', null, null, '0', null, '2024-02-05 10:10:37', null);
+INSERT INTO `system_audittrail` VALUES ('a445d8ea-e017-4f56-b97d-6350e112391a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-22 16:17:36', 'Security', null, null, '0', null, '2024-01-22 16:17:36', null);
+INSERT INTO `system_audittrail` VALUES ('a6b96de5-f40b-4bd3-bbb3-85e19634b073', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:17:01', 'Security', null, null, '0', null, '2024-02-02 13:17:01', null);
+INSERT INTO `system_audittrail` VALUES ('a6d90e0c-7886-4080-85dc-8cfb430a8d08', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 14:38:18', 'Security', null, null, '0', null, '2024-01-26 14:38:18', null);
+INSERT INTO `system_audittrail` VALUES ('a6fbc68a-e0a4-4fa5-b865-3e0b085f8cd5', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 17:36:14', 'Security', null, null, '0', null, '2024-02-05 17:36:14', null);
+INSERT INTO `system_audittrail` VALUES ('a70912ac-1939-4db8-9f9a-3ec6580219a7', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-05 14:32:07', 'Security', null, null, '0', null, '2024-02-05 14:32:07', null);
+INSERT INTO `system_audittrail` VALUES ('a7b602e1-5124-4e5f-8638-7577b647ca00', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 08:53:49', 'Security', null, null, '0', null, '2024-02-04 08:53:49', null);
+INSERT INTO `system_audittrail` VALUES ('a875a475-cba3-4991-b848-8693bb8b9660', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-20 13:57:53', 'Security', null, null, '0', null, '2024-02-20 13:57:53', null);
+INSERT INTO `system_audittrail` VALUES ('a96763da-b341-48af-9d62-9b356e37721c', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-20 17:32:37', 'Security', null, null, '0', null, '2024-02-20 17:32:37', null);
+INSERT INTO `system_audittrail` VALUES ('aaca4c8a-0fe0-4f92-b2e8-a83d06924b02', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-06 17:47:49', 'Security', null, null, '0', null, '2024-02-06 17:47:49', null);
+INSERT INTO `system_audittrail` VALUES ('ac7ce9b6-96a9-4025-bd8b-6e69f6ddd897', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 10:00:42', 'Security', null, null, '0', null, '2024-02-02 10:00:42', null);
+INSERT INTO `system_audittrail` VALUES ('ad7805ef-c107-422a-ac45-50e5d46a5712', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:13:21', 'Security', null, null, '0', null, '2024-02-18 18:13:21', null);
+INSERT INTO `system_audittrail` VALUES ('ae9a75e2-49ab-4dcd-acca-1f8d5a8037b8', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-24 09:06:42', 'Security', null, null, '0', null, '2024-01-24 09:06:42', null);
+INSERT INTO `system_audittrail` VALUES ('b1e2e5ae-2045-4eb7-b7aa-4e14029620fd', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-18 18:32:02', 'Security', null, null, '0', null, '2024-02-18 18:32:02', null);
+INSERT INTO `system_audittrail` VALUES ('b1f32e93-3b5a-4433-87e8-34addc8b12a8', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-18 18:12:50', 'Security', null, null, '0', null, '2024-02-18 18:12:50', null);
+INSERT INTO `system_audittrail` VALUES ('b21241a3-01b8-4402-b3a1-2add86a80a62', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:27:49', 'Security', null, null, '0', null, '2024-02-02 14:27:49', null);
+INSERT INTO `system_audittrail` VALUES ('b21f14cc-965b-40eb-af5b-f9835918180b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 10:19:27', 'Security', null, null, '0', null, '2024-02-02 10:19:27', null);
+INSERT INTO `system_audittrail` VALUES ('b2fbbd84-8f92-49e6-aa3c-3973b04aaecd', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:33:41', 'Security', null, null, '0', null, '2024-01-06 20:33:41', null);
+INSERT INTO `system_audittrail` VALUES ('b318c089-9217-476d-bf39-0095fd646494', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-18 10:39:56', 'Security', null, null, '0', null, '2024-01-18 10:39:56', null);
+INSERT INTO `system_audittrail` VALUES ('b33f16b3-5bce-4f74-81e8-86e9a17a4dce', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-20 13:55:43', 'Security', null, null, '0', null, '2024-02-20 13:55:43', null);
+INSERT INTO `system_audittrail` VALUES ('b4912da1-b362-4a92-92b6-b582bed276be', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:18:02', 'Security', null, null, '0', null, '2024-02-18 18:18:02', null);
+INSERT INTO `system_audittrail` VALUES ('b5c629b6-12a8-41fc-8911-011e451418db', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-06 17:59:38', 'Security', null, null, '0', null, '2024-02-06 17:59:38', null);
+INSERT INTO `system_audittrail` VALUES ('b5c797ef-a813-4ea7-b2c2-264a3ad81847', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 15:11:13', 'Security', null, null, '0', null, '2024-02-01 15:11:13', null);
+INSERT INTO `system_audittrail` VALUES ('b64604c0-b799-4fc0-b8c2-ac80d32e0d03', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 13:57:04', 'Security', null, null, '0', null, '2024-02-01 13:57:04', null);
+INSERT INTO `system_audittrail` VALUES ('b7248467-c1b4-4265-890c-cc71f4473590', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:42:31', 'Security', null, null, '0', null, '2024-02-02 13:42:31', null);
+INSERT INTO `system_audittrail` VALUES ('b7e91c03-dfff-42d1-8848-95379f735a56', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-08 16:26:20', 'Security', null, null, '0', null, '2024-02-08 16:26:20', null);
+INSERT INTO `system_audittrail` VALUES ('ba8f9204-c00b-4e74-8a90-2773da2029f1', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-24 15:24:55', 'Security', null, null, '0', null, '2024-01-24 15:24:55', null);
+INSERT INTO `system_audittrail` VALUES ('bc8a79cb-71b4-4e5c-858d-cca61264de0a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 15:07:33', 'Security', null, null, '0', null, '2024-02-01 15:07:33', null);
+INSERT INTO `system_audittrail` VALUES ('bccd0426-d8b8-493c-8e7d-a9685743f23a', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 14:13:07', 'Security', null, null, '0', null, '2024-02-02 14:13:07', null);
+INSERT INTO `system_audittrail` VALUES ('bd6ab6dd-e866-48c5-a2d8-f64c319150d5', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 13:57:16', 'Security', null, null, '0', null, '2024-02-02 13:57:16', null);
+INSERT INTO `system_audittrail` VALUES ('be1a2223-3884-4535-8019-3dbc9e8adc36', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 15:34:30', 'Security', null, null, '0', null, '2024-01-27 15:34:30', null);
+INSERT INTO `system_audittrail` VALUES ('be9c2a1b-7ad2-44a5-b11e-25b4ed4c310d', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:23:59', 'Security', null, null, '0', null, '2024-01-06 20:23:59', null);
+INSERT INTO `system_audittrail` VALUES ('bffea401-3302-4223-b9b8-78afd8dd01fc', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-23 10:34:48', 'Security', null, null, '0', null, '2024-02-23 10:34:48', null);
+INSERT INTO `system_audittrail` VALUES ('c223601d-e214-42b5-98b2-343cbe1d1624', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-08 10:30:43', 'Security', null, null, '0', null, '2024-02-08 10:30:43', null);
+INSERT INTO `system_audittrail` VALUES ('c33345e2-6a93-4642-9238-ef1279efdf32', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 18:07:37', 'Security', null, null, '0', null, '2024-02-06 18:07:37', null);
+INSERT INTO `system_audittrail` VALUES ('c4b2bff5-c959-40c6-a5cc-94d94a7de8e2', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:31:46', 'Security', null, null, '0', null, '2024-02-18 18:31:46', null);
+INSERT INTO `system_audittrail` VALUES ('c5f8afa4-e408-4cbf-99cf-901a87df8556', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 14:13:08', 'Security', null, null, '0', null, '2024-02-01 14:13:08', null);
+INSERT INTO `system_audittrail` VALUES ('c69e53bf-2f58-4a02-8431-9794595bc980', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:10:12', 'Security', null, null, '0', null, '2024-02-18 18:10:12', null);
+INSERT INTO `system_audittrail` VALUES ('c75b1599-6bb1-4711-b23f-6f1191a45ebd', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 19:35:14', 'Security', null, null, '0', null, '2024-01-06 19:35:14', null);
+INSERT INTO `system_audittrail` VALUES ('c81c411c-6d69-40fa-b006-c8fef6e8b017', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 12:59:26', 'Security', null, null, '0', null, '2024-02-02 12:59:26', null);
+INSERT INTO `system_audittrail` VALUES ('c8419662-17bf-4546-96e7-348e7ede4eb7', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 10:27:22', 'Security', null, null, '0', null, '2024-02-02 10:27:22', null);
+INSERT INTO `system_audittrail` VALUES ('ca710732-5bfb-4ebf-93bc-f9a5e16411cd', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 10:43:58', 'Security', null, null, '0', null, '2024-02-01 10:43:58', null);
+INSERT INTO `system_audittrail` VALUES ('cabdbebd-294c-40f3-9e10-e4f42e7b412a', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 09:22:05', 'Security', null, null, '0', null, '2024-02-04 09:22:05', null);
+INSERT INTO `system_audittrail` VALUES ('cb634711-5d75-4ecf-80cc-751c17b0878c', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 16:57:04', 'Security', null, null, '0', null, '2024-02-01 16:57:04', null);
+INSERT INTO `system_audittrail` VALUES ('d030a171-6a71-407f-a7c4-281febcb8098', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-18 18:14:30', 'Security', null, null, '0', null, '2024-02-18 18:14:30', null);
+INSERT INTO `system_audittrail` VALUES ('d22d870f-4b80-4b71-a060-3643cd2ba127', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-23 10:24:46', 'Security', null, null, '0', null, '2024-02-23 10:24:46', null);
+INSERT INTO `system_audittrail` VALUES ('d2ee28f5-d390-48f9-88b5-1752bf2fa716', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 16:50:48', 'Security', null, null, '0', null, '2024-02-01 16:50:48', null);
+INSERT INTO `system_audittrail` VALUES ('d3c502a4-a95f-449b-af54-2bec3df0f2c4', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-19 15:58:31', 'Security', null, null, '0', null, '2024-02-19 15:58:31', null);
+INSERT INTO `system_audittrail` VALUES ('d5c0d14a-a50f-401c-ab8d-b7f1c5b5c28d', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 16:46:53', 'Security', null, null, '0', null, '2024-02-01 16:46:53', null);
+INSERT INTO `system_audittrail` VALUES ('d61b0f2c-c685-4931-b397-3c3525d015ed', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 12:52:44', 'Security', null, null, '0', null, '2024-02-02 12:52:44', null);
+INSERT INTO `system_audittrail` VALUES ('d8702633-8ed0-4e91-a06f-58b3d6fe56f6', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 15:01:19', 'Security', null, null, '0', null, '2024-02-02 15:01:19', null);
+INSERT INTO `system_audittrail` VALUES ('d8b624b8-b1b7-47a3-bab3-a7627538ce9b', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 14:28:34', 'Security', null, null, '0', null, '2024-01-26 14:28:34', null);
+INSERT INTO `system_audittrail` VALUES ('d8fbc717-d1b2-440a-a65e-be5f2aba96f4', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 20:40:55', 'Security', null, null, '0', null, '2024-01-06 20:40:55', null);
+INSERT INTO `system_audittrail` VALUES ('da4db173-10a6-42fc-8bc0-473aa035412c', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 10:27:34', 'Security', null, null, '0', null, '2024-02-02 10:27:34', null);
+INSERT INTO `system_audittrail` VALUES ('dcc3ce25-b556-4c88-9403-45c01f575278', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-10 10:41:46', 'Security', null, null, '0', null, '2024-02-10 10:41:46', null);
+INSERT INTO `system_audittrail` VALUES ('dcd6bcc9-f69c-4649-9a4c-804b9870c2ce', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 11:29:39', 'Security', null, null, '0', null, '2024-02-01 11:29:39', null);
+INSERT INTO `system_audittrail` VALUES ('dd4bd448-d73e-4f98-94dc-09942e9b8553', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-21 11:51:13', 'Security', null, null, '0', null, '2024-02-21 11:51:13', null);
+INSERT INTO `system_audittrail` VALUES ('e11fb819-22b3-41a4-8391-a5b20ca92871', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-23 12:13:11', 'Security', null, null, '0', null, '2024-01-23 12:13:11', null);
+INSERT INTO `system_audittrail` VALUES ('e1b0b3ff-51d6-495e-ad4e-66e4c5fd0975', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-26 10:16:39', 'Security', null, null, '0', null, '2024-01-26 10:16:39', null);
+INSERT INTO `system_audittrail` VALUES ('e226a52a-ec33-4128-9050-f560895c08de', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-06 19:35:49', 'Security', null, null, '0', null, '2024-01-06 19:35:49', null);
+INSERT INTO `system_audittrail` VALUES ('e53915ad-3d4b-436e-b673-971a925bc08c', 'Login', 'root', 'LOGIN', '127.0.0.1', '2024-02-18 18:14:04', 'Security', null, null, '0', null, '2024-02-18 18:14:04', null);
+INSERT INTO `system_audittrail` VALUES ('e5ece7c4-ae63-47b1-bed5-1c25d1d60ccb', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 12:21:14', 'Security', null, null, '0', null, '2024-02-01 12:21:14', null);
+INSERT INTO `system_audittrail` VALUES ('e63e631c-cb27-4307-b8a1-0563c0ab900b', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-07 09:57:44', 'Security', null, null, '0', null, '2024-02-07 09:57:44', null);
+INSERT INTO `system_audittrail` VALUES ('e643ed63-4284-4b14-b9b3-97069f976584', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 15:08:08', 'Security', null, null, '0', null, '2024-02-01 15:08:08', null);
+INSERT INTO `system_audittrail` VALUES ('e6a37a3b-2d4b-429a-a912-97823e0c3bab', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 16:17:24', 'Security', null, null, '0', null, '2024-01-27 16:17:24', null);
+INSERT INTO `system_audittrail` VALUES ('e95465ae-b3ea-4b52-b44b-9ccf27961e52', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-08 10:29:52', 'Security', null, null, '0', null, '2024-02-08 10:29:52', null);
+INSERT INTO `system_audittrail` VALUES ('ea32cd3f-fd68-401e-abfe-638c56e965b3', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 14:43:17', 'Security', null, null, '0', null, '2024-02-01 14:43:17', null);
+INSERT INTO `system_audittrail` VALUES ('ec9f7047-31af-4147-a7d6-a0297be4b150', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-08 11:10:04', 'Security', null, null, '0', null, '2024-02-08 11:10:04', null);
+INSERT INTO `system_audittrail` VALUES ('efffc13d-1b42-4152-954d-46a9b1f4403f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-04 08:19:48', 'Security', null, null, '0', null, '2024-02-04 08:19:48', null);
+INSERT INTO `system_audittrail` VALUES ('f22a3ea1-8ef2-4a91-9c2e-f09c5495b506', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-04 11:31:41', 'Security', null, null, '0', null, '2024-01-04 11:31:41', null);
+INSERT INTO `system_audittrail` VALUES ('f2d2dfc7-bd67-4d1a-a5fc-e79cc319aedd', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 18:19:40', 'Security', null, null, '0', null, '2024-02-06 18:19:40', null);
+INSERT INTO `system_audittrail` VALUES ('f35dc69a-451d-4895-87e0-797ef58bb744', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 18:02:41', 'Security', null, null, '0', null, '2024-02-06 18:02:41', null);
+INSERT INTO `system_audittrail` VALUES ('f3b8e0d3-dc18-452c-9f1b-71d6a3a90916', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 14:46:20', 'Security', null, null, '0', null, '2024-02-06 14:46:20', null);
+INSERT INTO `system_audittrail` VALUES ('f68b23c0-6a2b-4514-b74b-cf2a0fed2d07', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-25 10:17:06', 'Security', null, null, '0', null, '2024-01-25 10:17:06', null);
+INSERT INTO `system_audittrail` VALUES ('f78cb856-e890-4b44-ad56-80554f5ca018', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-29 08:38:58', 'Security', null, null, '0', null, '2024-01-29 08:38:58', null);
+INSERT INTO `system_audittrail` VALUES ('f8476bde-a159-4a9a-b61c-3837c411b7fc', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-07 12:15:29', 'Security', null, null, '0', null, '2024-02-07 12:15:29', null);
+INSERT INTO `system_audittrail` VALUES ('f892c894-d66c-4507-8f04-3e2d5143a0c6', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-01 09:18:06', 'Security', null, null, '0', null, '2024-02-01 09:18:06', null);
+INSERT INTO `system_audittrail` VALUES ('f8cabf61-db52-4403-8dee-f8013d1e20a2', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-13 11:06:24', 'Security', null, null, '0', null, '2024-01-13 11:06:24', null);
+INSERT INTO `system_audittrail` VALUES ('f8ed4fec-0311-4e4a-b506-e480f1f85a71', 'Login', '2023003', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-06 09:07:08', 'Security', null, null, '0', null, '2024-02-06 09:07:08', null);
+INSERT INTO `system_audittrail` VALUES ('f96067bc-32fb-4ece-b1d2-50f07064ea9a', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-07 11:18:07', 'Security', null, null, '0', null, '2024-02-07 11:18:07', null);
+INSERT INTO `system_audittrail` VALUES ('fa17b1c7-229c-4f00-85b1-ab3f435db849', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 16:55:56', 'Security', null, null, '0', null, '2024-01-27 16:55:56', null);
+INSERT INTO `system_audittrail` VALUES ('fb20d7b9-4e61-4db5-8403-81b5eb42bef3', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-27 15:45:20', 'Security', null, null, '0', null, '2024-01-27 15:45:20', null);
+INSERT INTO `system_audittrail` VALUES ('fbaf05aa-b065-4c96-a21e-90b79f31029a', 'Login', '2023003', 'LOGIN', '127.0.0.1', '2024-02-08 10:32:37', 'Security', null, null, '0', null, '2024-02-08 10:32:37', null);
+INSERT INTO `system_audittrail` VALUES ('fc0dc8a1-18da-40bd-b9bf-c97b9866f415', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 10:53:00', 'Security', null, null, '0', null, '2024-01-30 10:53:00', null);
+INSERT INTO `system_audittrail` VALUES ('fc9b2671-f3e3-456e-a6d4-bc5e387403a4', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-29 08:40:57', 'Security', null, null, '0', null, '2024-01-29 08:40:57', null);
+INSERT INTO `system_audittrail` VALUES ('fcb829ac-7bde-4567-8427-5fc23b54215f', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-02-02 09:51:10', 'Security', null, null, '0', null, '2024-02-02 09:51:10', null);
+INSERT INTO `system_audittrail` VALUES ('fce845c2-cef0-4439-9b77-f2b2d76ed8fb', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-30 16:10:35', 'Security', null, null, '0', null, '2024-01-30 16:10:35', null);
+INSERT INTO `system_audittrail` VALUES ('fea8db78-6cd1-4990-8290-da1dcda13b25', 'Login', 'root', 'LOGIN', '0:0:0:0:0:0:0:1', '2024-01-31 16:08:46', 'Security', null, null, '0', null, '2024-01-31 16:08:46', null);
+
+-- ----------------------------
+-- Table structure for system_config
+-- ----------------------------
+DROP TABLE IF EXISTS `system_config`;
+CREATE TABLE `system_config` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `ckey` varchar(256) DEFAULT NULL COMMENT 'key',
+ `cvalue` varchar(256) DEFAULT NULL COMMENT 'value',
+ `clevel` varchar(256) DEFAULT NULL COMMENT 'level',
+ `category` varchar(256) DEFAULT NULL COMMENT 'category',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of system_config
+-- ----------------------------
+INSERT INTO `system_config` VALUES ('2e60c1ea-0644-4713-a527-0dd261e5c67e', 'zh_cn', '中文(简体)', '0', 'language', '0', '', '2023-03-13 12:28:09', '2023-03-14 15:58:07');
+INSERT INTO `system_config` VALUES ('76cb2112-f5f7-459f-8fde-4e515e9b87d3', 'en_us', 'English (United States)', '0', 'language', '0', '', '2023-03-13 12:27:43', '2023-03-14 15:58:10');
+
+-- ----------------------------
+-- Table structure for system_mail_send_log
+-- ----------------------------
+DROP TABLE IF EXISTS `system_mail_send_log`;
+CREATE TABLE `system_mail_send_log` (
+ `id` varchar(64) NOT NULL,
+ `uid` varchar(64) DEFAULT NULL,
+ `status` int(11) DEFAULT '0' COMMENT '0: pending,1: successful,2: failed',
+ `routeKey` varchar(255) DEFAULT NULL,
+ `exchange` varchar(255) DEFAULT NULL,
+ `count` int(11) DEFAULT '0' COMMENT 'retry count',
+ `tryTime` datetime DEFAULT NULL COMMENT 'first retry time',
+ `createTime` datetime DEFAULT NULL,
+ `updateTime` datetime DEFAULT NULL,
+ `username` varchar(128) DEFAULT NULL,
+ `account` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Records of system_mail_send_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for system_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `system_menu`;
+CREATE TABLE `system_menu` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL COMMENT 'name',
+ `url` varchar(256) DEFAULT NULL COMMENT 'link uri',
+ `path` varchar(256) DEFAULT NULL,
+ `component` varchar(256) DEFAULT NULL,
+ `type` int(2) DEFAULT NULL COMMENT 'undefined = 0, page = 1, menu = 2, button = 3',
+ `icon` varchar(256) DEFAULT NULL COMMENT 'icon of node',
+ `parentid` varchar(64) DEFAULT NULL COMMENT 'parent id',
+ `keepalive` tinyint(1) DEFAULT NULL COMMENT 'keep alive',
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `level` int(10) DEFAULT NULL,
+ `languagekey` varchar(64) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of system_menu
+-- ----------------------------
+INSERT INTO `system_menu` VALUES ('05edffb5-6f23-4624-9032-270e16d53d43', 'Tue Jan 30 10:45:06 CST 2024', '历史订单', '/admin/order/HistoryOrder', '/admin/order/HistoryOrder', 'HistoryOrder', '2', 'order-history', '0d1a6c2d-34c7-4c10-ab8f-84fbba5db4bb', null, null, '', '2024-01-30 10:45:06', null, '1', 'HistoryOrder');
+INSERT INTO `system_menu` VALUES ('0d1a6c2d-34c7-4c10-ab8f-84fbba5db4bb', 'Tue Jan 30 10:43:18 CST 2024', '订单管理', '/admin/order', '/admin/order', 'LayoutAdmin', '2', 'order', null, null, null, '', '2024-01-30 10:43:18', null, '5', 'Order');
+INSERT INTO `system_menu` VALUES ('14f8dc1b-1e05-46c6-a898-378a7001fd69', 'Sat Jan 06 15:23:43 CST 2024', '题型管理', '/admin/question/QuestionCategory', '/admin/question/QuestionCategory', 'QuestionCategory', '2', 'question-category', '98aa2937-2d0e-4438-a6cc-9c8bb7080175', null, null, '', '2024-01-06 15:23:43', '2024-01-18 10:39:42', '1', 'QuestionCategory');
+INSERT INTO `system_menu` VALUES ('1a4e9f28-e32e-4781-be70-7235f19fccbc', 'Sat Jan 06 22:48:20 CST 2024', '历史优惠券', '/admin/vip/VIPCouponHistory', '/admin/vip/VIPCouponHistory', 'VIPCouponHistory', '2', 'coupon-history', 'dcd3a28d-df75-40fb-ba78-57dae14f6a0d', null, null, '', '2024-01-06 22:48:20', '2024-01-06 22:48:34', '1', 'VIPCouponHistory');
+INSERT INTO `system_menu` VALUES ('22be1ccc-8294-41ff-8e79-5443450558f6', 'Sat Jan 06 15:26:15 CST 2024', '试卷管理', '/admin/question/QuestionPaper', '/admin/question/QuestionPaper', 'QuestionPaper', '2', 'question-paper', '98aa2937-2d0e-4438-a6cc-9c8bb7080175', null, null, '', '2024-01-06 15:26:15', null, '4', 'QuestionPaper');
+INSERT INTO `system_menu` VALUES ('26f60c39-e0a0-4490-9565-ecdd73d27679', 'Fri Feb 23 10:19:35 CST 2024', '产品列表', '/admin/product/ProductMaster', '/admin/product/ProductMaster', 'ProductMaster', '2', 'product-master', '83bab001-0055-44a3-a83b-3ef121c235a0', null, null, '', '2024-02-23 10:19:35', '2024-02-23 10:19:50', '1', 'ProductMaster');
+INSERT INTO `system_menu` VALUES ('369931da-a696-47c8-bd68-b2e16b577f99', 'Tue Jan 30 10:44:13 CST 2024', '活动订单', '/admin/order/ActiveOrder', '/admin/order/ActiveOrder', 'ActiveOrder', '2', 'order-active', '0d1a6c2d-34c7-4c10-ab8f-84fbba5db4bb', null, null, '', '2024-01-30 10:44:13', null, '2', 'ActiveOrder');
+INSERT INTO `system_menu` VALUES ('3dd86f16-9d2e-4fd7-a5ae-19bd338857f7', 'MailSendLog', '邮件日志', '/admin/system/MailSendLog', '/admin/system/MailSendLog', 'MailSendLog', '2', 'email', 'b67fd674-3ac9-11eb-8afe-00163e033152', null, null, null, '2023-04-26 08:51:57', '2023-11-20 10:15:01', '6', 'MailSendLog');
+INSERT INTO `system_menu` VALUES ('512c4b10-f763-4f91-95aa-1e4cf61f8d03', 'Fri Feb 23 10:20:51 CST 2024', '品牌管理', '/admin/product/ProductBrand', '/admin/product/ProductBrand', 'ProductBrand', '2', 'product-brand', '83bab001-0055-44a3-a83b-3ef121c235a0', null, null, '', '2024-02-23 10:20:51', null, '2', 'ProductBrand');
+INSERT INTO `system_menu` VALUES ('56972411-c9eb-4e6f-8942-b619a1955c28', 'Sat Jan 06 15:27:10 CST 2024', '试卷类别', '/admin/question/QuestionPaperCategory', '/admin/question/QuestionPaperCategory', 'QuestionPaperCategory', '2', 'question-paper-category', '98aa2937-2d0e-4438-a6cc-9c8bb7080175', null, null, '', '2024-01-06 15:27:10', '2024-01-18 10:39:33', '3', 'QuestionPaperCategory');
+INSERT INTO `system_menu` VALUES ('5a5a2d38-4673-4975-899a-c89911b3f73e', 'Fri Feb 23 10:22:25 CST 2024', '产品类别', '/admin/product/ProductCategory', '/admin/product/ProductCategory', 'ProductCategory', '2', 'product-category', '83bab001-0055-44a3-a83b-3ef121c235a0', null, null, '', '2024-02-23 10:22:25', null, '3', 'ProductCategory');
+INSERT INTO `system_menu` VALUES ('73d6d881-3acf-11eb-8afe-00163e033152', 'MenuList', '菜单管理', '/admin/system/Menu', '/admin/system/Menu', 'Menu', '2', 'menu', 'b67fd674-3ac9-11eb-8afe-00163e033152', '1', '0', null, '2020-12-30 10:32:09', '2022-12-28 15:32:58', '1', 'MenuList');
+INSERT INTO `system_menu` VALUES ('839236b7-2781-4e18-836a-cb977a947afa', 'Thu Jan 04 22:53:16 CST 2024', '院系管理', '/admin/organization/OrganizationDepartment', '/admin/organization/OrganizationDepartment', 'OrganizationDepartment', '2', 'organization-department', 'b2ded452-945c-4e0e-a43b-be5bfae2a24c', null, null, '', '2024-01-04 22:53:16', '2024-01-18 10:38:44', '4', 'OrganizationDepartment');
+INSERT INTO `system_menu` VALUES ('83bab001-0055-44a3-a83b-3ef121c235a0', 'Fri Feb 23 10:18:17 CST 2024', '产品管理', '/admin/product', '/admin/product', 'LayoutAdmin', '2', 'product', null, null, null, '', '2024-02-23 10:18:17', '2024-02-23 10:18:45', '6', 'Product');
+INSERT INTO `system_menu` VALUES ('933826d4-8bfb-4053-8502-b0c7a428b3b3', 'Sat Jan 06 22:47:28 CST 2024', '优惠券列表', '/admin/vip/VIPCouponActive', '/admin/vip/VIPCouponActive', 'VIPCouponActive', '2', 'coupon-active', 'dcd3a28d-df75-40fb-ba78-57dae14f6a0d', null, null, '', '2024-01-06 22:47:28', null, '2', 'VIPCouponActive');
+INSERT INTO `system_menu` VALUES ('98aa2937-2d0e-4438-a6cc-9c8bb7080175', 'Sat Jan 06 15:20:50 CST 2024', '试题管理', '/admin/question', '/admin/question', 'LayoutAdmin', '2', 'question', null, null, null, '', '2024-01-06 15:20:50', '2024-01-29 13:59:44', '4', 'Question');
+INSERT INTO `system_menu` VALUES ('98aefb60-e1de-43d7-94f6-54baaa38961e', 'Mon Jan 29 14:00:43 CST 2024', '会员充值活动', '/admin/vip/VIPDepositActivity', '/admin/vip/VIPDepositActivity', 'VIPDepositActivity', '2', 'deposit-activity', 'dcd3a28d-df75-40fb-ba78-57dae14f6a0d', null, null, '', '2024-01-29 14:00:43', '2024-01-29 14:24:02', '5', 'VIPDepositActivity');
+INSERT INTO `system_menu` VALUES ('9b09c4c5-4c5b-4cfd-9d54-9d528ae378e5', 'Fri Feb 23 10:21:33 CST 2024', '供应商管理', '/admin/product/ProductSupplier', '/admin/product/ProductSupplier', 'ProductSupplier', '2', 'product-supplier', '83bab001-0055-44a3-a83b-3ef121c235a0', null, null, '', '2024-02-23 10:21:33', null, '3', 'ProductSupplier');
+INSERT INTO `system_menu` VALUES ('a0d6cd97-33d3-4907-ad1d-3c088e5a0563', 'Sat Jan 06 15:41:56 CST 2024', '会员列表', '/admin/vip/VIPMaster', '/admin/vip/VIPMaster', 'VIPMaster', '2', 'vip-master', 'dcd3a28d-df75-40fb-ba78-57dae14f6a0d', null, null, '', '2024-01-06 15:41:56', '2024-01-06 22:48:41', '3', 'VIPMaster');
+INSERT INTO `system_menu` VALUES ('a5e4dad9-69da-4b01-8da5-e05cc48de8ac', 'Config', '配置管理', '/admin/system/Config', '/admin/system/Config', 'Config', '2', 'configuration', 'b67fd674-3ac9-11eb-8afe-00163e033152', null, null, null, '2023-03-13 10:40:34', '2024-01-06 20:58:14', '4', 'Config');
+INSERT INTO `system_menu` VALUES ('b2ded452-945c-4e0e-a43b-be5bfae2a24c', 'Thu Jan 04 22:42:57 CST 2024', '组织结构', '/admin/organization', '/admin/organization', 'LayoutAdmin', '2', 'organization', null, null, null, '', '2024-01-04 22:42:57', '2024-01-04 22:54:08', '2', 'Organization');
+INSERT INTO `system_menu` VALUES ('b667fc7f-3ac9-11eb-8afe-00163e033152', 'AuditTrail', '审计追踪', '/admin/system/AuditTrail', '/admin/system/AuditTrail', 'AuditTrail', '0', 'audittrail', 'b67fd674-3ac9-11eb-8afe-00163e033152', '0', '0', null, '2022-08-08 14:07:00', '2022-12-28 15:31:54', '3', 'AuditTrail');
+INSERT INTO `system_menu` VALUES ('b678a830-3ac9-11eb-8afe-00163e033152', 'Log', '日志', '/admin/system/Log', '/admin/system/Log', 'Log', '2', 'systemlog', 'b67fd674-3ac9-11eb-8afe-00163e033152', '0', '0', null, '2020-12-30 10:32:09', '2022-12-28 15:31:46', '2', 'Log');
+INSERT INTO `system_menu` VALUES ('b67fd674-3ac9-11eb-8afe-00163e033152', 'SystemSettings', '系统设置', '/admin/system', '/admin/system', 'LayoutAdmin', '2', 'settings', null, '0', '0', null, '2020-12-30 10:32:09', '2024-01-06 20:57:36', '1', 'SystemSettings');
+INSERT INTO `system_menu` VALUES ('b9c13a9e-858b-4326-85c8-0cb6136c4519', 'Sat Jan 06 15:22:52 CST 2024', '试题库', '/admin/question/QuestionMaster', '/admin/question/QuestionMaster', 'QuestionMaster', '2', 'question-master', '98aa2937-2d0e-4438-a6cc-9c8bb7080175', null, null, '', '2024-01-06 15:22:52', '2024-01-18 10:39:46', '2', 'QuestionMaster');
+INSERT INTO `system_menu` VALUES ('d27cb44b-c1be-40b8-836e-11cc912dc8ab', 'Notification', '系统通知', '/admin/system/Notification', '/admin/system/Notification', 'Notification', '2', 'notification', 'b67fd674-3ac9-11eb-8afe-00163e033152', null, null, null, '2023-03-18 22:59:57', '2023-11-20 10:15:03', '5', 'Notification');
+INSERT INTO `system_menu` VALUES ('dcd3a28d-df75-40fb-ba78-57dae14f6a0d', 'Sat Jan 06 15:41:06 CST 2024', '会员管理', '/admin/vip', '/admin/vip', 'LayoutAdmin', '2', 'vip', null, null, null, '', '2024-01-06 15:41:06', '2024-01-29 13:59:37', '3', 'VIP');
+INSERT INTO `system_menu` VALUES ('e6e98c21-f37a-4dc2-89ec-85266fb5251b', 'Sat Jan 06 15:19:45 CST 2024', '专业管理', '/admin/organization/OrganizationMajor', '/admin/organization/OrganizationMajor', 'OrganizationMajor', '2', 'organization-major', 'b2ded452-945c-4e0e-a43b-be5bfae2a24c', null, null, '', '2024-01-06 15:19:45', null, '3', 'OrganizationMajor');
+INSERT INTO `system_menu` VALUES ('edf03e6c-81e1-48c5-a6a2-a77bfd5dfe9e', 'Thu Jan 04 22:51:33 CST 2024', '学校管理', '/admin/organization/OrganizationMaster', '/admin/organization/OrganizationMaster', 'OrganizationMaster', '2', 'organization-master', 'b2ded452-945c-4e0e-a43b-be5bfae2a24c', null, null, '', '2024-01-04 22:51:33', '2024-01-18 10:38:36', '5', 'OrganizationMaster');
+INSERT INTO `system_menu` VALUES ('fdb522fa-feec-4024-83ce-34cee78c13bb', 'Sat Jan 06 15:25:07 CST 2024', '科目管理', '/admin/question/QuestionSubject', '/admin/question/QuestionSubject', 'QuestionSubject', '2', 'question-subject', '98aa2937-2d0e-4438-a6cc-9c8bb7080175', null, null, '', '2024-01-06 15:25:07', '2024-01-18 10:38:59', '5', 'QuestionSubject');
+
+-- ----------------------------
+-- Table structure for system_notification
+-- ----------------------------
+DROP TABLE IF EXISTS `system_notification`;
+CREATE TABLE `system_notification` (
+ `id` varchar(64) NOT NULL COMMENT 'id',
+ `title` varchar(256) DEFAULT NULL COMMENT 'key',
+ `context` text COMMENT 'value',
+ `department` varchar(256) DEFAULT NULL COMMENT 'level',
+ `category` varchar(256) DEFAULT NULL COMMENT 'category',
+ `nlevel` int(11) DEFAULT NULL,
+ `keywords` varchar(256) DEFAULT NULL,
+ `actionby` varchar(126) DEFAULT NULL,
+ `status` int(11) DEFAULT NULL,
+ `publisher` varchar(128) DEFAULT NULL,
+ `publishdatetime` datetime DEFAULT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
+
+-- ----------------------------
+-- Records of system_notification
+-- ----------------------------
+INSERT INTO `system_notification` VALUES ('a805a0c8-1aa1-47ca-9455-086fdf32211b', '系统内部调整通知', '<p>sfdafdsa </p>', 'IT', 'Adjust', '1', 'Internal Adjust', '', '1', '', null, '0', '', '2023-12-15 16:46:37', '2023-12-21 10:34:50');
+
+-- ----------------------------
+-- Table structure for vip_coupon_active
+-- ----------------------------
+DROP TABLE IF EXISTS `vip_coupon_active`;
+CREATE TABLE `vip_coupon_active` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `status` int(11) DEFAULT NULL COMMENT '状态',
+ `type` int(11) DEFAULT NULL COMMENT '优惠券类型',
+ `activityname` varchar(256) DEFAULT NULL COMMENT '活动名称',
+ `code` varchar(64) DEFAULT NULL COMMENT '优惠券号',
+ `distributioncondition` varchar(255) DEFAULT NULL COMMENT '领取条件',
+ `amount` decimal(18,5) DEFAULT NULL COMMENT '面值',
+ `discount` decimal(18,5) DEFAULT NULL,
+ `discountrate` decimal(18,5) DEFAULT NULL COMMENT '折扣率',
+ `validdatefrom` datetime DEFAULT NULL COMMENT '有效期开始时间',
+ `validdateto` datetime DEFAULT NULL COMMENT '有效期结束时间',
+ `issuingtime` datetime DEFAULT NULL COMMENT '发放时间',
+ `usagetime` datetime DEFAULT NULL COMMENT '使用时间',
+ `orderno` varchar(256) DEFAULT NULL COMMENT '使用订单号',
+ `masterid` varchar(64) DEFAULT NULL,
+ `mastercode` varchar(64) DEFAULT NULL,
+ `mastername` varchar(128) DEFAULT NULL COMMENT '姓名',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of vip_coupon_active
+-- ----------------------------
+INSERT INTO `vip_coupon_active` VALUES ('83f72f40-3ecd-427c-82ef-8a81635faaa0', null, '', '2024-01-29 15:31:02', '2024-01-29 15:48:07', '0', '2', '春节代金券', 'M0000001', '', '100.00000', '10.00000', '0.20000', '2024-01-29 08:00:00', '2024-01-31 08:00:00', null, null, null, null, null, null);
+INSERT INTO `vip_coupon_active` VALUES ('8f54c3b7-9ab5-479c-866a-3a8bef3f909a', null, '', '2024-02-02 16:22:04', null, '0', '0', '春节狂欢节', 'M0000002', '', null, '1.00000', null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for vip_coupon_history
+-- ----------------------------
+DROP TABLE IF EXISTS `vip_coupon_history`;
+CREATE TABLE `vip_coupon_history` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `status` int(11) DEFAULT NULL COMMENT '状态',
+ `type` int(11) DEFAULT NULL COMMENT '优惠券类型',
+ `activityname` varchar(256) DEFAULT NULL COMMENT '活动名称',
+ `code` varchar(64) DEFAULT NULL COMMENT '优惠券号',
+ `distributioncondition` varchar(255) DEFAULT NULL COMMENT '领取条件',
+ `amount` decimal(18,5) DEFAULT NULL COMMENT '面值',
+ `discount` decimal(18,5) DEFAULT NULL,
+ `discountrate` decimal(18,5) DEFAULT NULL COMMENT '折扣率',
+ `validdatefrom` datetime DEFAULT NULL COMMENT '有效期开始时间',
+ `validdateto` datetime DEFAULT NULL COMMENT '有效期结束时间',
+ `issuingtime` datetime DEFAULT NULL COMMENT '发放时间',
+ `usagetime` datetime DEFAULT NULL COMMENT '使用时间',
+ `orderno` varchar(256) DEFAULT NULL COMMENT '使用订单号',
+ `masterid` varchar(64) DEFAULT NULL,
+ `mastercode` varchar(64) DEFAULT NULL,
+ `mastername` varchar(128) DEFAULT NULL COMMENT '姓名',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of vip_coupon_history
+-- ----------------------------
+INSERT INTO `vip_coupon_history` VALUES ('bed69e9d-f14e-4583-8ded-69ec34226e62', '0', '', '2022-11-15 15:11:38', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `vip_coupon_history` VALUES ('cdae7880-7708-4d10-aedf-dddcd06eefd8', '0', null, '2022-11-16 15:21:56', '2022-11-16 15:40:49', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+INSERT INTO `vip_coupon_history` VALUES ('fc155403-3bf5-4de5-9a20-99b9a3211d6d', '0', null, '2022-12-06 14:31:02', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+
+-- ----------------------------
+-- Table structure for vip_deposit_activity
+-- ----------------------------
+DROP TABLE IF EXISTS `vip_deposit_activity`;
+CREATE TABLE `vip_deposit_activity` (
+ `id` varchar(64) NOT NULL,
+ `status` int(11) DEFAULT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(256) DEFAULT NULL,
+ `name` varchar(256) DEFAULT NULL,
+ `description` varchar(1024) DEFAULT NULL,
+ `amount` decimal(18,5) DEFAULT NULL,
+ `discount` decimal(18,5) DEFAULT NULL,
+ `present` decimal(18,5) DEFAULT NULL,
+ `discountrate` decimal(18,5) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of vip_deposit_activity
+-- ----------------------------
+INSERT INTO `vip_deposit_activity` VALUES ('7323a345-7796-4800-b80b-c7b4ca87f10a', '0', '0', null, '2024-01-29 11:55:03', '2024-01-29 14:30:40', 'V0000001', '50', '充50送10', '50.00000', '0.00000', '0.00000', '0.75000');
+INSERT INTO `vip_deposit_activity` VALUES ('b1a5ca4e-ecad-420f-8049-c7897e9b09b5', '0', '0', null, '2024-01-29 11:56:09', '2024-02-21 10:21:37', 'V0000002', '0.1', '', '0.10000', '0.00000', '0.00000', '0.10000');
+INSERT INTO `vip_deposit_activity` VALUES ('d632c76b-b547-4556-bce0-7276100a905c', '0', '0', null, '2024-01-29 11:56:57', '2024-01-29 14:29:32', 'V0000003', '100', '充100送高级VIP', '100.00000', '0.00000', '0.00000', '0.85000');
+
+-- ----------------------------
+-- Table structure for vip_master
+-- ----------------------------
+DROP TABLE IF EXISTS `vip_master`;
+CREATE TABLE `vip_master` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `code` varchar(64) DEFAULT NULL,
+ `name` varchar(128) DEFAULT NULL COMMENT '姓名',
+ `diamondtype` int(11) DEFAULT NULL COMMENT '会员等级',
+ `type` int(11) DEFAULT NULL COMMENT '类型',
+ `discountrate` decimal(18,5) DEFAULT NULL COMMENT '折扣',
+ `idcard` varchar(64) DEFAULT NULL COMMENT '身份证号',
+ `gender` tinyint(1) DEFAULT NULL COMMENT '性别',
+ `birthday` datetime DEFAULT NULL COMMENT '出生日期',
+ `openid` varchar(64) DEFAULT NULL,
+ `nickname` varchar(128) DEFAULT NULL,
+ `language` varchar(64) DEFAULT NULL,
+ `city` varchar(128) DEFAULT NULL,
+ `province` varchar(128) DEFAULT NULL,
+ `country` varchar(128) DEFAULT NULL,
+ `avatarurl` varchar(1024) DEFAULT NULL,
+ `cellphone` varchar(64) DEFAULT NULL,
+ `token` varchar(1024) DEFAULT NULL,
+ `password` varchar(128) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of vip_master
+-- ----------------------------
+INSERT INTO `vip_master` VALUES ('0d9d1d9c-9be8-4dc1-9102-be8b10110c27', '0', null, '2024-01-24 10:09:07', '2024-02-19 09:44:34', 'V0000001', '你瞅啥!', '3', null, null, null, '1', null, 'oTpYX5CAjqlHAd40oY_NHn5M5VYQ', '你瞅啥!', null, null, null, null, 'https://www.farriver.top:443/static/picture//873b803f-d485-4324-89c1-1e78781ee6d1-20240219094423.jpg', '15122116943', null, null);
+INSERT INTO `vip_master` VALUES ('5a25fcac-9204-4dad-80da-afe71e0c711c', '0', '', '2024-02-06 15:48:02', '2024-02-19 09:46:14', 'V0000003', 'A', '1', null, '0.80000', null, '0', '2024-02-19 00:00:00', null, '花花', null, '天津', '天津', '中国', 'https://www.farriver.top:443/static/picture//0c9b7ee6-49fc-4d3a-8f19-c8f49ed5f04e-20240219093757.jpg', '18222062609', null, null);
+INSERT INTO `vip_master` VALUES ('7c1c595c-4946-4eb3-b34e-f896f2a94d0b', '0', null, '2024-01-24 09:58:43', '2024-02-06 15:28:16', 'V0000002', null, '2', null, null, null, null, null, 'oTpYX5D2LTRnAEH300ZqPep6_eso', '微信用户', null, null, null, null, 'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132', null, null, null);
+
+-- ----------------------------
+-- Table structure for vip_master_organization
+-- ----------------------------
+DROP TABLE IF EXISTS `vip_master_organization`;
+CREATE TABLE `vip_master_organization` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `masterid` varchar(64) DEFAULT NULL,
+ `mastercode` varchar(64) DEFAULT NULL,
+ `mastername` varchar(128) DEFAULT NULL COMMENT '姓名',
+ `organizationid` varchar(64) DEFAULT NULL,
+ `organizationname` varchar(256) DEFAULT NULL,
+ `organizationcode` varchar(256) DEFAULT NULL,
+ `departmentid` varchar(64) DEFAULT NULL,
+ `departmentname` varchar(256) DEFAULT NULL,
+ `departmentcode` varchar(256) DEFAULT NULL,
+ `majorid` varchar(64) DEFAULT NULL,
+ `majorname` varchar(256) DEFAULT NULL,
+ `majorcode` varchar(256) DEFAULT NULL,
+ `gradeid` varchar(64) DEFAULT NULL,
+ `gradename` varchar(256) DEFAULT NULL,
+ `gradecode` varchar(256) DEFAULT NULL,
+ `classid` varchar(64) DEFAULT NULL,
+ `classname` varchar(256) DEFAULT NULL,
+ `classcode` varchar(256) DEFAULT NULL,
+ `updatecount` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of vip_master_organization
+-- ----------------------------
+INSERT INTO `vip_master_organization` VALUES ('31bf9add-6d9e-4ad2-995d-3e7a252136c3', '0', null, '2024-01-21 23:36:56', '2024-02-20 14:07:10', '0d9d1d9c-9be8-4dc1-9102-be8b10110c27', null, '你瞅啥!', 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '5b718983-9508-40f4-aeba-22aad1b55e47', '电子信息与科学', 'M007', null, null, null, null, null, null, '12');
+INSERT INTO `vip_master_organization` VALUES ('5df9f2d6-d6db-4155-8517-b8af4d55d3b7', '0', null, '2024-01-25 11:27:41', '2024-02-07 11:32:56', '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, 'fd53196d-a456-4801-a524-bbed67104056', '麻省理工大学', 'B0002', 'e27244bc-8240-4b12-bef2-003ded033148', '工商管理学院', 'D003', '5b718983-9508-40f4-aeba-22aad1b55e47', '电子信息与科学', 'M007', null, null, null, null, null, null, '2');
+
+-- ----------------------------
+-- Table structure for vip_master_paper_relation
+-- ----------------------------
+DROP TABLE IF EXISTS `vip_master_paper_relation`;
+CREATE TABLE `vip_master_paper_relation` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `masterid` varchar(64) DEFAULT NULL,
+ `mastercode` varchar(64) DEFAULT NULL,
+ `mastername` varchar(128) DEFAULT NULL COMMENT '姓名',
+ `paperid` varchar(64) DEFAULT NULL,
+ `papercode` varchar(64) DEFAULT NULL,
+ `papername` varchar(128) DEFAULT NULL COMMENT '姓名',
+ `buyedtime` datetime DEFAULT NULL,
+ `amount` decimal(18,5) DEFAULT NULL,
+ `status` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of vip_master_paper_relation
+-- ----------------------------
+INSERT INTO `vip_master_paper_relation` VALUES ('1f9eb506-dc3c-41e2-a9c2-226a6b2bbf1d', '0', null, '2024-01-31 15:06:45', '2024-01-31 15:07:00', '0d9d1d9c-9be8-4dc1-9102-be8b10110c27', null, null, '3a4cfd45-9303-4ed6-97cd-a50a7ce967c4', null, '实训答辩', '2024-01-31 15:06:45', '0.10000', '2');
+
+-- ----------------------------
+-- Table structure for vip_master_wallet
+-- ----------------------------
+DROP TABLE IF EXISTS `vip_master_wallet`;
+CREATE TABLE `vip_master_wallet` (
+ `id` varchar(64) NOT NULL,
+ `isdeleted` tinyint(1) DEFAULT NULL COMMENT 'isdeleted or not',
+ `remark` varchar(1024) DEFAULT NULL COMMENT 'remark',
+ `createtime` datetime DEFAULT NULL COMMENT 'create time',
+ `updatetime` datetime DEFAULT NULL COMMENT 'latest update time',
+ `masterid` varchar(64) DEFAULT NULL,
+ `mastercode` varchar(64) DEFAULT NULL,
+ `mastername` varchar(128) DEFAULT NULL COMMENT '姓名',
+ `balance` decimal(18,5) DEFAULT NULL,
+ `status` int(11) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Records of vip_master_wallet
+-- ----------------------------
+INSERT INTO `vip_master_wallet` VALUES ('1b7f1c0f-1d5e-42f6-98a0-55cbada15ed6', '0', null, '2024-01-29 11:40:59', '2024-02-20 14:13:49', '7c1c595c-4946-4eb3-b34e-f896f2a94d0b', null, null, '160.02000', null);
+INSERT INTO `vip_master_wallet` VALUES ('78283ade-53c7-4150-babc-a92e1a7ec3bb', '0', null, '2024-01-29 17:15:28', '2024-01-31 15:06:45', '0d9d1d9c-9be8-4dc1-9102-be8b10110c27', null, null, '48.95000', null);
diff --git a/03-Design/02-Detail Design/01-Databse Design/02-Review/README.md b/03-Design/02-Detail Design/01-Databse Design/02-Review/README.md
new file mode 100644
index 0000000..fe92883
--- /dev/null
+++ b/03-Design/02-Detail Design/01-Databse Design/02-Review/README.md
@@ -0,0 +1,7 @@
+## Database design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted for customer to comment and approve.
+
+
+
diff --git a/03-Design/02-Detail Design/01-Databse Design/03-Submitted/README.md b/03-Design/02-Detail Design/01-Databse Design/03-Submitted/README.md
new file mode 100644
index 0000000..fe92883
--- /dev/null
+++ b/03-Design/02-Detail Design/01-Databse Design/03-Submitted/README.md
@@ -0,0 +1,7 @@
+## Database design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted for customer to comment and approve.
+
+
+
diff --git a/03-Design/02-Detail Design/01-Databse Design/04-Script/README.md b/03-Design/02-Detail Design/01-Databse Design/04-Script/README.md
new file mode 100644
index 0000000..fe92883
--- /dev/null
+++ b/03-Design/02-Detail Design/01-Databse Design/04-Script/README.md
@@ -0,0 +1,7 @@
+## Database design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted for customer to comment and approve.
+
+
+
diff --git a/03-Design/02-Detail Design/01-Databse Design/README.md b/03-Design/02-Detail Design/01-Databse Design/README.md
new file mode 100644
index 0000000..fe92883
--- /dev/null
+++ b/03-Design/02-Detail Design/01-Databse Design/README.md
@@ -0,0 +1,7 @@
+## Database design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted for customer to comment and approve.
+
+
+
diff --git a/03-Design/02-Detail Design/02-Workflow Design/README.md b/03-Design/02-Detail Design/02-Workflow Design/README.md
new file mode 100644
index 0000000..fe92883
--- /dev/null
+++ b/03-Design/02-Detail Design/02-Workflow Design/README.md
@@ -0,0 +1,7 @@
+## Database design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted for customer to comment and approve.
+
+
+
diff --git a/03-Design/02-Detail Design/03-Prototype Design/README.md b/03-Design/02-Detail Design/03-Prototype Design/README.md
new file mode 100644
index 0000000..df3f1cc
--- /dev/null
+++ b/03-Design/02-Detail Design/03-Prototype Design/README.md
@@ -0,0 +1,5 @@
+##
+
+
+
+
diff --git a/03-Design/02-Detail Design/04-Report Design/README.md b/03-Design/02-Detail Design/04-Report Design/README.md
new file mode 100644
index 0000000..df3f1cc
--- /dev/null
+++ b/03-Design/02-Detail Design/04-Report Design/README.md
@@ -0,0 +1,5 @@
+##
+
+
+
+
diff --git a/03-Design/02-Detail Design/README.md b/03-Design/02-Detail Design/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/03-Design/02-Detail Design/README.md
diff --git a/03-Design/03-FDS/01-Draft/README.md b/03-Design/03-FDS/01-Draft/README.md
new file mode 100644
index 0000000..476daae
--- /dev/null
+++ b/03-Design/03-FDS/01-Draft/README.md
@@ -0,0 +1,7 @@
+## System Function design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted FDS to customer to comment and approve.
+
+
+
diff --git a/03-Design/03-FDS/02-Review/README.md b/03-Design/03-FDS/02-Review/README.md
new file mode 100644
index 0000000..476daae
--- /dev/null
+++ b/03-Design/03-FDS/02-Review/README.md
@@ -0,0 +1,7 @@
+## System Function design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted FDS to customer to comment and approve.
+
+
+
diff --git a/03-Design/03-FDS/03-Submitted/README.md b/03-Design/03-FDS/03-Submitted/README.md
new file mode 100644
index 0000000..476daae
--- /dev/null
+++ b/03-Design/03-FDS/03-Submitted/README.md
@@ -0,0 +1,7 @@
+## System Function design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted FDS to customer to comment and approve.
+
+
+
diff --git a/03-Design/03-FDS/04-ToCustomer/README.md b/03-Design/03-FDS/04-ToCustomer/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/03-Design/03-FDS/04-ToCustomer/README.md
diff --git a/03-Design/03-FDS/README.md b/03-Design/03-FDS/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/03-Design/03-FDS/README.md
diff --git a/03-Design/README.md b/03-Design/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/03-Design/README.md
diff --git a/04-Development/01-Software Development Plan/README.md b/04-Development/01-Software Development Plan/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/01-Software Development Plan/README.md
diff --git a/04-Development/02-Code/README.md b/04-Development/02-Code/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/README.md
diff --git a/04-Development/02-Code/bwf/README.md b/04-Development/02-Code/bwf/README.md
new file mode 100644
index 0000000..9ad6507
--- /dev/null
+++ b/04-Development/02-Code/bwf/README.md
@@ -0,0 +1,17 @@
+## FR-BWF 知识库系统 (knowledge-based systems, KBSes)
+
+开发环境
+
+IDEA 2023.3.4
+JDK corretto-17.0.10
+apache-tomcat-11.0.0-M18
+nacos-server-2.3.1
+nginx-1.21.3
+mysql 8
+Redis-x64-3.2.100
+rabbitmq_server-3.8.8
+
+web的配置再nacos服务中集中配置
+
+启动 web 方式:
+Edit Configurations-> 点击‘+’ 添加 Spring Boot 启动方式 -> 选择JDK 和启动类 -> 添加 VM Option配置:-Dspring.cloud.bootstrap.enabled=true
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/pom.xml b/04-Development/02-Code/bwf/com.farriver.bwf.common/pom.xml
new file mode 100644
index 0000000..dad6a0a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <groupId>com.farriver.bwf.common</groupId>
+ <artifactId>common</artifactId>
+ <version>${revision}</version>
+ <parent>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <dependencies>
+ </dependencies>
+</project>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiData.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiData.java
new file mode 100644
index 0000000..78df4f9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiData.java
@@ -0,0 +1,77 @@
+package com.farriver.bwf.common.model;
+
+public class ApiData {
+ private Integer code;
+ private String status;
+ private String message;
+ private Object data;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+
+
+ private ApiData() {
+
+ }
+
+ public ApiData(Integer code, String status, String message, Object data) {
+ this.code = code;
+ this.status = status;
+ this.message = message;
+ this.data = data;
+ }
+
+ public static ApiData build() {
+ return new ApiData();
+ }
+
+ public static ApiData ok(String message) {
+ return new ApiData(200, ApiDataStatus.SUCCESS.toString(), message, null);
+ }
+
+ public static ApiData ok(String message, Object data) {
+ return new ApiData(200, ApiDataStatus.SUCCESS.toString(), message, data);
+ }
+
+ public static ApiData unauthorized(String message) {
+ return new ApiData(401, ApiDataStatus.UNAUTHORIZED.toString(), message, null);
+ }
+
+ public static ApiData error(String message) {
+ return new ApiData(500, ApiDataStatus.FAILED.toString(), message, null);
+ }
+
+ public static ApiData error(String message, Object obj) {
+ return new ApiData(500, ApiDataStatus.FAILED.toString(), message, obj);
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiDataStatus.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiDataStatus.java
new file mode 100644
index 0000000..69259a6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiDataStatus.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.common.model;
+
+public enum ApiDataStatus {
+ SUCCESS,
+ FAILED,
+ CANCELLED,
+ UNAUTHORIZED,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiPageData.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiPageData.java
new file mode 100644
index 0000000..4701406
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/ApiPageData.java
@@ -0,0 +1,113 @@
+package com.farriver.bwf.common.model;
+
+public class ApiPageData {
+ private Integer code;
+ private String status;
+ private String message;
+ private Object data;
+ private Object total;
+ private Integer pageIndex;
+ private Integer pageSize;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+
+ public Object getTotal() {
+ return total;
+ }
+
+ public void setTotal(Object total) {
+ this.total = total;
+ }
+
+ public Integer getPageIndex() {
+ return pageIndex;
+ }
+
+ public void setPageIndex(Integer pageIndex) {
+ this.pageIndex = pageIndex;
+ }
+
+ public Integer getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+
+
+ private ApiPageData() {
+ }
+
+ public ApiPageData(Integer code, String status, String message, Object data, Object total, Integer pageIndex, Integer pageSize) {
+ this.total = total;
+ this.pageIndex = pageIndex;
+ this.pageSize = pageSize;
+ this.code = code;
+ this.status = status;
+ this.message = message;
+ this.data = data;
+ }
+
+ public static ApiPageData build() {
+ return new ApiPageData();
+ }
+
+ public static ApiPageData ok(Object data) {
+ return new ApiPageData(200, ApiDataStatus.SUCCESS.toString(), null, data,null,null,null);
+ }
+
+ public static ApiPageData ok(Object data, Object total) {
+ return new ApiPageData(200, ApiDataStatus.SUCCESS.toString(), null, data,total,null,null);
+ }
+
+ public static ApiPageData ok(String message, Object data) {
+ return new ApiPageData(200, ApiDataStatus.SUCCESS.toString(), message, data,null,null,null);
+ }
+
+ public static ApiPageData ok(String message, Object data, Object total) {
+ return new ApiPageData(200, ApiDataStatus.SUCCESS.toString(), message, data,total,null,null);
+ }
+
+ public static ApiPageData unauthorized(String message) {
+ return new ApiPageData(401, ApiDataStatus.UNAUTHORIZED.toString(), message, null,null,null,null);
+ }
+
+ public static ApiPageData error(String message) {
+ return new ApiPageData(500, ApiDataStatus.FAILED.toString(), message, null,null,null,null);
+ }
+
+ public static ApiPageData error(String message, Object data) {
+ return new ApiPageData(500, ApiDataStatus.FAILED.toString(), message, data,null,null,null);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/FileListData.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/FileListData.java
new file mode 100644
index 0000000..c389c01
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/FileListData.java
@@ -0,0 +1,22 @@
+package com.farriver.bwf.common.model;
+
+public class FileListData {
+ private String name;
+ private String url;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/UploadTemplateData.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/UploadTemplateData.java
new file mode 100644
index 0000000..bda9fbd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/UploadTemplateData.java
@@ -0,0 +1,33 @@
+package com.farriver.bwf.common.model;
+
+public class UploadTemplateData {
+ private String relativepath;
+
+ private String absolutepath;
+
+ private String linkurl;
+
+ public String getRelativepath() {
+ return relativepath;
+ }
+
+ public void setRelativepath(String relativepath) {
+ this.relativepath = relativepath;
+ }
+
+ public String getAbsolutepath() {
+ return absolutepath;
+ }
+
+ public void setAbsolutepath(String absolutepath) {
+ this.absolutepath = absolutepath;
+ }
+
+ public String getLinkurl() {
+ return linkurl;
+ }
+
+ public void setLinkurl(String linkurl) {
+ this.linkurl = linkurl;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/User.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/User.java
new file mode 100644
index 0000000..b141738
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/User.java
@@ -0,0 +1,195 @@
+package com.farriver.bwf.common.model;
+
+import java.util.Date;
+
+public class User {
+ private String id;
+
+ private String departmentid;
+
+ private String name;
+
+ private Boolean gender;
+
+ private Integer age;
+
+ private String email;
+
+ private Boolean enabled;
+
+ private String username;
+
+ private String password;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponse.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponse.java
new file mode 100644
index 0000000..912b33b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponse.java
@@ -0,0 +1,23 @@
+package com.farriver.bwf.common.model;
+
+public class WangEditResponse {
+ private int errno;
+ private WangEditResponseData data;
+
+ public int getErrno() {
+ return errno;
+ }
+
+ public void setErrno(int errno) {
+ this.errno = errno;
+ }
+
+ public WangEditResponseData getData() {
+ return data;
+ }
+
+ public void setData(WangEditResponseData data) {
+ this.data = data;
+ }
+}
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponseData.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponseData.java
new file mode 100644
index 0000000..cf553a5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/model/WangEditResponseData.java
@@ -0,0 +1,31 @@
+package com.farriver.bwf.common.model;
+
+public class WangEditResponseData {
+ private String url;
+ private String alt;
+ private String href;
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getAlt() {
+ return alt;
+ }
+
+ public void setAlt(String alt) {
+ this.alt = alt;
+ }
+
+ public String getHref() {
+ return href;
+ }
+
+ public void setHref(String href) {
+ this.href = href;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/ActionType.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/ActionType.java
new file mode 100644
index 0000000..368cd6b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/ActionType.java
@@ -0,0 +1,16 @@
+package com.farriver.bwf.common.options;
+
+public enum ActionType {
+ CREATE,
+ UPDATE,
+ CREATEORUPDATE,
+ DELETE,
+ QUERY,
+ LOGIN,
+ LOGOUT,
+ MOVE,
+ CHANGE,
+ UPLOAD,
+ DOWNLOAD,
+ OTHERS
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/DBTypeOption.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/DBTypeOption.java
new file mode 100644
index 0000000..2f8f0fc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/DBTypeOption.java
@@ -0,0 +1,7 @@
+package com.farriver.bwf.common.options;
+
+public enum DBTypeOption {
+ MASTER,
+ SLAVE1,
+ SLAVE2
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MailStatus.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MailStatus.java
new file mode 100644
index 0000000..1677292
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MailStatus.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.common.options;
+
+public enum MailStatus {
+ PENDING,
+ QUEUING,
+ SUCCESSFUL,
+ FAILED
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MapDataType.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MapDataType.java
new file mode 100644
index 0000000..7be9c7b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/MapDataType.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.common.options;
+
+public enum MapDataType {
+ TOTAL_COUNT,
+ DATA_LIST,
+ PAGE_INDEX,
+ PAGE_SIZE,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/OperationResult.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/OperationResult.java
new file mode 100644
index 0000000..8c57ffa
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/OperationResult.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.common.options;
+
+public enum OperationResult {
+ WAITING,
+ SUCCESS,
+ FAILED,
+ CANCELLED,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/RoleOption.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/RoleOption.java
new file mode 100644
index 0000000..3f08d5d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/options/RoleOption.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.common.options;
+
+public enum RoleOption {
+ Engineer,
+ SuperAdministrator,
+ Administrator,
+ Other,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/LangConstants.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/LangConstants.java
new file mode 100644
index 0000000..bd0cf14
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/LangConstants.java
@@ -0,0 +1,63 @@
+package com.farriver.bwf.common.statics;
+
+public class LangConstants {
+ public static final String MSG_INFO_SUCCESS = "MSG_INFO_SUCCESS";
+ public static final String MSG_INFO_FAILED = "MSG_INFO_FAILED";
+ public static final String MSG_INFO_LOGIN_SUCCESS = "MSG_INFO_LOGIN_SUCCESS";//登陆成功
+
+ public static final String MSG_ERROR_SYSTEM = "MSG_ERROR_SYSTEM";//服务器异常,请联系管理员!
+ public static final String MSG_ERROR_PARAMETERS = "MSG_ERROR_PARAMETERS";//参数错误
+ public static final String MSG_ERROR_NAME_EXISTED = "MSG_NAME_EXISTED";//名称已经存在,请更换其他名称!
+ public static final String MSG_ERROR_CODE_EXISTED = "MSG_CODE_EXISTED";//编号已经存在,请更换其他编号!
+ public static final String MSG_ERROR_NAME_REQUIRED = "MSG_NAME_REQUIRED";//名称不能为空!
+ public static final String MSG_ERROR_VERIFY_CODE = "MSG_ERROR_VERIFY_CODE";//验证码错误!
+ public static final String MSG_ERROR_VERIFY_CODE_EXPIRED = "MSG_EXPIRED_VERIFY_CODE";//验证码过期!
+ public static final String MSG_ERROR_ACCOUNT_PASSWORD_REQUIRED = "MSG_ACCOUNT_PASSWORD_REQUIRED";//用户账户和密码不能为空!
+ public static final String MSG_ERROR_ACCOUNT_PASSWORD = "MSG_ERROR_ACCOUNT_PASSWORD";//用户账户或者密码错误!
+ public static final String MSG_ERROR_ACCOUNT_LOCKED = "MSG_ERROR_ACCOUNT_LOCKED";//账户已被禁用,访问受限!
+ public static final String MSG_ERROR_ACCOUNT_EXPIRED = "MSG_ERROR_ACCOUNT_EXPIRED";//账户已过期,访问受限!
+ public static final String MSG_ERROR_ACCOUNT_LOW_PERMISSION = "MSG_ERROR_ACCOUNT_LOW_PERMISSION";//账户权限不足,访问受限!
+ public static final String MSG_INFO_LOGIN_OUT_SUCCESS = "MSG_INFO_LOGIN_OUT_SUCCESS";//注销成功
+ public static final String MSG_ERROR_URL_PERMISSION_EXISTED = "MSG_ERROR_URL_PERMISSION_EXISTED";//系统%s的路劲%s的权限已经存在!
+ public static final String MSG_ERROR_ACCOUNT_BALANCE_Insufficient = "MSG_ERROR_ACCOUNT_BALANCE_Insufficient";//系统%s的路劲%s的权限已经存在!
+ public static final String MSG_ERROR_ACCOUNT_LOCK_USER_EXISTED = "MSG_ERROR_ACCOUNT_LOCK_USER_EXISTED";//系统%s的路劲%s的权限已经存在!
+
+ public static final String MSG_ERROR_EMAIL_EXISTED = "MSG_ERROR_EMAIL_EXISTED";//电子邮件已经存在,请更换其他电子邮件后重试!
+ public static final String MSG_ERROR_CELLPHONE_EXISTED = "MSG_ERROR_CELLPHONE_EXISTED";//手机号已经存在,请更换其他手机号后重试!
+ public static final String MSG_ERROR_USER_NOT_EXISTED = "MSG_ERROR_USER_NOT_EXISTED";//用户不存在,操作失败!
+ public static final String MSG_ERROR_PASSWORD_INVALID = "MSG_ERROR_PASSWORD_INVALID";//密码不正确!
+ public static final String MSG_ERROR_OLD_PASSWORD_INVALID = "MSG_ERROR_OLD_PASSWORD_INVALID";//旧密码不正确!
+ public static final String MSG_ERROR_PRINT = "MSG_ERROR_PRINT";
+ public static final String MSG_ERROR_STATUS = "MSG_ERROR_STATUS";
+ public static final String MSG_ERROR_SHIPMENT_STATUS = "MSG_ERROR_SHIPMENT_STATUS";
+ public static final String MSG_ERROR_ORDER_STATUS = "MSG_ERROR_ORDER_STATUS";
+ public static final String MSG_ERROR_TRANSPORTATION_STATUS = "MSG_ERROR_TRANSPORTATION_STATUS";
+
+ public static final String CK_purchase_contract_remaining_day = "purchase_contract_remaining_day";
+ public static final String CK_sale_order_remaining_day = "sale_order_remaining_day";
+ public static final String CK_purchase_shipment_remaining_day = "purchase_shipment_remaining_day";
+ public static final String CK_purchase_order_remaining_day = "purchase_order_remaining_day";
+ public static final String CK_sale_shipment_remaining_day = "sale_shipment_remaining_day";
+ public static final String CK_sale_contract_remaining_day = "sale_contract_remaining_day";
+ public static final String CK_warehouse_inventory_max_level = "warehouse_inventory_max_level";
+ public static final String CK_switch_purchase_contract_remaining_day = "switch_purchase_contract_remaining_day";
+ public static final String CK_financial_collection_remaining_day = "financial_collection_remaining_day";
+ public static final String CK_warehouse_inventory_overstock_day = "warehouse_inventory_overstock_day";
+ public static final String CK_warehouse_inventory_min_level = "warehouse_inventory_min_level";
+ public static final String CK_switch_purchase_shipment_remaining_day = "switch_purchase_shipment_remaining_day";
+ public static final String CK_financial_payment_remaining_day = "financial_payment_remaining_day";
+ public static final String CK_switch_purchase_order_remaining_day = "switch_purchase_order_remaining_day";
+ public static final String CK_switch_sale_contract_remaining_day = "switch_sale_contract_remaining_day";
+ public static final String CK_switch_sale_order_remaining_day = "switch_sale_order_remaining_day";
+ public static final String CK_switch_sale_shipment_remaining_day = "switch_sale_shipment_remaining_day";
+ public static final String CK_switch_warehouse_inventory_level = "switch_warehouse_inventory_level";
+ public static final String CK_switch_warehouse_inventory_overstock_day = "switch_warehouse_inventory_overstock_day";
+ public static final String CK_switch_financial_payment_remaining_day = "switch_financial_payment_remaining_day";
+ public static final String CK_switch_financial_collection_remaining_day = "switch_financial_collection_remaining_day";
+
+ public static final String Alert_Type_Primary = "primary";
+ public static final String Alert_Type_Info = "info";
+ public static final String Alert_Type_Success = "success";
+ public static final String Alert_Type_Warning = "warning";
+ public static final String Alert_Type_Danger = "danger";
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/MailConstants.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/MailConstants.java
new file mode 100644
index 0000000..f4e373a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/statics/MailConstants.java
@@ -0,0 +1,12 @@
+package com.farriver.bwf.common.statics;
+
+public class MailConstants {
+ public static final Integer DELIVERING = 0;//消息投递中
+ public static final Integer SUCCESS = 1;//消息投递成功
+ public static final Integer FAILURE = 2;//消息投递失败
+ public static final Integer MAX_TRY_COUNT = 3;//最大重试次数
+ public static final Integer MSG_TIMEOUT = 1;//消息超时时间
+ public static final String MAIL_QUEUE_NAME = "com.farriver.bwf.mail.queue";
+ public static final String MAIL_EXCHANGE_NAME = "com.farriver.bwf.mail.exchange";
+ public static final String MAIL_ROUTING_KEY_NAME = "com.farriver.bwf.mail.routing.key";
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateConverter.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateConverter.java
new file mode 100644
index 0000000..090847e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateConverter.java
@@ -0,0 +1,79 @@
+package com.farriver.bwf.common.utilities;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.stereotype.Component;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/*
+Converter是SpringMvc框架中的一个功能点,通过转化器可以实现对UI端传递的数据进行类型转化,
+实现类型转化可以实现接口Converter<S,T>接口、ConverterFactory接口、GenericConverter接口。
+ConverterRegistry接口就是对这三种类型提供了对应的注册方法。
+ */
+@Component
+public class DateConverter implements Converter<String, Date> {
+ private final Logger logger = LoggerFactory.getLogger(DateConverter.class);
+
+ private static ThreadLocal<SimpleDateFormat[]> formats = new ThreadLocal<SimpleDateFormat[]>() {
+ protected SimpleDateFormat[] initialValue() {
+ return new SimpleDateFormat[]{
+ new SimpleDateFormat("yyyy-MM"),
+ new SimpleDateFormat("yyyy-MM-dd"),
+ new SimpleDateFormat("yyyy-MM-dd HH"),
+ new SimpleDateFormat("yyyy-MM-dd HH:mm"),
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+ };
+ }
+ };
+
+ @Override
+ public Date convert(String source) {
+ if (source == null || source.trim().equals("")) {
+ return null;
+ }
+
+ Date result = null;
+ String originalValue = source.trim();
+ if (source.matches("^\\d{4}-\\d{1,2}$")) {
+ return parseDate(source, formats.get()[0]);
+ } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
+ return parseDate(source, formats.get()[1]);
+ } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}$")) {
+ return parseDate(source, formats.get()[2]);
+ } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
+ return parseDate(source, formats.get()[3]);
+ } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
+ return parseDate(source, formats.get()[4]);
+ } else if (originalValue.matches("^\\d{1,13}$")) {
+ try {
+ long timeStamp = Long.parseLong(originalValue);
+ if (originalValue.length() > 10) {
+ result = new Date(timeStamp);
+ } else {
+ result = new Date(1000L * timeStamp);
+ }
+ } catch (Exception e) {
+ result = null;
+
+ }
+ } else {
+ result = null;
+ }
+
+ return result;
+ }
+
+ public Date parseDate(String dateStr, DateFormat dateFormat) {
+ Date date = null;
+ try {
+ date = dateFormat.parse(dateStr);
+ } catch (Exception e) {
+
+ }
+ return date;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateTimeUtils.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateTimeUtils.java
new file mode 100644
index 0000000..03eabea
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateTimeUtils.java
@@ -0,0 +1,213 @@
+package com.farriver.bwf.common.utilities;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class DateTimeUtils {
+
+ private static final Logger logger = LoggerFactory.getLogger(DateTimeUtils.class);
+
+ public static Date parseDate(String dateStr, DateFormat dateFormat) {
+ Date date = null;
+ try {
+ date = dateFormat.parse(dateStr);
+ } catch (Exception e) {
+
+ }
+ return date;
+ }
+
+ public static String dateToString(Date date, String dateFormat) {
+ String dateStr = null;
+ try {
+ SimpleDateFormat format = new SimpleDateFormat(dateFormat);
+ dateStr = format.format(date);
+ } catch (Exception e) {
+
+ }
+ return dateStr;
+ }
+
+ public static Date parseDate(String dateStr, String dateFormat) {
+ Date date = null;
+ try {
+ SimpleDateFormat format = new SimpleDateFormat(dateFormat);
+ date = format.parse(dateStr);
+ } catch (Exception e) {
+
+ }
+ return date;
+ }
+
+ public static Map<String, Date> getWorkDayDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 8);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+
+ from = calendar.getTime();
+
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 17);
+ calendar.set(Calendar.MINUTE, 00);
+ calendar.set(Calendar.SECOND, 00);
+ calendar.set(Calendar.MILLISECOND, 999);
+
+ to = calendar.getTime();
+
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getDayDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+
+ from = calendar.getTime();
+
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+
+ to = calendar.getTime();
+
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getMonthDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH);
+
+ Calendar c = Calendar.getInstance();
+ c.set(Calendar.YEAR, year);
+ c.set(Calendar.MONTH, month);
+ c.set(Calendar.DAY_OF_MONTH, 1);
+ c.set(Calendar.HOUR_OF_DAY, 0);
+ c.set(Calendar.MINUTE, 0);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+
+ from = c.getTime();
+
+ Calendar c2 = Calendar.getInstance();
+ c2.set(Calendar.YEAR, year);
+ c2.set(Calendar.MONTH, month);
+ int lastDate = c2.getActualMaximum(Calendar.DATE);
+ c2.set(Calendar.DAY_OF_MONTH, lastDate);
+ c2.set(Calendar.HOUR_OF_DAY, 23);
+ c2.set(Calendar.MINUTE, 59);
+ c2.set(Calendar.SECOND, 59);
+ c2.set(Calendar.MILLISECOND, 999);
+
+ to = c2.getTime();
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getYearDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH);
+
+ Calendar c = Calendar.getInstance();
+ c.set(year, 0, 1);
+ c.set(Calendar.HOUR_OF_DAY, 0);
+ c.set(Calendar.MINUTE, 0);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+
+ from = c.getTime();
+
+ Calendar c2 = Calendar.getInstance();
+ c2.set(Calendar.YEAR, year + 1);
+ c2.set(Calendar.MONTH, 0);
+ c2.set(Calendar.DAY_OF_MONTH, 0);
+ c2.set(Calendar.DATE, 0);
+ c2.set(Calendar.HOUR_OF_DAY, 23);
+ c2.set(Calendar.MINUTE, 59);
+ c2.set(Calendar.SECOND, 59);
+ c2.set(Calendar.MILLISECOND, 999);
+
+ to = c2.getTime();
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Integer getRemainingDay(Date from, Date to) {
+ if (from == null || to == null) {
+ return null;
+ }
+ try {
+ var duration = to.getTime() - from.getTime();
+
+ return (int) Math.ceil((double) duration / 24 / 60 / 60 / 1000);
+ } catch (Exception ignored) {
+
+ }
+
+ return null;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtil.java
new file mode 100644
index 0000000..a61cc02
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtil.java
@@ -0,0 +1,149 @@
+package com.farriver.bwf.common.utilities;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class DateUtil {
+
+ public static Date parseDate(String dateStr, DateFormat dateFormat) {
+ Date date = null;
+ try {
+ date = dateFormat.parse(dateStr);
+ } catch (Exception e) {
+
+ }
+ return date;
+ }
+
+ public static String dateToString(Date date, String dateFormat) {
+ String dateStr = null;
+ try {
+ SimpleDateFormat format = new SimpleDateFormat(dateFormat);
+ dateStr = format.format(date);
+ } catch (Exception e) {
+
+ }
+ return dateStr;
+ }
+
+ public static Map<String, Date> getDayDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+
+ from = calendar.getTime();
+
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+
+ to = calendar.getTime();
+
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getMonthDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH);
+
+ Calendar c = Calendar.getInstance();
+ c.set(Calendar.YEAR, year);
+ c.set(Calendar.MONTH, month);
+ c.set(Calendar.DAY_OF_MONTH, 1);
+ c.set(Calendar.HOUR_OF_DAY, 0);
+ c.set(Calendar.MINUTE, 0);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+
+ from = c.getTime();
+
+ Calendar c2 = Calendar.getInstance();
+ c2.set(Calendar.YEAR, year);
+ c2.set(Calendar.MONTH, month);
+ int lastDate = c2.getActualMaximum(Calendar.DATE);
+ c2.set(Calendar.DAY_OF_MONTH, lastDate);
+ c2.set(Calendar.HOUR_OF_DAY, 23);
+ c2.set(Calendar.MINUTE, 59);
+ c2.set(Calendar.SECOND, 59);
+ c2.set(Calendar.MILLISECOND, 999);
+
+ to = c2.getTime();
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getYearDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH);
+
+ Calendar c = Calendar.getInstance();
+ c.set(year, 0, 1);
+ c.set(Calendar.HOUR_OF_DAY, 0);
+ c.set(Calendar.MINUTE, 0);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+
+ from = c.getTime();
+
+ Calendar c2 = Calendar.getInstance();
+ c2.set(Calendar.YEAR, year + 1);
+ c2.set(Calendar.MONTH, 0);
+ c2.set(Calendar.DAY_OF_MONTH, 0);
+ c2.set(Calendar.DATE, 0);
+ c2.set(Calendar.HOUR_OF_DAY, 23);
+ c2.set(Calendar.MINUTE, 59);
+ c2.set(Calendar.SECOND, 59);
+ c2.set(Calendar.MILLISECOND, 999);
+
+ to = c2.getTime();
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtils.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtils.java
new file mode 100644
index 0000000..2d326d2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DateUtils.java
@@ -0,0 +1,187 @@
+package com.farriver.bwf.common.utilities;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class DateUtils {
+
+ private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
+
+ public static Date parseDate(String dateStr, DateFormat dateFormat) {
+ Date date = null;
+ try {
+ date = dateFormat.parse(dateStr);
+ } catch (Exception e) {
+
+ }
+ return date;
+ }
+
+ public static String dateToString(Date date, String dateFormat) {
+ String dateStr = null;
+ try {
+ SimpleDateFormat format = new SimpleDateFormat(dateFormat);
+ dateStr = format.format(date);
+ } catch (Exception e) {
+
+ }
+ return dateStr;
+ }
+
+ public static Map<String, Date> getWorkDayDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 8);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+
+ from = calendar.getTime();
+
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 17);
+ calendar.set(Calendar.MINUTE, 00);
+ calendar.set(Calendar.SECOND, 00);
+ calendar.set(Calendar.MILLISECOND, 999);
+
+ to = calendar.getTime();
+
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getDayDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+
+ from = calendar.getTime();
+
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+
+ to = calendar.getTime();
+
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getMonthDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH);
+
+ Calendar c = Calendar.getInstance();
+ c.set(Calendar.YEAR, year);
+ c.set(Calendar.MONTH, month);
+ c.set(Calendar.DAY_OF_MONTH, 1);
+ c.set(Calendar.HOUR_OF_DAY, 0);
+ c.set(Calendar.MINUTE, 0);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+
+ from = c.getTime();
+
+ Calendar c2 = Calendar.getInstance();
+ c2.set(Calendar.YEAR, year);
+ c2.set(Calendar.MONTH, month);
+ int lastDate = c2.getActualMaximum(Calendar.DATE);
+ c2.set(Calendar.DAY_OF_MONTH, lastDate);
+ c2.set(Calendar.HOUR_OF_DAY, 23);
+ c2.set(Calendar.MINUTE, 59);
+ c2.set(Calendar.SECOND, 59);
+ c2.set(Calendar.MILLISECOND, 999);
+
+ to = c2.getTime();
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+
+ public static Map<String, Date> getYearDuration(Date date) {
+ Map<String, Date> map = new HashMap<>();
+ Date from = null;
+ Date to = null;
+
+ try {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ int year = calendar.get(Calendar.YEAR);
+ int month = calendar.get(Calendar.MONTH);
+
+ Calendar c = Calendar.getInstance();
+ c.set(year, 0, 1);
+ c.set(Calendar.HOUR_OF_DAY, 0);
+ c.set(Calendar.MINUTE, 0);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+
+ from = c.getTime();
+
+ Calendar c2 = Calendar.getInstance();
+ c2.set(Calendar.YEAR, year + 1);
+ c2.set(Calendar.MONTH, 0);
+ c2.set(Calendar.DAY_OF_MONTH, 0);
+ c2.set(Calendar.DATE, 0);
+ c2.set(Calendar.HOUR_OF_DAY, 23);
+ c2.set(Calendar.MINUTE, 59);
+ c2.set(Calendar.SECOND, 59);
+ c2.set(Calendar.MILLISECOND, 999);
+
+ to = c2.getTime();
+ } catch (Exception e) {
+
+ }
+
+ map.put("from", from);
+ map.put("to", to);
+
+ return map;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DocxExportUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DocxExportUtil.java
new file mode 100644
index 0000000..9ed507b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/DocxExportUtil.java
@@ -0,0 +1,368 @@
+package com.farriver.bwf.common.utilities;
+
+import com.alibaba.fastjson2.JSON;
+import org.apache.poi.xwpf.usermodel.*;
+import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+
+import java.io.*;
+import java.lang.reflect.Field;
+import java.util.*;
+
+public class DocxExportUtil {
+
+ private static final Logger logger = LoggerFactory.getLogger(DateTimeUtils.class);
+
+ @NotNull
+ public static <T> HashMap getHashMap(T model) {
+ HashMap map = new HashMap();
+
+ Class clazz1 = model.getClass();
+
+ Field[] declaredFields = clazz1.getDeclaredFields();
+ for (Field field : declaredFields) {
+ field.setAccessible(true);
+ Object value = null;
+ try {
+ String key = String.format("${%s}", field.getName());
+
+ value = field.get(model);
+ if (value instanceof String[]) {
+ value = JSON.toJSONString(value);
+ } else if (value instanceof Date) {
+ value = DateTimeUtils.dateToString((Date) value, "yyyy/MM/dd hh:mm");
+ }
+
+ map.put(key, value);
+ } catch (IllegalAccessException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+ return map;
+ }
+
+ /**
+ * 替换段落里面的变量
+ *
+ * @param paragraph
+ * @param map
+ */
+ public static void replaceParagraph(XWPFParagraph paragraph, Map<String, Object> map) {
+ List<XWPFRun> runs = paragraph.getRuns();
+ for (int i = 0; i < runs.size(); i++) {
+ XWPFRun run = runs.get(i);
+ String tkey = run.toString();
+
+ if (tkey == null) {
+ return;
+ }
+ for (String key : map.keySet()) {
+ if (tkey.equals(key)) {
+ int size = run.getFontSize();
+ if (size == -1) {
+ size = 14;
+ }
+ String fontFamily = run.getFontFamily();
+ //因为直接调用setText()方法替换文本时,会在底层重新创建一个run,所以在设置文本之前要先删除当前run
+ paragraph.removeRun(i);
+ if (map != null && map.get(key) != null) {
+ String runText = map.get(key).toString();
+ if (runText != null) {
+ if (runText.indexOf("\r\n") != -1) {
+ String[] texts = runText.split("\r\n");
+ List<String> tmp = new ArrayList<>();
+ for (String text : texts) {
+ if (text != null && text.length() != 0) {
+ tmp.add(text);
+ }
+ }
+ texts = tmp.toArray(new String[0]);
+ for (int n = 0; n < texts.length; n++) {
+ XWPFRun newRun = paragraph.createRun();
+ newRun.setText(" " + texts[n].trim());
+ if (texts.length > 1 && n != texts.length - 1) {
+ newRun.addBreak();
+ }
+ newRun.setText(runText);
+ newRun.setFontSize(size);
+ newRun.setFontFamily(fontFamily);
+ }
+ } else if (runText.indexOf("\n") != -1) {
+ String[] texts = runText.split("\n");
+ List<String> tmp = new ArrayList<>();
+ for (String text : texts) {
+ if (text != null && text.length() != 0) {
+ tmp.add(text.trim());
+ }
+ }
+ texts = tmp.toArray(new String[0]);
+ for (int n = 0; n < texts.length; n++) {
+ XWPFRun newRun = paragraph.createRun();
+ newRun.setText(" " + texts[n].trim());
+ if (texts.length > 1 && n != texts.length - 1) {
+ newRun.addBreak();
+ }
+ newRun.setFontSize(size);
+ newRun.setFontFamily(fontFamily);
+ }
+ } else {
+ //重新创建一个run用于设置文本
+ XWPFRun newrun = paragraph.insertNewRun(i);
+ newrun.setText(runText);
+ newrun.setFontSize(size);
+ newrun.setFontFamily(fontFamily);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 替换页眉里面的变量
+ *
+ * @param Header
+ * @param map
+ */
+ public static void replaceHeader(XWPFHeader Header, Map<String, Object> map) {
+ //获取表
+ List<XWPFTable> tableList = Header.getTables();
+ if (tableList != null && tableList.size() > 0) {
+ for (int i = 0; i < tableList.size(); i++) {
+ XWPFTable table = tableList.get(i);
+ //获取行
+ List<XWPFTableRow> rows = table.getRows();
+ for (XWPFTableRow row : rows) {
+ //获取单元格
+ List<XWPFTableCell> cells = row.getTableCells();
+ for (XWPFTableCell cell : cells) {
+ //获取单元格内容
+ List<XWPFParagraph> paragraphs = cell.getParagraphs();
+ for (XWPFParagraph paragraph : paragraphs) {
+// paragraph.setAlignment(ParagraphAlignment.LEFT);
+ replaceParagraph(paragraph, map);
+ }
+ }
+ }
+ }
+ } else {
+ List<XWPFParagraph> paragraphs = Header.getParagraphs();
+ for (XWPFParagraph paragraph : paragraphs) {
+// paragraph.setAlignment(ParagraphAlignment.LEFT);
+ replaceParagraph(paragraph, map);
+ }
+ }
+
+ }
+
+ /**
+ * 替换页脚里面表格的变量
+ *
+ * @param Footer
+ * @param map
+ */
+ public static void replaceFooter(XWPFFooter Footer, Map<String, Object> map) {
+ //获取表
+ List<XWPFTable> tableList = Footer.getTables();
+ if (tableList != null && tableList.size() > 0) {
+ for (int i = 0; i < tableList.size(); i++) {
+ XWPFTable table = tableList.get(i);
+ //获取行
+ List<XWPFTableRow> rows = table.getRows();
+ //获取单元格
+ for (XWPFTableRow row : rows) {
+ List<XWPFTableCell> cells = row.getTableCells();
+ for (XWPFTableCell cell : cells) {
+ //获取段落
+ List<XWPFParagraph> paragraphs = cell.getParagraphs();
+ for (XWPFParagraph paragraph : paragraphs) {
+// paragraph.setAlignment(ParagraphAlignment.LEFT);
+ replaceParagraph(paragraph, map);
+ }
+ }
+ }
+ }
+ } else {
+ List<XWPFParagraph> paragraphs = Footer.getParagraphs();
+ for (XWPFParagraph paragraph : paragraphs) {
+// paragraph.setAlignment(ParagraphAlignment.LEFT);
+ replaceParagraph(paragraph, map);
+ }
+ }
+ }
+
+ /**
+ * 替换表格里面的变量
+ *
+ * @param document
+ * @param map
+ */
+ public static void replaceInTable(XWPFDocument document, Map<String, Object> map) throws Exception {
+ Iterator<XWPFTable> iterator = document.getTablesIterator();
+ while (iterator.hasNext()) {
+ //获取表
+ XWPFTable table = iterator.next();
+ //获取行
+ List<XWPFTableRow> rows = table.getRows();
+ for (XWPFTableRow row : rows) {
+ //获取单元格
+ List<XWPFTableCell> cells = row.getTableCells();
+ for (XWPFTableCell cell : cells) {
+ List<XWPFParagraph> paragraphs = cell.getParagraphs();
+ for (XWPFParagraph paragraph : paragraphs) {
+ //paragraph.setAlignment(ParagraphAlignment.LEFT);
+ replaceParagraph(paragraph, map);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 导出docx
+ *
+ * @param templatePath
+ * @param outPath
+ * @param map
+ */
+ public static boolean getDocx(String templatePath, String outPath, Map<String, Object> map) {
+ XWPFDocument document = null;
+ try {
+ File file = new File(templatePath);
+ InputStream in = new FileInputStream(file);
+ document = new XWPFDocument(in);
+
+ //替换页眉变量
+ Iterator<XWPFHeader> headerIterator = document.getHeaderList().iterator();
+ while (headerIterator.hasNext()) {
+ XWPFHeader header = headerIterator.next();
+ replaceHeader(header, map);
+ }
+ //替换页脚变量
+ Iterator<XWPFFooter> footerIterator = document.getFooterList().iterator();
+ while (footerIterator.hasNext()) {
+ XWPFFooter footer = footerIterator.next();
+ replaceFooter(footer, map);
+ }
+ //替换表格里面的变量
+ replaceInTable(document, map);
+
+ // 如果文件夹不存在 则建立新文件夹
+ File dir = new File(outPath);
+ if (!dir.exists() == false) {
+ dir.mkdirs();
+ }
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ OutputStream out = new FileOutputStream(outPath);
+ document.write(bos);
+ out.write(bos.toByteArray());
+ bos.close();
+ out.close();
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ } finally {
+ try {
+ if (document != null) {
+ document.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static ResponseEntity<byte[]> ExportBOL(HashMap map, String templatePath) {
+ var baos = new ByteArrayOutputStream();
+ var headers = new HttpHeaders();
+
+ XWPFDocument document = null;
+ try {
+ File file = new File(templatePath);
+ InputStream in = new FileInputStream(file);
+ document = new XWPFDocument(in);
+
+ //替换页眉变量
+ Iterator<XWPFHeader> headerIterator = document.getHeaderList().iterator();
+ while (headerIterator.hasNext()) {
+ XWPFHeader header = headerIterator.next();
+ DocxExportUtil.replaceHeader(header, map);
+ }
+ //替换页脚变量
+ Iterator<XWPFFooter> footerIterator = document.getFooterList().iterator();
+ while (footerIterator.hasNext()) {
+ XWPFFooter footer = footerIterator.next();
+ DocxExportUtil.replaceFooter(footer, map);
+ }
+ //替换表格里面的变量
+ DocxExportUtil.replaceInTable(document, map);
+
+ headers.setContentDispositionFormData("attachment", new String((UUID.randomUUID() + ".docx").getBytes("UTF-8"), "ISO-8859-1"));
+ headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+ document.write(baos);
+
+ return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ } finally {
+ try {
+ if (document != null) {
+ document.close();
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED);
+ }
+
+ public static ResponseEntity<byte[]> ExportBOL(HashMap map, InputStream inputStream) {
+ var baos = new ByteArrayOutputStream();
+ var headers = new HttpHeaders();
+
+ XWPFDocument document = null;
+ try {
+ document = new XWPFDocument(inputStream);
+
+ //替换页眉变量
+ Iterator<XWPFHeader> headerIterator = document.getHeaderList().iterator();
+ while (headerIterator.hasNext()) {
+ XWPFHeader header = headerIterator.next();
+ DocxExportUtil.replaceHeader(header, map);
+ }
+ //替换页脚变量
+ Iterator<XWPFFooter> footerIterator = document.getFooterList().iterator();
+ while (footerIterator.hasNext()) {
+ XWPFFooter footer = footerIterator.next();
+ DocxExportUtil.replaceFooter(footer, map);
+ }
+ //替换表格里面的变量
+ DocxExportUtil.replaceInTable(document, map);
+
+ headers.setContentDispositionFormData("attachment", new String((UUID.randomUUID() + ".docx").getBytes("UTF-8"), "ISO-8859-1"));
+ headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+ document.write(baos);
+
+ return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ } finally {
+ try {
+ if (document != null) {
+ document.close();
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+ return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/EncryptUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/EncryptUtil.java
new file mode 100644
index 0000000..87a7cac
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/EncryptUtil.java
@@ -0,0 +1,68 @@
+package com.farriver.bwf.common.utilities;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Base64;
+
+public class EncryptUtil {
+ private final Logger logger = LoggerFactory.getLogger(EncryptUtil.class);
+
+ public static String md5Encrypt(final String content) {
+
+ MessageDigest md5 = null;
+ try {
+ md5 = MessageDigest.getInstance("MD5");
+ } catch (NoSuchAlgorithmException e) {
+
+ }
+
+ BigInteger digest = new BigInteger(md5.digest(content.getBytes()));
+ //32位
+ return digest.toString(16);
+ }
+
+ public static byte[] base64Encrypt(final String content) {
+ return Base64.getEncoder().encode(content.getBytes());
+ }
+
+ public static byte[] base64Decrypt(final byte[] encoderContent) {
+ return Base64.getDecoder().decode(encoderContent);
+ }
+
+ public static String SHAEncrypt(final String content) {
+ try {
+ MessageDigest sha = MessageDigest.getInstance("SHA");
+ byte[] sha_byte = sha.digest(content.getBytes());
+ StringBuffer hexValue = new StringBuffer();
+ for (byte b : sha_byte) {
+ //将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作,转换为int类型的正整数。
+ String toHexString = Integer.toHexString(b & 0xff);
+ hexValue.append(toHexString.length() == 1 ? "0" + toHexString : toHexString);
+ }
+ return hexValue.toString();
+ } catch (Exception e) {
+
+ }
+ return "";
+ }
+
+ public static byte[] HMACEncrypt(final String key, final String content) {
+ try {
+ SecretKey secretKey = new SecretKeySpec(key.getBytes(), "MAC");
+ Mac mac = Mac.getInstance(secretKey.getAlgorithm());
+
+ mac.init(secretKey);
+ return mac.doFinal(content.getBytes());
+ } catch (Exception e) {
+
+ }
+ return null;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FastJson2JsonRedisSerializer.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FastJson2JsonRedisSerializer.java
new file mode 100644
index 0000000..59e2321
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FastJson2JsonRedisSerializer.java
@@ -0,0 +1,59 @@
+package com.farriver.bwf.common.utilities;
+
+import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+import org.springframework.util.Assert;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
+ private final Logger logger = LoggerFactory.getLogger(FastJson2JsonRedisSerializer.class);
+
+ private ObjectMapper objectMapper = new ObjectMapper();
+ public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
+
+ private final Class<T> clazz;
+
+ static {
+// ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
+// 如果遇到反序列化autoType is not support错误,请添加并修改一下包名到bean文件路径
+// ParserConfig.getGlobalInstance().addAccept("com.farriver.oqb.data.model");
+ }
+
+ public FastJson2JsonRedisSerializer(Class<T> clazz) {
+ super();
+ this.clazz = clazz;
+ }
+
+ public byte[] serialize(T t) throws SerializationException {
+ if (t == null) {
+ return new byte[0];
+ }
+ return JSON.toJSONString(t).getBytes(DEFAULT_CHARSET);
+ }
+
+ public T deserialize(byte[] bytes) throws SerializationException {
+ if (bytes == null || bytes.length <= 0) {
+ return null;
+ }
+ String str = new String(bytes, DEFAULT_CHARSET);
+
+ return JSON.parseObject(str, clazz);
+ }
+
+ public void setObjectMapper(ObjectMapper objectMapper) {
+ Assert.notNull(objectMapper, "'objectMapper' must not be null");
+ this.objectMapper = objectMapper;
+ }
+
+ protected JavaType getJavaType(Class<?> clazz) {
+ return TypeFactory.defaultInstance().constructType(clazz);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FileUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FileUtil.java
new file mode 100644
index 0000000..2dd6674
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/FileUtil.java
@@ -0,0 +1,556 @@
+package com.farriver.bwf.common.utilities;
+
+import com.farriver.bwf.common.model.UploadTemplateData;
+import com.google.common.io.Files;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.commons.io.IOUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
+
+public class FileUtil {
+ public static String writeFile(String uploadPath, MultipartFile file) throws IOException {
+ String relativeFilePath = null;
+ InputStream inputStream = null;
+ OutputStream outputStream = null;
+ try {
+ Date date = new Date();
+ String fileUrl = null;
+ String filename = file.getOriginalFilename();
+ String fileShortName = getShortNameName(filename, '.');
+ String fileExt = getExtName(filename, '.');
+ String newfilename = String.format("%s-%s.%s", fileShortName, DateTimeUtils.dateToString(date, "yyyyMMddhhmmss"), fileExt);
+
+ String pathcategory = "";
+ switch (fileExt.toUpperCase()) {
+ case "DOC":
+ case "DOCX":
+ case "TXT":
+ case "XSL":
+ case "XSLX":
+ case "XLS":
+ case "XLSX":
+ case "PPT":
+ case "PDF":
+ pathcategory = "/document/";
+ break;
+ case "PNG":
+ case "JPEG":
+ case "JPG":
+ case "ICO":
+ case "GIT":
+ pathcategory = "/picture/";
+ break;
+ default:
+ pathcategory = "/others/";
+ break;
+ }
+ String relativepath = pathcategory;
+ String diskPath = uploadPath + relativepath;
+ FileUtil.mkdir(diskPath);
+
+ if (diskPath.endsWith("\\") || diskPath.endsWith("/")) fileUrl = diskPath + newfilename;
+ else fileUrl = diskPath + "\\" + newfilename;
+
+ inputStream = file.getInputStream();
+ outputStream = new FileOutputStream(fileUrl);
+ IOUtils.copy(inputStream, outputStream);
+
+ relativeFilePath = relativepath + newfilename;
+
+ } catch (Exception ignored) {
+
+ } finally {
+ outputStream.flush();
+ inputStream.close();
+ outputStream.close();
+ }
+
+ return relativeFilePath;
+ }
+
+ public static UploadTemplateData writeDocumentFile(String module, String uploadPath, MultipartFile file) throws IOException {
+ var result = new UploadTemplateData();
+
+ String relativeFilePath = null;
+ InputStream inputStream = null;
+ OutputStream outputStream = null;
+ try {
+ Date date = new Date();
+ String fileUrl = null;
+ String filename = file.getOriginalFilename();
+ String fileShortName = getShortNameName(filename, '.');
+ String fileExt = getExtName(filename, '.');
+ String newfilename = String.format("%s-%s.%s", fileShortName, DateTimeUtils.dateToString(date, "yyyyMMddhhmmss"), fileExt);
+
+ String relativepath = String.format("/%s/template/export/%s/", "bwf", module);
+ String diskPath = String.format("%s%s", uploadPath, relativepath);
+
+ FileUtil.mkdir(diskPath);
+
+ if (diskPath.endsWith("\\") || diskPath.endsWith("/")) fileUrl = diskPath + newfilename;
+ else fileUrl = diskPath + "\\" + newfilename;
+
+ inputStream = file.getInputStream();
+ outputStream = new FileOutputStream(fileUrl);
+ IOUtils.copy(inputStream, outputStream);
+
+ relativeFilePath = relativepath + newfilename;
+
+ result.setRelativepath(relativeFilePath);
+ result.setAbsolutepath(fileUrl);
+ } catch (Exception ignored) {
+
+ } finally {
+ outputStream.flush();
+ inputStream.close();
+ outputStream.close();
+ }
+
+ return result;
+ }
+
+ public static UploadTemplateData writeExportTemplateFile(String module, String uploadPath, MultipartFile file) throws IOException {
+ var result = new UploadTemplateData();
+
+ String relativeFilePath = null;
+ InputStream inputStream = null;
+ OutputStream outputStream = null;
+ try {
+ Date date = new Date();
+ String fileUrl = null;
+ String filename = file.getOriginalFilename();
+ String fileShortName = getShortNameName(filename, '.');
+ String fileExt = getExtName(filename, '.');
+ String newfilename = String.format("%s-%s.%s", fileShortName, DateTimeUtils.dateToString(date, "yyyyMMddhhmmss"), fileExt);
+
+ String relativepath = String.format("/%s/template/export/%s/", "bwf", module);
+ String diskPath = String.format("%s%s", uploadPath, relativepath);
+
+ FileUtil.mkdir(diskPath);
+
+ if (diskPath.endsWith("\\") || diskPath.endsWith("/")) fileUrl = diskPath + newfilename;
+ else fileUrl = diskPath + "\\" + newfilename;
+
+ inputStream = file.getInputStream();
+ outputStream = new FileOutputStream(fileUrl);
+ IOUtils.copy(inputStream, outputStream);
+
+ relativeFilePath = relativepath + newfilename;
+
+ result.setRelativepath(relativeFilePath);
+ result.setAbsolutepath(fileUrl);
+ } catch (Exception ignored) {
+
+ } finally {
+ outputStream.flush();
+ inputStream.close();
+ outputStream.close();
+ }
+
+ return result;
+ }
+
+ public static UploadTemplateData writeImportTemplateFile(String module, String uploadPath, MultipartFile file) throws IOException {
+ var result = new UploadTemplateData();
+
+ String relativeFilePath = null;
+ InputStream inputStream = null;
+ OutputStream outputStream = null;
+ try {
+ Date date = new Date();
+ String fileUrl = null;
+ String filename = file.getOriginalFilename();
+ String fileShortName = getShortNameName(filename, '.');
+ String fileExt = getExtName(filename, '.');
+ String newfilename = String.format("%s-%s.%s", fileShortName, DateTimeUtils.dateToString(date, "yyyyMMddhhmmss"), fileExt);
+
+ String relativepath = String.format("/%s/template/import/%s/", "bwf", module);
+ String diskPath = String.format("%s%s", uploadPath, relativepath);
+
+ FileUtil.mkdir(diskPath);
+
+ if (diskPath.endsWith("\\") || diskPath.endsWith("/")) fileUrl = diskPath + newfilename;
+ else fileUrl = diskPath + "\\" + newfilename;
+
+ inputStream = file.getInputStream();
+ outputStream = new FileOutputStream(fileUrl);
+ IOUtils.copy(inputStream, outputStream);
+
+ relativeFilePath = relativepath + newfilename;
+
+ result.setRelativepath(relativeFilePath);
+ result.setAbsolutepath(fileUrl);
+ } catch (Exception ignored) {
+
+ } finally {
+ outputStream.flush();
+ inputStream.close();
+ outputStream.close();
+ }
+
+ return result;
+ }
+
+ public static UploadTemplateData writeBOLFile(String module, String uploadPath, MultipartFile file) throws IOException {
+ var result = new UploadTemplateData();
+
+ String relativeFilePath = null;
+ InputStream inputStream = null;
+ OutputStream outputStream = null;
+ try {
+ Date date = new Date();
+ String fileUrl = null;
+ String filename = file.getOriginalFilename();
+ String fileShortName = getShortNameName(filename, '.');
+ String fileExt = getExtName(filename, '.');
+ String newfilename = String.format("%s-%s.%s", fileShortName, DateTimeUtils.dateToString(date, "yyyyMMddhhmmss"), fileExt);
+
+ String relativepath = String.format("/%s/bol/%s/", "bwf", module);
+ String diskPath = String.format("%s%s", uploadPath, relativepath);
+
+ FileUtil.mkdir(diskPath);
+
+ if (diskPath.endsWith("\\") || diskPath.endsWith("/")) fileUrl = diskPath + newfilename;
+ else fileUrl = diskPath + "\\" + newfilename;
+
+ inputStream = file.getInputStream();
+ outputStream = new FileOutputStream(fileUrl);
+ IOUtils.copy(inputStream, outputStream);
+
+ relativeFilePath = relativepath + newfilename;
+
+ result.setRelativepath(relativeFilePath);
+ result.setAbsolutepath(fileUrl);
+ } catch (Exception ignored) {
+
+ } finally {
+ outputStream.flush();
+ inputStream.close();
+ outputStream.close();
+ }
+
+ return result;
+ }
+
+ public static UploadTemplateData writeReportFile(String module, String uploadPath, MultipartFile file) throws IOException {
+ var result = new UploadTemplateData();
+
+ String relativeFilePath = null;
+ InputStream inputStream = null;
+ OutputStream outputStream = null;
+ try {
+ Date date = new Date();
+ String fileUrl = null;
+ String filename = file.getOriginalFilename();
+ String fileShortName = getShortNameName(filename, '.');
+ String fileExt = getExtName(filename, '.');
+ String newfilename = String.format("%s-%s.%s", fileShortName, DateTimeUtils.dateToString(date, "yyyyMMddhhmmss"), fileExt);
+
+ String relativepath = String.format("/%s/report/%s/", "bwf", module);
+ String diskPath = String.format("%s%s", uploadPath, relativepath);
+
+ FileUtil.mkdir(diskPath);
+
+ if (diskPath.endsWith("\\") || diskPath.endsWith("/")) fileUrl = diskPath + newfilename;
+ else fileUrl = diskPath + "\\" + newfilename;
+
+ inputStream = file.getInputStream();
+ outputStream = new FileOutputStream(fileUrl);
+ IOUtils.copy(inputStream, outputStream);
+
+ relativeFilePath = relativepath + newfilename;
+
+ result.setRelativepath(relativeFilePath);
+ result.setAbsolutepath(fileUrl);
+ } catch (Exception ignored) {
+
+ } finally {
+ outputStream.flush();
+ inputStream.close();
+ outputStream.close();
+ }
+
+ return result;
+ }
+
+ private static String getExtName(String s, char split) {
+ int i = s.indexOf(split);
+ int leg = s.length();
+ return (i > 0 ? (i + 1) == leg ? " " : s.substring(i + 1, s.length()) : " ");
+ }
+
+ private static String getShortNameName(String s, char split) {
+ int i = s.indexOf(split);
+ int leg = s.length();
+ return (i > 0 ? (i + 1) == leg ? " " : s.substring(0, i) : " ");
+ }
+
+ public static void writeFile(File f, String content) {
+ writeFile(f, content, "utf-8");
+ }
+
+ public static void writeFile(File f, String content, String encode) {
+ try {
+ if (!f.exists()) {
+ f.createNewFile();
+ }
+ OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(f), encode);
+ BufferedWriter utput = new BufferedWriter(osw);
+ utput.write(content);
+ utput.close();
+ } catch (Exception e) {
+
+ }
+ }
+
+ public static void writeFile(String path, String content, String encode) {
+ File f = new File(path);
+ writeFile(f, content, encode);
+ }
+
+ public static void writeFile(String path, String content) {
+ File f = new File(path);
+ writeFile(f, content, "utf-8");
+ }
+
+ public static String readFile(File file) {
+ return readFile(file, "UTF-8");
+ }
+
+ public static String readFile(File file, String encode) {
+ String output = "";
+
+ if (file.exists()) {
+ if (file.isFile()) {
+ try {
+ InputStreamReader isr = new InputStreamReader(new FileInputStream(file), encode);
+ BufferedReader input = new BufferedReader(isr);
+ StringBuffer buffer = new StringBuffer();
+ String text;
+ while ((text = input.readLine()) != null) buffer.append(text + "\n");
+ output = buffer.toString();
+
+ } catch (IOException ioException) {
+ System.err.println("File Error!");
+ }
+ } else if (file.isDirectory()) {
+ String[] dir = file.list();
+ output += "Directory contents:\n";
+ for (int i = 0; i < dir.length; i++) {
+ output += dir[i] + "\n";
+ }
+ }
+
+ } else {
+ System.err.println("Does not exist!");
+ }
+
+ return output;
+ }
+
+ public static String readFile(String fileName, String encode) {
+ File file = new File(fileName);
+ return readFile(file, encode);
+ }
+
+ public static String readFile(String fileName) {
+ return readFile(fileName, "utf-8");
+ }
+
+ public static List<File> getFiles(String folder) {
+ File file = new File(folder);
+ List<File> files = new ArrayList<File>();
+ if (file.exists()) {
+ File[] sonFiles = file.listFiles();
+ if (sonFiles != null && sonFiles.length > 0) {
+ for (int i = 0; i < sonFiles.length; i++) {
+ if (!sonFiles[i].isDirectory()) {
+ files.add(sonFiles[i]);
+ }
+ }
+ }
+ }
+ return files;
+ }
+
+ public static List<File> getFilesFromFolder(String folder) {
+ File file = new File(folder);
+ List<File> files = new ArrayList<File>();
+ if (file.exists()) {
+ File[] sonFiles = file.listFiles();
+ if (sonFiles != null && sonFiles.length > 0) {
+ for (int i = 0; i < sonFiles.length; i++) {
+ if (sonFiles[i].isDirectory()) {
+ files.add(sonFiles[i]);
+ }
+ }
+ }
+ }
+ return files;
+ }
+
+ public static boolean hasSubfolder(String folder) {
+ File file = new File(folder);
+ return hasSubfolder(file);
+ }
+
+ public static boolean hasSubfolder(File file) {
+ if (file.exists()) {
+ File[] sonFiles = file.listFiles();
+ if (sonFiles != null && sonFiles.length > 0) {
+ for (int i = 0; i < sonFiles.length; i++) {
+ if (sonFiles[i].isDirectory()) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public static void mkdir(String folder) {
+ File file = new File(folder);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ }
+
+ public static void copy(File src, File dst) {
+ try {
+ int BUFFER_SIZE = 32 * 1024;
+ InputStream in = null;
+ OutputStream out = null;
+ try {
+ in = new FileInputStream(src);
+ out = new FileOutputStream(dst);
+ byte[] buffer = new byte[BUFFER_SIZE];
+ int count;
+ while ((count = in.read(buffer)) != -1) {
+ out.write(buffer, 0, count);
+ }
+ } finally {
+ if (null != in) {
+ in.close();
+ }
+ if (null != out) {
+ out.close();
+ }
+ }
+ } catch (Exception e) {
+
+ }
+ }
+
+ public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {
+ if (new File(sourceDir).exists()) {
+ // 新建目标目录
+ File targetFolder = new File(targetDir);
+ if (!targetFolder.exists()) {
+ targetFolder.mkdirs();
+ }
+ // 获取源文件夹当前下的文件或目录
+ File[] file = (new File(sourceDir)).listFiles();
+ for (int i = 0; i < file.length; i++) {
+ if (file[i].isFile()) {
+ // 源文件
+ File sourceFile = file[i];
+ // 目标文件
+ File targetFile = new File(new File(targetDir).getAbsolutePath() + File.separator + file[i].getName());
+ copy(sourceFile, targetFile);
+ }
+ if (file[i].isDirectory()) {
+ // 准备复制的源文件夹
+ String dir1 = sourceDir + "/" + file[i].getName();
+ // 准备复制的目标文件夹
+ String dir2 = targetDir + "/" + file[i].getName();
+ copyDirectiory(dir1, dir2);
+ }
+ }
+ }
+ }
+
+ public static String getExt(File src) {
+ if (src != null) {
+ String name = src.getName();
+ return name.substring(name.lastIndexOf("."), name.length());
+ }
+ return "";
+ }
+
+ public static String getExt(String src) {
+ if (src != null) {
+ return src.substring(src.lastIndexOf("."), src.length());
+ }
+ return "";
+ }
+
+ public static void del(String path) {
+ File file = new File(path);
+ deleteFile(file);
+ }
+
+ public static void deleteFile(File file) {
+ if (file.exists()) { //判断文件是否存在
+ if (file.isFile()) { //判断是否是文件
+ file.delete(); //delete()方法 你应该知道 是删除的意思;
+ } else if (file.isDirectory()) { //否则如果它是一个目录
+ File files[] = file.listFiles(); //声明目录下所有的文件 files[];
+ for (int i = 0; i < files.length; i++) { //遍历目录下所有的文件
+ deleteFile(files[i]); //把每个文件 用这个方法进行迭代
+ }
+ }
+ file.delete();
+ }
+ }
+
+ public static void upzip() throws Exception {
+ File file = new File("D:\\test.zip");//压缩文件
+ ZipFile zipFile = new ZipFile(file);//实例化ZipFile,每一个zip压缩文件都可以表示为一个ZipFile
+ //实例化一个Zip压缩文件的ZipInputStream对象,可以利用该类的getNextEntry()方法依次拿到每一个ZipEntry对象
+ ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file));
+ ZipEntry zipEntry = null;
+ while ((zipEntry = zipInputStream.getNextEntry()) != null) {
+ String fileName = zipEntry.getName();
+ File temp = new File("D:\\un\\" + fileName);
+ temp.getParentFile().mkdirs();
+ OutputStream os = new FileOutputStream(temp);
+ //通过ZipFile的getInputStream方法拿到具体的ZipEntry的输入流
+ InputStream is = zipFile.getInputStream(zipEntry);
+ int len = 0;
+ while ((len = is.read()) != -1) os.write(len);
+ os.close();
+ is.close();
+ }
+ zipInputStream.close();
+ }
+
+ public static void downloadFile(String path, String name, HttpServletResponse response) throws Exception {
+ // path是指欲下载的文件的路径。
+ File file = new File(path);
+ try (OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+ String fileName = URLEncoder.encode(name, "UTF-8");
+ response.reset();
+ response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+ response.addHeader("Content-Length", "" + file.length());
+ response.setContentType("application/octet-stream;charset=UTF-8");
+
+ Files.copy(file, outputStream);
+ outputStream.flush();
+ }
+ }
+
+ public static void deleteFile(String filePath) {
+ File file = new File(filePath);
+ if (!file.delete()) {
+// log.error("Delete file {} error", filePath);
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpClientUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpClientUtil.java
new file mode 100644
index 0000000..668a96e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpClientUtil.java
@@ -0,0 +1,86 @@
+package com.farriver.bwf.common.utilities;
+
+import com.alibaba.fastjson2.JSONObject;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+/**
+ * httpclient util 处理http请求工具类
+ *
+ * @author administrator
+ */
+public class HttpClientUtil {
+ private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);
+
+ private final CloseableHttpClient httpClient;
+ private final RequestConfig requestConfig;
+
+ public HttpClientUtil(CloseableHttpClient httpClient, RequestConfig requestConfig) {
+ this.httpClient = httpClient;
+ this.requestConfig = requestConfig;
+ }
+
+ /**
+ * 处理post请求
+ *
+ * @param jsonObj
+ * @param url
+ * @return
+ * @throws IOException
+ * @throws ClientProtocolException
+ */
+ private HttpResponse doPost(JSONObject jsonObj, StringBuffer url)
+ throws IOException, ClientProtocolException {
+ HttpResponse response;
+ HttpPost httpPost = new HttpPost(url.toString());
+ httpPost.setConfig(this.requestConfig);
+
+ // 构建消息实体
+ if (jsonObj != null) {
+ StringEntity entity = new StringEntity(jsonObj.toString(), Charset.forName("UTF-8"));
+ entity.setContentEncoding("UTF-8");
+ // 发送Json格式的数据请求
+ entity.setContentType("application/json");
+ httpPost.setEntity(entity);
+ }
+ // do post
+ try {
+ response = httpClient.execute(httpPost);
+ } finally {
+ httpPost.releaseConnection();
+ }
+ return response;
+ }
+
+
+ /**
+ * 处理get请求
+ *
+ * @param url
+ * @return
+ * @throws IOException
+ * @throws ClientProtocolException
+ */
+ private HttpResponse doGet(StringBuffer url) throws IOException, ClientProtocolException {
+ HttpResponse response;
+ HttpGet httpGet = new HttpGet(url.toString());
+ httpGet.setConfig(this.requestConfig);
+ // do get
+ try {
+ response = httpClient.execute(httpGet);
+ } finally {
+ httpGet.releaseConnection();
+ }
+ return response;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpUtil.java
new file mode 100644
index 0000000..b1cc51b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/HttpUtil.java
@@ -0,0 +1,287 @@
+package com.farriver.bwf.common.utilities;
+
+import com.farriver.bwf.common.model.ApiData;
+import jakarta.servlet.http.HttpServletRequest;
+import org.apache.http.StatusLine;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+public class HttpUtil {
+ private final static Logger logger = LoggerFactory.getLogger(HttpUtil.class);
+
+ public static ApiData HttpGet(String url, String dummyIp) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build();
+ httpGet.setConfig(defaultRequestConfig);
+ httpGet.addHeader("Content-Type", "application/json;charset=UTF-8");
+ httpGet.addHeader("x-forwarded-for", dummyIp);
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpGet);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.debug("result: " + result);
+
+ return new ApiData(statusCode, statusline.toString(), result, null);
+ } catch (Exception e) {
+ return ApiData.error(e.getMessage(), e);
+ } finally {
+ if (response != null) response.close();
+ httpClient.close();
+ }
+ }
+
+ public static ApiData HttpPost(String url, String json, String dummyIp) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpPost httpPost = new HttpPost(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom()
+ .setSocketTimeout(5000)
+ .setConnectTimeout(5000)
+ .setConnectionRequestTimeout(5000)
+ .build();
+
+ httpPost.setConfig(defaultRequestConfig);
+ httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
+ httpPost.addHeader("x-forwarded-for", dummyIp);
+ httpPost.setEntity(new StringEntity(json, "UTF-8"));
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpPost);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.info("result: " + result);
+
+ return new ApiData(statusCode, statusline.toString(), result, null);
+ } catch (Exception e) {
+ return ApiData.error(e.getMessage(), e);
+ } finally {
+ if (response != null) {
+ response.close();
+ }
+
+ httpClient.close();
+ }
+ }
+
+ public static void resetIp(String ip, String maskcode) throws IOException {
+ String str1 = ip;
+ String str2 = maskcode;
+ String[] command1 = {"netsh", "interface", "ip", "set", "address", "name=", "Local Area Connection", "source=static", "addr=", str1, "mask=", str2};
+
+ Process pp = Runtime.getRuntime().exec(command1);
+ }
+
+ public static String GetDynamicIP() throws IOException {
+ long randomSeed = (System.currentTimeMillis() % 254);
+
+ Random random = new Random(randomSeed);
+ int ip_pr1 = random.nextInt(254);
+ int ip_pr2 = random.nextInt(254);
+ int ip_pr3 = random.nextInt(254);
+ int ip_pr4 = random.nextInt(254);
+
+ String dummyIp = ip_pr1 + "." + ip_pr2 + "." + ip_pr3 + "." + ip_pr4;
+
+ resetIp(dummyIp, "255.255.0.0");
+
+ return dummyIp;
+ }
+
+ public static ApiData DoGet(String url) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build();
+ httpGet.setConfig(defaultRequestConfig);
+ httpGet.addHeader("Content-Type", "application/json;charset=UTF-8");
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpGet);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.debug("result: " + result);
+
+ return new ApiData(statusCode, statusline.toString(), result, null);
+ } catch (Exception e) {
+ return ApiData.error(e.getMessage(), e);
+ } finally {
+ if (response != null) response.close();
+ httpClient.close();
+ }
+ }
+
+ public static ApiData DoPost(String url, String json) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpPost httpPost = new HttpPost(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom()
+ .setSocketTimeout(5000)
+ .setConnectTimeout(5000)
+ .setConnectionRequestTimeout(5000)
+ .build();
+
+ httpPost.setConfig(defaultRequestConfig);
+ httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
+ httpPost.setEntity(new StringEntity(json, "UTF-8"));
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpPost);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.info("result: " + result);
+
+ return new ApiData(statusCode, statusline.toString(), result, null);
+ } catch (Exception e) {
+ return ApiData.error(e.getMessage(), e);
+ } finally {
+ if (response != null) {
+ response.close();
+ }
+
+ httpClient.close();
+ }
+ }
+
+ public static String Get(String url) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build();
+ httpGet.setConfig(defaultRequestConfig);
+ httpGet.addHeader("Content-Type", "application/json;charset=UTF-8");
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpGet);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.debug("result: " + result);
+
+ return result;
+ } catch (Exception e) {
+ return null;
+ } finally {
+ if (response != null) response.close();
+ httpClient.close();
+ }
+ }
+
+ public static String Post(String url, String json, String Authorization) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpPost httpPost = new HttpPost(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom()
+ .setSocketTimeout(5000)
+ .setConnectTimeout(5000)
+ .setConnectionRequestTimeout(5000)
+ .build();
+
+ httpPost.setConfig(defaultRequestConfig);
+ httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
+ httpPost.addHeader("UserAgent", "faloo.com/WebRequest");
+ httpPost.addHeader("Accept", "application/json");
+ if (Authorization != null && !Authorization.isEmpty()) {
+ httpPost.addHeader("Authorization", Authorization);
+ }
+ httpPost.setEntity(new StringEntity(json, "UTF-8"));
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpPost);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.info("result: " + result);
+
+ return result;
+ } catch (Exception e) {
+ return null;
+ } finally {
+ if (response != null) {
+ response.close();
+ }
+
+ httpClient.close();
+ }
+ }
+
+ public static Map<String, String> getUrlQueryMap(HttpServletRequest request) {
+ String urlQueryString = request.getQueryString();
+ Map<String, String> queryMap = new HashMap<>();
+ String[] arrSplit;
+ if (urlQueryString == null) {
+ return queryMap;
+ } else {
+ //每个键值为一组
+ arrSplit = urlQueryString.split("[&]");
+ for (String strSplit : arrSplit) {
+ String[] arrSplitEqual = strSplit.split("[=]");
+ //解析出键值
+ if (arrSplitEqual.length > 1) {
+ queryMap.put(arrSplitEqual[0], arrSplitEqual[1]);
+ } else {
+ if (!"".equals(arrSplitEqual[0])) {
+ queryMap.put(arrSplitEqual[0], "");
+ }
+ }
+ }
+ }
+ return queryMap;
+ }
+
+ public static String getRemoteAddr(HttpServletRequest request) {
+ if (request.getHeader("x-forwarded-for") == null) {
+ return request.getRemoteAddr();
+ }
+ return request.getHeader("x-forwarded-for");
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/ListUtils.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/ListUtils.java
new file mode 100644
index 0000000..55a021d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/ListUtils.java
@@ -0,0 +1,77 @@
+package com.farriver.bwf.common.utilities;
+
+import org.springframework.util.CollectionUtils;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ListUtils {
+ public static <T> List<T> pagination(List<T> records, int pageindex, int pagesize) {
+ if (CollectionUtils.isEmpty(records)) {
+ return Collections.emptyList();
+ }
+ if (pageindex < 0 || pagesize < 0) {
+ return Collections.emptyList();
+ }
+ int totalcount = records.size();
+ long remainder = totalcount % pagesize;
+ long pagecount = (remainder > 0) ? totalcount / pagesize + 1 : totalcount / pagesize;
+
+ if (remainder != 0 && pageindex == pagecount) {
+ records = records.stream().skip((pageindex - 1) * pagesize).limit(totalcount).collect(Collectors.toList());
+ } else {
+ records = records.stream().skip((pageindex - 1) * pagesize).limit(pagesize).collect(Collectors.toList());
+ }
+
+ return records;
+ }
+
+ public static Object[] ArrayInster(Object[] array, int index, Object value) {
+ Object[] newArray = new Object[array.length + 1];
+
+ for (int i = 0; i < array.length; i++) {
+ newArray[i] = array[i];
+ }
+
+ for (int i = newArray.length - 1; i > index; i--) {
+ newArray[i] = newArray[i - 1];
+ }
+
+ newArray[index] = value;
+ array = newArray;
+
+ return array;
+ }
+
+ public static List<Object> ListInster(List<Object> array, int index, Object value) {
+ Object[] newArray = new Object[array.size() + 1];
+
+ for (int i = 0; i < array.size(); i++) {
+ newArray[i] = array.get(i);
+ }
+
+ for (int i = newArray.length - 1; i > index; i--) {
+ newArray[i] = newArray[i - 1];
+ }
+
+ newArray[index] = value;
+ array = Arrays.asList(newArray);
+
+ return array;
+ }
+
+ public static List<Object> ListInsterLast(List<Object> array, Object value) {
+ Object[] newArray = new Object[array.size() + 1];
+
+ for (int i = 0; i < array.size(); i++) {
+ newArray[i] = array.get(i);
+ }
+
+ newArray[array.size()] = value;
+ array = Arrays.asList(newArray);
+
+ return array;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/NoGenerator.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/NoGenerator.java
new file mode 100644
index 0000000..4e29f24
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/NoGenerator.java
@@ -0,0 +1,18 @@
+package com.farriver.bwf.common.utilities;
+
+import org.jetbrains.annotations.Nullable;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class NoGenerator {
+
+ @Nullable
+ public static String GenerateDateNo() {
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String str = formatter.format(new Date());
+ str += (int) ((Math.random() * 9 + 1) * 10000);
+
+ return str;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PdfFontUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PdfFontUtil.java
new file mode 100644
index 0000000..09ebb9b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PdfFontUtil.java
@@ -0,0 +1,77 @@
+package com.farriver.bwf.common.utilities;
+
+import com.itextpdf.text.Font;
+import com.itextpdf.text.Image;
+import com.itextpdf.text.Paragraph;
+import com.itextpdf.text.Phrase;
+import com.itextpdf.text.pdf.PdfPCell;
+import com.itextpdf.text.pdf.PdfPTable;
+
+import java.util.List;
+
+public class PdfFontUtil {
+ private PdfFontUtil() {
+ }
+
+ /**
+ * 段落样式获取
+ */
+ public static Paragraph getParagraph(String content, Font font, Integer alignment) {
+ Paragraph paragraph = new Paragraph(content, font);
+ if (alignment != null && alignment >= 0) {
+ paragraph.setAlignment(alignment);
+ }
+ return paragraph;
+ }
+
+ /**
+ * 图片样式
+ */
+ public static Image getImage(String imgPath, float width, float height) throws Exception {
+ Image image = Image.getInstance(imgPath);
+ image.setAlignment(Image.MIDDLE);
+ if (width > 0 && height > 0) {
+ image.scaleAbsolute(width, height);
+ }
+ return image;
+ }
+
+ /**
+ * 表格生成
+ */
+ public static PdfPTable getPdfPTable01(int numColumns, float totalWidth) throws Exception {
+ // 表格处理
+ PdfPTable table = new PdfPTable(numColumns);
+ // 设置表格宽度比例为%100
+ table.setWidthPercentage(100);
+ // 设置宽度:宽度平均
+ table.setTotalWidth(totalWidth);
+ // 锁住宽度
+ table.setLockedWidth(true);
+ // 设置表格上面空白宽度
+ table.setSpacingBefore(10f);
+ // 设置表格下面空白宽度
+ table.setSpacingAfter(10f);
+ // 设置表格默认为无边框
+ table.getDefaultCell().setBorder(0);
+ table.setPaddingTop(30);
+ table.setSplitLate(false);
+ return table;
+ }
+
+ /**
+ * 表格内容
+ */
+ public static PdfPCell getPdfPCell(Phrase phrase) {
+ return new PdfPCell(phrase);
+ }
+
+ /**
+ * 表格内容带样式
+ */
+ public static void addTableCell(PdfPTable dataTable, Font font, List<String> cellList) {
+ for (String content : cellList) {
+ dataTable.addCell(getParagraph(content, font, -1));
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PhoneFormatCheckUtils.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PhoneFormatCheckUtils.java
new file mode 100644
index 0000000..ade0fdf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/PhoneFormatCheckUtils.java
@@ -0,0 +1,50 @@
+package com.farriver.bwf.common.utilities;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+public class PhoneFormatCheckUtils {
+
+ /**
+ * 大陆号码或香港号码均可
+ */
+ public static boolean isPhoneLegal(String str) throws PatternSyntaxException {
+ return isChinaPhoneLegal(str) || isHKPhoneLegal(str);
+ }
+
+ /**
+ * 大陆手机号码11位数,匹配格式:前三位固定格式+后8位任意数
+ * 此方法中前三位格式有:
+ * 13+任意数
+ * 145,147,149
+ * 15+除4的任意数(不要写^4,这样的话字母也会被认为是正确的)
+ * 166
+ * 17+3,5,6,7,8
+ * 18+任意数
+ * 198,199
+ */
+ public static boolean isChinaPhoneLegal(String str) throws PatternSyntaxException {
+ // ^ 匹配输入字符串开始的位置
+ // \d 匹配一个或多个数字,其中 \ 要转义,所以是 \\d
+ // $ 匹配输入字符串结尾的位置
+ String regExp = "^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[3,5,6,7,8])" +
+ "|(18[0-9])|(19[8,9]))\\d{8}$";
+ Pattern p = Pattern.compile(regExp);
+ Matcher m = p.matcher(str);
+ return m.matches();
+ }
+
+ /**
+ * 香港手机号码8位数,5|6|8|9开头+7位任意数
+ */
+ public static boolean isHKPhoneLegal(String str) throws PatternSyntaxException {
+ // ^ 匹配输入字符串开始的位置
+ // \d 匹配一个或多个数字,其中 \ 要转义,所以是 \\d
+ // $ 匹配输入字符串结尾的位置
+ String regExp = "^(5|6|8|9)\\d{7}$";
+ Pattern p = Pattern.compile(regExp);
+ Matcher m = p.matcher(str);
+ return m.matches();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/SerialNumberGenerator.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/SerialNumberGenerator.java
new file mode 100644
index 0000000..34b3ac5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/SerialNumberGenerator.java
@@ -0,0 +1,27 @@
+package com.farriver.bwf.common.utilities;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
+
+public class SerialNumberGenerator {
+ private static int serialNumber = 0;
+
+ public synchronized static String generateSerialNumber() {
+ return String.valueOf(++serialNumber);
+ }
+
+ private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
+
+ public synchronized static String generateSerialNumberWithDate() {
+ return formatter.format(new Date()) + String.format("%05d", ++serialNumber);
+ }
+
+ public static String generateSerialNumberWithUUID() {
+ return UUID.randomUUID().toString();
+ }
+
+ public synchronized static String generateSerialNumberWithOrg(String companyCode) {
+ return companyCode + "-" + formatter.format(new Date()) + "-" + String.format("%05d", ++serialNumber) + "-" + UUID.randomUUID().toString();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilder.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilder.java
new file mode 100644
index 0000000..0d01914
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilder.java
@@ -0,0 +1,56 @@
+package com.farriver.bwf.common.utilities;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class TreeBuilder<T> {
+
+ public static List<TreeBuilderNode> buildTreeFromNodes(List<TreeBuilderNode> nodes) {
+ // 使用Map来帮助我们快速查找每个节点的父节点
+ Map<String, TreeBuilderNode> nodeMap = new HashMap<>();
+
+ // 初始化map,将所有节点放入
+ for (TreeBuilderNode node : nodes) {
+ var nodeKey = getNodeKey(node);
+ if (nodeKey != null) {
+ nodeMap.put(nodeKey, node);
+ }
+ }
+
+ // 遍历列表,为每个节点找到其在map中的父节点,并添加自己到父节点的children列表中
+ for (TreeBuilderNode node : nodes) {
+ TreeBuilderNode parent = nodeMap.get(getNodeParentKey(node)); // 实现此方法以获取父节点的名称
+ if (parent != null) {
+ if (parent.getChildren() == null) {
+ parent.setChildren(new ArrayList<>());
+ }
+ parent.getChildren().add(node);
+ }
+ }
+
+ // 返回根节点列表,根节点是没有父节点的节点
+ List<TreeBuilderNode> roots = new ArrayList<>();
+ for (TreeBuilderNode node : nodes) {
+ if (!nodeMap.containsKey(getNodeParentKey(node))) {
+ roots.add(node);
+ }
+ }
+
+ return roots;
+ }
+
+ // 这个方法需要你根据实际情况实现,来从Node中获取其父节点的名称
+ private static String getNodeParentKey(TreeBuilderNode node) {
+ var pid = node.getParentid();
+
+ return pid;
+ }
+
+ private static String getNodeKey(TreeBuilderNode node) {
+ var pid = node.getId();
+
+ return pid;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilderNode.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilderNode.java
new file mode 100644
index 0000000..e91102a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/TreeBuilderNode.java
@@ -0,0 +1,13 @@
+package com.farriver.bwf.common.utilities;
+
+import java.util.List;
+
+public interface TreeBuilderNode {
+ String getId();
+
+ String getParentid();
+
+ List<TreeBuilderNode> getChildren();
+
+ void setChildren(List<TreeBuilderNode> children);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/UUIDUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/UUIDUtil.java
new file mode 100644
index 0000000..6cf49b8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/UUIDUtil.java
@@ -0,0 +1,91 @@
+package com.farriver.bwf.common.utilities;
+
+import java.net.InetAddress;
+import java.util.UUID;
+
+public class UUIDUtil {
+ private static final String sep = "-";
+
+ public static String generate() {
+ return format(System.currentTimeMillis())
+ + "-"
+ + format(System.currentTimeMillis() >> 4)
+ + "-"
+ + format(getIP())
+ + "-"
+ + formatInt(getCount());
+ }
+
+ public static void main(String[] args) {
+ UUID.randomUUID().toString();
+
+ System.out.println(generate());
+ }
+
+ protected static String format(int value) {
+ int index = value % chars.length;
+ value = value / chars.length;
+
+ if (value > 0)
+ return format(value) + chars[index];
+ else
+ return "" + chars[index];
+ }
+
+ protected static String formatInt(int value) {
+ String re = format(value);
+ re = "000000" + re;
+
+ return re.substring(re.length() - 7);
+ }
+
+ static char[] chars = {
+ '0', '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'
+ };
+
+ public static String format(Long value) {
+ Long index = value % chars.length;
+ value = value / chars.length;
+
+ if (value > 0)
+ return format(value) + chars[index.intValue()];
+ else
+ return "" + chars[index.intValue()];
+ }
+
+ public static int toInt(byte[] bytes) {
+ int result = 0;
+
+ for (int i = 0; i < 4; i++) {
+ result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
+ }
+ return result;
+ }
+
+ private static final int IP;
+
+ static {
+ int ipadd;
+ try {
+ ipadd = toInt(InetAddress.getLocalHost().getAddress());
+ } catch (Exception e) {
+ ipadd = 0;
+ }
+ IP = ipadd;
+ }
+
+ private static Integer counter = (Integer) 0;
+ private static final int JVM = (int) (System.currentTimeMillis() >>> 8);
+
+ protected static Integer getCount() {
+ synchronized (UUIDUtil.class) {
+ return counter = counter < 0 ? 0 : ++counter;
+ }
+ }
+
+ protected static int getIP() {
+ return IP;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/VerificationCode.java b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/VerificationCode.java
new file mode 100644
index 0000000..682ce8e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.common/src/main/java/com/farriver/bwf/common/utilities/VerificationCode.java
@@ -0,0 +1,112 @@
+package com.farriver.bwf.common.utilities;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Random;
+
+public class VerificationCode {
+ private final Logger logger = LoggerFactory.getLogger(VerificationCode.class);
+
+ private int width = 100;// 生成验证码图片的宽度
+ private int height = 30;// 生成验证码图片的高度
+ private String[] fontNames = {"宋体", "楷体", "隶书", "微软雅黑"};
+ private Color bgColor = new Color(255, 255, 255);// 定义验证码图片的背景颜色为白色
+ private Random random = new Random();
+ private String codes = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ private String text;// 记录随机字符串
+
+ private Color randomColor() {
+ int red = random.nextInt(150);
+ int green = random.nextInt(150);
+ int blue = random.nextInt(150);
+ return new Color(red, green, blue);
+ }
+
+ private Font randomFont() {
+ String name = fontNames[random.nextInt(fontNames.length)];
+ int style = random.nextInt(4);
+ int size = random.nextInt(5) + 24;
+ return new Font(name, style, size);
+ }
+
+ private char randomChar() {
+ return codes.charAt(random.nextInt(codes.length()));
+ }
+
+ private BufferedImage createImage() {
+ BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+ Graphics2D g2 = (Graphics2D) image.getGraphics();
+ g2.setColor(bgColor);// 设置验证码图片的背景颜色
+ g2.fillRect(0, 0, width, height);
+ return image;
+ }
+
+ public BufferedImage getImage() {
+ BufferedImage image = createImage();
+ Graphics2D g2 = (Graphics2D) image.getGraphics();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < 4; i++) {
+ String s = randomChar() + "";
+ sb.append(s);
+ g2.setColor(randomColor());
+ g2.setFont(randomFont());
+ float x = i * width * 1.0f / 4;
+ g2.drawString(s, x, height - 8);
+ }
+ this.text = sb.toString();
+ drawLine(image);
+ return image;
+ }
+
+ private void drawLine(BufferedImage image) {
+ Graphics2D g2 = (Graphics2D) image.getGraphics();
+ int num = 5;
+ for (int i = 0; i < num; i++) {
+ int x1 = random.nextInt(width);
+ int y1 = random.nextInt(height);
+ int x2 = random.nextInt(width);
+ int y2 = random.nextInt(height);
+ g2.setColor(randomColor());
+ g2.setStroke(new BasicStroke(1.5f));
+ g2.drawLine(x1, y1, x2, y2);
+ }
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public static void output(BufferedImage image, OutputStream out) throws IOException {
+ ImageIO.write(image, "JPEG", out);
+ }
+
+ public static byte[] imageToBytes(BufferedImage bImage, String format) {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ try {
+ ImageIO.write(bImage, format, out);
+ } catch (IOException e) {
+
+ }
+ return out.toByteArray();
+ }
+
+ public static Image bytesToImage(byte[] bytes) {
+ Image image = Toolkit.getDefaultToolkit().createImage(bytes);
+ try {
+ MediaTracker mt = new MediaTracker(new Label());
+ mt.addImage(image, 0);
+ mt.waitForAll();
+ } catch (InterruptedException e) {
+
+ }
+
+ return image;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/pom.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/pom.xml
new file mode 100644
index 0000000..d18cf04
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <groupId>com.farriver.bwf.data.master</groupId>
+ <artifactId>master</artifactId>
+ <version>${revision}</version>
+ <parent>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <dependencies>
+ <dependency>
+ <groupId>org.mybatis.generator</groupId>
+ <artifactId>mybatis-generator-maven-plugin</artifactId>
+ <version>1.3.7</version>
+ </dependency>
+ <dependency>
+ <groupId>com.itfsw</groupId>
+ <artifactId>mybatis-generator-plugin</artifactId>
+ <version>1.0.5</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**/*.xml</include>
+ </includes>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.mybatis.generator</groupId>
+ <artifactId>mybatis-generator-maven-plugin</artifactId>
+ <version>1.3.7</version>
+ <configuration>
+ <!--配置文件的位置-->
+ <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
+ <verbose>true</verbose>
+ <overwrite>true</overwrite>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>8.0.24</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.itfsw</groupId>
+ <artifactId>mybatis-generator-plugin</artifactId>
+ <version>1.0.5</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <id>Generate MyBatis Artifacts</id>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderActiveExtend.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderActiveExtend.java
new file mode 100644
index 0000000..1feb4a2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderActiveExtend.java
@@ -0,0 +1,18 @@
+package com.farriver.bwf.data.master.entity;
+
+import com.farriver.bwf.data.master.model.OrderActive;
+import com.farriver.bwf.data.master.model.OrderActiveProduct;
+
+import java.util.List;
+
+public class OrderActiveExtend extends OrderActive {
+ private List<OrderActiveProduct> products;
+
+ public List<OrderActiveProduct> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<OrderActiveProduct> products) {
+ this.products = products;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderHistoryExtend.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderHistoryExtend.java
new file mode 100644
index 0000000..662f827
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/OrderHistoryExtend.java
@@ -0,0 +1,18 @@
+package com.farriver.bwf.data.master.entity;
+
+import com.farriver.bwf.data.master.model.OrderHistory;
+import com.farriver.bwf.data.master.model.OrderHistoryProduct;
+
+import java.util.List;
+
+public class OrderHistoryExtend extends OrderHistory {
+ private List<OrderHistoryProduct> products;
+
+ public List<OrderHistoryProduct> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<OrderHistoryProduct> products) {
+ this.products = products;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/QuestionMasterWithBLOBsExtend.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/QuestionMasterWithBLOBsExtend.java
new file mode 100644
index 0000000..c3366b0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/QuestionMasterWithBLOBsExtend.java
@@ -0,0 +1,28 @@
+package com.farriver.bwf.data.master.entity;
+
+import com.farriver.bwf.data.master.model.QuestionMasterAnswer;
+import com.farriver.bwf.data.master.model.QuestionMasterOption;
+import com.farriver.bwf.data.master.model.QuestionMasterWithBLOBs;
+
+import java.util.List;
+
+public class QuestionMasterWithBLOBsExtend extends QuestionMasterWithBLOBs {
+ private List<QuestionMasterAnswer> answers;
+ private List<QuestionMasterOption> options;
+
+ public List<QuestionMasterAnswer> getAnswers() {
+ return answers;
+ }
+
+ public void setAnswers(List<QuestionMasterAnswer> answers) {
+ this.answers = answers;
+ }
+
+ public List<QuestionMasterOption> getOptions() {
+ return options;
+ }
+
+ public void setOptions(List<QuestionMasterOption> options) {
+ this.options = options;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/ShoppingCartExtend.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/ShoppingCartExtend.java
new file mode 100644
index 0000000..3e95ca0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/entity/ShoppingCartExtend.java
@@ -0,0 +1,18 @@
+package com.farriver.bwf.data.master.entity;
+
+import com.farriver.bwf.data.master.model.ShoppingCart;
+import com.farriver.bwf.data.master.model.ShoppingCartProduct;
+
+import java.util.List;
+
+public class ShoppingCartExtend extends ShoppingCart {
+ private List<ShoppingCartProduct> products;
+
+ public List<ShoppingCartProduct> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<ShoppingCartProduct> products) {
+ this.products = products;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/comment/MyCommentGenerator.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/comment/MyCommentGenerator.java
new file mode 100644
index 0000000..b0d4347
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/comment/MyCommentGenerator.java
@@ -0,0 +1,76 @@
+package com.farriver.bwf.data.master.generator.comment;
+
+
+import org.mybatis.generator.api.IntrospectedColumn;
+import org.mybatis.generator.api.IntrospectedTable;
+import org.mybatis.generator.api.dom.java.Field;
+import org.mybatis.generator.api.dom.java.InnerClass;
+import org.mybatis.generator.api.dom.java.Method;
+import org.mybatis.generator.internal.DefaultCommentGenerator;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Properties;
+
+/**
+ * mybatis generator生成注释插件
+ * <p>
+ * Created by huhaichao on 2017/5/15.
+ */
+public class MyCommentGenerator extends DefaultCommentGenerator {
+ private Properties properties;
+ private Properties systemPro;
+ private boolean suppressDate;
+ private boolean suppressAllComments;
+ private String currentDateStr;
+
+ public MyCommentGenerator() {
+ super();
+ properties = new Properties();
+ systemPro = System.getProperties();
+ suppressDate = false;
+ suppressAllComments = false;
+ currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
+ }
+
+
+ public void addFieldComment(Field field, IntrospectedTable introspectedTable,
+ IntrospectedColumn introspectedColumn) {
+ if (suppressAllComments) {
+ return;
+ }
+ StringBuilder sb = new StringBuilder();
+ field.addJavaDocLine("/**");
+ sb.append(" * ");
+ sb.append(introspectedColumn.getRemarks());
+ field.addJavaDocLine(sb.toString().replace("\n", " "));
+ field.addJavaDocLine(" */");
+ }
+
+ public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
+
+ }
+
+ public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
+
+ }
+
+ public void addGetterComment(Method method, IntrospectedTable introspectedTable,
+ IntrospectedColumn introspectedColumn) {
+
+ }
+
+ public void addSetterComment(Method method, IntrospectedTable introspectedTable,
+ IntrospectedColumn introspectedColumn) {
+
+ }
+
+ public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
+
+ }
+
+ public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
+ }
+
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/DatabaseNamesPlugin.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/DatabaseNamesPlugin.java
new file mode 100644
index 0000000..709209e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/DatabaseNamesPlugin.java
@@ -0,0 +1,153 @@
+package com.farriver.bwf.data.master.generator.plugin;
+
+import org.mybatis.generator.api.IntrospectedTable;
+import org.mybatis.generator.api.PluginAdapter;
+import org.mybatis.generator.api.dom.xml.TextElement;
+import org.mybatis.generator.api.dom.xml.XmlElement;
+
+import java.util.List;
+
+public class DatabaseNamesPlugin extends PluginAdapter {
+
+ private int commentRows = 5;
+
+ public boolean validate(List<String> arg0) {
+ return true;
+ }
+
+ @Override
+ public void initialized(IntrospectedTable introspectedTable) {
+ super.initialized(introspectedTable);
+ }
+
+ @Override
+ public boolean sqlMapCountByExampleElementGenerated(XmlElement element,
+ IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapCountByExampleElementGenerated(element, introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapDeleteByExampleElementGenerated(XmlElement element,
+ IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapDeleteByExampleElementGenerated(element, introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapDeleteByPrimaryKeyElementGenerated(XmlElement element,
+ IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapDeleteByPrimaryKeyElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapInsertSelectiveElementGenerated(XmlElement element,
+ IntrospectedTable introspectedTable) {
+ modifyTableName(element, 1, introspectedTable);
+ return super.sqlMapInsertSelectiveElementGenerated(element, introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapSelectByExampleWithBLOBsElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 3, introspectedTable);
+ return super.sqlMapSelectByExampleWithBLOBsElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 3, introspectedTable);
+ return super.sqlMapSelectByExampleWithoutBLOBsElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapSelectByPrimaryKeyElementGenerated(XmlElement element,
+ IntrospectedTable introspectedTable) {
+ modifyTableName(element, 2, introspectedTable);
+ return super.sqlMapSelectByPrimaryKeyElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapUpdateByExampleSelectiveElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapUpdateByExampleSelectiveElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapUpdateByExampleWithBLOBsElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapUpdateByExampleWithBLOBsElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapUpdateByExampleWithoutBLOBsElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapUpdateByPrimaryKeySelectiveElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapUpdateByPrimaryKeySelectiveElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapUpdateByPrimaryKeyWithBLOBsElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ modifyTableName(element, 0, introspectedTable);
+ return super.sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(element,
+ introspectedTable);
+ }
+
+
+ @Override
+ public boolean sqlMapInsertElementGenerated(XmlElement element,
+ IntrospectedTable introspectedTable) {
+ modifyTableName(element, 1, introspectedTable);
+ return super.sqlMapInsertElementGenerated(element, introspectedTable);
+ }
+
+ private void modifyTableName(XmlElement element, int index, IntrospectedTable introspectedTable) {
+ String tableName = introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime();
+ String rowContent = element.getElements().get(commentRows + index).getFormattedContent(0);
+ String schema = introspectedTable.getTableConfiguration().getSchema();
+ element.getElements().remove(commentRows + index);
+ element.addElement(commentRows + index, new TextElement(rowContent.replace(tableName, schema + "." + tableName).toString()));
+ // element.addElement(0,new TextElement(introspectedTable.getSelectByExampleQueryId()));
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/LombokPlugin.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/LombokPlugin.java
new file mode 100644
index 0000000..a536160
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/LombokPlugin.java
@@ -0,0 +1,270 @@
+package com.farriver.bwf.data.master.generator.plugin;
+
+import org.mybatis.generator.api.IntrospectedColumn;
+import org.mybatis.generator.api.IntrospectedTable;
+import org.mybatis.generator.api.PluginAdapter;
+import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
+import org.mybatis.generator.api.dom.java.Interface;
+import org.mybatis.generator.api.dom.java.Method;
+import org.mybatis.generator.api.dom.java.TopLevelClass;
+
+import java.util.*;
+
+
+/**
+ * A MyBatis Generator plugin to use Lombok's annotations.
+ * For example, use @Data annotation instead of getter ands setter.
+ *
+ * @author Paolo Predonzani (http://softwareloop.com/)
+ */
+public class LombokPlugin extends PluginAdapter {
+
+ private final Collection<Annotations> annotations;
+
+ /**
+ * LombokPlugin constructor
+ */
+ public LombokPlugin() {
+ annotations = new LinkedHashSet<Annotations>(Annotations.values().length);
+ }
+
+ /**
+ * @param warnings list of warnings
+ * @return always true
+ */
+ public boolean validate(List<String> warnings) {
+ return true;
+ }
+
+ /**
+ * Intercepts base record class generation
+ *
+ * @param topLevelClass the generated base record class
+ * @param introspectedTable The class containing information about the table as
+ * introspected from the database
+ * @return always true
+ */
+ @Override
+ public boolean modelBaseRecordClassGenerated(
+ TopLevelClass topLevelClass,
+ IntrospectedTable introspectedTable
+ ) {
+ addAnnotations(topLevelClass);
+ return true;
+ }
+
+ /**
+ * Intercepts primary key class generation
+ *
+ * @param topLevelClass the generated primary key class
+ * @param introspectedTable The class containing information about the table as
+ * introspected from the database
+ * @return always true
+ */
+ @Override
+ public boolean modelPrimaryKeyClassGenerated(
+ TopLevelClass topLevelClass,
+ IntrospectedTable introspectedTable
+ ) {
+ addAnnotations(topLevelClass);
+ return true;
+ }
+
+ /**
+ * Intercepts "record with blob" class generation
+ *
+ * @param topLevelClass the generated record with BLOBs class
+ * @param introspectedTable The class containing information about the table as
+ * introspected from the database
+ * @return always true
+ */
+ @Override
+ public boolean modelRecordWithBLOBsClassGenerated(
+ TopLevelClass topLevelClass,
+ IntrospectedTable introspectedTable
+ ) {
+ addAnnotations(topLevelClass);
+ return true;
+ }
+
+ /**
+ * Prevents all getters from being generated.
+ * See SimpleModelGenerator
+ *
+ * @param method the getter, or accessor, method generated for the specified
+ * column
+ * @param topLevelClass the partially implemented model class
+ * @param introspectedColumn The class containing information about the column related
+ * to this field as introspected from the database
+ * @param introspectedTable The class containing information about the table as
+ * introspected from the database
+ * @param modelClassType the type of class that the field is generated for
+ */
+ @Override
+ public boolean modelGetterMethodGenerated(
+ Method method,
+ TopLevelClass topLevelClass,
+ IntrospectedColumn introspectedColumn,
+ IntrospectedTable introspectedTable,
+ ModelClassType modelClassType
+ ) {
+ return false;
+ }
+
+ /**
+ * Prevents all setters from being generated
+ * See SimpleModelGenerator
+ *
+ * @param method the setter, or mutator, method generated for the specified
+ * column
+ * @param topLevelClass the partially implemented model class
+ * @param introspectedColumn The class containing information about the column related
+ * to this field as introspected from the database
+ * @param introspectedTable The class containing information about the table as
+ * introspected from the database
+ * @param modelClassType the type of class that the field is generated for
+ * @return always false
+ */
+ @Override
+ public boolean modelSetterMethodGenerated(
+ Method method,
+ TopLevelClass topLevelClass,
+ IntrospectedColumn introspectedColumn,
+ IntrospectedTable introspectedTable,
+ ModelClassType modelClassType
+ ) {
+ return false;
+ }
+
+ /**
+ * Adds the lombok annotations' imports and annotations to the class
+ *
+ * @param topLevelClass the partially implemented model class
+ */
+ private void addAnnotations(TopLevelClass topLevelClass) {
+ for (Annotations annotation : annotations) {
+ topLevelClass.addImportedType(annotation.javaType);
+ topLevelClass.addAnnotation(annotation.asAnnotation());
+ }
+ }
+
+ @Override
+ public void setProperties(Properties properties) {
+ super.setProperties(properties);
+
+ //@Data is default annotation
+ annotations.add(Annotations.DATA);
+
+ for (String annotationName : properties.stringPropertyNames()) {
+ if (annotationName.contains(".")) {
+ // Not an annotation name
+ continue;
+ }
+ String value = properties.getProperty(annotationName);
+ if (!Boolean.parseBoolean(value)) {
+ // The annotation is disabled, skip it
+ continue;
+ }
+ Annotations annotation = Annotations.getValueOf(annotationName);
+ if (annotation == null) {
+ continue;
+ }
+ String optionsPrefix = annotationName + ".";
+ for (String propertyName : properties.stringPropertyNames()) {
+ if (!propertyName.startsWith(optionsPrefix)) {
+ // A property not related to this annotation
+ continue;
+ }
+ String propertyValue = properties.getProperty(propertyName);
+ annotation.appendOptions(propertyName, propertyValue);
+ annotations.add(annotation);
+ annotations.addAll(Annotations.getDependencies(annotation));
+ }
+ }
+ }
+
+ @Override
+ public boolean clientGenerated(
+ Interface interfaze,
+ TopLevelClass topLevelClass,
+ IntrospectedTable introspectedTable
+ ) {
+ interfaze.addImportedType(new FullyQualifiedJavaType(
+ "org.apache.ibatis.annotations.Mapper"));
+ interfaze.addAnnotation("@Mapper");
+ return true;
+ }
+
+ private enum Annotations {
+ DATA("data", "@Data", "lombok.Data"),
+ BUILDER("builder", "@Builder", "lombok.Builder"),
+ ALL_ARGS_CONSTRUCTOR("allArgsConstructor", "@AllArgsConstructor", "lombok.AllArgsConstructor"),
+ NO_ARGS_CONSTRUCTOR("noArgsConstructor", "@NoArgsConstructor", "lombok.NoArgsConstructor"),
+ ACCESSORS("accessors", "@Accessors", "lombok.experimental.Accessors"),
+ TO_STRING("toString", "@ToString", "lombok.ToString");
+
+
+ private final String paramName;
+ private final String name;
+ private final FullyQualifiedJavaType javaType;
+ private final List<String> options;
+
+
+ Annotations(String paramName, String name, String className) {
+ this.paramName = paramName;
+ this.name = name;
+ this.javaType = new FullyQualifiedJavaType(className);
+ this.options = new ArrayList<String>();
+ }
+
+ private static Annotations getValueOf(String paramName) {
+ for (Annotations annotation : Annotations.values())
+ if (String.CASE_INSENSITIVE_ORDER.compare(paramName, annotation.paramName) == 0)
+ return annotation;
+
+ return null;
+ }
+
+ private static Collection<Annotations> getDependencies(Annotations annotation) {
+ if (annotation == ALL_ARGS_CONSTRUCTOR)
+ return Collections.singleton(NO_ARGS_CONSTRUCTOR);
+ else
+ return Collections.emptyList();
+ }
+
+ // A trivial quoting.
+ // Because Lombok annotation options type is almost String or boolean.
+ private static String quote(String value) {
+ if (Boolean.TRUE.toString().equals(value) || Boolean.FALSE.toString().equals(value))
+ // case of boolean, not passed as an array.
+ return value;
+ return value.replaceAll("[\\w]+", "\"$0\"");
+ }
+
+ private void appendOptions(String key, String value) {
+ String keyPart = key.substring(key.indexOf(".") + 1);
+ String valuePart = value.contains(",") ? String.format("{%s}", value) : value;
+ this.options.add(String.format("%s=%s", keyPart, quote(valuePart)));
+ }
+
+ private String asAnnotation() {
+ if (options.isEmpty()) {
+ return name;
+ }
+ StringBuilder sb = new StringBuilder();
+ sb.append(name);
+ sb.append("(");
+ boolean first = true;
+ for (String option : options) {
+ if (first) {
+ first = false;
+ } else {
+ sb.append(", ");
+ }
+ sb.append(option);
+ }
+ sb.append(")");
+ return sb.toString();
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MySQLLimitPlugin.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MySQLLimitPlugin.java
new file mode 100644
index 0000000..d1d2579
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MySQLLimitPlugin.java
@@ -0,0 +1,114 @@
+package com.farriver.bwf.data.master.generator.plugin;
+
+import org.mybatis.generator.api.IntrospectedTable;
+import org.mybatis.generator.api.PluginAdapter;
+import org.mybatis.generator.api.dom.java.*;
+import org.mybatis.generator.api.dom.xml.Attribute;
+import org.mybatis.generator.api.dom.xml.TextElement;
+import org.mybatis.generator.api.dom.xml.XmlElement;
+
+import java.util.List;
+
+public class MySQLLimitPlugin extends PluginAdapter {
+
+ @Override
+ public boolean validate(List<String> list) {
+ return true;
+ }
+
+ /**
+ * 为每个Example类添加limit和offset属性已经set、get方法
+ */
+ @Override
+ public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
+
+ PrimitiveTypeWrapper integerWrapper = FullyQualifiedJavaType.getIntInstance().getPrimitiveTypeWrapper();
+
+ Field limit = new Field();
+ limit.setName("limit");
+ limit.setVisibility(JavaVisibility.PRIVATE);
+ limit.setType(integerWrapper);
+ topLevelClass.addField(limit);
+
+ Method setLimit = new Method();
+ setLimit.setVisibility(JavaVisibility.PUBLIC);
+ setLimit.setName("setLimit");
+ setLimit.addParameter(new Parameter(integerWrapper, "limit"));
+ setLimit.addBodyLine("this.limit = limit;");
+ topLevelClass.addMethod(setLimit);
+
+ Method getLimit = new Method();
+ getLimit.setVisibility(JavaVisibility.PUBLIC);
+ getLimit.setReturnType(integerWrapper);
+ getLimit.setName("getLimit");
+ getLimit.addBodyLine("return limit;");
+ topLevelClass.addMethod(getLimit);
+
+ Field offset = new Field();
+ offset.setName("offset");
+ offset.setVisibility(JavaVisibility.PRIVATE);
+ offset.setType(integerWrapper);
+ topLevelClass.addField(offset);
+
+ Method setOffset = new Method();
+ setOffset.setVisibility(JavaVisibility.PUBLIC);
+ setOffset.setName("setOffset");
+ setOffset.addParameter(new Parameter(integerWrapper, "offset"));
+ setOffset.addBodyLine("this.offset = offset;");
+ topLevelClass.addMethod(setOffset);
+
+ Method getOffset = new Method();
+ getOffset.setVisibility(JavaVisibility.PUBLIC);
+ getOffset.setReturnType(integerWrapper);
+ getOffset.setName("getOffset");
+ getOffset.addBodyLine("return offset;");
+ topLevelClass.addMethod(getOffset);
+
+ return true;
+ }
+
+ /**
+ * 为Mapper.xml的selectByExample添加limit
+ */
+ @Override
+ public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
+
+ XmlElement ifLimitNotNullElement = new XmlElement("if");
+ ifLimitNotNullElement.addAttribute(new Attribute("test", "limit != null"));
+
+ XmlElement ifOffsetNotNullElement = new XmlElement("if");
+ ifOffsetNotNullElement.addAttribute(new Attribute("test", "offset != null"));
+ ifOffsetNotNullElement.addElement(new TextElement("limit ${offset}, ${limit}"));
+ ifLimitNotNullElement.addElement(ifOffsetNotNullElement);
+
+ XmlElement ifOffsetNullElement = new XmlElement("if");
+ ifOffsetNullElement.addAttribute(new Attribute("test", "offset == null"));
+ ifOffsetNullElement.addElement(new TextElement("limit ${limit}"));
+ ifLimitNotNullElement.addElement(ifOffsetNullElement);
+
+ element.addElement(ifLimitNotNullElement);
+
+ return true;
+ }
+
+ @Override
+ public boolean sqlMapSelectByExampleWithBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
+
+ XmlElement ifLimitNotNullElement = new XmlElement("if");
+ ifLimitNotNullElement.addAttribute(new Attribute("test", "limit != null"));
+
+ XmlElement ifOffsetNotNullElement = new XmlElement("if");
+ ifOffsetNotNullElement.addAttribute(new Attribute("test", "offset != null"));
+ ifOffsetNotNullElement.addElement(new TextElement("limit ${offset}, ${limit}"));
+ ifLimitNotNullElement.addElement(ifOffsetNotNullElement);
+
+ XmlElement ifOffsetNullElement = new XmlElement("if");
+ ifOffsetNullElement.addAttribute(new Attribute("test", "offset == null"));
+ ifOffsetNullElement.addElement(new TextElement("limit ${limit}"));
+ ifLimitNotNullElement.addElement(ifOffsetNullElement);
+
+ element.addElement(ifLimitNotNullElement);
+
+ return true;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlDeleteByExamplePlugin.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlDeleteByExamplePlugin.java
new file mode 100644
index 0000000..aff4471
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlDeleteByExamplePlugin.java
@@ -0,0 +1,62 @@
+package com.farriver.bwf.data.master.generator.plugin;
+
+import org.mybatis.generator.api.IntrospectedTable;
+import org.mybatis.generator.api.PluginAdapter;
+import org.mybatis.generator.api.dom.xml.Element;
+import org.mybatis.generator.api.dom.xml.TextElement;
+import org.mybatis.generator.api.dom.xml.XmlElement;
+
+import java.util.List;
+/**
+ * <pre>
+ * add pagination using mysql limit.
+ * This class is only used in ibator code generator.
+ * </pre>
+ */
+
+/**
+ * mysql 分页生成插件
+ */
+
+public class MysqlDeleteByExamplePlugin extends PluginAdapter {
+
+
+ /**
+ *
+ * delete from table语句增加别名
+ * 改为delete alias from table
+ */
+ @Override
+ public boolean sqlMapDeleteByExampleElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+ List<Element> elements = element.getElements();
+ String tableNameALias = introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime();
+ String[] strings = tableNameALias.trim().split("\\s+");
+
+ if (strings.length > 1) {
+ int index = 0;
+ for (Element cur : elements) {
+ String content = cur.getFormattedContent(0);
+ if (content.contains("delete from")) {
+ String alias = strings[1];
+ String deleteSql = "delete " + alias + " from " + tableNameALias;
+ TextElement deleteElement = new TextElement(deleteSql);
+ elements.remove(cur);
+ element.addElement(index, deleteElement);
+ break;
+ }
+ index++;
+ }
+
+ }
+ return super.sqlMapDeleteByExampleElementGenerated(element, introspectedTable);
+ }
+
+ /**
+ * This plugin is always valid - no properties are required
+ */
+ public boolean validate(List<String> warnings) {
+ return true;
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlPagePlugin.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlPagePlugin.java
new file mode 100644
index 0000000..75fc2c6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/generator/plugin/MysqlPagePlugin.java
@@ -0,0 +1,128 @@
+package com.farriver.bwf.data.master.generator.plugin;
+
+import org.mybatis.generator.api.CommentGenerator;
+import org.mybatis.generator.api.IntrospectedTable;
+import org.mybatis.generator.api.PluginAdapter;
+import org.mybatis.generator.api.dom.java.*;
+import org.mybatis.generator.api.dom.xml.Attribute;
+import org.mybatis.generator.api.dom.xml.TextElement;
+import org.mybatis.generator.api.dom.xml.XmlElement;
+
+import java.util.List;
+/**
+ * <pre>
+ * add pagination using mysql limit.
+ * This class is only used in ibator code generator.
+ * </pre>
+ */
+
+/**
+ * mysql 分页生成插件
+ */
+
+public class MysqlPagePlugin extends PluginAdapter {
+
+ /**
+ * 添加 分页 开始行数 和结束行数 属性
+ */
+ @Override
+ public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,
+ IntrospectedTable introspectedTable) {
+ // add field, getter, setter for limit clause
+
+ addProperty(topLevelClass, introspectedTable, "limitStart", FullyQualifiedJavaType.getIntInstance());
+
+ addProperty(topLevelClass, introspectedTable, "limitEnd", FullyQualifiedJavaType.getIntInstance());
+
+ addProperty(topLevelClass, introspectedTable, "groupByClause", FullyQualifiedJavaType.getStringInstance());
+
+ return super.modelExampleClassGenerated(topLevelClass, introspectedTable);
+ }
+
+
+ /**
+ * 添加 映射 文件配置 limit 的配置
+ */
+ @Override
+ public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(
+ XmlElement element, IntrospectedTable introspectedTable) {
+
+// XmlElement isParameterPresenteElemen = (XmlElement) element.getElements();
+ //设置 if 判断 节点
+ XmlElement limitElement = new XmlElement("if"); //$NON-NLS-1$
+
+ //给 节点添加 条件运算符
+ limitElement.addAttribute(new Attribute("test", "limitEnd > 0")); //$NON-NLS-1$ //$NON-NLS-2$
+ //如果条件成立 就进行分页查询
+ limitElement.addElement(new TextElement(
+ "limit #{limitStart,jdbcType=INTEGER} , #{limitEnd,jdbcType=INTEGER}"));
+ //添加节点到 配置文件中
+ element.addElement(limitElement);
+
+ XmlElement groupbyElement = new XmlElement("if"); //$NON-NLS-1$
+
+ //给 节点添加 条件运算符
+ groupbyElement.addAttribute(new Attribute("test", "groupByClause != null")); //$NON-NLS-1$ //$NON-NLS-2$
+ //如果条件成立 就进行分页查询
+ groupbyElement.addElement(new TextElement(
+ "group by ${groupByClause}"));
+ //添加节点到 配置文件中
+ element.addElement(groupbyElement);
+
+ return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element, introspectedTable);
+
+ }
+
+
+ /**
+ * 给对应的实体 实体添加 属性字段
+ */
+ private void addProperty(TopLevelClass topLevelClass,
+ IntrospectedTable introspectedTable, String name, FullyQualifiedJavaType fullyQualifiedJavaType) {
+ CommentGenerator commentGenerator = context.getCommentGenerator();
+ Field field = new Field();
+ field.setVisibility(JavaVisibility.PROTECTED);
+ field.setType(fullyQualifiedJavaType);
+ field.setName(name);
+
+// field.setInitializationString("-1");
+
+ commentGenerator.addFieldComment(field, introspectedTable);
+
+ topLevelClass.addField(field);
+ char c = name.charAt(0);
+ String camel = Character.toUpperCase(c) + name.substring(1);
+ Method method = new Method();
+ method.setVisibility(JavaVisibility.PUBLIC);
+ method.setName("set" + camel);
+ method.addParameter(new Parameter(fullyQualifiedJavaType, name));
+
+ method.addBodyLine("this." + name + "=" + name + ";");
+ commentGenerator.addGeneralMethodComment(method, introspectedTable);
+ topLevelClass.addMethod(method);
+ method = new Method();
+ method.setVisibility(JavaVisibility.PUBLIC);
+ method.setReturnType(fullyQualifiedJavaType);
+ method.setName("get" + camel);
+ method.addBodyLine("return " + name + ";");
+ commentGenerator.addGeneralMethodComment(method, introspectedTable);
+ topLevelClass.addMethod(method);
+ }
+
+ /**
+ * This plugin is always valid - no properties are required
+ */
+ public boolean validate(List<String> warnings) {
+ return true;
+ }
+
+// public static void generate() {
+// String config = MysqlPagePlugin.class.getClassLoader().getResource("generatorConfig-w5Log.xml").getFile();
+// String[] arg = { "-configfile", config, "-overwrite" };
+// ShellRunner.main(arg);
+// }
+// public static void main(String[] args) {
+// generate();
+// }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.java
new file mode 100644
index 0000000..2454b3d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.java
@@ -0,0 +1,33 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.entity.OrderActiveExtend;
+import com.farriver.bwf.data.master.model.OrderActive;
+import com.farriver.bwf.data.master.model.OrderActiveExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrderActiveMapper {
+ long countByExample(OrderActiveExample example);
+
+ int deleteByExample(OrderActiveExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrderActive record);
+
+ int insertSelective(OrderActive record);
+
+ List<OrderActive> selectByExample(OrderActiveExample example);
+
+ List<OrderActiveExtend> selectOrderActiveExtendByExample(OrderActiveExample example);
+
+ OrderActive selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrderActive record, @Param("example") OrderActiveExample example);
+
+ int updateByExample(@Param("record") OrderActive record, @Param("example") OrderActiveExample example);
+
+ int updateByPrimaryKeySelective(OrderActive record);
+
+ int updateByPrimaryKey(OrderActive record);
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.xml
new file mode 100644
index 0000000..a73653c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveMapper.xml
@@ -0,0 +1,862 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrderActiveMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrderActive">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="no" jdbcType="VARCHAR" property="no"/>
+ <result column="totalmoney" jdbcType="DECIMAL" property="totalmoney"/>
+ <result column="payedmoney" jdbcType="DECIMAL" property="payedmoney"/>
+ <result column="paymentmethod" jdbcType="INTEGER" property="paymentmethod"/>
+ <result column="discountmoney" jdbcType="DECIMAL" property="discountmoney"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="ordertime" jdbcType="TIMESTAMP" property="ordertime"/>
+ <result column="paytime" jdbcType="TIMESTAMP" property="paytime"/>
+ <result column="sendtime" jdbcType="TIMESTAMP" property="sendtime"/>
+ <result column="receivetime" jdbcType="TIMESTAMP" property="receivetime"/>
+ <result column="commenttime" jdbcType="TIMESTAMP" property="commenttime"/>
+ <result column="completetime" jdbcType="TIMESTAMP" property="completetime"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="sendername" jdbcType="VARCHAR" property="sendername"/>
+ <result column="sendercode" jdbcType="VARCHAR" property="sendercode"/>
+ <result column="sendercontactno" jdbcType="INTEGER" property="sendercontactno"/>
+ <result column="targetaddress" jdbcType="VARCHAR" property="targetaddress"/>
+ <result column="deliveryaddress" jdbcType="VARCHAR" property="deliveryaddress"/>
+ <result column="optimalcoupon" jdbcType="VARCHAR" property="optimalcoupon"/>
+ <result column="logisticscompany" jdbcType="VARCHAR" property="logisticscompany"/>
+ <result column="logisticsno" jdbcType="VARCHAR" property="logisticsno"/>
+ <result column="transportmode" jdbcType="VARCHAR" property="transportmode"/>
+ <result column="boxcount" jdbcType="INTEGER" property="boxcount"/>
+ <result column="boxweight" jdbcType="DECIMAL" property="boxweight"/>
+ <result column="freight" jdbcType="DECIMAL" property="freight"/>
+ <result column="commentcontent" jdbcType="VARCHAR" property="commentcontent"/>
+ <result column="commentlevel" jdbcType="INTEGER" property="commentlevel"/>
+ <result column="receiverid" jdbcType="VARCHAR" property="receiverid"/>
+ <result column="vipuserId" jdbcType="VARCHAR" property="vipuserid"/>
+ <result column="vipname" jdbcType="VARCHAR" property="vipname"/>
+ <result column="vipphone" jdbcType="VARCHAR" property="vipphone"/>
+ <result column="vipdiamondtype" jdbcType="INTEGER" property="vipdiamondtype"/>
+ <result column="viptype" jdbcType="INTEGER" property="viptype"/>
+ <result column="vippicture" jdbcType="VARCHAR" property="vippicture"/>
+ <result column="vipcarddiscountrate" jdbcType="DECIMAL" property="vipcarddiscountrate"/>
+ <result column="type" jdbcType="INTEGER" property="type"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , no, totalmoney, payedmoney, paymentmethod, discountmoney, status, ordertime,
+ paytime, sendtime, receivetime, commenttime, completetime, isdeleted, remark, createtime,
+ updatetime, sendername, sendercode, sendercontactno, targetaddress, deliveryaddress,
+ optimalcoupon, logisticscompany, logisticsno, transportmode, boxcount, boxweight,
+ freight, commentcontent, commentlevel, receiverid, vipuserId, vipname, vipphone,
+ vipdiamondtype, viptype, vippicture, vipcarddiscountrate, type
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrderActiveExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from order_active
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from order_active
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from order_active
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrderActiveExample">
+ delete from order_active
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrderActive">
+ insert into order_active (id, no, totalmoney,
+ payedmoney, paymentmethod, discountmoney,
+ status, ordertime, paytime,
+ sendtime, receivetime, commenttime,
+ completetime, isdeleted, remark,
+ createtime, updatetime, sendername,
+ sendercode, sendercontactno, targetaddress,
+ deliveryaddress, optimalcoupon, logisticscompany,
+ logisticsno, transportmode, boxcount,
+ boxweight, freight, commentcontent,
+ commentlevel, receiverid, vipuserId,
+ vipname, vipphone, vipdiamondtype,
+ viptype, vippicture, vipcarddiscountrate,
+ type)
+ values (#{id,jdbcType=VARCHAR}, #{no,jdbcType=VARCHAR}, #{totalmoney,jdbcType=DECIMAL},
+ #{payedmoney,jdbcType=DECIMAL}, #{paymentmethod,jdbcType=INTEGER}, #{discountmoney,jdbcType=DECIMAL},
+ #{status,jdbcType=INTEGER}, #{ordertime,jdbcType=TIMESTAMP}, #{paytime,jdbcType=TIMESTAMP},
+ #{sendtime,jdbcType=TIMESTAMP}, #{receivetime,jdbcType=TIMESTAMP}, #{commenttime,jdbcType=TIMESTAMP},
+ #{completetime,jdbcType=TIMESTAMP}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{sendername,jdbcType=VARCHAR},
+ #{sendercode,jdbcType=VARCHAR}, #{sendercontactno,jdbcType=INTEGER}, #{targetaddress,jdbcType=VARCHAR},
+ #{deliveryaddress,jdbcType=VARCHAR}, #{optimalcoupon,jdbcType=VARCHAR},
+ #{logisticscompany,jdbcType=VARCHAR},
+ #{logisticsno,jdbcType=VARCHAR}, #{transportmode,jdbcType=VARCHAR}, #{boxcount,jdbcType=INTEGER},
+ #{boxweight,jdbcType=DECIMAL}, #{freight,jdbcType=DECIMAL}, #{commentcontent,jdbcType=VARCHAR},
+ #{commentlevel,jdbcType=INTEGER}, #{receiverid,jdbcType=VARCHAR}, #{vipuserid,jdbcType=VARCHAR},
+ #{vipname,jdbcType=VARCHAR}, #{vipphone,jdbcType=VARCHAR}, #{vipdiamondtype,jdbcType=INTEGER},
+ #{viptype,jdbcType=INTEGER}, #{vippicture,jdbcType=VARCHAR}, #{vipcarddiscountrate,jdbcType=DECIMAL},
+ #{type,jdbcType=INTEGER})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrderActive">
+ insert into order_active
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="no != null">
+ no,
+ </if>
+ <if test="totalmoney != null">
+ totalmoney,
+ </if>
+ <if test="payedmoney != null">
+ payedmoney,
+ </if>
+ <if test="paymentmethod != null">
+ paymentmethod,
+ </if>
+ <if test="discountmoney != null">
+ discountmoney,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="ordertime != null">
+ ordertime,
+ </if>
+ <if test="paytime != null">
+ paytime,
+ </if>
+ <if test="sendtime != null">
+ sendtime,
+ </if>
+ <if test="receivetime != null">
+ receivetime,
+ </if>
+ <if test="commenttime != null">
+ commenttime,
+ </if>
+ <if test="completetime != null">
+ completetime,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="sendername != null">
+ sendername,
+ </if>
+ <if test="sendercode != null">
+ sendercode,
+ </if>
+ <if test="sendercontactno != null">
+ sendercontactno,
+ </if>
+ <if test="targetaddress != null">
+ targetaddress,
+ </if>
+ <if test="deliveryaddress != null">
+ deliveryaddress,
+ </if>
+ <if test="optimalcoupon != null">
+ optimalcoupon,
+ </if>
+ <if test="logisticscompany != null">
+ logisticscompany,
+ </if>
+ <if test="logisticsno != null">
+ logisticsno,
+ </if>
+ <if test="transportmode != null">
+ transportmode,
+ </if>
+ <if test="boxcount != null">
+ boxcount,
+ </if>
+ <if test="boxweight != null">
+ boxweight,
+ </if>
+ <if test="freight != null">
+ freight,
+ </if>
+ <if test="commentcontent != null">
+ commentcontent,
+ </if>
+ <if test="commentlevel != null">
+ commentlevel,
+ </if>
+ <if test="receiverid != null">
+ receiverid,
+ </if>
+ <if test="vipuserid != null">
+ vipuserId,
+ </if>
+ <if test="vipname != null">
+ vipname,
+ </if>
+ <if test="vipphone != null">
+ vipphone,
+ </if>
+ <if test="vipdiamondtype != null">
+ vipdiamondtype,
+ </if>
+ <if test="viptype != null">
+ viptype,
+ </if>
+ <if test="vippicture != null">
+ vippicture,
+ </if>
+ <if test="vipcarddiscountrate != null">
+ vipcarddiscountrate,
+ </if>
+ <if test="type != null">
+ type,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="no != null">
+ #{no,jdbcType=VARCHAR},
+ </if>
+ <if test="totalmoney != null">
+ #{totalmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="payedmoney != null">
+ #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="paymentmethod != null">
+ #{paymentmethod,jdbcType=INTEGER},
+ </if>
+ <if test="discountmoney != null">
+ #{discountmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="ordertime != null">
+ #{ordertime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="paytime != null">
+ #{paytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendtime != null">
+ #{sendtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="receivetime != null">
+ #{receivetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="commenttime != null">
+ #{commenttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="completetime != null">
+ #{completetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendername != null">
+ #{sendername,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercode != null">
+ #{sendercode,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercontactno != null">
+ #{sendercontactno,jdbcType=INTEGER},
+ </if>
+ <if test="targetaddress != null">
+ #{targetaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="deliveryaddress != null">
+ #{deliveryaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="optimalcoupon != null">
+ #{optimalcoupon,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticscompany != null">
+ #{logisticscompany,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticsno != null">
+ #{logisticsno,jdbcType=VARCHAR},
+ </if>
+ <if test="transportmode != null">
+ #{transportmode,jdbcType=VARCHAR},
+ </if>
+ <if test="boxcount != null">
+ #{boxcount,jdbcType=INTEGER},
+ </if>
+ <if test="boxweight != null">
+ #{boxweight,jdbcType=DECIMAL},
+ </if>
+ <if test="freight != null">
+ #{freight,jdbcType=DECIMAL},
+ </if>
+ <if test="commentcontent != null">
+ #{commentcontent,jdbcType=VARCHAR},
+ </if>
+ <if test="commentlevel != null">
+ #{commentlevel,jdbcType=INTEGER},
+ </if>
+ <if test="receiverid != null">
+ #{receiverid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipuserid != null">
+ #{vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipname != null">
+ #{vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="vipphone != null">
+ #{vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="vipdiamondtype != null">
+ #{vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="viptype != null">
+ #{viptype,jdbcType=INTEGER},
+ </if>
+ <if test="vippicture != null">
+ #{vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="vipcarddiscountrate != null">
+ #{vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="type != null">
+ #{type,jdbcType=INTEGER},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrderActiveExample"
+ resultType="java.lang.Long">
+ select count(*) from order_active
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update order_active
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.no != null">
+ no = #{record.no,jdbcType=VARCHAR},
+ </if>
+ <if test="record.totalmoney != null">
+ totalmoney = #{record.totalmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.payedmoney != null">
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.paymentmethod != null">
+ paymentmethod = #{record.paymentmethod,jdbcType=INTEGER},
+ </if>
+ <if test="record.discountmoney != null">
+ discountmoney = #{record.discountmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.ordertime != null">
+ ordertime = #{record.ordertime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.paytime != null">
+ paytime = #{record.paytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.sendtime != null">
+ sendtime = #{record.sendtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.receivetime != null">
+ receivetime = #{record.receivetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.commenttime != null">
+ commenttime = #{record.commenttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.completetime != null">
+ completetime = #{record.completetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.sendername != null">
+ sendername = #{record.sendername,jdbcType=VARCHAR},
+ </if>
+ <if test="record.sendercode != null">
+ sendercode = #{record.sendercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.sendercontactno != null">
+ sendercontactno = #{record.sendercontactno,jdbcType=INTEGER},
+ </if>
+ <if test="record.targetaddress != null">
+ targetaddress = #{record.targetaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="record.deliveryaddress != null">
+ deliveryaddress = #{record.deliveryaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="record.optimalcoupon != null">
+ optimalcoupon = #{record.optimalcoupon,jdbcType=VARCHAR},
+ </if>
+ <if test="record.logisticscompany != null">
+ logisticscompany = #{record.logisticscompany,jdbcType=VARCHAR},
+ </if>
+ <if test="record.logisticsno != null">
+ logisticsno = #{record.logisticsno,jdbcType=VARCHAR},
+ </if>
+ <if test="record.transportmode != null">
+ transportmode = #{record.transportmode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.boxcount != null">
+ boxcount = #{record.boxcount,jdbcType=INTEGER},
+ </if>
+ <if test="record.boxweight != null">
+ boxweight = #{record.boxweight,jdbcType=DECIMAL},
+ </if>
+ <if test="record.freight != null">
+ freight = #{record.freight,jdbcType=DECIMAL},
+ </if>
+ <if test="record.commentcontent != null">
+ commentcontent = #{record.commentcontent,jdbcType=VARCHAR},
+ </if>
+ <if test="record.commentlevel != null">
+ commentlevel = #{record.commentlevel,jdbcType=INTEGER},
+ </if>
+ <if test="record.receiverid != null">
+ receiverid = #{record.receiverid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipuserid != null">
+ vipuserId = #{record.vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipname != null">
+ vipname = #{record.vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipphone != null">
+ vipphone = #{record.vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipdiamondtype != null">
+ vipdiamondtype = #{record.vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="record.viptype != null">
+ viptype = #{record.viptype,jdbcType=INTEGER},
+ </if>
+ <if test="record.vippicture != null">
+ vippicture = #{record.vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipcarddiscountrate != null">
+ vipcarddiscountrate = #{record.vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="record.type != null">
+ type = #{record.type,jdbcType=INTEGER},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update order_active
+ set id = #{record.id,jdbcType=VARCHAR},
+ no = #{record.no,jdbcType=VARCHAR},
+ totalmoney = #{record.totalmoney,jdbcType=DECIMAL},
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ paymentmethod = #{record.paymentmethod,jdbcType=INTEGER},
+ discountmoney = #{record.discountmoney,jdbcType=DECIMAL},
+ status = #{record.status,jdbcType=INTEGER},
+ ordertime = #{record.ordertime,jdbcType=TIMESTAMP},
+ paytime = #{record.paytime,jdbcType=TIMESTAMP},
+ sendtime = #{record.sendtime,jdbcType=TIMESTAMP},
+ receivetime = #{record.receivetime,jdbcType=TIMESTAMP},
+ commenttime = #{record.commenttime,jdbcType=TIMESTAMP},
+ completetime = #{record.completetime,jdbcType=TIMESTAMP},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ sendername = #{record.sendername,jdbcType=VARCHAR},
+ sendercode = #{record.sendercode,jdbcType=VARCHAR},
+ sendercontactno = #{record.sendercontactno,jdbcType=INTEGER},
+ targetaddress = #{record.targetaddress,jdbcType=VARCHAR},
+ deliveryaddress = #{record.deliveryaddress,jdbcType=VARCHAR},
+ optimalcoupon = #{record.optimalcoupon,jdbcType=VARCHAR},
+ logisticscompany = #{record.logisticscompany,jdbcType=VARCHAR},
+ logisticsno = #{record.logisticsno,jdbcType=VARCHAR},
+ transportmode = #{record.transportmode,jdbcType=VARCHAR},
+ boxcount = #{record.boxcount,jdbcType=INTEGER},
+ boxweight = #{record.boxweight,jdbcType=DECIMAL},
+ freight = #{record.freight,jdbcType=DECIMAL},
+ commentcontent = #{record.commentcontent,jdbcType=VARCHAR},
+ commentlevel = #{record.commentlevel,jdbcType=INTEGER},
+ receiverid = #{record.receiverid,jdbcType=VARCHAR},
+ vipuserId = #{record.vipuserid,jdbcType=VARCHAR},
+ vipname = #{record.vipname,jdbcType=VARCHAR},
+ vipphone = #{record.vipphone,jdbcType=VARCHAR},
+ vipdiamondtype = #{record.vipdiamondtype,jdbcType=INTEGER},
+ viptype = #{record.viptype,jdbcType=INTEGER},
+ vippicture = #{record.vippicture,jdbcType=VARCHAR},
+ vipcarddiscountrate = #{record.vipcarddiscountrate,jdbcType=DECIMAL},
+ type = #{record.type,jdbcType=INTEGER}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrderActive">
+ update order_active
+ <set>
+ <if test="no != null">
+ no = #{no,jdbcType=VARCHAR},
+ </if>
+ <if test="totalmoney != null">
+ totalmoney = #{totalmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="payedmoney != null">
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="paymentmethod != null">
+ paymentmethod = #{paymentmethod,jdbcType=INTEGER},
+ </if>
+ <if test="discountmoney != null">
+ discountmoney = #{discountmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="ordertime != null">
+ ordertime = #{ordertime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="paytime != null">
+ paytime = #{paytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendtime != null">
+ sendtime = #{sendtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="receivetime != null">
+ receivetime = #{receivetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="commenttime != null">
+ commenttime = #{commenttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="completetime != null">
+ completetime = #{completetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendername != null">
+ sendername = #{sendername,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercode != null">
+ sendercode = #{sendercode,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercontactno != null">
+ sendercontactno = #{sendercontactno,jdbcType=INTEGER},
+ </if>
+ <if test="targetaddress != null">
+ targetaddress = #{targetaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="deliveryaddress != null">
+ deliveryaddress = #{deliveryaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="optimalcoupon != null">
+ optimalcoupon = #{optimalcoupon,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticscompany != null">
+ logisticscompany = #{logisticscompany,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticsno != null">
+ logisticsno = #{logisticsno,jdbcType=VARCHAR},
+ </if>
+ <if test="transportmode != null">
+ transportmode = #{transportmode,jdbcType=VARCHAR},
+ </if>
+ <if test="boxcount != null">
+ boxcount = #{boxcount,jdbcType=INTEGER},
+ </if>
+ <if test="boxweight != null">
+ boxweight = #{boxweight,jdbcType=DECIMAL},
+ </if>
+ <if test="freight != null">
+ freight = #{freight,jdbcType=DECIMAL},
+ </if>
+ <if test="commentcontent != null">
+ commentcontent = #{commentcontent,jdbcType=VARCHAR},
+ </if>
+ <if test="commentlevel != null">
+ commentlevel = #{commentlevel,jdbcType=INTEGER},
+ </if>
+ <if test="receiverid != null">
+ receiverid = #{receiverid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipuserid != null">
+ vipuserId = #{vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipname != null">
+ vipname = #{vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="vipphone != null">
+ vipphone = #{vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="vipdiamondtype != null">
+ vipdiamondtype = #{vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="viptype != null">
+ viptype = #{viptype,jdbcType=INTEGER},
+ </if>
+ <if test="vippicture != null">
+ vippicture = #{vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="vipcarddiscountrate != null">
+ vipcarddiscountrate = #{vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="type != null">
+ type = #{type,jdbcType=INTEGER},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrderActive">
+ update order_active
+ set no = #{no,jdbcType=VARCHAR},
+ totalmoney = #{totalmoney,jdbcType=DECIMAL},
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ paymentmethod = #{paymentmethod,jdbcType=INTEGER},
+ discountmoney = #{discountmoney,jdbcType=DECIMAL},
+ status = #{status,jdbcType=INTEGER},
+ ordertime = #{ordertime,jdbcType=TIMESTAMP},
+ paytime = #{paytime,jdbcType=TIMESTAMP},
+ sendtime = #{sendtime,jdbcType=TIMESTAMP},
+ receivetime = #{receivetime,jdbcType=TIMESTAMP},
+ commenttime = #{commenttime,jdbcType=TIMESTAMP},
+ completetime = #{completetime,jdbcType=TIMESTAMP},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ sendername = #{sendername,jdbcType=VARCHAR},
+ sendercode = #{sendercode,jdbcType=VARCHAR},
+ sendercontactno = #{sendercontactno,jdbcType=INTEGER},
+ targetaddress = #{targetaddress,jdbcType=VARCHAR},
+ deliveryaddress = #{deliveryaddress,jdbcType=VARCHAR},
+ optimalcoupon = #{optimalcoupon,jdbcType=VARCHAR},
+ logisticscompany = #{logisticscompany,jdbcType=VARCHAR},
+ logisticsno = #{logisticsno,jdbcType=VARCHAR},
+ transportmode = #{transportmode,jdbcType=VARCHAR},
+ boxcount = #{boxcount,jdbcType=INTEGER},
+ boxweight = #{boxweight,jdbcType=DECIMAL},
+ freight = #{freight,jdbcType=DECIMAL},
+ commentcontent = #{commentcontent,jdbcType=VARCHAR},
+ commentlevel = #{commentlevel,jdbcType=INTEGER},
+ receiverid = #{receiverid,jdbcType=VARCHAR},
+ vipuserId = #{vipuserid,jdbcType=VARCHAR},
+ vipname = #{vipname,jdbcType=VARCHAR},
+ vipphone = #{vipphone,jdbcType=VARCHAR},
+ vipdiamondtype = #{vipdiamondtype,jdbcType=INTEGER},
+ viptype = #{viptype,jdbcType=INTEGER},
+ vippicture = #{vippicture,jdbcType=VARCHAR},
+ vipcarddiscountrate = #{vipcarddiscountrate,jdbcType=DECIMAL},
+ type = #{type,jdbcType=INTEGER}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <resultMap extends="BaseResultMap" id="OrderActiveExtendResultMap"
+ type="com.farriver.bwf.data.master.entity.OrderActiveExtend">
+ <collection ofType="com.farriver.bwf.data.master.model.OrderActiveProduct" property="products">
+ <id column="p_id" jdbcType="VARCHAR" property="id"/>
+ <result column="p_isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="p_remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="p_createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="p_updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="p_productid" jdbcType="VARCHAR" property="productid"/>
+ <result column="p_productcode" jdbcType="VARCHAR" property="productcode"/>
+ <result column="p_productname" jdbcType="VARCHAR" property="productname"/>
+ <result column="p_status" jdbcType="INTEGER" property="status"/>
+ <result column="p_color" jdbcType="VARCHAR" property="color"/>
+ <result column="p_size" jdbcType="VARCHAR" property="size"/>
+ <result column="p_count" jdbcType="INTEGER" property="count"/>
+ <result column="p_image" jdbcType="VARCHAR" property="image"/>
+ <result column="p_price" jdbcType="DECIMAL" property="price"/>
+ <result column="p_saleprice" jdbcType="DECIMAL" property="saleprice"/>
+ <result column="p_rejectreason" jdbcType="VARCHAR" property="rejectreason"/>
+ <result column="p_rejectcomment" jdbcType="VARCHAR" property="rejectcomment"/>
+ <result column="p_rejecttime" jdbcType="TIMESTAMP" property="rejecttime"/>
+ <result column="p_payer" jdbcType="VARCHAR" property="payer"/>
+ <result column="p_payedmoney" jdbcType="DECIMAL" property="payedmoney"/>
+ <result column="p_discount" jdbcType="DECIMAL" property="discount"/>
+ <result column="p_payee" jdbcType="VARCHAR" property="payee"/>
+ <result column="p_orderid" jdbcType="VARCHAR" property="orderid"/>
+ <result column="p_orderno" jdbcType="VARCHAR" property="orderno"/>
+ </collection>
+ </resultMap>
+ <select id="selectOrderActiveExtendByExample"
+ parameterType="com.farriver.bwf.data.master.model.OrderActiveExample"
+ resultMap="OrderActiveExtendResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ o.*,
+ p.id AS p_id,
+ p.isdeleted AS p_isdeleted,
+ p.remark AS p_remark,
+ p.createtime AS p_createtime,
+ p.updatetime AS p_updatetime,
+ p.productid AS p_productid,
+ p.productcode AS p_productcode,
+ p.productname AS p_productname,
+ p.status AS p_status,
+ p.color AS p_color,
+ p.size AS p_size,
+ p.count AS p_count,
+ p.image AS p_image,
+ p.price AS p_price,
+ p.saleprice AS p_saleprice,
+ p.rejectreason AS p_rejectreason,
+ p.rejectcomment AS p_rejectcomment,
+ p.rejecttime AS p_rejecttime,
+ p.payer AS p_payer,
+ p.payedmoney AS p_payedmoney,
+ p.discount AS p_discount,
+ p.payee AS p_payee,
+ p.orderid AS p_orderid,
+ p.orderno AS p_orderno
+ FROM (
+ SELECT * FROM order_active
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ ) o
+ LEFT JOIN order_active_product p ON o.id = p.orderid
+ </select>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.java
new file mode 100644
index 0000000..b4aa567
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrderActiveProduct;
+import com.farriver.bwf.data.master.model.OrderActiveProductExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrderActiveProductMapper {
+ long countByExample(OrderActiveProductExample example);
+
+ int deleteByExample(OrderActiveProductExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrderActiveProduct record);
+
+ int insertSelective(OrderActiveProduct record);
+
+ List<OrderActiveProduct> selectByExample(OrderActiveProductExample example);
+
+ OrderActiveProduct selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrderActiveProduct record, @Param("example") OrderActiveProductExample example);
+
+ int updateByExample(@Param("record") OrderActiveProduct record, @Param("example") OrderActiveProductExample example);
+
+ int updateByPrimaryKeySelective(OrderActiveProduct record);
+
+ int updateByPrimaryKey(OrderActiveProduct record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.xml
new file mode 100644
index 0000000..6fa0c5e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderActiveProductMapper.xml
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrderActiveProductMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrderActiveProduct">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="productid" jdbcType="VARCHAR" property="productid"/>
+ <result column="productcode" jdbcType="VARCHAR" property="productcode"/>
+ <result column="productname" jdbcType="VARCHAR" property="productname"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="color" jdbcType="VARCHAR" property="color"/>
+ <result column="size" jdbcType="VARCHAR" property="size"/>
+ <result column="count" jdbcType="INTEGER" property="count"/>
+ <result column="image" jdbcType="VARCHAR" property="image"/>
+ <result column="price" jdbcType="DECIMAL" property="price"/>
+ <result column="saleprice" jdbcType="DECIMAL" property="saleprice"/>
+ <result column="rejectreason" jdbcType="VARCHAR" property="rejectreason"/>
+ <result column="rejectcomment" jdbcType="VARCHAR" property="rejectcomment"/>
+ <result column="rejecttime" jdbcType="TIMESTAMP" property="rejecttime"/>
+ <result column="payer" jdbcType="VARCHAR" property="payer"/>
+ <result column="payedmoney" jdbcType="DECIMAL" property="payedmoney"/>
+ <result column="discount" jdbcType="DECIMAL" property="discount"/>
+ <result column="payee" jdbcType="VARCHAR" property="payee"/>
+ <result column="orderid" jdbcType="VARCHAR" property="orderid"/>
+ <result column="orderno" jdbcType="VARCHAR" property="orderno"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , isdeleted, remark, createtime, updatetime, productid, productcode, productname,
+ status, color, size, count, image, price, saleprice, rejectreason, rejectcomment,
+ rejecttime, payer, payedmoney, discount, payee, orderid, orderno
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrderActiveProductExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from order_active_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from order_active_product
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from order_active_product
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrderActiveProductExample">
+ delete from order_active_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrderActiveProduct">
+ insert into order_active_product (id, isdeleted, remark,
+ createtime, updatetime, productid,
+ productcode, productname, status,
+ color, size, count,
+ image, price, saleprice,
+ rejectreason, rejectcomment, rejecttime,
+ payer, payedmoney, discount,
+ payee, orderid, orderno)
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{productid,jdbcType=VARCHAR},
+ #{productcode,jdbcType=VARCHAR}, #{productname,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{color,jdbcType=VARCHAR}, #{size,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER},
+ #{image,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, #{saleprice,jdbcType=DECIMAL},
+ #{rejectreason,jdbcType=VARCHAR}, #{rejectcomment,jdbcType=VARCHAR}, #{rejecttime,jdbcType=TIMESTAMP},
+ #{payer,jdbcType=VARCHAR}, #{payedmoney,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL},
+ #{payee,jdbcType=VARCHAR}, #{orderid,jdbcType=VARCHAR}, #{orderno,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrderActiveProduct">
+ insert into order_active_product
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="productid != null">
+ productid,
+ </if>
+ <if test="productcode != null">
+ productcode,
+ </if>
+ <if test="productname != null">
+ productname,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="color != null">
+ color,
+ </if>
+ <if test="size != null">
+ size,
+ </if>
+ <if test="count != null">
+ count,
+ </if>
+ <if test="image != null">
+ image,
+ </if>
+ <if test="price != null">
+ price,
+ </if>
+ <if test="saleprice != null">
+ saleprice,
+ </if>
+ <if test="rejectreason != null">
+ rejectreason,
+ </if>
+ <if test="rejectcomment != null">
+ rejectcomment,
+ </if>
+ <if test="rejecttime != null">
+ rejecttime,
+ </if>
+ <if test="payer != null">
+ payer,
+ </if>
+ <if test="payedmoney != null">
+ payedmoney,
+ </if>
+ <if test="discount != null">
+ discount,
+ </if>
+ <if test="payee != null">
+ payee,
+ </if>
+ <if test="orderid != null">
+ orderid,
+ </if>
+ <if test="orderno != null">
+ orderno,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="productid != null">
+ #{productid,jdbcType=VARCHAR},
+ </if>
+ <if test="productcode != null">
+ #{productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="productname != null">
+ #{productname,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="color != null">
+ #{color,jdbcType=VARCHAR},
+ </if>
+ <if test="size != null">
+ #{size,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ #{count,jdbcType=INTEGER},
+ </if>
+ <if test="image != null">
+ #{image,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="saleprice != null">
+ #{saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="rejectreason != null">
+ #{rejectreason,jdbcType=VARCHAR},
+ </if>
+ <if test="rejectcomment != null">
+ #{rejectcomment,jdbcType=VARCHAR},
+ </if>
+ <if test="rejecttime != null">
+ #{rejecttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="payer != null">
+ #{payer,jdbcType=VARCHAR},
+ </if>
+ <if test="payedmoney != null">
+ #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="payee != null">
+ #{payee,jdbcType=VARCHAR},
+ </if>
+ <if test="orderid != null">
+ #{orderid,jdbcType=VARCHAR},
+ </if>
+ <if test="orderno != null">
+ #{orderno,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrderActiveProductExample"
+ resultType="java.lang.Long">
+ select count(*) from order_active_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update order_active_product
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.productid != null">
+ productid = #{record.productid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.productcode != null">
+ productcode = #{record.productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.productname != null">
+ productname = #{record.productname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.color != null">
+ color = #{record.color,jdbcType=VARCHAR},
+ </if>
+ <if test="record.size != null">
+ size = #{record.size,jdbcType=VARCHAR},
+ </if>
+ <if test="record.count != null">
+ count = #{record.count,jdbcType=INTEGER},
+ </if>
+ <if test="record.image != null">
+ image = #{record.image,jdbcType=VARCHAR},
+ </if>
+ <if test="record.price != null">
+ price = #{record.price,jdbcType=DECIMAL},
+ </if>
+ <if test="record.saleprice != null">
+ saleprice = #{record.saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="record.rejectreason != null">
+ rejectreason = #{record.rejectreason,jdbcType=VARCHAR},
+ </if>
+ <if test="record.rejectcomment != null">
+ rejectcomment = #{record.rejectcomment,jdbcType=VARCHAR},
+ </if>
+ <if test="record.rejecttime != null">
+ rejecttime = #{record.rejecttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.payer != null">
+ payer = #{record.payer,jdbcType=VARCHAR},
+ </if>
+ <if test="record.payedmoney != null">
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discount != null">
+ discount = #{record.discount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.payee != null">
+ payee = #{record.payee,jdbcType=VARCHAR},
+ </if>
+ <if test="record.orderid != null">
+ orderid = #{record.orderid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.orderno != null">
+ orderno = #{record.orderno,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update order_active_product
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ productid = #{record.productid,jdbcType=VARCHAR},
+ productcode = #{record.productcode,jdbcType=VARCHAR},
+ productname = #{record.productname,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ color = #{record.color,jdbcType=VARCHAR},
+ size = #{record.size,jdbcType=VARCHAR},
+ count = #{record.count,jdbcType=INTEGER},
+ image = #{record.image,jdbcType=VARCHAR},
+ price = #{record.price,jdbcType=DECIMAL},
+ saleprice = #{record.saleprice,jdbcType=DECIMAL},
+ rejectreason = #{record.rejectreason,jdbcType=VARCHAR},
+ rejectcomment = #{record.rejectcomment,jdbcType=VARCHAR},
+ rejecttime = #{record.rejecttime,jdbcType=TIMESTAMP},
+ payer = #{record.payer,jdbcType=VARCHAR},
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ discount = #{record.discount,jdbcType=DECIMAL},
+ payee = #{record.payee,jdbcType=VARCHAR},
+ orderid = #{record.orderid,jdbcType=VARCHAR},
+ orderno = #{record.orderno,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.OrderActiveProduct">
+ update order_active_product
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="productid != null">
+ productid = #{productid,jdbcType=VARCHAR},
+ </if>
+ <if test="productcode != null">
+ productcode = #{productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="productname != null">
+ productname = #{productname,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="color != null">
+ color = #{color,jdbcType=VARCHAR},
+ </if>
+ <if test="size != null">
+ size = #{size,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ count = #{count,jdbcType=INTEGER},
+ </if>
+ <if test="image != null">
+ image = #{image,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ price = #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="saleprice != null">
+ saleprice = #{saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="rejectreason != null">
+ rejectreason = #{rejectreason,jdbcType=VARCHAR},
+ </if>
+ <if test="rejectcomment != null">
+ rejectcomment = #{rejectcomment,jdbcType=VARCHAR},
+ </if>
+ <if test="rejecttime != null">
+ rejecttime = #{rejecttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="payer != null">
+ payer = #{payer,jdbcType=VARCHAR},
+ </if>
+ <if test="payedmoney != null">
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ discount = #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="payee != null">
+ payee = #{payee,jdbcType=VARCHAR},
+ </if>
+ <if test="orderid != null">
+ orderid = #{orderid,jdbcType=VARCHAR},
+ </if>
+ <if test="orderno != null">
+ orderno = #{orderno,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrderActiveProduct">
+ update order_active_product
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ productid = #{productid,jdbcType=VARCHAR},
+ productcode = #{productcode,jdbcType=VARCHAR},
+ productname = #{productname,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ color = #{color,jdbcType=VARCHAR},
+ size = #{size,jdbcType=VARCHAR},
+ count = #{count,jdbcType=INTEGER},
+ image = #{image,jdbcType=VARCHAR},
+ price = #{price,jdbcType=DECIMAL},
+ saleprice = #{saleprice,jdbcType=DECIMAL},
+ rejectreason = #{rejectreason,jdbcType=VARCHAR},
+ rejectcomment = #{rejectcomment,jdbcType=VARCHAR},
+ rejecttime = #{rejecttime,jdbcType=TIMESTAMP},
+ payer = #{payer,jdbcType=VARCHAR},
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ discount = #{discount,jdbcType=DECIMAL},
+ payee = #{payee,jdbcType=VARCHAR},
+ orderid = #{orderid,jdbcType=VARCHAR},
+ orderno = #{orderno,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.java
new file mode 100644
index 0000000..91e936f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.java
@@ -0,0 +1,33 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.entity.OrderHistoryExtend;
+import com.farriver.bwf.data.master.model.OrderHistory;
+import com.farriver.bwf.data.master.model.OrderHistoryExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrderHistoryMapper {
+ long countByExample(OrderHistoryExample example);
+
+ int deleteByExample(OrderHistoryExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrderHistory record);
+
+ int insertSelective(OrderHistory record);
+
+ List<OrderHistory> selectByExample(OrderHistoryExample example);
+
+ List<OrderHistoryExtend> selectOrderHistoryExtendByExample(OrderHistoryExample example);
+
+ OrderHistory selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrderHistory record, @Param("example") OrderHistoryExample example);
+
+ int updateByExample(@Param("record") OrderHistory record, @Param("example") OrderHistoryExample example);
+
+ int updateByPrimaryKeySelective(OrderHistory record);
+
+ int updateByPrimaryKey(OrderHistory record);
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.xml
new file mode 100644
index 0000000..0e36c39
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryMapper.xml
@@ -0,0 +1,862 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrderHistoryMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrderHistory">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="no" jdbcType="VARCHAR" property="no"/>
+ <result column="totalmoney" jdbcType="DECIMAL" property="totalmoney"/>
+ <result column="payedmoney" jdbcType="DECIMAL" property="payedmoney"/>
+ <result column="paymentmethod" jdbcType="INTEGER" property="paymentmethod"/>
+ <result column="discountmoney" jdbcType="DECIMAL" property="discountmoney"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="ordertime" jdbcType="TIMESTAMP" property="ordertime"/>
+ <result column="paytime" jdbcType="TIMESTAMP" property="paytime"/>
+ <result column="sendtime" jdbcType="TIMESTAMP" property="sendtime"/>
+ <result column="receivetime" jdbcType="TIMESTAMP" property="receivetime"/>
+ <result column="commenttime" jdbcType="TIMESTAMP" property="commenttime"/>
+ <result column="completetime" jdbcType="TIMESTAMP" property="completetime"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="sendername" jdbcType="VARCHAR" property="sendername"/>
+ <result column="sendercode" jdbcType="VARCHAR" property="sendercode"/>
+ <result column="sendercontactno" jdbcType="INTEGER" property="sendercontactno"/>
+ <result column="targetaddress" jdbcType="VARCHAR" property="targetaddress"/>
+ <result column="deliveryaddress" jdbcType="VARCHAR" property="deliveryaddress"/>
+ <result column="optimalcoupon" jdbcType="VARCHAR" property="optimalcoupon"/>
+ <result column="logisticscompany" jdbcType="VARCHAR" property="logisticscompany"/>
+ <result column="logisticsno" jdbcType="VARCHAR" property="logisticsno"/>
+ <result column="transportmode" jdbcType="VARCHAR" property="transportmode"/>
+ <result column="boxcount" jdbcType="INTEGER" property="boxcount"/>
+ <result column="boxweight" jdbcType="DECIMAL" property="boxweight"/>
+ <result column="freight" jdbcType="DECIMAL" property="freight"/>
+ <result column="commentcontent" jdbcType="VARCHAR" property="commentcontent"/>
+ <result column="commentlevel" jdbcType="INTEGER" property="commentlevel"/>
+ <result column="receiverid" jdbcType="VARCHAR" property="receiverid"/>
+ <result column="vipuserId" jdbcType="VARCHAR" property="vipuserid"/>
+ <result column="vipname" jdbcType="VARCHAR" property="vipname"/>
+ <result column="vipphone" jdbcType="VARCHAR" property="vipphone"/>
+ <result column="vipdiamondtype" jdbcType="INTEGER" property="vipdiamondtype"/>
+ <result column="viptype" jdbcType="INTEGER" property="viptype"/>
+ <result column="vippicture" jdbcType="VARCHAR" property="vippicture"/>
+ <result column="vipcarddiscountrate" jdbcType="DECIMAL" property="vipcarddiscountrate"/>
+ <result column="type" jdbcType="INTEGER" property="type"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , no, totalmoney, payedmoney, paymentmethod, discountmoney, status, ordertime,
+ paytime, sendtime, receivetime, commenttime, completetime, isdeleted, remark, createtime,
+ updatetime, sendername, sendercode, sendercontactno, targetaddress, deliveryaddress,
+ optimalcoupon, logisticscompany, logisticsno, transportmode, boxcount, boxweight,
+ freight, commentcontent, commentlevel, receiverid, vipuserId, vipname, vipphone,
+ vipdiamondtype, viptype, vippicture, vipcarddiscountrate, type
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrderHistoryExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from order_history
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from order_history
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from order_history
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrderHistoryExample">
+ delete from order_history
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrderHistory">
+ insert into order_history (id, no, totalmoney,
+ payedmoney, paymentmethod, discountmoney,
+ status, ordertime, paytime,
+ sendtime, receivetime, commenttime,
+ completetime, isdeleted, remark,
+ createtime, updatetime, sendername,
+ sendercode, sendercontactno, targetaddress,
+ deliveryaddress, optimalcoupon, logisticscompany,
+ logisticsno, transportmode, boxcount,
+ boxweight, freight, commentcontent,
+ commentlevel, receiverid, vipuserId,
+ vipname, vipphone, vipdiamondtype,
+ viptype, vippicture, vipcarddiscountrate,
+ type)
+ values (#{id,jdbcType=VARCHAR}, #{no,jdbcType=VARCHAR}, #{totalmoney,jdbcType=DECIMAL},
+ #{payedmoney,jdbcType=DECIMAL}, #{paymentmethod,jdbcType=INTEGER}, #{discountmoney,jdbcType=DECIMAL},
+ #{status,jdbcType=INTEGER}, #{ordertime,jdbcType=TIMESTAMP}, #{paytime,jdbcType=TIMESTAMP},
+ #{sendtime,jdbcType=TIMESTAMP}, #{receivetime,jdbcType=TIMESTAMP}, #{commenttime,jdbcType=TIMESTAMP},
+ #{completetime,jdbcType=TIMESTAMP}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{sendername,jdbcType=VARCHAR},
+ #{sendercode,jdbcType=VARCHAR}, #{sendercontactno,jdbcType=INTEGER}, #{targetaddress,jdbcType=VARCHAR},
+ #{deliveryaddress,jdbcType=VARCHAR}, #{optimalcoupon,jdbcType=VARCHAR},
+ #{logisticscompany,jdbcType=VARCHAR},
+ #{logisticsno,jdbcType=VARCHAR}, #{transportmode,jdbcType=VARCHAR}, #{boxcount,jdbcType=INTEGER},
+ #{boxweight,jdbcType=DECIMAL}, #{freight,jdbcType=DECIMAL}, #{commentcontent,jdbcType=VARCHAR},
+ #{commentlevel,jdbcType=INTEGER}, #{receiverid,jdbcType=VARCHAR}, #{vipuserid,jdbcType=VARCHAR},
+ #{vipname,jdbcType=VARCHAR}, #{vipphone,jdbcType=VARCHAR}, #{vipdiamondtype,jdbcType=INTEGER},
+ #{viptype,jdbcType=INTEGER}, #{vippicture,jdbcType=VARCHAR}, #{vipcarddiscountrate,jdbcType=DECIMAL},
+ #{type,jdbcType=INTEGER})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrderHistory">
+ insert into order_history
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="no != null">
+ no,
+ </if>
+ <if test="totalmoney != null">
+ totalmoney,
+ </if>
+ <if test="payedmoney != null">
+ payedmoney,
+ </if>
+ <if test="paymentmethod != null">
+ paymentmethod,
+ </if>
+ <if test="discountmoney != null">
+ discountmoney,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="ordertime != null">
+ ordertime,
+ </if>
+ <if test="paytime != null">
+ paytime,
+ </if>
+ <if test="sendtime != null">
+ sendtime,
+ </if>
+ <if test="receivetime != null">
+ receivetime,
+ </if>
+ <if test="commenttime != null">
+ commenttime,
+ </if>
+ <if test="completetime != null">
+ completetime,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="sendername != null">
+ sendername,
+ </if>
+ <if test="sendercode != null">
+ sendercode,
+ </if>
+ <if test="sendercontactno != null">
+ sendercontactno,
+ </if>
+ <if test="targetaddress != null">
+ targetaddress,
+ </if>
+ <if test="deliveryaddress != null">
+ deliveryaddress,
+ </if>
+ <if test="optimalcoupon != null">
+ optimalcoupon,
+ </if>
+ <if test="logisticscompany != null">
+ logisticscompany,
+ </if>
+ <if test="logisticsno != null">
+ logisticsno,
+ </if>
+ <if test="transportmode != null">
+ transportmode,
+ </if>
+ <if test="boxcount != null">
+ boxcount,
+ </if>
+ <if test="boxweight != null">
+ boxweight,
+ </if>
+ <if test="freight != null">
+ freight,
+ </if>
+ <if test="commentcontent != null">
+ commentcontent,
+ </if>
+ <if test="commentlevel != null">
+ commentlevel,
+ </if>
+ <if test="receiverid != null">
+ receiverid,
+ </if>
+ <if test="vipuserid != null">
+ vipuserId,
+ </if>
+ <if test="vipname != null">
+ vipname,
+ </if>
+ <if test="vipphone != null">
+ vipphone,
+ </if>
+ <if test="vipdiamondtype != null">
+ vipdiamondtype,
+ </if>
+ <if test="viptype != null">
+ viptype,
+ </if>
+ <if test="vippicture != null">
+ vippicture,
+ </if>
+ <if test="vipcarddiscountrate != null">
+ vipcarddiscountrate,
+ </if>
+ <if test="type != null">
+ type,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="no != null">
+ #{no,jdbcType=VARCHAR},
+ </if>
+ <if test="totalmoney != null">
+ #{totalmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="payedmoney != null">
+ #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="paymentmethod != null">
+ #{paymentmethod,jdbcType=INTEGER},
+ </if>
+ <if test="discountmoney != null">
+ #{discountmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="ordertime != null">
+ #{ordertime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="paytime != null">
+ #{paytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendtime != null">
+ #{sendtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="receivetime != null">
+ #{receivetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="commenttime != null">
+ #{commenttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="completetime != null">
+ #{completetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendername != null">
+ #{sendername,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercode != null">
+ #{sendercode,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercontactno != null">
+ #{sendercontactno,jdbcType=INTEGER},
+ </if>
+ <if test="targetaddress != null">
+ #{targetaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="deliveryaddress != null">
+ #{deliveryaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="optimalcoupon != null">
+ #{optimalcoupon,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticscompany != null">
+ #{logisticscompany,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticsno != null">
+ #{logisticsno,jdbcType=VARCHAR},
+ </if>
+ <if test="transportmode != null">
+ #{transportmode,jdbcType=VARCHAR},
+ </if>
+ <if test="boxcount != null">
+ #{boxcount,jdbcType=INTEGER},
+ </if>
+ <if test="boxweight != null">
+ #{boxweight,jdbcType=DECIMAL},
+ </if>
+ <if test="freight != null">
+ #{freight,jdbcType=DECIMAL},
+ </if>
+ <if test="commentcontent != null">
+ #{commentcontent,jdbcType=VARCHAR},
+ </if>
+ <if test="commentlevel != null">
+ #{commentlevel,jdbcType=INTEGER},
+ </if>
+ <if test="receiverid != null">
+ #{receiverid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipuserid != null">
+ #{vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipname != null">
+ #{vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="vipphone != null">
+ #{vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="vipdiamondtype != null">
+ #{vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="viptype != null">
+ #{viptype,jdbcType=INTEGER},
+ </if>
+ <if test="vippicture != null">
+ #{vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="vipcarddiscountrate != null">
+ #{vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="type != null">
+ #{type,jdbcType=INTEGER},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrderHistoryExample"
+ resultType="java.lang.Long">
+ select count(*) from order_history
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update order_history
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.no != null">
+ no = #{record.no,jdbcType=VARCHAR},
+ </if>
+ <if test="record.totalmoney != null">
+ totalmoney = #{record.totalmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.payedmoney != null">
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.paymentmethod != null">
+ paymentmethod = #{record.paymentmethod,jdbcType=INTEGER},
+ </if>
+ <if test="record.discountmoney != null">
+ discountmoney = #{record.discountmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.ordertime != null">
+ ordertime = #{record.ordertime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.paytime != null">
+ paytime = #{record.paytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.sendtime != null">
+ sendtime = #{record.sendtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.receivetime != null">
+ receivetime = #{record.receivetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.commenttime != null">
+ commenttime = #{record.commenttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.completetime != null">
+ completetime = #{record.completetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.sendername != null">
+ sendername = #{record.sendername,jdbcType=VARCHAR},
+ </if>
+ <if test="record.sendercode != null">
+ sendercode = #{record.sendercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.sendercontactno != null">
+ sendercontactno = #{record.sendercontactno,jdbcType=INTEGER},
+ </if>
+ <if test="record.targetaddress != null">
+ targetaddress = #{record.targetaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="record.deliveryaddress != null">
+ deliveryaddress = #{record.deliveryaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="record.optimalcoupon != null">
+ optimalcoupon = #{record.optimalcoupon,jdbcType=VARCHAR},
+ </if>
+ <if test="record.logisticscompany != null">
+ logisticscompany = #{record.logisticscompany,jdbcType=VARCHAR},
+ </if>
+ <if test="record.logisticsno != null">
+ logisticsno = #{record.logisticsno,jdbcType=VARCHAR},
+ </if>
+ <if test="record.transportmode != null">
+ transportmode = #{record.transportmode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.boxcount != null">
+ boxcount = #{record.boxcount,jdbcType=INTEGER},
+ </if>
+ <if test="record.boxweight != null">
+ boxweight = #{record.boxweight,jdbcType=DECIMAL},
+ </if>
+ <if test="record.freight != null">
+ freight = #{record.freight,jdbcType=DECIMAL},
+ </if>
+ <if test="record.commentcontent != null">
+ commentcontent = #{record.commentcontent,jdbcType=VARCHAR},
+ </if>
+ <if test="record.commentlevel != null">
+ commentlevel = #{record.commentlevel,jdbcType=INTEGER},
+ </if>
+ <if test="record.receiverid != null">
+ receiverid = #{record.receiverid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipuserid != null">
+ vipuserId = #{record.vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipname != null">
+ vipname = #{record.vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipphone != null">
+ vipphone = #{record.vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipdiamondtype != null">
+ vipdiamondtype = #{record.vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="record.viptype != null">
+ viptype = #{record.viptype,jdbcType=INTEGER},
+ </if>
+ <if test="record.vippicture != null">
+ vippicture = #{record.vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipcarddiscountrate != null">
+ vipcarddiscountrate = #{record.vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="record.type != null">
+ type = #{record.type,jdbcType=INTEGER},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update order_history
+ set id = #{record.id,jdbcType=VARCHAR},
+ no = #{record.no,jdbcType=VARCHAR},
+ totalmoney = #{record.totalmoney,jdbcType=DECIMAL},
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ paymentmethod = #{record.paymentmethod,jdbcType=INTEGER},
+ discountmoney = #{record.discountmoney,jdbcType=DECIMAL},
+ status = #{record.status,jdbcType=INTEGER},
+ ordertime = #{record.ordertime,jdbcType=TIMESTAMP},
+ paytime = #{record.paytime,jdbcType=TIMESTAMP},
+ sendtime = #{record.sendtime,jdbcType=TIMESTAMP},
+ receivetime = #{record.receivetime,jdbcType=TIMESTAMP},
+ commenttime = #{record.commenttime,jdbcType=TIMESTAMP},
+ completetime = #{record.completetime,jdbcType=TIMESTAMP},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ sendername = #{record.sendername,jdbcType=VARCHAR},
+ sendercode = #{record.sendercode,jdbcType=VARCHAR},
+ sendercontactno = #{record.sendercontactno,jdbcType=INTEGER},
+ targetaddress = #{record.targetaddress,jdbcType=VARCHAR},
+ deliveryaddress = #{record.deliveryaddress,jdbcType=VARCHAR},
+ optimalcoupon = #{record.optimalcoupon,jdbcType=VARCHAR},
+ logisticscompany = #{record.logisticscompany,jdbcType=VARCHAR},
+ logisticsno = #{record.logisticsno,jdbcType=VARCHAR},
+ transportmode = #{record.transportmode,jdbcType=VARCHAR},
+ boxcount = #{record.boxcount,jdbcType=INTEGER},
+ boxweight = #{record.boxweight,jdbcType=DECIMAL},
+ freight = #{record.freight,jdbcType=DECIMAL},
+ commentcontent = #{record.commentcontent,jdbcType=VARCHAR},
+ commentlevel = #{record.commentlevel,jdbcType=INTEGER},
+ receiverid = #{record.receiverid,jdbcType=VARCHAR},
+ vipuserId = #{record.vipuserid,jdbcType=VARCHAR},
+ vipname = #{record.vipname,jdbcType=VARCHAR},
+ vipphone = #{record.vipphone,jdbcType=VARCHAR},
+ vipdiamondtype = #{record.vipdiamondtype,jdbcType=INTEGER},
+ viptype = #{record.viptype,jdbcType=INTEGER},
+ vippicture = #{record.vippicture,jdbcType=VARCHAR},
+ vipcarddiscountrate = #{record.vipcarddiscountrate,jdbcType=DECIMAL},
+ type = #{record.type,jdbcType=INTEGER}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrderHistory">
+ update order_history
+ <set>
+ <if test="no != null">
+ no = #{no,jdbcType=VARCHAR},
+ </if>
+ <if test="totalmoney != null">
+ totalmoney = #{totalmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="payedmoney != null">
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="paymentmethod != null">
+ paymentmethod = #{paymentmethod,jdbcType=INTEGER},
+ </if>
+ <if test="discountmoney != null">
+ discountmoney = #{discountmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="ordertime != null">
+ ordertime = #{ordertime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="paytime != null">
+ paytime = #{paytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendtime != null">
+ sendtime = #{sendtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="receivetime != null">
+ receivetime = #{receivetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="commenttime != null">
+ commenttime = #{commenttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="completetime != null">
+ completetime = #{completetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="sendername != null">
+ sendername = #{sendername,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercode != null">
+ sendercode = #{sendercode,jdbcType=VARCHAR},
+ </if>
+ <if test="sendercontactno != null">
+ sendercontactno = #{sendercontactno,jdbcType=INTEGER},
+ </if>
+ <if test="targetaddress != null">
+ targetaddress = #{targetaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="deliveryaddress != null">
+ deliveryaddress = #{deliveryaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="optimalcoupon != null">
+ optimalcoupon = #{optimalcoupon,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticscompany != null">
+ logisticscompany = #{logisticscompany,jdbcType=VARCHAR},
+ </if>
+ <if test="logisticsno != null">
+ logisticsno = #{logisticsno,jdbcType=VARCHAR},
+ </if>
+ <if test="transportmode != null">
+ transportmode = #{transportmode,jdbcType=VARCHAR},
+ </if>
+ <if test="boxcount != null">
+ boxcount = #{boxcount,jdbcType=INTEGER},
+ </if>
+ <if test="boxweight != null">
+ boxweight = #{boxweight,jdbcType=DECIMAL},
+ </if>
+ <if test="freight != null">
+ freight = #{freight,jdbcType=DECIMAL},
+ </if>
+ <if test="commentcontent != null">
+ commentcontent = #{commentcontent,jdbcType=VARCHAR},
+ </if>
+ <if test="commentlevel != null">
+ commentlevel = #{commentlevel,jdbcType=INTEGER},
+ </if>
+ <if test="receiverid != null">
+ receiverid = #{receiverid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipuserid != null">
+ vipuserId = #{vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipname != null">
+ vipname = #{vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="vipphone != null">
+ vipphone = #{vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="vipdiamondtype != null">
+ vipdiamondtype = #{vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="viptype != null">
+ viptype = #{viptype,jdbcType=INTEGER},
+ </if>
+ <if test="vippicture != null">
+ vippicture = #{vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="vipcarddiscountrate != null">
+ vipcarddiscountrate = #{vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="type != null">
+ type = #{type,jdbcType=INTEGER},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrderHistory">
+ update order_history
+ set no = #{no,jdbcType=VARCHAR},
+ totalmoney = #{totalmoney,jdbcType=DECIMAL},
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ paymentmethod = #{paymentmethod,jdbcType=INTEGER},
+ discountmoney = #{discountmoney,jdbcType=DECIMAL},
+ status = #{status,jdbcType=INTEGER},
+ ordertime = #{ordertime,jdbcType=TIMESTAMP},
+ paytime = #{paytime,jdbcType=TIMESTAMP},
+ sendtime = #{sendtime,jdbcType=TIMESTAMP},
+ receivetime = #{receivetime,jdbcType=TIMESTAMP},
+ commenttime = #{commenttime,jdbcType=TIMESTAMP},
+ completetime = #{completetime,jdbcType=TIMESTAMP},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ sendername = #{sendername,jdbcType=VARCHAR},
+ sendercode = #{sendercode,jdbcType=VARCHAR},
+ sendercontactno = #{sendercontactno,jdbcType=INTEGER},
+ targetaddress = #{targetaddress,jdbcType=VARCHAR},
+ deliveryaddress = #{deliveryaddress,jdbcType=VARCHAR},
+ optimalcoupon = #{optimalcoupon,jdbcType=VARCHAR},
+ logisticscompany = #{logisticscompany,jdbcType=VARCHAR},
+ logisticsno = #{logisticsno,jdbcType=VARCHAR},
+ transportmode = #{transportmode,jdbcType=VARCHAR},
+ boxcount = #{boxcount,jdbcType=INTEGER},
+ boxweight = #{boxweight,jdbcType=DECIMAL},
+ freight = #{freight,jdbcType=DECIMAL},
+ commentcontent = #{commentcontent,jdbcType=VARCHAR},
+ commentlevel = #{commentlevel,jdbcType=INTEGER},
+ receiverid = #{receiverid,jdbcType=VARCHAR},
+ vipuserId = #{vipuserid,jdbcType=VARCHAR},
+ vipname = #{vipname,jdbcType=VARCHAR},
+ vipphone = #{vipphone,jdbcType=VARCHAR},
+ vipdiamondtype = #{vipdiamondtype,jdbcType=INTEGER},
+ viptype = #{viptype,jdbcType=INTEGER},
+ vippicture = #{vippicture,jdbcType=VARCHAR},
+ vipcarddiscountrate = #{vipcarddiscountrate,jdbcType=DECIMAL},
+ type = #{type,jdbcType=INTEGER}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <resultMap extends="BaseResultMap" id="OrderHistoryExtendResultMap"
+ type="com.farriver.bwf.data.master.entity.OrderHistoryExtend">
+ <collection ofType="com.farriver.bwf.data.master.model.OrderHistoryProduct" property="products">
+ <id column="p_id" jdbcType="VARCHAR" property="id"/>
+ <result column="p_isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="p_remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="p_createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="p_updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="p_productid" jdbcType="VARCHAR" property="productid"/>
+ <result column="p_productcode" jdbcType="VARCHAR" property="productcode"/>
+ <result column="p_productname" jdbcType="VARCHAR" property="productname"/>
+ <result column="p_status" jdbcType="INTEGER" property="status"/>
+ <result column="p_color" jdbcType="VARCHAR" property="color"/>
+ <result column="p_size" jdbcType="VARCHAR" property="size"/>
+ <result column="p_count" jdbcType="INTEGER" property="count"/>
+ <result column="p_image" jdbcType="VARCHAR" property="image"/>
+ <result column="p_price" jdbcType="DECIMAL" property="price"/>
+ <result column="p_saleprice" jdbcType="DECIMAL" property="saleprice"/>
+ <result column="p_rejectreason" jdbcType="VARCHAR" property="rejectreason"/>
+ <result column="p_rejectcomment" jdbcType="VARCHAR" property="rejectcomment"/>
+ <result column="p_rejecttime" jdbcType="TIMESTAMP" property="rejecttime"/>
+ <result column="p_payer" jdbcType="VARCHAR" property="payer"/>
+ <result column="p_payedmoney" jdbcType="DECIMAL" property="payedmoney"/>
+ <result column="p_discount" jdbcType="DECIMAL" property="discount"/>
+ <result column="p_payee" jdbcType="VARCHAR" property="payee"/>
+ <result column="p_orderid" jdbcType="VARCHAR" property="orderid"/>
+ <result column="p_orderno" jdbcType="VARCHAR" property="orderno"/>
+ </collection>
+ </resultMap>
+ <select id="selectOrderHistoryExtendByExample"
+ parameterType="com.farriver.bwf.data.master.model.OrderHistoryExample"
+ resultMap="OrderHistoryExtendResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ o.*,
+ p.id AS p_id,
+ p.isdeleted AS p_isdeleted,
+ p.remark AS p_remark,
+ p.createtime AS p_createtime,
+ p.updatetime AS p_updatetime,
+ p.productid AS p_productid,
+ p.productcode AS p_productcode,
+ p.productname AS p_productname,
+ p.status AS p_status,
+ p.color AS p_color,
+ p.size AS p_size,
+ p.count AS p_count,
+ p.image AS p_image,
+ p.price AS p_price,
+ p.saleprice AS p_saleprice,
+ p.rejectreason AS p_rejectreason,
+ p.rejectcomment AS p_rejectcomment,
+ p.rejecttime AS p_rejecttime,
+ p.payer AS p_payer,
+ p.payedmoney AS p_payedmoney,
+ p.discount AS p_discount,
+ p.payee AS p_payee,
+ p.orderid AS p_orderid,
+ p.orderno AS p_orderno
+ FROM (
+ SELECT * FROM order_history
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ ) o
+ LEFT JOIN order_history_product p ON o.id = p.orderid
+ </select>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.java
new file mode 100644
index 0000000..3a08bfd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrderHistoryProduct;
+import com.farriver.bwf.data.master.model.OrderHistoryProductExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrderHistoryProductMapper {
+ long countByExample(OrderHistoryProductExample example);
+
+ int deleteByExample(OrderHistoryProductExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrderHistoryProduct record);
+
+ int insertSelective(OrderHistoryProduct record);
+
+ List<OrderHistoryProduct> selectByExample(OrderHistoryProductExample example);
+
+ OrderHistoryProduct selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrderHistoryProduct record, @Param("example") OrderHistoryProductExample example);
+
+ int updateByExample(@Param("record") OrderHistoryProduct record, @Param("example") OrderHistoryProductExample example);
+
+ int updateByPrimaryKeySelective(OrderHistoryProduct record);
+
+ int updateByPrimaryKey(OrderHistoryProduct record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.xml
new file mode 100644
index 0000000..335903f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderHistoryProductMapper.xml
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrderHistoryProductMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrderHistoryProduct">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="productid" jdbcType="VARCHAR" property="productid"/>
+ <result column="productcode" jdbcType="VARCHAR" property="productcode"/>
+ <result column="productname" jdbcType="VARCHAR" property="productname"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="color" jdbcType="VARCHAR" property="color"/>
+ <result column="size" jdbcType="VARCHAR" property="size"/>
+ <result column="count" jdbcType="INTEGER" property="count"/>
+ <result column="image" jdbcType="VARCHAR" property="image"/>
+ <result column="price" jdbcType="DECIMAL" property="price"/>
+ <result column="saleprice" jdbcType="DECIMAL" property="saleprice"/>
+ <result column="rejectreason" jdbcType="VARCHAR" property="rejectreason"/>
+ <result column="rejectcomment" jdbcType="VARCHAR" property="rejectcomment"/>
+ <result column="rejecttime" jdbcType="TIMESTAMP" property="rejecttime"/>
+ <result column="payer" jdbcType="VARCHAR" property="payer"/>
+ <result column="payedmoney" jdbcType="DECIMAL" property="payedmoney"/>
+ <result column="discount" jdbcType="DECIMAL" property="discount"/>
+ <result column="payee" jdbcType="VARCHAR" property="payee"/>
+ <result column="orderno" jdbcType="VARCHAR" property="orderno"/>
+ <result column="orderid" jdbcType="VARCHAR" property="orderid"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , isdeleted, remark, createtime, updatetime, productid, productcode, productname,
+ status, color, size, count, image, price, saleprice, rejectreason, rejectcomment,
+ rejecttime, payer, payedmoney, discount, payee, orderno, orderid
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrderHistoryProductExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from order_history_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from order_history_product
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from order_history_product
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrderHistoryProductExample">
+ delete from order_history_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrderHistoryProduct">
+ insert into order_history_product (id, isdeleted, remark,
+ createtime, updatetime, productid,
+ productcode, productname, status,
+ color, size, count,
+ image, price, saleprice,
+ rejectreason, rejectcomment, rejecttime,
+ payer, payedmoney, discount,
+ payee, orderno, orderid)
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{productid,jdbcType=VARCHAR},
+ #{productcode,jdbcType=VARCHAR}, #{productname,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{color,jdbcType=VARCHAR}, #{size,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER},
+ #{image,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, #{saleprice,jdbcType=DECIMAL},
+ #{rejectreason,jdbcType=VARCHAR}, #{rejectcomment,jdbcType=VARCHAR}, #{rejecttime,jdbcType=TIMESTAMP},
+ #{payer,jdbcType=VARCHAR}, #{payedmoney,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL},
+ #{payee,jdbcType=VARCHAR}, #{orderno,jdbcType=VARCHAR}, #{orderid,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrderHistoryProduct">
+ insert into order_history_product
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="productid != null">
+ productid,
+ </if>
+ <if test="productcode != null">
+ productcode,
+ </if>
+ <if test="productname != null">
+ productname,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="color != null">
+ color,
+ </if>
+ <if test="size != null">
+ size,
+ </if>
+ <if test="count != null">
+ count,
+ </if>
+ <if test="image != null">
+ image,
+ </if>
+ <if test="price != null">
+ price,
+ </if>
+ <if test="saleprice != null">
+ saleprice,
+ </if>
+ <if test="rejectreason != null">
+ rejectreason,
+ </if>
+ <if test="rejectcomment != null">
+ rejectcomment,
+ </if>
+ <if test="rejecttime != null">
+ rejecttime,
+ </if>
+ <if test="payer != null">
+ payer,
+ </if>
+ <if test="payedmoney != null">
+ payedmoney,
+ </if>
+ <if test="discount != null">
+ discount,
+ </if>
+ <if test="payee != null">
+ payee,
+ </if>
+ <if test="orderno != null">
+ orderno,
+ </if>
+ <if test="orderid != null">
+ orderid,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="productid != null">
+ #{productid,jdbcType=VARCHAR},
+ </if>
+ <if test="productcode != null">
+ #{productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="productname != null">
+ #{productname,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="color != null">
+ #{color,jdbcType=VARCHAR},
+ </if>
+ <if test="size != null">
+ #{size,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ #{count,jdbcType=INTEGER},
+ </if>
+ <if test="image != null">
+ #{image,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="saleprice != null">
+ #{saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="rejectreason != null">
+ #{rejectreason,jdbcType=VARCHAR},
+ </if>
+ <if test="rejectcomment != null">
+ #{rejectcomment,jdbcType=VARCHAR},
+ </if>
+ <if test="rejecttime != null">
+ #{rejecttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="payer != null">
+ #{payer,jdbcType=VARCHAR},
+ </if>
+ <if test="payedmoney != null">
+ #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="payee != null">
+ #{payee,jdbcType=VARCHAR},
+ </if>
+ <if test="orderno != null">
+ #{orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="orderid != null">
+ #{orderid,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrderHistoryProductExample"
+ resultType="java.lang.Long">
+ select count(*) from order_history_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update order_history_product
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.productid != null">
+ productid = #{record.productid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.productcode != null">
+ productcode = #{record.productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.productname != null">
+ productname = #{record.productname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.color != null">
+ color = #{record.color,jdbcType=VARCHAR},
+ </if>
+ <if test="record.size != null">
+ size = #{record.size,jdbcType=VARCHAR},
+ </if>
+ <if test="record.count != null">
+ count = #{record.count,jdbcType=INTEGER},
+ </if>
+ <if test="record.image != null">
+ image = #{record.image,jdbcType=VARCHAR},
+ </if>
+ <if test="record.price != null">
+ price = #{record.price,jdbcType=DECIMAL},
+ </if>
+ <if test="record.saleprice != null">
+ saleprice = #{record.saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="record.rejectreason != null">
+ rejectreason = #{record.rejectreason,jdbcType=VARCHAR},
+ </if>
+ <if test="record.rejectcomment != null">
+ rejectcomment = #{record.rejectcomment,jdbcType=VARCHAR},
+ </if>
+ <if test="record.rejecttime != null">
+ rejecttime = #{record.rejecttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.payer != null">
+ payer = #{record.payer,jdbcType=VARCHAR},
+ </if>
+ <if test="record.payedmoney != null">
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discount != null">
+ discount = #{record.discount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.payee != null">
+ payee = #{record.payee,jdbcType=VARCHAR},
+ </if>
+ <if test="record.orderno != null">
+ orderno = #{record.orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="record.orderid != null">
+ orderid = #{record.orderid,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update order_history_product
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ productid = #{record.productid,jdbcType=VARCHAR},
+ productcode = #{record.productcode,jdbcType=VARCHAR},
+ productname = #{record.productname,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ color = #{record.color,jdbcType=VARCHAR},
+ size = #{record.size,jdbcType=VARCHAR},
+ count = #{record.count,jdbcType=INTEGER},
+ image = #{record.image,jdbcType=VARCHAR},
+ price = #{record.price,jdbcType=DECIMAL},
+ saleprice = #{record.saleprice,jdbcType=DECIMAL},
+ rejectreason = #{record.rejectreason,jdbcType=VARCHAR},
+ rejectcomment = #{record.rejectcomment,jdbcType=VARCHAR},
+ rejecttime = #{record.rejecttime,jdbcType=TIMESTAMP},
+ payer = #{record.payer,jdbcType=VARCHAR},
+ payedmoney = #{record.payedmoney,jdbcType=DECIMAL},
+ discount = #{record.discount,jdbcType=DECIMAL},
+ payee = #{record.payee,jdbcType=VARCHAR},
+ orderno = #{record.orderno,jdbcType=VARCHAR},
+ orderid = #{record.orderid,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.OrderHistoryProduct">
+ update order_history_product
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="productid != null">
+ productid = #{productid,jdbcType=VARCHAR},
+ </if>
+ <if test="productcode != null">
+ productcode = #{productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="productname != null">
+ productname = #{productname,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="color != null">
+ color = #{color,jdbcType=VARCHAR},
+ </if>
+ <if test="size != null">
+ size = #{size,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ count = #{count,jdbcType=INTEGER},
+ </if>
+ <if test="image != null">
+ image = #{image,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ price = #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="saleprice != null">
+ saleprice = #{saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="rejectreason != null">
+ rejectreason = #{rejectreason,jdbcType=VARCHAR},
+ </if>
+ <if test="rejectcomment != null">
+ rejectcomment = #{rejectcomment,jdbcType=VARCHAR},
+ </if>
+ <if test="rejecttime != null">
+ rejecttime = #{rejecttime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="payer != null">
+ payer = #{payer,jdbcType=VARCHAR},
+ </if>
+ <if test="payedmoney != null">
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ discount = #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="payee != null">
+ payee = #{payee,jdbcType=VARCHAR},
+ </if>
+ <if test="orderno != null">
+ orderno = #{orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="orderid != null">
+ orderid = #{orderid,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrderHistoryProduct">
+ update order_history_product
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ productid = #{productid,jdbcType=VARCHAR},
+ productcode = #{productcode,jdbcType=VARCHAR},
+ productname = #{productname,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ color = #{color,jdbcType=VARCHAR},
+ size = #{size,jdbcType=VARCHAR},
+ count = #{count,jdbcType=INTEGER},
+ image = #{image,jdbcType=VARCHAR},
+ price = #{price,jdbcType=DECIMAL},
+ saleprice = #{saleprice,jdbcType=DECIMAL},
+ rejectreason = #{rejectreason,jdbcType=VARCHAR},
+ rejectcomment = #{rejectcomment,jdbcType=VARCHAR},
+ rejecttime = #{rejecttime,jdbcType=TIMESTAMP},
+ payer = #{payer,jdbcType=VARCHAR},
+ payedmoney = #{payedmoney,jdbcType=DECIMAL},
+ discount = #{discount,jdbcType=DECIMAL},
+ payee = #{payee,jdbcType=VARCHAR},
+ orderno = #{orderno,jdbcType=VARCHAR},
+ orderid = #{orderid,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.java
new file mode 100644
index 0000000..a0b81b4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrderReceiver;
+import com.farriver.bwf.data.master.model.OrderReceiverExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrderReceiverMapper {
+ long countByExample(OrderReceiverExample example);
+
+ int deleteByExample(OrderReceiverExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrderReceiver record);
+
+ int insertSelective(OrderReceiver record);
+
+ List<OrderReceiver> selectByExample(OrderReceiverExample example);
+
+ OrderReceiver selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrderReceiver record, @Param("example") OrderReceiverExample example);
+
+ int updateByExample(@Param("record") OrderReceiver record, @Param("example") OrderReceiverExample example);
+
+ int updateByPrimaryKeySelective(OrderReceiver record);
+
+ int updateByPrimaryKey(OrderReceiver record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.xml
new file mode 100644
index 0000000..54b52cc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrderReceiverMapper.xml
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrderReceiverMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrderReceiver">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="userid" jdbcType="VARCHAR" property="userid" />
+ <result column="code" jdbcType="VARCHAR" property="code" />
+ <result column="name" jdbcType="VARCHAR" property="name" />
+ <result column="contactno" jdbcType="VARCHAR" property="contactno" />
+ <result column="country" jdbcType="VARCHAR" property="country" />
+ <result column="province" jdbcType="VARCHAR" property="province" />
+ <result column="city" jdbcType="VARCHAR" property="city" />
+ <result column="region" jdbcType="VARCHAR" property="region" />
+ <result column="receiveaddress" jdbcType="VARCHAR" property="receiveaddress" />
+ <result column="isoftenused" jdbcType="VARCHAR" property="isoftenused" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, userid, code, name, contactno, country, province, city, region, receiveaddress,
+ isoftenused, isdeleted, updatetime, createtime, remark
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrderReceiverExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from order_receiver
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from order_receiver
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from order_receiver
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrderReceiverExample">
+ delete from order_receiver
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrderReceiver">
+ insert into order_receiver (id, userid, code,
+ name, contactno, country,
+ province, city, region,
+ receiveaddress, isoftenused, isdeleted,
+ updatetime, createtime, remark
+ )
+ values (#{id,jdbcType=VARCHAR}, #{userid,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
+ #{name,jdbcType=VARCHAR}, #{contactno,jdbcType=VARCHAR}, #{country,jdbcType=VARCHAR},
+ #{province,jdbcType=VARCHAR}, #{city,jdbcType=VARCHAR}, #{region,jdbcType=VARCHAR},
+ #{receiveaddress,jdbcType=VARCHAR}, #{isoftenused,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT},
+ #{updatetime,jdbcType=TIMESTAMP}, #{createtime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrderReceiver">
+ insert into order_receiver
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="userid != null">
+ userid,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="contactno != null">
+ contactno,
+ </if>
+ <if test="country != null">
+ country,
+ </if>
+ <if test="province != null">
+ province,
+ </if>
+ <if test="city != null">
+ city,
+ </if>
+ <if test="region != null">
+ region,
+ </if>
+ <if test="receiveaddress != null">
+ receiveaddress,
+ </if>
+ <if test="isoftenused != null">
+ isoftenused,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="userid != null">
+ #{userid,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="contactno != null">
+ #{contactno,jdbcType=VARCHAR},
+ </if>
+ <if test="country != null">
+ #{country,jdbcType=VARCHAR},
+ </if>
+ <if test="province != null">
+ #{province,jdbcType=VARCHAR},
+ </if>
+ <if test="city != null">
+ #{city,jdbcType=VARCHAR},
+ </if>
+ <if test="region != null">
+ #{region,jdbcType=VARCHAR},
+ </if>
+ <if test="receiveaddress != null">
+ #{receiveaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="isoftenused != null">
+ #{isoftenused,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrderReceiverExample" resultType="java.lang.Long">
+ select count(*) from order_receiver
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update order_receiver
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.userid != null">
+ userid = #{record.userid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.contactno != null">
+ contactno = #{record.contactno,jdbcType=VARCHAR},
+ </if>
+ <if test="record.country != null">
+ country = #{record.country,jdbcType=VARCHAR},
+ </if>
+ <if test="record.province != null">
+ province = #{record.province,jdbcType=VARCHAR},
+ </if>
+ <if test="record.city != null">
+ city = #{record.city,jdbcType=VARCHAR},
+ </if>
+ <if test="record.region != null">
+ region = #{record.region,jdbcType=VARCHAR},
+ </if>
+ <if test="record.receiveaddress != null">
+ receiveaddress = #{record.receiveaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isoftenused != null">
+ isoftenused = #{record.isoftenused,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update order_receiver
+ set id = #{record.id,jdbcType=VARCHAR},
+ userid = #{record.userid,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ contactno = #{record.contactno,jdbcType=VARCHAR},
+ country = #{record.country,jdbcType=VARCHAR},
+ province = #{record.province,jdbcType=VARCHAR},
+ city = #{record.city,jdbcType=VARCHAR},
+ region = #{record.region,jdbcType=VARCHAR},
+ receiveaddress = #{record.receiveaddress,jdbcType=VARCHAR},
+ isoftenused = #{record.isoftenused,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ remark = #{record.remark,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrderReceiver">
+ update order_receiver
+ <set>
+ <if test="userid != null">
+ userid = #{userid,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="contactno != null">
+ contactno = #{contactno,jdbcType=VARCHAR},
+ </if>
+ <if test="country != null">
+ country = #{country,jdbcType=VARCHAR},
+ </if>
+ <if test="province != null">
+ province = #{province,jdbcType=VARCHAR},
+ </if>
+ <if test="city != null">
+ city = #{city,jdbcType=VARCHAR},
+ </if>
+ <if test="region != null">
+ region = #{region,jdbcType=VARCHAR},
+ </if>
+ <if test="receiveaddress != null">
+ receiveaddress = #{receiveaddress,jdbcType=VARCHAR},
+ </if>
+ <if test="isoftenused != null">
+ isoftenused = #{isoftenused,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrderReceiver">
+ update order_receiver
+ set userid = #{userid,jdbcType=VARCHAR},
+ code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ contactno = #{contactno,jdbcType=VARCHAR},
+ country = #{country,jdbcType=VARCHAR},
+ province = #{province,jdbcType=VARCHAR},
+ city = #{city,jdbcType=VARCHAR},
+ region = #{region,jdbcType=VARCHAR},
+ receiveaddress = #{receiveaddress,jdbcType=VARCHAR},
+ isoftenused = #{isoftenused,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ remark = #{remark,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.java
new file mode 100644
index 0000000..51b8d27
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrganizationClass;
+import com.farriver.bwf.data.master.model.OrganizationClassExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrganizationClassMapper {
+ long countByExample(OrganizationClassExample example);
+
+ int deleteByExample(OrganizationClassExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrganizationClass record);
+
+ int insertSelective(OrganizationClass record);
+
+ List<OrganizationClass> selectByExample(OrganizationClassExample example);
+
+ OrganizationClass selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrganizationClass record, @Param("example") OrganizationClassExample example);
+
+ int updateByExample(@Param("record") OrganizationClass record, @Param("example") OrganizationClassExample example);
+
+ int updateByPrimaryKeySelective(OrganizationClass record);
+
+ int updateByPrimaryKey(OrganizationClass record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.xml
new file mode 100644
index 0000000..02257c8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationClassMapper.xml
@@ -0,0 +1,599 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrganizationClassMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrganizationClass">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="code" jdbcType="VARCHAR" property="code" />
+ <result column="name" jdbcType="VARCHAR" property="name" />
+ <result column="outerphone" jdbcType="VARCHAR" property="outerphone" />
+ <result column="innerphone" jdbcType="VARCHAR" property="innerphone" />
+ <result column="supervisor" jdbcType="VARCHAR" property="supervisor" />
+ <result column="supervisorassistant" jdbcType="VARCHAR" property="supervisorassistant" />
+ <result column="fax" jdbcType="VARCHAR" property="fax" />
+ <result column="zipcode" jdbcType="VARCHAR" property="zipcode" />
+ <result column="address" jdbcType="VARCHAR" property="address" />
+ <result column="parentid" jdbcType="VARCHAR" property="parentid" />
+ <result column="status" jdbcType="INTEGER" property="status" />
+ <result column="deplevel" jdbcType="INTEGER" property="deplevel" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="organizationid" jdbcType="VARCHAR" property="organizationid" />
+ <result column="organizationname" jdbcType="VARCHAR" property="organizationname" />
+ <result column="organizationcode" jdbcType="VARCHAR" property="organizationcode" />
+ <result column="departmentid" jdbcType="VARCHAR" property="departmentid" />
+ <result column="departmentname" jdbcType="VARCHAR" property="departmentname" />
+ <result column="departmentcode" jdbcType="VARCHAR" property="departmentcode" />
+ <result column="majorid" jdbcType="VARCHAR" property="majorid" />
+ <result column="majorname" jdbcType="VARCHAR" property="majorname" />
+ <result column="majorcode" jdbcType="VARCHAR" property="majorcode" />
+ <result column="gradeid" jdbcType="VARCHAR" property="gradeid" />
+ <result column="gradename" jdbcType="VARCHAR" property="gradename" />
+ <result column="gradecode" jdbcType="VARCHAR" property="gradecode" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, code, name, outerphone, innerphone, supervisor, supervisorassistant, fax, zipcode,
+ address, parentid, status, deplevel, isdeleted, remark, createtime, updatetime, organizationid,
+ organizationname, organizationcode, departmentid, departmentname, departmentcode,
+ majorid, majorname, majorcode, gradeid, gradename, gradecode
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationClassExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from organization_class
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from organization_class
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from organization_class
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationClassExample">
+ delete from organization_class
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrganizationClass">
+ insert into organization_class (id, code, name,
+ outerphone, innerphone, supervisor,
+ supervisorassistant, fax, zipcode,
+ address, parentid, status,
+ deplevel, isdeleted, remark,
+ createtime, updatetime, organizationid,
+ organizationname, organizationcode, departmentid,
+ departmentname, departmentcode, majorid,
+ majorname, majorcode, gradeid,
+ gradename, gradecode)
+ values (#{id,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{outerphone,jdbcType=VARCHAR}, #{innerphone,jdbcType=VARCHAR}, #{supervisor,jdbcType=VARCHAR},
+ #{supervisorassistant,jdbcType=VARCHAR}, #{fax,jdbcType=VARCHAR}, #{zipcode,jdbcType=VARCHAR},
+ #{address,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{deplevel,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{organizationid,jdbcType=VARCHAR},
+ #{organizationname,jdbcType=VARCHAR}, #{organizationcode,jdbcType=VARCHAR}, #{departmentid,jdbcType=VARCHAR},
+ #{departmentname,jdbcType=VARCHAR}, #{departmentcode,jdbcType=VARCHAR}, #{majorid,jdbcType=VARCHAR},
+ #{majorname,jdbcType=VARCHAR}, #{majorcode,jdbcType=VARCHAR}, #{gradeid,jdbcType=VARCHAR},
+ #{gradename,jdbcType=VARCHAR}, #{gradecode,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrganizationClass">
+ insert into organization_class
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="outerphone != null">
+ outerphone,
+ </if>
+ <if test="innerphone != null">
+ innerphone,
+ </if>
+ <if test="supervisor != null">
+ supervisor,
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant,
+ </if>
+ <if test="fax != null">
+ fax,
+ </if>
+ <if test="zipcode != null">
+ zipcode,
+ </if>
+ <if test="address != null">
+ address,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="deplevel != null">
+ deplevel,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="organizationid != null">
+ organizationid,
+ </if>
+ <if test="organizationname != null">
+ organizationname,
+ </if>
+ <if test="organizationcode != null">
+ organizationcode,
+ </if>
+ <if test="departmentid != null">
+ departmentid,
+ </if>
+ <if test="departmentname != null">
+ departmentname,
+ </if>
+ <if test="departmentcode != null">
+ departmentcode,
+ </if>
+ <if test="majorid != null">
+ majorid,
+ </if>
+ <if test="majorname != null">
+ majorname,
+ </if>
+ <if test="majorcode != null">
+ majorcode,
+ </if>
+ <if test="gradeid != null">
+ gradeid,
+ </if>
+ <if test="gradename != null">
+ gradename,
+ </if>
+ <if test="gradecode != null">
+ gradecode,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="majorid != null">
+ #{majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="majorname != null">
+ #{majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="majorcode != null">
+ #{majorcode,jdbcType=VARCHAR},
+ </if>
+ <if test="gradeid != null">
+ #{gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="gradename != null">
+ #{gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="gradecode != null">
+ #{gradecode,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationClassExample" resultType="java.lang.Long">
+ select count(*) from organization_class
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update organization_class
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.outerphone != null">
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.innerphone != null">
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisor != null">
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisorassistant != null">
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="record.fax != null">
+ fax = #{record.fax,jdbcType=VARCHAR},
+ </if>
+ <if test="record.zipcode != null">
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.address != null">
+ address = #{record.address,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.deplevel != null">
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.organizationid != null">
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationname != null">
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationcode != null">
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentid != null">
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentname != null">
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentcode != null">
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorid != null">
+ majorid = #{record.majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorname != null">
+ majorname = #{record.majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorcode != null">
+ majorcode = #{record.majorcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradeid != null">
+ gradeid = #{record.gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradename != null">
+ gradename = #{record.gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradecode != null">
+ gradecode = #{record.gradecode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update organization_class
+ set id = #{record.id,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ fax = #{record.fax,jdbcType=VARCHAR},
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ address = #{record.address,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR},
+ majorid = #{record.majorid,jdbcType=VARCHAR},
+ majorname = #{record.majorname,jdbcType=VARCHAR},
+ majorcode = #{record.majorcode,jdbcType=VARCHAR},
+ gradeid = #{record.gradeid,jdbcType=VARCHAR},
+ gradename = #{record.gradename,jdbcType=VARCHAR},
+ gradecode = #{record.gradecode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrganizationClass">
+ update organization_class
+ <set>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ fax = #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ address = #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ departmentcode = #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="majorid != null">
+ majorid = #{majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="majorname != null">
+ majorname = #{majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="majorcode != null">
+ majorcode = #{majorcode,jdbcType=VARCHAR},
+ </if>
+ <if test="gradeid != null">
+ gradeid = #{gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="gradename != null">
+ gradename = #{gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="gradecode != null">
+ gradecode = #{gradecode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrganizationClass">
+ update organization_class
+ set code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ fax = #{fax,jdbcType=VARCHAR},
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ address = #{address,jdbcType=VARCHAR},
+ parentid = #{parentid,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ departmentcode = #{departmentcode,jdbcType=VARCHAR},
+ majorid = #{majorid,jdbcType=VARCHAR},
+ majorname = #{majorname,jdbcType=VARCHAR},
+ majorcode = #{majorcode,jdbcType=VARCHAR},
+ gradeid = #{gradeid,jdbcType=VARCHAR},
+ gradename = #{gradename,jdbcType=VARCHAR},
+ gradecode = #{gradecode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.java
new file mode 100644
index 0000000..e04401c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrganizationDepartment;
+import com.farriver.bwf.data.master.model.OrganizationDepartmentExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrganizationDepartmentMapper {
+ long countByExample(OrganizationDepartmentExample example);
+
+ int deleteByExample(OrganizationDepartmentExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrganizationDepartment record);
+
+ int insertSelective(OrganizationDepartment record);
+
+ List<OrganizationDepartment> selectByExample(OrganizationDepartmentExample example);
+
+ OrganizationDepartment selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrganizationDepartment record, @Param("example") OrganizationDepartmentExample example);
+
+ int updateByExample(@Param("record") OrganizationDepartment record, @Param("example") OrganizationDepartmentExample example);
+
+ int updateByPrimaryKeySelective(OrganizationDepartment record);
+
+ int updateByPrimaryKey(OrganizationDepartment record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.xml
new file mode 100644
index 0000000..bc5b6cd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationDepartmentMapper.xml
@@ -0,0 +1,457 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrganizationDepartmentMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrganizationDepartment">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="code" jdbcType="VARCHAR" property="code" />
+ <result column="name" jdbcType="VARCHAR" property="name" />
+ <result column="outerphone" jdbcType="VARCHAR" property="outerphone" />
+ <result column="innerphone" jdbcType="VARCHAR" property="innerphone" />
+ <result column="supervisor" jdbcType="VARCHAR" property="supervisor" />
+ <result column="supervisorassistant" jdbcType="VARCHAR" property="supervisorassistant" />
+ <result column="fax" jdbcType="VARCHAR" property="fax" />
+ <result column="zipcode" jdbcType="VARCHAR" property="zipcode" />
+ <result column="address" jdbcType="VARCHAR" property="address" />
+ <result column="parentid" jdbcType="VARCHAR" property="parentid" />
+ <result column="status" jdbcType="INTEGER" property="status" />
+ <result column="deplevel" jdbcType="INTEGER" property="deplevel" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="organizationid" jdbcType="VARCHAR" property="organizationid" />
+ <result column="organizationname" jdbcType="VARCHAR" property="organizationname" />
+ <result column="organizationcode" jdbcType="VARCHAR" property="organizationcode" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, code, name, outerphone, innerphone, supervisor, supervisorassistant, fax, zipcode,
+ address, parentid, status, deplevel, isdeleted, remark, createtime, updatetime, organizationid,
+ organizationname, organizationcode
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationDepartmentExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from organization_department
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from organization_department
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from organization_department
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationDepartmentExample">
+ delete from organization_department
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrganizationDepartment">
+ insert into organization_department (id, code, name,
+ outerphone, innerphone, supervisor,
+ supervisorassistant, fax, zipcode,
+ address, parentid, status,
+ deplevel, isdeleted, remark,
+ createtime, updatetime, organizationid,
+ organizationname, organizationcode)
+ values (#{id,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{outerphone,jdbcType=VARCHAR}, #{innerphone,jdbcType=VARCHAR}, #{supervisor,jdbcType=VARCHAR},
+ #{supervisorassistant,jdbcType=VARCHAR}, #{fax,jdbcType=VARCHAR}, #{zipcode,jdbcType=VARCHAR},
+ #{address,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{deplevel,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{organizationid,jdbcType=VARCHAR},
+ #{organizationname,jdbcType=VARCHAR}, #{organizationcode,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrganizationDepartment">
+ insert into organization_department
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="outerphone != null">
+ outerphone,
+ </if>
+ <if test="innerphone != null">
+ innerphone,
+ </if>
+ <if test="supervisor != null">
+ supervisor,
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant,
+ </if>
+ <if test="fax != null">
+ fax,
+ </if>
+ <if test="zipcode != null">
+ zipcode,
+ </if>
+ <if test="address != null">
+ address,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="deplevel != null">
+ deplevel,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="organizationid != null">
+ organizationid,
+ </if>
+ <if test="organizationname != null">
+ organizationname,
+ </if>
+ <if test="organizationcode != null">
+ organizationcode,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationDepartmentExample" resultType="java.lang.Long">
+ select count(*) from organization_department
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update organization_department
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.outerphone != null">
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.innerphone != null">
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisor != null">
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisorassistant != null">
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="record.fax != null">
+ fax = #{record.fax,jdbcType=VARCHAR},
+ </if>
+ <if test="record.zipcode != null">
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.address != null">
+ address = #{record.address,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.deplevel != null">
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.organizationid != null">
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationname != null">
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationcode != null">
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update organization_department
+ set id = #{record.id,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ fax = #{record.fax,jdbcType=VARCHAR},
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ address = #{record.address,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrganizationDepartment">
+ update organization_department
+ <set>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ fax = #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ address = #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrganizationDepartment">
+ update organization_department
+ set code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ fax = #{fax,jdbcType=VARCHAR},
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ address = #{address,jdbcType=VARCHAR},
+ parentid = #{parentid,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ organizationcode = #{organizationcode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.java
new file mode 100644
index 0000000..ff63a57
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrganizationGrade;
+import com.farriver.bwf.data.master.model.OrganizationGradeExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrganizationGradeMapper {
+ long countByExample(OrganizationGradeExample example);
+
+ int deleteByExample(OrganizationGradeExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrganizationGrade record);
+
+ int insertSelective(OrganizationGrade record);
+
+ List<OrganizationGrade> selectByExample(OrganizationGradeExample example);
+
+ OrganizationGrade selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrganizationGrade record, @Param("example") OrganizationGradeExample example);
+
+ int updateByExample(@Param("record") OrganizationGrade record, @Param("example") OrganizationGradeExample example);
+
+ int updateByPrimaryKeySelective(OrganizationGrade record);
+
+ int updateByPrimaryKey(OrganizationGrade record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.xml
new file mode 100644
index 0000000..0b3656a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationGradeMapper.xml
@@ -0,0 +1,552 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrganizationGradeMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrganizationGrade">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="code" jdbcType="VARCHAR" property="code" />
+ <result column="name" jdbcType="VARCHAR" property="name" />
+ <result column="outerphone" jdbcType="VARCHAR" property="outerphone" />
+ <result column="innerphone" jdbcType="VARCHAR" property="innerphone" />
+ <result column="supervisor" jdbcType="VARCHAR" property="supervisor" />
+ <result column="supervisorassistant" jdbcType="VARCHAR" property="supervisorassistant" />
+ <result column="fax" jdbcType="VARCHAR" property="fax" />
+ <result column="zipcode" jdbcType="VARCHAR" property="zipcode" />
+ <result column="address" jdbcType="VARCHAR" property="address" />
+ <result column="parentid" jdbcType="VARCHAR" property="parentid" />
+ <result column="status" jdbcType="INTEGER" property="status" />
+ <result column="deplevel" jdbcType="INTEGER" property="deplevel" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="organizationid" jdbcType="VARCHAR" property="organizationid" />
+ <result column="organizationname" jdbcType="VARCHAR" property="organizationname" />
+ <result column="organizationcode" jdbcType="VARCHAR" property="organizationcode" />
+ <result column="departmentid" jdbcType="VARCHAR" property="departmentid" />
+ <result column="departmentname" jdbcType="VARCHAR" property="departmentname" />
+ <result column="departmentcode" jdbcType="VARCHAR" property="departmentcode" />
+ <result column="majorid" jdbcType="VARCHAR" property="majorid" />
+ <result column="majorname" jdbcType="VARCHAR" property="majorname" />
+ <result column="majorcode" jdbcType="VARCHAR" property="majorcode" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, code, name, outerphone, innerphone, supervisor, supervisorassistant, fax, zipcode,
+ address, parentid, status, deplevel, isdeleted, remark, createtime, updatetime, organizationid,
+ organizationname, organizationcode, departmentid, departmentname, departmentcode,
+ majorid, majorname, majorcode
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationGradeExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from organization_grade
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from organization_grade
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from organization_grade
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationGradeExample">
+ delete from organization_grade
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrganizationGrade">
+ insert into organization_grade (id, code, name,
+ outerphone, innerphone, supervisor,
+ supervisorassistant, fax, zipcode,
+ address, parentid, status,
+ deplevel, isdeleted, remark,
+ createtime, updatetime, organizationid,
+ organizationname, organizationcode, departmentid,
+ departmentname, departmentcode, majorid,
+ majorname, majorcode)
+ values (#{id,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{outerphone,jdbcType=VARCHAR}, #{innerphone,jdbcType=VARCHAR}, #{supervisor,jdbcType=VARCHAR},
+ #{supervisorassistant,jdbcType=VARCHAR}, #{fax,jdbcType=VARCHAR}, #{zipcode,jdbcType=VARCHAR},
+ #{address,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{deplevel,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{organizationid,jdbcType=VARCHAR},
+ #{organizationname,jdbcType=VARCHAR}, #{organizationcode,jdbcType=VARCHAR}, #{departmentid,jdbcType=VARCHAR},
+ #{departmentname,jdbcType=VARCHAR}, #{departmentcode,jdbcType=VARCHAR}, #{majorid,jdbcType=VARCHAR},
+ #{majorname,jdbcType=VARCHAR}, #{majorcode,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrganizationGrade">
+ insert into organization_grade
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="outerphone != null">
+ outerphone,
+ </if>
+ <if test="innerphone != null">
+ innerphone,
+ </if>
+ <if test="supervisor != null">
+ supervisor,
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant,
+ </if>
+ <if test="fax != null">
+ fax,
+ </if>
+ <if test="zipcode != null">
+ zipcode,
+ </if>
+ <if test="address != null">
+ address,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="deplevel != null">
+ deplevel,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="organizationid != null">
+ organizationid,
+ </if>
+ <if test="organizationname != null">
+ organizationname,
+ </if>
+ <if test="organizationcode != null">
+ organizationcode,
+ </if>
+ <if test="departmentid != null">
+ departmentid,
+ </if>
+ <if test="departmentname != null">
+ departmentname,
+ </if>
+ <if test="departmentcode != null">
+ departmentcode,
+ </if>
+ <if test="majorid != null">
+ majorid,
+ </if>
+ <if test="majorname != null">
+ majorname,
+ </if>
+ <if test="majorcode != null">
+ majorcode,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="majorid != null">
+ #{majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="majorname != null">
+ #{majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="majorcode != null">
+ #{majorcode,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationGradeExample" resultType="java.lang.Long">
+ select count(*) from organization_grade
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update organization_grade
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.outerphone != null">
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.innerphone != null">
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisor != null">
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisorassistant != null">
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="record.fax != null">
+ fax = #{record.fax,jdbcType=VARCHAR},
+ </if>
+ <if test="record.zipcode != null">
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.address != null">
+ address = #{record.address,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.deplevel != null">
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.organizationid != null">
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationname != null">
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationcode != null">
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentid != null">
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentname != null">
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentcode != null">
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorid != null">
+ majorid = #{record.majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorname != null">
+ majorname = #{record.majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorcode != null">
+ majorcode = #{record.majorcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update organization_grade
+ set id = #{record.id,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ fax = #{record.fax,jdbcType=VARCHAR},
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ address = #{record.address,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR},
+ majorid = #{record.majorid,jdbcType=VARCHAR},
+ majorname = #{record.majorname,jdbcType=VARCHAR},
+ majorcode = #{record.majorcode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrganizationGrade">
+ update organization_grade
+ <set>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ fax = #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ address = #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ departmentcode = #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="majorid != null">
+ majorid = #{majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="majorname != null">
+ majorname = #{majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="majorcode != null">
+ majorcode = #{majorcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrganizationGrade">
+ update organization_grade
+ set code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ fax = #{fax,jdbcType=VARCHAR},
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ address = #{address,jdbcType=VARCHAR},
+ parentid = #{parentid,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ departmentcode = #{departmentcode,jdbcType=VARCHAR},
+ majorid = #{majorid,jdbcType=VARCHAR},
+ majorname = #{majorname,jdbcType=VARCHAR},
+ majorcode = #{majorcode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.java
new file mode 100644
index 0000000..dbac216
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrganizationMajor;
+import com.farriver.bwf.data.master.model.OrganizationMajorExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrganizationMajorMapper {
+ long countByExample(OrganizationMajorExample example);
+
+ int deleteByExample(OrganizationMajorExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrganizationMajor record);
+
+ int insertSelective(OrganizationMajor record);
+
+ List<OrganizationMajor> selectByExample(OrganizationMajorExample example);
+
+ OrganizationMajor selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrganizationMajor record, @Param("example") OrganizationMajorExample example);
+
+ int updateByExample(@Param("record") OrganizationMajor record, @Param("example") OrganizationMajorExample example);
+
+ int updateByPrimaryKeySelective(OrganizationMajor record);
+
+ int updateByPrimaryKey(OrganizationMajor record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.xml
new file mode 100644
index 0000000..315e53d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMajorMapper.xml
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrganizationMajorMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrganizationMajor">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="code" jdbcType="VARCHAR" property="code" />
+ <result column="name" jdbcType="VARCHAR" property="name" />
+ <result column="parentid" jdbcType="VARCHAR" property="parentid" />
+ <result column="status" jdbcType="INTEGER" property="status" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="organizationid" jdbcType="VARCHAR" property="organizationid" />
+ <result column="organizationname" jdbcType="VARCHAR" property="organizationname" />
+ <result column="organizationcode" jdbcType="VARCHAR" property="organizationcode" />
+ <result column="departmentid" jdbcType="VARCHAR" property="departmentid" />
+ <result column="departmentname" jdbcType="VARCHAR" property="departmentname" />
+ <result column="departmentcode" jdbcType="VARCHAR" property="departmentcode" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, code, name, parentid, status, isdeleted, remark, createtime, updatetime, organizationid,
+ organizationname, organizationcode, departmentid, departmentname, departmentcode
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationMajorExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from organization_major
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from organization_major
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from organization_major
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationMajorExample">
+ delete from organization_major
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrganizationMajor">
+ insert into organization_major (id, code, name,
+ parentid, status, isdeleted,
+ remark, createtime, updatetime,
+ organizationid, organizationname, organizationcode,
+ departmentid, departmentname, departmentcode
+ )
+ values (#{id,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{parentid,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT},
+ #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{organizationid,jdbcType=VARCHAR}, #{organizationname,jdbcType=VARCHAR}, #{organizationcode,jdbcType=VARCHAR},
+ #{departmentid,jdbcType=VARCHAR}, #{departmentname,jdbcType=VARCHAR}, #{departmentcode,jdbcType=VARCHAR}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrganizationMajor">
+ insert into organization_major
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="organizationid != null">
+ organizationid,
+ </if>
+ <if test="organizationname != null">
+ organizationname,
+ </if>
+ <if test="organizationcode != null">
+ organizationcode,
+ </if>
+ <if test="departmentid != null">
+ departmentid,
+ </if>
+ <if test="departmentname != null">
+ departmentname,
+ </if>
+ <if test="departmentcode != null">
+ departmentcode,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationMajorExample" resultType="java.lang.Long">
+ select count(*) from organization_major
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update organization_major
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.organizationid != null">
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationname != null">
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationcode != null">
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentid != null">
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentname != null">
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentcode != null">
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update organization_major
+ set id = #{record.id,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrganizationMajor">
+ update organization_major
+ <set>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="organizationid != null">
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ departmentcode = #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrganizationMajor">
+ update organization_major
+ set code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ parentid = #{parentid,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ departmentcode = #{departmentcode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.java
new file mode 100644
index 0000000..ce11540
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.OrganizationMaster;
+import com.farriver.bwf.data.master.model.OrganizationMasterExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface OrganizationMasterMapper {
+ long countByExample(OrganizationMasterExample example);
+
+ int deleteByExample(OrganizationMasterExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(OrganizationMaster record);
+
+ int insertSelective(OrganizationMaster record);
+
+ List<OrganizationMaster> selectByExample(OrganizationMasterExample example);
+
+ OrganizationMaster selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") OrganizationMaster record, @Param("example") OrganizationMasterExample example);
+
+ int updateByExample(@Param("record") OrganizationMaster record, @Param("example") OrganizationMasterExample example);
+
+ int updateByPrimaryKeySelective(OrganizationMaster record);
+
+ int updateByPrimaryKey(OrganizationMaster record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.xml
new file mode 100644
index 0000000..4a69e24
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/OrganizationMasterMapper.xml
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.OrganizationMasterMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.OrganizationMaster">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="code" jdbcType="VARCHAR" property="code" />
+ <result column="name" jdbcType="VARCHAR" property="name" />
+ <result column="outerphone" jdbcType="VARCHAR" property="outerphone" />
+ <result column="innerphone" jdbcType="VARCHAR" property="innerphone" />
+ <result column="supervisor" jdbcType="VARCHAR" property="supervisor" />
+ <result column="supervisorassistant" jdbcType="VARCHAR" property="supervisorassistant" />
+ <result column="fax" jdbcType="VARCHAR" property="fax" />
+ <result column="zipcode" jdbcType="VARCHAR" property="zipcode" />
+ <result column="address" jdbcType="VARCHAR" property="address" />
+ <result column="parentid" jdbcType="VARCHAR" property="parentid" />
+ <result column="status" jdbcType="INTEGER" property="status" />
+ <result column="deplevel" jdbcType="INTEGER" property="deplevel" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, code, name, outerphone, innerphone, supervisor, supervisorassistant, fax, zipcode,
+ address, parentid, status, deplevel, isdeleted, remark, createtime, updatetime
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationMasterExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from organization_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from organization_master
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from organization_master
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationMasterExample">
+ delete from organization_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.OrganizationMaster">
+ insert into organization_master (id, code, name,
+ outerphone, innerphone, supervisor,
+ supervisorassistant, fax, zipcode,
+ address, parentid, status,
+ deplevel, isdeleted, remark,
+ createtime, updatetime)
+ values (#{id,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{outerphone,jdbcType=VARCHAR}, #{innerphone,jdbcType=VARCHAR}, #{supervisor,jdbcType=VARCHAR},
+ #{supervisorassistant,jdbcType=VARCHAR}, #{fax,jdbcType=VARCHAR}, #{zipcode,jdbcType=VARCHAR},
+ #{address,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{deplevel,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.OrganizationMaster">
+ insert into organization_master
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="outerphone != null">
+ outerphone,
+ </if>
+ <if test="innerphone != null">
+ innerphone,
+ </if>
+ <if test="supervisor != null">
+ supervisor,
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant,
+ </if>
+ <if test="fax != null">
+ fax,
+ </if>
+ <if test="zipcode != null">
+ zipcode,
+ </if>
+ <if test="address != null">
+ address,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="deplevel != null">
+ deplevel,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.OrganizationMasterExample" resultType="java.lang.Long">
+ select count(*) from organization_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update organization_master
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.outerphone != null">
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.innerphone != null">
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisor != null">
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="record.supervisorassistant != null">
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="record.fax != null">
+ fax = #{record.fax,jdbcType=VARCHAR},
+ </if>
+ <if test="record.zipcode != null">
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.address != null">
+ address = #{record.address,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.deplevel != null">
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update organization_master
+ set id = #{record.id,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ outerphone = #{record.outerphone,jdbcType=VARCHAR},
+ innerphone = #{record.innerphone,jdbcType=VARCHAR},
+ supervisor = #{record.supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{record.supervisorassistant,jdbcType=VARCHAR},
+ fax = #{record.fax,jdbcType=VARCHAR},
+ zipcode = #{record.zipcode,jdbcType=VARCHAR},
+ address = #{record.address,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ deplevel = #{record.deplevel,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.OrganizationMaster">
+ update organization_master
+ <set>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="outerphone != null">
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="innerphone != null">
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisor != null">
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ </if>
+ <if test="supervisorassistant != null">
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ </if>
+ <if test="fax != null">
+ fax = #{fax,jdbcType=VARCHAR},
+ </if>
+ <if test="zipcode != null">
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ </if>
+ <if test="address != null">
+ address = #{address,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="deplevel != null">
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.OrganizationMaster">
+ update organization_master
+ set code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ outerphone = #{outerphone,jdbcType=VARCHAR},
+ innerphone = #{innerphone,jdbcType=VARCHAR},
+ supervisor = #{supervisor,jdbcType=VARCHAR},
+ supervisorassistant = #{supervisorassistant,jdbcType=VARCHAR},
+ fax = #{fax,jdbcType=VARCHAR},
+ zipcode = #{zipcode,jdbcType=VARCHAR},
+ address = #{address,jdbcType=VARCHAR},
+ parentid = #{parentid,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ deplevel = #{deplevel,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.java
new file mode 100644
index 0000000..930f28e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionCategory;
+import com.farriver.bwf.data.master.model.QuestionCategoryExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionCategoryMapper {
+ long countByExample(QuestionCategoryExample example);
+
+ int deleteByExample(QuestionCategoryExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionCategory record);
+
+ int insertSelective(QuestionCategory record);
+
+ List<QuestionCategory> selectByExample(QuestionCategoryExample example);
+
+ QuestionCategory selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionCategory record, @Param("example") QuestionCategoryExample example);
+
+ int updateByExample(@Param("record") QuestionCategory record, @Param("example") QuestionCategoryExample example);
+
+ int updateByPrimaryKeySelective(QuestionCategory record);
+
+ int updateByPrimaryKey(QuestionCategory record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.xml
new file mode 100644
index 0000000..9849ca2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionCategoryMapper.xml
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionCategoryMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionCategory">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="parentid" jdbcType="VARCHAR" property="parentid"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="icon" jdbcType="VARCHAR" property="icon"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , parentid, name, isdeleted, remark, createtime, updatetime, status, icon
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionCategoryExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from question_category
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from question_category
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from question_category
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionCategoryExample">
+ delete from question_category
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionCategory">
+ insert into question_category (id, parentid, name,
+ isdeleted, remark, createtime,
+ updatetime, status, icon)
+ values (#{id,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP},
+ #{updatetime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, #{icon,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionCategory">
+ insert into question_category
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="icon != null">
+ icon,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="icon != null">
+ #{icon,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionCategoryExample"
+ resultType="java.lang.Long">
+ select count(*) from question_category
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_category
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.icon != null">
+ icon = #{record.icon,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_category
+ set id = #{record.id,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ status = #{record.status,jdbcType=INTEGER},
+ icon = #{record.icon,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.QuestionCategory">
+ update question_category
+ <set>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="icon != null">
+ icon = #{icon,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionCategory">
+ update question_category
+ set parentid = #{parentid,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ status = #{status,jdbcType=INTEGER},
+ icon = #{icon,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.java
new file mode 100644
index 0000000..1aefb9d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.java
@@ -0,0 +1,36 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionMasterAnswer;
+import com.farriver.bwf.data.master.model.QuestionMasterAnswerExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionMasterAnswerMapper {
+ long countByExample(QuestionMasterAnswerExample example);
+
+ int deleteByExample(QuestionMasterAnswerExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionMasterAnswer record);
+
+ int insertSelective(QuestionMasterAnswer record);
+
+ List<QuestionMasterAnswer> selectByExampleWithBLOBs(QuestionMasterAnswerExample example);
+
+ List<QuestionMasterAnswer> selectByExample(QuestionMasterAnswerExample example);
+
+ QuestionMasterAnswer selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionMasterAnswer record, @Param("example") QuestionMasterAnswerExample example);
+
+ int updateByExampleWithBLOBs(@Param("record") QuestionMasterAnswer record, @Param("example") QuestionMasterAnswerExample example);
+
+ int updateByExample(@Param("record") QuestionMasterAnswer record, @Param("example") QuestionMasterAnswerExample example);
+
+ int updateByPrimaryKeySelective(QuestionMasterAnswer record);
+
+ int updateByPrimaryKeyWithBLOBs(QuestionMasterAnswer record);
+
+ int updateByPrimaryKey(QuestionMasterAnswer record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.xml
new file mode 100644
index 0000000..fbc7f4e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterAnswerMapper.xml
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionMasterAnswerMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionMasterAnswer">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="masterid" jdbcType="VARCHAR" property="masterid" />
+ <result column="qkey" jdbcType="VARCHAR" property="qkey" />
+ <result column="sequenceno" jdbcType="INTEGER" property="sequenceno" />
+ </resultMap>
+ <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.farriver.bwf.data.master.model.QuestionMasterAnswer">
+ <result column="qvalue" jdbcType="LONGVARCHAR" property="qvalue" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, remark, createtime, updatetime, masterid, qkey, sequenceno
+ </sql>
+ <sql id="Blob_Column_List">
+ qvalue
+ </sql>
+ <select id="selectByExampleWithBLOBs" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswerExample" resultMap="ResultMapWithBLOBs">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ ,
+ <include refid="Blob_Column_List"/>
+ from question_master_answer
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswerExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from question_master_answer
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
+ select
+ <include refid="Base_Column_List" />
+ ,
+ <include refid="Blob_Column_List" />
+ from question_master_answer
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from question_master_answer
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswerExample">
+ delete from question_master_answer
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswer">
+ insert into question_master_answer (id, remark, createtime,
+ updatetime, masterid, qkey,
+ sequenceno, qvalue)
+ values (#{id,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP},
+ #{updatetime,jdbcType=TIMESTAMP}, #{masterid,jdbcType=VARCHAR}, #{qkey,jdbcType=VARCHAR},
+ #{sequenceno,jdbcType=INTEGER}, #{qvalue,jdbcType=LONGVARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswer">
+ insert into question_master_answer
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="masterid != null">
+ masterid,
+ </if>
+ <if test="qkey != null">
+ qkey,
+ </if>
+ <if test="sequenceno != null">
+ sequenceno,
+ </if>
+ <if test="qvalue != null">
+ qvalue,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="qkey != null">
+ #{qkey,jdbcType=VARCHAR},
+ </if>
+ <if test="sequenceno != null">
+ #{sequenceno,jdbcType=INTEGER},
+ </if>
+ <if test="qvalue != null">
+ #{qvalue,jdbcType=LONGVARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswerExample" resultType="java.lang.Long">
+ select count(*) from question_master_answer
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_master_answer
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.masterid != null">
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.qkey != null">
+ qkey = #{record.qkey,jdbcType=VARCHAR},
+ </if>
+ <if test="record.sequenceno != null">
+ sequenceno = #{record.sequenceno,jdbcType=INTEGER},
+ </if>
+ <if test="record.qvalue != null">
+ qvalue = #{record.qvalue,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExampleWithBLOBs" parameterType="map">
+ update question_master_answer
+ set id = #{record.id,jdbcType=VARCHAR},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ qkey = #{record.qkey,jdbcType=VARCHAR},
+ sequenceno = #{record.sequenceno,jdbcType=INTEGER},
+ qvalue = #{record.qvalue,jdbcType=LONGVARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_master_answer
+ set id = #{record.id,jdbcType=VARCHAR},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ qkey = #{record.qkey,jdbcType=VARCHAR},
+ sequenceno = #{record.sequenceno,jdbcType=INTEGER}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswer">
+ update question_master_answer
+ <set>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ masterid = #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="qkey != null">
+ qkey = #{qkey,jdbcType=VARCHAR},
+ </if>
+ <if test="sequenceno != null">
+ sequenceno = #{sequenceno,jdbcType=INTEGER},
+ </if>
+ <if test="qvalue != null">
+ qvalue = #{qvalue,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswer">
+ update question_master_answer
+ set remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ qkey = #{qkey,jdbcType=VARCHAR},
+ sequenceno = #{sequenceno,jdbcType=INTEGER},
+ qvalue = #{qvalue,jdbcType=LONGVARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionMasterAnswer">
+ update question_master_answer
+ set remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ qkey = #{qkey,jdbcType=VARCHAR},
+ sequenceno = #{sequenceno,jdbcType=INTEGER}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.java
new file mode 100644
index 0000000..665266e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.java
@@ -0,0 +1,40 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.entity.QuestionMasterWithBLOBsExtend;
+import com.farriver.bwf.data.master.model.QuestionMaster;
+import com.farriver.bwf.data.master.model.QuestionMasterExample;
+import com.farriver.bwf.data.master.model.QuestionMasterWithBLOBs;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionMasterMapper {
+ long countByExample(QuestionMasterExample example);
+
+ int deleteByExample(QuestionMasterExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionMasterWithBLOBs record);
+
+ int insertSelective(QuestionMasterWithBLOBs record);
+
+ List<QuestionMasterWithBLOBs> selectByExampleWithBLOBs(QuestionMasterExample example);
+
+ List<QuestionMasterWithBLOBsExtend> selectByExampleWithBLOBsExtend(QuestionMasterExample example);
+
+ List<QuestionMaster> selectByExample(QuestionMasterExample example);
+
+ QuestionMasterWithBLOBs selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionMasterWithBLOBs record, @Param("example") QuestionMasterExample example);
+
+ int updateByExampleWithBLOBs(@Param("record") QuestionMasterWithBLOBs record, @Param("example") QuestionMasterExample example);
+
+ int updateByExample(@Param("record") QuestionMaster record, @Param("example") QuestionMasterExample example);
+
+ int updateByPrimaryKeySelective(QuestionMasterWithBLOBs record);
+
+ int updateByPrimaryKeyWithBLOBs(QuestionMasterWithBLOBs record);
+
+ int updateByPrimaryKey(QuestionMaster record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.xml
new file mode 100644
index 0000000..33b16dd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterMapper.xml
@@ -0,0 +1,649 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionMasterMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionMaster">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="subjectid" jdbcType="VARCHAR" property="subjectid"/>
+ <result column="subjectname" jdbcType="VARCHAR" property="subjectname"/>
+ <result column="subjectcode" jdbcType="VARCHAR" property="subjectcode"/>
+ <result column="categoryid" jdbcType="VARCHAR" property="categoryid"/>
+ <result column="categoryname" jdbcType="VARCHAR" property="categoryname"/>
+ <result column="level" jdbcType="INTEGER" property="level"/>
+ <result column="score" jdbcType="DECIMAL" property="score"/>
+ <result column="knowledgepointid" jdbcType="VARCHAR" property="knowledgepointid"/>
+ <result column="knowledgepointname" jdbcType="VARCHAR" property="knowledgepointname"/>
+ <result column="knowledgepointcode" jdbcType="VARCHAR" property="knowledgepointcode"/>
+ </resultMap>
+ <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs"
+ type="com.farriver.bwf.data.master.model.QuestionMasterWithBLOBs">
+ <result column="stem" jdbcType="LONGVARCHAR" property="stem"/>
+ <result column="answer" jdbcType="LONGVARCHAR" property="answer"/>
+ <result column="casebody" jdbcType="LONGVARCHAR" property="casebody"/>
+ <result column="analysis" jdbcType="LONGVARCHAR" property="analysis"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , status, isdeleted, remark, createtime, updatetime, code, name, subjectid, subjectname,
+ subjectcode, categoryid, categoryname, level, score, knowledgepointid, knowledgepointname,
+ knowledgepointcode
+ </sql>
+ <sql id="Blob_Column_List">
+ stem
+ , answer, casebody, analysis
+ </sql>
+ <select id="selectByExampleWithBLOBs"
+ parameterType="com.farriver.bwf.data.master.model.QuestionMasterExample"
+ resultMap="ResultMapWithBLOBs">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ ,
+ <include refid="Blob_Column_List"/>
+ from question_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from question_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
+ select
+ <include refid="Base_Column_List"/>
+ ,
+ <include refid="Blob_Column_List"/>
+ from question_master
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from question_master
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterExample">
+ delete from question_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionMasterWithBLOBs">
+ insert into question_master (id, status, isdeleted,
+ remark, createtime, updatetime,
+ code, name, subjectid,
+ subjectname, subjectcode, categoryid,
+ categoryname, level, score,
+ knowledgepointid, knowledgepointname, knowledgepointcode,
+ stem, answer, casebody,
+ analysis)
+ values (#{id,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT},
+ #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{subjectid,jdbcType=VARCHAR},
+ #{subjectname,jdbcType=VARCHAR}, #{subjectcode,jdbcType=VARCHAR}, #{categoryid,jdbcType=VARCHAR},
+ #{categoryname,jdbcType=VARCHAR}, #{level,jdbcType=INTEGER}, #{score,jdbcType=DECIMAL},
+ #{knowledgepointid,jdbcType=VARCHAR}, #{knowledgepointname,jdbcType=VARCHAR},
+ #{knowledgepointcode,jdbcType=VARCHAR},
+ #{stem,jdbcType=LONGVARCHAR}, #{answer,jdbcType=LONGVARCHAR}, #{casebody,jdbcType=LONGVARCHAR},
+ #{analysis,jdbcType=LONGVARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionMasterWithBLOBs">
+ insert into question_master
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="subjectid != null">
+ subjectid,
+ </if>
+ <if test="subjectname != null">
+ subjectname,
+ </if>
+ <if test="subjectcode != null">
+ subjectcode,
+ </if>
+ <if test="categoryid != null">
+ categoryid,
+ </if>
+ <if test="categoryname != null">
+ categoryname,
+ </if>
+ <if test="level != null">
+ level,
+ </if>
+ <if test="score != null">
+ score,
+ </if>
+ <if test="knowledgepointid != null">
+ knowledgepointid,
+ </if>
+ <if test="knowledgepointname != null">
+ knowledgepointname,
+ </if>
+ <if test="knowledgepointcode != null">
+ knowledgepointcode,
+ </if>
+ <if test="stem != null">
+ stem,
+ </if>
+ <if test="answer != null">
+ answer,
+ </if>
+ <if test="casebody != null">
+ casebody,
+ </if>
+ <if test="analysis != null">
+ analysis,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryid != null">
+ #{categoryid,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryname != null">
+ #{categoryname,jdbcType=VARCHAR},
+ </if>
+ <if test="level != null">
+ #{level,jdbcType=INTEGER},
+ </if>
+ <if test="score != null">
+ #{score,jdbcType=DECIMAL},
+ </if>
+ <if test="knowledgepointid != null">
+ #{knowledgepointid,jdbcType=VARCHAR},
+ </if>
+ <if test="knowledgepointname != null">
+ #{knowledgepointname,jdbcType=VARCHAR},
+ </if>
+ <if test="knowledgepointcode != null">
+ #{knowledgepointcode,jdbcType=VARCHAR},
+ </if>
+ <if test="stem != null">
+ #{stem,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="answer != null">
+ #{answer,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="casebody != null">
+ #{casebody,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="analysis != null">
+ #{analysis,jdbcType=LONGVARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterExample"
+ resultType="java.lang.Long">
+ select count(*) from question_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_master
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectid != null">
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectname != null">
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectcode != null">
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.categoryid != null">
+ categoryid = #{record.categoryid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.categoryname != null">
+ categoryname = #{record.categoryname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.level != null">
+ level = #{record.level,jdbcType=INTEGER},
+ </if>
+ <if test="record.score != null">
+ score = #{record.score,jdbcType=DECIMAL},
+ </if>
+ <if test="record.knowledgepointid != null">
+ knowledgepointid = #{record.knowledgepointid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.knowledgepointname != null">
+ knowledgepointname = #{record.knowledgepointname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.knowledgepointcode != null">
+ knowledgepointcode = #{record.knowledgepointcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.stem != null">
+ stem = #{record.stem,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="record.answer != null">
+ answer = #{record.answer,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="record.casebody != null">
+ casebody = #{record.casebody,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="record.analysis != null">
+ analysis = #{record.analysis,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExampleWithBLOBs" parameterType="map">
+ update question_master
+ set id = #{record.id,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ categoryid = #{record.categoryid,jdbcType=VARCHAR},
+ categoryname = #{record.categoryname,jdbcType=VARCHAR},
+ level = #{record.level,jdbcType=INTEGER},
+ score = #{record.score,jdbcType=DECIMAL},
+ knowledgepointid = #{record.knowledgepointid,jdbcType=VARCHAR},
+ knowledgepointname = #{record.knowledgepointname,jdbcType=VARCHAR},
+ knowledgepointcode = #{record.knowledgepointcode,jdbcType=VARCHAR},
+ stem = #{record.stem,jdbcType=LONGVARCHAR},
+ answer = #{record.answer,jdbcType=LONGVARCHAR},
+ casebody = #{record.casebody,jdbcType=LONGVARCHAR},
+ analysis = #{record.analysis,jdbcType=LONGVARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_master
+ set id = #{record.id,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ categoryid = #{record.categoryid,jdbcType=VARCHAR},
+ categoryname = #{record.categoryname,jdbcType=VARCHAR},
+ level = #{record.level,jdbcType=INTEGER},
+ score = #{record.score,jdbcType=DECIMAL},
+ knowledgepointid = #{record.knowledgepointid,jdbcType=VARCHAR},
+ knowledgepointname = #{record.knowledgepointname,jdbcType=VARCHAR},
+ knowledgepointcode = #{record.knowledgepointcode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.QuestionMasterWithBLOBs">
+ update question_master
+ <set>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryid != null">
+ categoryid = #{categoryid,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryname != null">
+ categoryname = #{categoryname,jdbcType=VARCHAR},
+ </if>
+ <if test="level != null">
+ level = #{level,jdbcType=INTEGER},
+ </if>
+ <if test="score != null">
+ score = #{score,jdbcType=DECIMAL},
+ </if>
+ <if test="knowledgepointid != null">
+ knowledgepointid = #{knowledgepointid,jdbcType=VARCHAR},
+ </if>
+ <if test="knowledgepointname != null">
+ knowledgepointname = #{knowledgepointname,jdbcType=VARCHAR},
+ </if>
+ <if test="knowledgepointcode != null">
+ knowledgepointcode = #{knowledgepointcode,jdbcType=VARCHAR},
+ </if>
+ <if test="stem != null">
+ stem = #{stem,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="answer != null">
+ answer = #{answer,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="casebody != null">
+ casebody = #{casebody,jdbcType=LONGVARCHAR},
+ </if>
+ <if test="analysis != null">
+ analysis = #{analysis,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKeyWithBLOBs"
+ parameterType="com.farriver.bwf.data.master.model.QuestionMasterWithBLOBs">
+ update question_master
+ set status = #{status,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ categoryid = #{categoryid,jdbcType=VARCHAR},
+ categoryname = #{categoryname,jdbcType=VARCHAR},
+ level = #{level,jdbcType=INTEGER},
+ score = #{score,jdbcType=DECIMAL},
+ knowledgepointid = #{knowledgepointid,jdbcType=VARCHAR},
+ knowledgepointname = #{knowledgepointname,jdbcType=VARCHAR},
+ knowledgepointcode = #{knowledgepointcode,jdbcType=VARCHAR},
+ stem = #{stem,jdbcType=LONGVARCHAR},
+ answer = #{answer,jdbcType=LONGVARCHAR},
+ casebody = #{casebody,jdbcType=LONGVARCHAR},
+ analysis = #{analysis,jdbcType=LONGVARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionMaster">
+ update question_master
+ set status = #{status,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ categoryid = #{categoryid,jdbcType=VARCHAR},
+ categoryname = #{categoryname,jdbcType=VARCHAR},
+ level = #{level,jdbcType=INTEGER},
+ score = #{score,jdbcType=DECIMAL},
+ knowledgepointid = #{knowledgepointid,jdbcType=VARCHAR},
+ knowledgepointname = #{knowledgepointname,jdbcType=VARCHAR},
+ knowledgepointcode = #{knowledgepointcode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <resultMap extends="ResultMapWithBLOBs" id="QuestionMasterWithBLOBsExtendResultMap"
+ type="com.farriver.bwf.data.master.entity.QuestionMasterWithBLOBsExtend">
+ <collection ofType="com.farriver.bwf.data.master.model.QuestionMasterAnswer" property="answers">
+ <id column="ans_id" jdbcType="VARCHAR" property="id"/>
+ <result column="ans_remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="ans_createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="ans_updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="ans_masterid" jdbcType="VARCHAR" property="masterid"/>
+ <result column="ans_qkey" jdbcType="VARCHAR" property="qkey"/>
+ <result column="ans_sequenceno" jdbcType="VARCHAR" property="sequenceno"/>
+ <result column="ans_qvalue" jdbcType="VARCHAR" property="qvalue"/>
+ </collection>
+ <collection ofType="com.farriver.bwf.data.master.model.QuestionMasterOption" property="options">
+ <id column="op_id" jdbcType="VARCHAR" property="id"/>
+ <result column="op_remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="op_createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="op_updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="op_masterid" jdbcType="VARCHAR" property="masterid"/>
+ <result column="op_qkey" jdbcType="VARCHAR" property="qkey"/>
+ <result column="op_sequenceno" jdbcType="VARCHAR" property="sequenceno"/>
+ <result column="op_qvalue" jdbcType="VARCHAR" property="qvalue"/>
+ </collection>
+ </resultMap>
+ <select id="selectByExampleWithBLOBsExtend"
+ parameterType="com.farriver.bwf.data.master.model.QuestionMasterExample"
+ resultMap="QuestionMasterWithBLOBsExtendResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ q.*,
+ op.id as op_id,
+ op.remark as op_remark,
+ op.createtime as op_createtime,
+ op.updatetime as op_updatetime,
+ op.masterid as op_masterid,
+ op.qkey as op_qkey,
+ op.qvalue as op_qvalue,
+ op.sequenceno as op_sequenceno,
+
+ ans.id as ans_id,
+ ans.remark as ans_remark,
+ ans.createtime as ans_createtime,
+ ans.updatetime as ans_updatetime,
+ ans.masterid as ans_masterid,
+ ans.qkey as ans_qkey,
+ ans.qvalue as ans_qvalue,
+ ans.sequenceno as ans_sequenceno
+
+ FROM (
+ SELECT * FROM question_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ ) q
+ LEFT JOIN question_master_option op ON op.masterid = q.id
+ LEFT JOIN question_master_answer ans ON ans.masterid = q.id
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.java
new file mode 100644
index 0000000..480ee7b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.java
@@ -0,0 +1,36 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionMasterOption;
+import com.farriver.bwf.data.master.model.QuestionMasterOptionExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionMasterOptionMapper {
+ long countByExample(QuestionMasterOptionExample example);
+
+ int deleteByExample(QuestionMasterOptionExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionMasterOption record);
+
+ int insertSelective(QuestionMasterOption record);
+
+ List<QuestionMasterOption> selectByExampleWithBLOBs(QuestionMasterOptionExample example);
+
+ List<QuestionMasterOption> selectByExample(QuestionMasterOptionExample example);
+
+ QuestionMasterOption selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionMasterOption record, @Param("example") QuestionMasterOptionExample example);
+
+ int updateByExampleWithBLOBs(@Param("record") QuestionMasterOption record, @Param("example") QuestionMasterOptionExample example);
+
+ int updateByExample(@Param("record") QuestionMasterOption record, @Param("example") QuestionMasterOptionExample example);
+
+ int updateByPrimaryKeySelective(QuestionMasterOption record);
+
+ int updateByPrimaryKeyWithBLOBs(QuestionMasterOption record);
+
+ int updateByPrimaryKey(QuestionMasterOption record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.xml
new file mode 100644
index 0000000..f2bac63
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionMasterOptionMapper.xml
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionMasterOptionMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionMasterOption">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="masterid" jdbcType="VARCHAR" property="masterid" />
+ <result column="qkey" jdbcType="VARCHAR" property="qkey" />
+ <result column="sequenceno" jdbcType="INTEGER" property="sequenceno" />
+ </resultMap>
+ <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.farriver.bwf.data.master.model.QuestionMasterOption">
+ <result column="qvalue" jdbcType="LONGVARCHAR" property="qvalue" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, remark, createtime, updatetime, masterid, qkey, sequenceno
+ </sql>
+ <sql id="Blob_Column_List">
+ qvalue
+ </sql>
+ <select id="selectByExampleWithBLOBs" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOptionExample" resultMap="ResultMapWithBLOBs">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ ,
+ <include refid="Blob_Column_List" />
+ from question_master_option
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOptionExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from question_master_option
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
+ select
+ <include refid="Base_Column_List" />
+ ,
+ <include refid="Blob_Column_List" />
+ from question_master_option
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from question_master_option
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOptionExample">
+ delete from question_master_option
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOption">
+ insert into question_master_option (id, remark, createtime,
+ updatetime, masterid, qkey,
+ sequenceno, qvalue)
+ values (#{id,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP},
+ #{updatetime,jdbcType=TIMESTAMP}, #{masterid,jdbcType=VARCHAR}, #{qkey,jdbcType=VARCHAR},
+ #{sequenceno,jdbcType=INTEGER}, #{qvalue,jdbcType=LONGVARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOption">
+ insert into question_master_option
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="masterid != null">
+ masterid,
+ </if>
+ <if test="qkey != null">
+ qkey,
+ </if>
+ <if test="sequenceno != null">
+ sequenceno,
+ </if>
+ <if test="qvalue != null">
+ qvalue,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="qkey != null">
+ #{qkey,jdbcType=VARCHAR},
+ </if>
+ <if test="sequenceno != null">
+ #{sequenceno,jdbcType=INTEGER},
+ </if>
+ <if test="qvalue != null">
+ #{qvalue,jdbcType=LONGVARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOptionExample" resultType="java.lang.Long">
+ select count(*) from question_master_option
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_master_option
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.masterid != null">
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.qkey != null">
+ qkey = #{record.qkey,jdbcType=VARCHAR},
+ </if>
+ <if test="record.sequenceno != null">
+ sequenceno = #{record.sequenceno,jdbcType=INTEGER},
+ </if>
+ <if test="record.qvalue != null">
+ qvalue = #{record.qvalue,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExampleWithBLOBs" parameterType="map">
+ update question_master_option
+ set id = #{record.id,jdbcType=VARCHAR},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ qkey = #{record.qkey,jdbcType=VARCHAR},
+ sequenceno = #{record.sequenceno,jdbcType=INTEGER},
+ qvalue = #{record.qvalue,jdbcType=LONGVARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_master_option
+ set id = #{record.id,jdbcType=VARCHAR},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ qkey = #{record.qkey,jdbcType=VARCHAR},
+ sequenceno = #{record.sequenceno,jdbcType=INTEGER}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOption">
+ update question_master_option
+ <set>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ masterid = #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="qkey != null">
+ qkey = #{qkey,jdbcType=VARCHAR},
+ </if>
+ <if test="sequenceno != null">
+ sequenceno = #{sequenceno,jdbcType=INTEGER},
+ </if>
+ <if test="qvalue != null">
+ qvalue = #{qvalue,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOption">
+ update question_master_option
+ set remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ qkey = #{qkey,jdbcType=VARCHAR},
+ sequenceno = #{sequenceno,jdbcType=INTEGER},
+ qvalue = #{qvalue,jdbcType=LONGVARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionMasterOption">
+ update question_master_option
+ set remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ qkey = #{qkey,jdbcType=VARCHAR},
+ sequenceno = #{sequenceno,jdbcType=INTEGER}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.java
new file mode 100644
index 0000000..5a1dc66
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionPaperCategory;
+import com.farriver.bwf.data.master.model.QuestionPaperCategoryExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionPaperCategoryMapper {
+ long countByExample(QuestionPaperCategoryExample example);
+
+ int deleteByExample(QuestionPaperCategoryExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionPaperCategory record);
+
+ int insertSelective(QuestionPaperCategory record);
+
+ List<QuestionPaperCategory> selectByExample(QuestionPaperCategoryExample example);
+
+ QuestionPaperCategory selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionPaperCategory record, @Param("example") QuestionPaperCategoryExample example);
+
+ int updateByExample(@Param("record") QuestionPaperCategory record, @Param("example") QuestionPaperCategoryExample example);
+
+ int updateByPrimaryKeySelective(QuestionPaperCategory record);
+
+ int updateByPrimaryKey(QuestionPaperCategory record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.xml
new file mode 100644
index 0000000..92d804d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperCategoryMapper.xml
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionPaperCategoryMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionPaperCategory">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="parentid" jdbcType="VARCHAR" property="parentid"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="icon" jdbcType="VARCHAR" property="icon"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, parentid, name, isdeleted, remark, createtime, updatetime, status, icon
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionPaperCategoryExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from question_paper_category
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from question_paper_category
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from question_paper_category
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionPaperCategoryExample">
+ delete from question_paper_category
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionPaperCategory">
+ insert into question_paper_category (id, parentid, name,
+ isdeleted, remark, createtime,
+ updatetime, status, icon
+ )
+ values (#{id,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP},
+ #{updatetime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, #{icon,jdbcType=VARCHAR}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionPaperCategory">
+ insert into question_paper_category
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="icon != null">
+ icon,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="icon != null">
+ #{icon,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionPaperCategoryExample"
+ resultType="java.lang.Long">
+ select count(*) from question_paper_category
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_paper_category
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.icon != null">
+ icon = #{record.icon,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_paper_category
+ set id = #{record.id,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ status = #{record.status,jdbcType=INTEGER},
+ icon = #{record.icon,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.QuestionPaperCategory">
+ update question_paper_category
+ <set>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="icon != null">
+ icon = #{icon,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionPaperCategory">
+ update question_paper_category
+ set parentid = #{parentid,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ status = #{status,jdbcType=INTEGER},
+ icon = #{icon,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.java
new file mode 100644
index 0000000..cac8835
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionPaper;
+import com.farriver.bwf.data.master.model.QuestionPaperExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionPaperMapper {
+ long countByExample(QuestionPaperExample example);
+
+ int deleteByExample(QuestionPaperExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionPaper record);
+
+ int insertSelective(QuestionPaper record);
+
+ List<QuestionPaper> selectByExample(QuestionPaperExample example);
+
+ QuestionPaper selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionPaper record, @Param("example") QuestionPaperExample example);
+
+ int updateByExample(@Param("record") QuestionPaper record, @Param("example") QuestionPaperExample example);
+
+ int updateByPrimaryKeySelective(QuestionPaper record);
+
+ int updateByPrimaryKey(QuestionPaper record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.xml
new file mode 100644
index 0000000..1e527a8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperMapper.xml
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionPaperMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionPaper">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="subjectid" jdbcType="VARCHAR" property="subjectid"/>
+ <result column="subjectname" jdbcType="VARCHAR" property="subjectname"/>
+ <result column="subjectcode" jdbcType="VARCHAR" property="subjectcode"/>
+ <result column="categoryid" jdbcType="VARCHAR" property="categoryid"/>
+ <result column="categoryname" jdbcType="VARCHAR" property="categoryname"/>
+ <result column="price" jdbcType="DECIMAL" property="price"/>
+ <result column="type" jdbcType="INTEGER" property="type"/>
+ <result column="coverimage" jdbcType="VARCHAR" property="coverimage"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, status, isdeleted, remark, createtime, updatetime, code, name, subjectid, subjectname,
+ subjectcode, categoryid, categoryname, price, type, coverimage
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionPaperExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from question_paper
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from question_paper
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from question_paper
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionPaperExample">
+ delete from question_paper
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionPaper">
+ insert into question_paper (id, status, isdeleted,
+ remark, createtime, updatetime,
+ code, name, subjectid,
+ subjectname, subjectcode, categoryid,
+ categoryname, price, type,
+ coverimage)
+ values (#{id,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT},
+ #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{subjectid,jdbcType=VARCHAR},
+ #{subjectname,jdbcType=VARCHAR}, #{subjectcode,jdbcType=VARCHAR}, #{categoryid,jdbcType=VARCHAR},
+ #{categoryname,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, #{type,jdbcType=INTEGER},
+ #{coverimage,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionPaper">
+ insert into question_paper
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="subjectid != null">
+ subjectid,
+ </if>
+ <if test="subjectname != null">
+ subjectname,
+ </if>
+ <if test="subjectcode != null">
+ subjectcode,
+ </if>
+ <if test="categoryid != null">
+ categoryid,
+ </if>
+ <if test="categoryname != null">
+ categoryname,
+ </if>
+ <if test="price != null">
+ price,
+ </if>
+ <if test="type != null">
+ type,
+ </if>
+ <if test="coverimage != null">
+ coverimage,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryid != null">
+ #{categoryid,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryname != null">
+ #{categoryname,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="type != null">
+ #{type,jdbcType=INTEGER},
+ </if>
+ <if test="coverimage != null">
+ #{coverimage,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionPaperExample"
+ resultType="java.lang.Long">
+ select count(*) from question_paper
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_paper
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectid != null">
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectname != null">
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectcode != null">
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.categoryid != null">
+ categoryid = #{record.categoryid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.categoryname != null">
+ categoryname = #{record.categoryname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.price != null">
+ price = #{record.price,jdbcType=DECIMAL},
+ </if>
+ <if test="record.type != null">
+ type = #{record.type,jdbcType=INTEGER},
+ </if>
+ <if test="record.coverimage != null">
+ coverimage = #{record.coverimage,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_paper
+ set id = #{record.id,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ categoryid = #{record.categoryid,jdbcType=VARCHAR},
+ categoryname = #{record.categoryname,jdbcType=VARCHAR},
+ price = #{record.price,jdbcType=DECIMAL},
+ type = #{record.type,jdbcType=INTEGER},
+ coverimage = #{record.coverimage,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.QuestionPaper">
+ update question_paper
+ <set>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryid != null">
+ categoryid = #{categoryid,jdbcType=VARCHAR},
+ </if>
+ <if test="categoryname != null">
+ categoryname = #{categoryname,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ price = #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="type != null">
+ type = #{type,jdbcType=INTEGER},
+ </if>
+ <if test="coverimage != null">
+ coverimage = #{coverimage,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionPaper">
+ update question_paper
+ set status = #{status,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ categoryid = #{categoryid,jdbcType=VARCHAR},
+ categoryname = #{categoryname,jdbcType=VARCHAR},
+ price = #{price,jdbcType=DECIMAL},
+ type = #{type,jdbcType=INTEGER},
+ coverimage = #{coverimage,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.java
new file mode 100644
index 0000000..f87b99f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelation;
+import com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelationExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionPaperQuestionMasterRelationMapper {
+ long countByExample(QuestionPaperQuestionMasterRelationExample example);
+
+ int deleteByExample(QuestionPaperQuestionMasterRelationExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionPaperQuestionMasterRelation record);
+
+ int insertSelective(QuestionPaperQuestionMasterRelation record);
+
+ List<QuestionPaperQuestionMasterRelation> selectByExample(QuestionPaperQuestionMasterRelationExample example);
+
+ QuestionPaperQuestionMasterRelation selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionPaperQuestionMasterRelation record, @Param("example") QuestionPaperQuestionMasterRelationExample example);
+
+ int updateByExample(@Param("record") QuestionPaperQuestionMasterRelation record, @Param("example") QuestionPaperQuestionMasterRelationExample example);
+
+ int updateByPrimaryKeySelective(QuestionPaperQuestionMasterRelation record);
+
+ int updateByPrimaryKey(QuestionPaperQuestionMasterRelation record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.xml
new file mode 100644
index 0000000..5cb8eae
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionPaperQuestionMasterRelationMapper.xml
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionPaperQuestionMasterRelationMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelation">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="actionby" jdbcType="VARCHAR" property="actionby"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="questionid" jdbcType="VARCHAR" property="questionid"/>
+ <result column="questionname" jdbcType="VARCHAR" property="questionname"/>
+ <result column="questioncode" jdbcType="VARCHAR" property="questioncode"/>
+ <result column="paperid" jdbcType="VARCHAR" property="paperid"/>
+ <result column="papername" jdbcType="VARCHAR" property="papername"/>
+ <result column="papercode" jdbcType="VARCHAR" property="papercode"/>
+ <result column="quetioncategory" jdbcType="VARCHAR" property="quetioncategory"/>
+ <result column="subjectid" jdbcType="VARCHAR" property="subjectid"/>
+ <result column="subjectcode" jdbcType="VARCHAR" property="subjectcode"/>
+ <result column="subjectname" jdbcType="VARCHAR" property="subjectname"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , createtime, updatetime, status, actionby, isdeleted, questionid, questionname,
+ questioncode, paperid, papername, papercode, quetioncategory, subjectid, subjectcode,
+ subjectname
+ </sql>
+ <select id="selectByExample"
+ parameterType="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelationExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from question_paper_question_master_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from question_paper_question_master_relation
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from question_paper_question_master_relation
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample"
+ parameterType="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelationExample">
+ delete from question_paper_question_master_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelation">
+ insert into question_paper_question_master_relation (id, createtime, updatetime,
+ status, actionby, isdeleted,
+ questionid, questionname, questioncode,
+ paperid, papername, papercode,
+ quetioncategory, subjectid, subjectcode,
+ subjectname)
+ values (#{id,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{status,jdbcType=INTEGER}, #{actionby,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT},
+ #{questionid,jdbcType=VARCHAR}, #{questionname,jdbcType=VARCHAR}, #{questioncode,jdbcType=VARCHAR},
+ #{paperid,jdbcType=VARCHAR}, #{papername,jdbcType=VARCHAR}, #{papercode,jdbcType=VARCHAR},
+ #{quetioncategory,jdbcType=VARCHAR}, #{subjectid,jdbcType=VARCHAR}, #{subjectcode,jdbcType=VARCHAR},
+ #{subjectname,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective"
+ parameterType="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelation">
+ insert into question_paper_question_master_relation
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="actionby != null">
+ actionby,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="questionid != null">
+ questionid,
+ </if>
+ <if test="questionname != null">
+ questionname,
+ </if>
+ <if test="questioncode != null">
+ questioncode,
+ </if>
+ <if test="paperid != null">
+ paperid,
+ </if>
+ <if test="papername != null">
+ papername,
+ </if>
+ <if test="papercode != null">
+ papercode,
+ </if>
+ <if test="quetioncategory != null">
+ quetioncategory,
+ </if>
+ <if test="subjectid != null">
+ subjectid,
+ </if>
+ <if test="subjectcode != null">
+ subjectcode,
+ </if>
+ <if test="subjectname != null">
+ subjectname,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="actionby != null">
+ #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="questionid != null">
+ #{questionid,jdbcType=VARCHAR},
+ </if>
+ <if test="questionname != null">
+ #{questionname,jdbcType=VARCHAR},
+ </if>
+ <if test="questioncode != null">
+ #{questioncode,jdbcType=VARCHAR},
+ </if>
+ <if test="paperid != null">
+ #{paperid,jdbcType=VARCHAR},
+ </if>
+ <if test="papername != null">
+ #{papername,jdbcType=VARCHAR},
+ </if>
+ <if test="papercode != null">
+ #{papercode,jdbcType=VARCHAR},
+ </if>
+ <if test="quetioncategory != null">
+ #{quetioncategory,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ #{subjectname,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample"
+ parameterType="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelationExample"
+ resultType="java.lang.Long">
+ select count(*) from question_paper_question_master_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_paper_question_master_relation
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.actionby != null">
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.questionid != null">
+ questionid = #{record.questionid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.questionname != null">
+ questionname = #{record.questionname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.questioncode != null">
+ questioncode = #{record.questioncode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.paperid != null">
+ paperid = #{record.paperid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.papername != null">
+ papername = #{record.papername,jdbcType=VARCHAR},
+ </if>
+ <if test="record.papercode != null">
+ papercode = #{record.papercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.quetioncategory != null">
+ quetioncategory = #{record.quetioncategory,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectid != null">
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectcode != null">
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectname != null">
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_paper_question_master_relation
+ set id = #{record.id,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ status = #{record.status,jdbcType=INTEGER},
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ questionid = #{record.questionid,jdbcType=VARCHAR},
+ questionname = #{record.questionname,jdbcType=VARCHAR},
+ questioncode = #{record.questioncode,jdbcType=VARCHAR},
+ paperid = #{record.paperid,jdbcType=VARCHAR},
+ papername = #{record.papername,jdbcType=VARCHAR},
+ papercode = #{record.papercode,jdbcType=VARCHAR},
+ quetioncategory = #{record.quetioncategory,jdbcType=VARCHAR},
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ subjectname = #{record.subjectname,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelation">
+ update question_paper_question_master_relation
+ <set>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="actionby != null">
+ actionby = #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="questionid != null">
+ questionid = #{questionid,jdbcType=VARCHAR},
+ </if>
+ <if test="questionname != null">
+ questionname = #{questionname,jdbcType=VARCHAR},
+ </if>
+ <if test="questioncode != null">
+ questioncode = #{questioncode,jdbcType=VARCHAR},
+ </if>
+ <if test="paperid != null">
+ paperid = #{paperid,jdbcType=VARCHAR},
+ </if>
+ <if test="papername != null">
+ papername = #{papername,jdbcType=VARCHAR},
+ </if>
+ <if test="papercode != null">
+ papercode = #{papercode,jdbcType=VARCHAR},
+ </if>
+ <if test="quetioncategory != null">
+ quetioncategory = #{quetioncategory,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey"
+ parameterType="com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelation">
+ update question_paper_question_master_relation
+ set createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ status = #{status,jdbcType=INTEGER},
+ actionby = #{actionby,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ questionid = #{questionid,jdbcType=VARCHAR},
+ questionname = #{questionname,jdbcType=VARCHAR},
+ questioncode = #{questioncode,jdbcType=VARCHAR},
+ paperid = #{paperid,jdbcType=VARCHAR},
+ papername = #{papername,jdbcType=VARCHAR},
+ papercode = #{papercode,jdbcType=VARCHAR},
+ quetioncategory = #{quetioncategory,jdbcType=VARCHAR},
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ subjectname = #{subjectname,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.java
new file mode 100644
index 0000000..4a44049
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionSubjectGradeRelation;
+import com.farriver.bwf.data.master.model.QuestionSubjectGradeRelationExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionSubjectGradeRelationMapper {
+ long countByExample(QuestionSubjectGradeRelationExample example);
+
+ int deleteByExample(QuestionSubjectGradeRelationExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionSubjectGradeRelation record);
+
+ int insertSelective(QuestionSubjectGradeRelation record);
+
+ List<QuestionSubjectGradeRelation> selectByExample(QuestionSubjectGradeRelationExample example);
+
+ QuestionSubjectGradeRelation selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionSubjectGradeRelation record, @Param("example") QuestionSubjectGradeRelationExample example);
+
+ int updateByExample(@Param("record") QuestionSubjectGradeRelation record, @Param("example") QuestionSubjectGradeRelationExample example);
+
+ int updateByPrimaryKeySelective(QuestionSubjectGradeRelation record);
+
+ int updateByPrimaryKey(QuestionSubjectGradeRelation record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.xml
new file mode 100644
index 0000000..909f391
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectGradeRelationMapper.xml
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionSubjectGradeRelationMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelation">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="status" jdbcType="INTEGER" property="status" />
+ <result column="actionby" jdbcType="VARCHAR" property="actionby" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="gradeid" jdbcType="VARCHAR" property="gradeid" />
+ <result column="gradename" jdbcType="VARCHAR" property="gradename" />
+ <result column="gradecode" jdbcType="VARCHAR" property="gradecode" />
+ <result column="subjectid" jdbcType="VARCHAR" property="subjectid" />
+ <result column="subjectname" jdbcType="VARCHAR" property="subjectname" />
+ <result column="subjectcode" jdbcType="VARCHAR" property="subjectcode" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, createtime, updatetime, status, actionby, isdeleted, gradeid, gradename, gradecode,
+ subjectid, subjectname, subjectcode
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelationExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from question_subject_grade_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from question_subject_grade_relation
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from question_subject_grade_relation
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelationExample">
+ delete from question_subject_grade_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelation">
+ insert into question_subject_grade_relation (id, createtime, updatetime,
+ status, actionby, isdeleted,
+ gradeid, gradename, gradecode,
+ subjectid, subjectname, subjectcode
+ )
+ values (#{id,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{status,jdbcType=INTEGER}, #{actionby,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT},
+ #{gradeid,jdbcType=VARCHAR}, #{gradename,jdbcType=VARCHAR}, #{gradecode,jdbcType=VARCHAR},
+ #{subjectid,jdbcType=VARCHAR}, #{subjectname,jdbcType=VARCHAR}, #{subjectcode,jdbcType=VARCHAR}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelation">
+ insert into question_subject_grade_relation
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="actionby != null">
+ actionby,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="gradeid != null">
+ gradeid,
+ </if>
+ <if test="gradename != null">
+ gradename,
+ </if>
+ <if test="gradecode != null">
+ gradecode,
+ </if>
+ <if test="subjectid != null">
+ subjectid,
+ </if>
+ <if test="subjectname != null">
+ subjectname,
+ </if>
+ <if test="subjectcode != null">
+ subjectcode,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="actionby != null">
+ #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="gradeid != null">
+ #{gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="gradename != null">
+ #{gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="gradecode != null">
+ #{gradecode,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelationExample" resultType="java.lang.Long">
+ select count(*) from question_subject_grade_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_subject_grade_relation
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.actionby != null">
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.gradeid != null">
+ gradeid = #{record.gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradename != null">
+ gradename = #{record.gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradecode != null">
+ gradecode = #{record.gradecode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectid != null">
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectname != null">
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectcode != null">
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_subject_grade_relation
+ set id = #{record.id,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ status = #{record.status,jdbcType=INTEGER},
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ gradeid = #{record.gradeid,jdbcType=VARCHAR},
+ gradename = #{record.gradename,jdbcType=VARCHAR},
+ gradecode = #{record.gradecode,jdbcType=VARCHAR},
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelation">
+ update question_subject_grade_relation
+ <set>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="actionby != null">
+ actionby = #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="gradeid != null">
+ gradeid = #{gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="gradename != null">
+ gradename = #{gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="gradecode != null">
+ gradecode = #{gradecode,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectid != null">
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectGradeRelation">
+ update question_subject_grade_relation
+ set createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ status = #{status,jdbcType=INTEGER},
+ actionby = #{actionby,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ gradeid = #{gradeid,jdbcType=VARCHAR},
+ gradename = #{gradename,jdbcType=VARCHAR},
+ gradecode = #{gradecode,jdbcType=VARCHAR},
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ subjectcode = #{subjectcode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.java
new file mode 100644
index 0000000..77c1095
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePoint;
+import com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePointExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionSubjectKnowledgePointMapper {
+ long countByExample(QuestionSubjectKnowledgePointExample example);
+
+ int deleteByExample(QuestionSubjectKnowledgePointExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionSubjectKnowledgePoint record);
+
+ int insertSelective(QuestionSubjectKnowledgePoint record);
+
+ List<QuestionSubjectKnowledgePoint> selectByExample(QuestionSubjectKnowledgePointExample example);
+
+ QuestionSubjectKnowledgePoint selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionSubjectKnowledgePoint record, @Param("example") QuestionSubjectKnowledgePointExample example);
+
+ int updateByExample(@Param("record") QuestionSubjectKnowledgePoint record, @Param("example") QuestionSubjectKnowledgePointExample example);
+
+ int updateByPrimaryKeySelective(QuestionSubjectKnowledgePoint record);
+
+ int updateByPrimaryKey(QuestionSubjectKnowledgePoint record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.xml
new file mode 100644
index 0000000..9d5b223
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectKnowledgePointMapper.xml
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionSubjectKnowledgePointMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePoint">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="parentid" jdbcType="VARCHAR" property="parentid"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="subjectid" jdbcType="VARCHAR" property="subjectid"/>
+ <result column="subjectname" jdbcType="VARCHAR" property="subjectname"/>
+ <result column="subjectcode" jdbcType="VARCHAR" property="subjectcode"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, parentid, name, isdeleted, remark, createtime, updatetime, status, subjectid,
+ subjectname, subjectcode
+ </sql>
+ <select id="selectByExample"
+ parameterType="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePointExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from question_subject_knowledge_point
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from question_subject_knowledge_point
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from question_subject_knowledge_point
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample"
+ parameterType="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePointExample">
+ delete from question_subject_knowledge_point
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePoint">
+ insert into question_subject_knowledge_point (id, parentid, name,
+ isdeleted, remark, createtime,
+ updatetime, status, subjectid,
+ subjectname, subjectcode)
+ values (#{id,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP},
+ #{updatetime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, #{subjectid,jdbcType=VARCHAR},
+ #{subjectname,jdbcType=VARCHAR}, #{subjectcode,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective"
+ parameterType="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePoint">
+ insert into question_subject_knowledge_point
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="subjectid != null">
+ subjectid,
+ </if>
+ <if test="subjectname != null">
+ subjectname,
+ </if>
+ <if test="subjectcode != null">
+ subjectcode,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="subjectid != null">
+ #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample"
+ parameterType="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePointExample"
+ resultType="java.lang.Long">
+ select count(*) from question_subject_knowledge_point
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_subject_knowledge_point
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.subjectid != null">
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectname != null">
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.subjectcode != null">
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_subject_knowledge_point
+ set id = #{record.id,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ status = #{record.status,jdbcType=INTEGER},
+ subjectid = #{record.subjectid,jdbcType=VARCHAR},
+ subjectname = #{record.subjectname,jdbcType=VARCHAR},
+ subjectcode = #{record.subjectcode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePoint">
+ update question_subject_knowledge_point
+ <set>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="subjectid != null">
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectname != null">
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ </if>
+ <if test="subjectcode != null">
+ subjectcode = #{subjectcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey"
+ parameterType="com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePoint">
+ update question_subject_knowledge_point
+ set parentid = #{parentid,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ status = #{status,jdbcType=INTEGER},
+ subjectid = #{subjectid,jdbcType=VARCHAR},
+ subjectname = #{subjectname,jdbcType=VARCHAR},
+ subjectcode = #{subjectcode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.java
new file mode 100644
index 0000000..2c97dbb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.QuestionSubject;
+import com.farriver.bwf.data.master.model.QuestionSubjectExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface QuestionSubjectMapper {
+ long countByExample(QuestionSubjectExample example);
+
+ int deleteByExample(QuestionSubjectExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(QuestionSubject record);
+
+ int insertSelective(QuestionSubject record);
+
+ List<QuestionSubject> selectByExample(QuestionSubjectExample example);
+
+ QuestionSubject selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") QuestionSubject record, @Param("example") QuestionSubjectExample example);
+
+ int updateByExample(@Param("record") QuestionSubject record, @Param("example") QuestionSubjectExample example);
+
+ int updateByPrimaryKeySelective(QuestionSubject record);
+
+ int updateByPrimaryKey(QuestionSubject record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.xml
new file mode 100644
index 0000000..e60d9c7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/QuestionSubjectMapper.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.QuestionSubjectMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.QuestionSubject">
+ <id column="id" jdbcType="VARCHAR" property="id" />
+ <result column="status" jdbcType="INTEGER" property="status" />
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted" />
+ <result column="remark" jdbcType="VARCHAR" property="remark" />
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime" />
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime" />
+ <result column="code" jdbcType="VARCHAR" property="code" />
+ <result column="name" jdbcType="VARCHAR" property="name" />
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, status, isdeleted, remark, createtime, updatetime, code, name
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectExample" resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List" />
+ from question_subject
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from question_subject
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from question_subject
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectExample">
+ delete from question_subject
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.QuestionSubject">
+ insert into question_subject (id, status, isdeleted,
+ remark, createtime, updatetime,
+ code, name)
+ values (#{id,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT},
+ #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.QuestionSubject">
+ insert into question_subject
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.QuestionSubjectExample" resultType="java.lang.Long">
+ select count(*) from question_subject
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause" />
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update question_subject
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update question_subject
+ set id = #{record.id,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause" />
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.QuestionSubject">
+ update question_subject
+ <set>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.QuestionSubject">
+ update question_subject
+ set status = #{status,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.java
new file mode 100644
index 0000000..a135772
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.java
@@ -0,0 +1,33 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.entity.ShoppingCartExtend;
+import com.farriver.bwf.data.master.model.ShoppingCart;
+import com.farriver.bwf.data.master.model.ShoppingCartExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ShoppingCartMapper {
+ long countByExample(ShoppingCartExample example);
+
+ int deleteByExample(ShoppingCartExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(ShoppingCart record);
+
+ int insertSelective(ShoppingCart record);
+
+ List<ShoppingCart> selectByExample(ShoppingCartExample example);
+
+ List<ShoppingCartExtend> selectShoppingCartExtendByExample(ShoppingCartExample example);
+
+ ShoppingCart selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") ShoppingCart record, @Param("example") ShoppingCartExample example);
+
+ int updateByExample(@Param("record") ShoppingCart record, @Param("example") ShoppingCartExample example);
+
+ int updateByPrimaryKeySelective(ShoppingCart record);
+
+ int updateByPrimaryKey(ShoppingCart record);
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.xml
new file mode 100644
index 0000000..71285e7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartMapper.xml
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.ShoppingCartMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.ShoppingCart">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="vipuserId" jdbcType="VARCHAR" property="vipuserid"/>
+ <result column="vipname" jdbcType="VARCHAR" property="vipname"/>
+ <result column="vipphone" jdbcType="VARCHAR" property="vipphone"/>
+ <result column="vipdiamondtype" jdbcType="INTEGER" property="vipdiamondtype"/>
+ <result column="viptype" jdbcType="INTEGER" property="viptype"/>
+ <result column="vippicture" jdbcType="VARCHAR" property="vippicture"/>
+ <result column="vipcarddiscountrate" jdbcType="DECIMAL" property="vipcarddiscountrate"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , code, isdeleted, remark, createtime, updatetime, vipuserId, vipname, vipphone,
+ vipdiamondtype, viptype, vippicture, vipcarddiscountrate
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.ShoppingCartExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from shopping_cart
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from shopping_cart
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from shopping_cart
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.ShoppingCartExample">
+ delete from shopping_cart
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.ShoppingCart">
+ insert into shopping_cart (id, code, isdeleted,
+ remark, createtime, updatetime,
+ vipuserId, vipname, vipphone,
+ vipdiamondtype, viptype, vippicture,
+ vipcarddiscountrate)
+ values (#{id,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT},
+ #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{vipuserid,jdbcType=VARCHAR}, #{vipname,jdbcType=VARCHAR}, #{vipphone,jdbcType=VARCHAR},
+ #{vipdiamondtype,jdbcType=INTEGER}, #{viptype,jdbcType=INTEGER}, #{vippicture,jdbcType=VARCHAR},
+ #{vipcarddiscountrate,jdbcType=DECIMAL})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.ShoppingCart">
+ insert into shopping_cart
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="vipuserid != null">
+ vipuserId,
+ </if>
+ <if test="vipname != null">
+ vipname,
+ </if>
+ <if test="vipphone != null">
+ vipphone,
+ </if>
+ <if test="vipdiamondtype != null">
+ vipdiamondtype,
+ </if>
+ <if test="viptype != null">
+ viptype,
+ </if>
+ <if test="vippicture != null">
+ vippicture,
+ </if>
+ <if test="vipcarddiscountrate != null">
+ vipcarddiscountrate,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="vipuserid != null">
+ #{vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipname != null">
+ #{vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="vipphone != null">
+ #{vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="vipdiamondtype != null">
+ #{vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="viptype != null">
+ #{viptype,jdbcType=INTEGER},
+ </if>
+ <if test="vippicture != null">
+ #{vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="vipcarddiscountrate != null">
+ #{vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.ShoppingCartExample"
+ resultType="java.lang.Long">
+ select count(*) from shopping_cart
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update shopping_cart
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.vipuserid != null">
+ vipuserId = #{record.vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipname != null">
+ vipname = #{record.vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipphone != null">
+ vipphone = #{record.vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipdiamondtype != null">
+ vipdiamondtype = #{record.vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="record.viptype != null">
+ viptype = #{record.viptype,jdbcType=INTEGER},
+ </if>
+ <if test="record.vippicture != null">
+ vippicture = #{record.vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="record.vipcarddiscountrate != null">
+ vipcarddiscountrate = #{record.vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update shopping_cart
+ set id = #{record.id,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ vipuserId = #{record.vipuserid,jdbcType=VARCHAR},
+ vipname = #{record.vipname,jdbcType=VARCHAR},
+ vipphone = #{record.vipphone,jdbcType=VARCHAR},
+ vipdiamondtype = #{record.vipdiamondtype,jdbcType=INTEGER},
+ viptype = #{record.viptype,jdbcType=INTEGER},
+ vippicture = #{record.vippicture,jdbcType=VARCHAR},
+ vipcarddiscountrate = #{record.vipcarddiscountrate,jdbcType=DECIMAL}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.ShoppingCart">
+ update shopping_cart
+ <set>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="vipuserid != null">
+ vipuserId = #{vipuserid,jdbcType=VARCHAR},
+ </if>
+ <if test="vipname != null">
+ vipname = #{vipname,jdbcType=VARCHAR},
+ </if>
+ <if test="vipphone != null">
+ vipphone = #{vipphone,jdbcType=VARCHAR},
+ </if>
+ <if test="vipdiamondtype != null">
+ vipdiamondtype = #{vipdiamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="viptype != null">
+ viptype = #{viptype,jdbcType=INTEGER},
+ </if>
+ <if test="vippicture != null">
+ vippicture = #{vippicture,jdbcType=VARCHAR},
+ </if>
+ <if test="vipcarddiscountrate != null">
+ vipcarddiscountrate = #{vipcarddiscountrate,jdbcType=DECIMAL},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.ShoppingCart">
+ update shopping_cart
+ set code = #{code,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ vipuserId = #{vipuserid,jdbcType=VARCHAR},
+ vipname = #{vipname,jdbcType=VARCHAR},
+ vipphone = #{vipphone,jdbcType=VARCHAR},
+ vipdiamondtype = #{vipdiamondtype,jdbcType=INTEGER},
+ viptype = #{viptype,jdbcType=INTEGER},
+ vippicture = #{vippicture,jdbcType=VARCHAR},
+ vipcarddiscountrate = #{vipcarddiscountrate,jdbcType=DECIMAL}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <resultMap extends="BaseResultMap" id="ShoppingCartExtendResultMap"
+ type="com.farriver.bwf.data.master.entity.ShoppingCartExtend">
+ <collection ofType="com.farriver.bwf.data.master.model.ShoppingCartProduct" property="products">
+ <id column="p_id" jdbcType="VARCHAR" property="id"/>
+ <result column="p_isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="p_remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="p_createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="p_updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="p_productid" jdbcType="VARCHAR" property="productid"/>
+ <result column="p_productcode" jdbcType="VARCHAR" property="productcode"/>
+ <result column="p_productname" jdbcType="VARCHAR" property="productname"/>
+ <result column="p_status" jdbcType="INTEGER" property="status"/>
+ <result column="p_color" jdbcType="VARCHAR" property="color"/>
+ <result column="p_size" jdbcType="VARCHAR" property="size"/>
+ <result column="p_count" jdbcType="INTEGER" property="count"/>
+ <result column="p_image" jdbcType="VARCHAR" property="image"/>
+ <result column="p_price" jdbcType="DECIMAL" property="price"/>
+ <result column="p_saleprice" jdbcType="DECIMAL" property="saleprice"/>
+ <result column="p_cartcode" jdbcType="VARCHAR" property="cartcode"/>
+ <result column="p_cartid" jdbcType="VARCHAR" property="cartid"/>
+ </collection>
+ </resultMap>
+ <select id="selectShoppingCartExtendByExample"
+ parameterType="com.farriver.bwf.data.master.model.ShoppingCartExample"
+ resultMap="ShoppingCartExtendResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ s.*,
+ p.id AS p_id,
+ p.isdeleted AS p_isdeleted,
+ p.remark AS p_remark,
+ p.createtime AS p_createtime,
+ p.updatetime AS p_updatetime,
+ p.productid AS p_productid,
+ p.productcode AS p_productcode,
+ p.productname AS p_productname,
+ p.status AS p_status,
+ p.color AS p_color,
+ p.size AS p_size,
+ p.count AS p_count,
+ p.image AS p_image,
+ p.price AS p_price,
+ p.saleprice AS p_saleprice,
+ p.cartcode AS p_cartcode,
+ p.cartid AS p_cartid
+ FROM (
+ SELECT * FROM shopping_cart
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ ) s
+ LEFT JOIN shopping_cart_product p ON s.id = p.cartid
+ </select>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.java
new file mode 100644
index 0000000..e4a6f80
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.ShoppingCartProduct;
+import com.farriver.bwf.data.master.model.ShoppingCartProductExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ShoppingCartProductMapper {
+ long countByExample(ShoppingCartProductExample example);
+
+ int deleteByExample(ShoppingCartProductExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(ShoppingCartProduct record);
+
+ int insertSelective(ShoppingCartProduct record);
+
+ List<ShoppingCartProduct> selectByExample(ShoppingCartProductExample example);
+
+ ShoppingCartProduct selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") ShoppingCartProduct record, @Param("example") ShoppingCartProductExample example);
+
+ int updateByExample(@Param("record") ShoppingCartProduct record, @Param("example") ShoppingCartProductExample example);
+
+ int updateByPrimaryKeySelective(ShoppingCartProduct record);
+
+ int updateByPrimaryKey(ShoppingCartProduct record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.xml
new file mode 100644
index 0000000..8c91b7c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/ShoppingCartProductMapper.xml
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.ShoppingCartProductMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.ShoppingCartProduct">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="productid" jdbcType="VARCHAR" property="productid"/>
+ <result column="productcode" jdbcType="VARCHAR" property="productcode"/>
+ <result column="productname" jdbcType="VARCHAR" property="productname"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="color" jdbcType="VARCHAR" property="color"/>
+ <result column="size" jdbcType="VARCHAR" property="size"/>
+ <result column="count" jdbcType="INTEGER" property="count"/>
+ <result column="image" jdbcType="VARCHAR" property="image"/>
+ <result column="price" jdbcType="DECIMAL" property="price"/>
+ <result column="saleprice" jdbcType="DECIMAL" property="saleprice"/>
+ <result column="cartid" jdbcType="VARCHAR" property="cartid"/>
+ <result column="cartcode" jdbcType="VARCHAR" property="cartcode"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, isdeleted, remark, createtime, updatetime, productid, productcode, productname,
+ status, color, size, count, image, price, saleprice, cartid, cartcode
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.ShoppingCartProductExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from shopping_cart_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from shopping_cart_product
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from shopping_cart_product
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.ShoppingCartProductExample">
+ delete from shopping_cart_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.ShoppingCartProduct">
+ insert into shopping_cart_product (id, isdeleted, remark,
+ createtime, updatetime, productid,
+ productcode, productname, status,
+ color, size, count,
+ image, price, saleprice,
+ cartid, cartcode)
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{productid,jdbcType=VARCHAR},
+ #{productcode,jdbcType=VARCHAR}, #{productname,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{color,jdbcType=VARCHAR}, #{size,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER},
+ #{image,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, #{saleprice,jdbcType=DECIMAL},
+ #{cartid,jdbcType=VARCHAR}, #{cartcode,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.ShoppingCartProduct">
+ insert into shopping_cart_product
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="productid != null">
+ productid,
+ </if>
+ <if test="productcode != null">
+ productcode,
+ </if>
+ <if test="productname != null">
+ productname,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="color != null">
+ color,
+ </if>
+ <if test="size != null">
+ size,
+ </if>
+ <if test="count != null">
+ count,
+ </if>
+ <if test="image != null">
+ image,
+ </if>
+ <if test="price != null">
+ price,
+ </if>
+ <if test="saleprice != null">
+ saleprice,
+ </if>
+ <if test="cartid != null">
+ cartid,
+ </if>
+ <if test="cartcode != null">
+ cartcode,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="productid != null">
+ #{productid,jdbcType=VARCHAR},
+ </if>
+ <if test="productcode != null">
+ #{productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="productname != null">
+ #{productname,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="color != null">
+ #{color,jdbcType=VARCHAR},
+ </if>
+ <if test="size != null">
+ #{size,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ #{count,jdbcType=INTEGER},
+ </if>
+ <if test="image != null">
+ #{image,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="saleprice != null">
+ #{saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="cartid != null">
+ #{cartid,jdbcType=VARCHAR},
+ </if>
+ <if test="cartcode != null">
+ #{cartcode,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.ShoppingCartProductExample"
+ resultType="java.lang.Long">
+ select count(*) from shopping_cart_product
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update shopping_cart_product
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.productid != null">
+ productid = #{record.productid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.productcode != null">
+ productcode = #{record.productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.productname != null">
+ productname = #{record.productname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.color != null">
+ color = #{record.color,jdbcType=VARCHAR},
+ </if>
+ <if test="record.size != null">
+ size = #{record.size,jdbcType=VARCHAR},
+ </if>
+ <if test="record.count != null">
+ count = #{record.count,jdbcType=INTEGER},
+ </if>
+ <if test="record.image != null">
+ image = #{record.image,jdbcType=VARCHAR},
+ </if>
+ <if test="record.price != null">
+ price = #{record.price,jdbcType=DECIMAL},
+ </if>
+ <if test="record.saleprice != null">
+ saleprice = #{record.saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="record.cartid != null">
+ cartid = #{record.cartid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.cartcode != null">
+ cartcode = #{record.cartcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update shopping_cart_product
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ productid = #{record.productid,jdbcType=VARCHAR},
+ productcode = #{record.productcode,jdbcType=VARCHAR},
+ productname = #{record.productname,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ color = #{record.color,jdbcType=VARCHAR},
+ size = #{record.size,jdbcType=VARCHAR},
+ count = #{record.count,jdbcType=INTEGER},
+ image = #{record.image,jdbcType=VARCHAR},
+ price = #{record.price,jdbcType=DECIMAL},
+ saleprice = #{record.saleprice,jdbcType=DECIMAL},
+ cartid = #{record.cartid,jdbcType=VARCHAR},
+ cartcode = #{record.cartcode,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.ShoppingCartProduct">
+ update shopping_cart_product
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="productid != null">
+ productid = #{productid,jdbcType=VARCHAR},
+ </if>
+ <if test="productcode != null">
+ productcode = #{productcode,jdbcType=VARCHAR},
+ </if>
+ <if test="productname != null">
+ productname = #{productname,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="color != null">
+ color = #{color,jdbcType=VARCHAR},
+ </if>
+ <if test="size != null">
+ size = #{size,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ count = #{count,jdbcType=INTEGER},
+ </if>
+ <if test="image != null">
+ image = #{image,jdbcType=VARCHAR},
+ </if>
+ <if test="price != null">
+ price = #{price,jdbcType=DECIMAL},
+ </if>
+ <if test="saleprice != null">
+ saleprice = #{saleprice,jdbcType=DECIMAL},
+ </if>
+ <if test="cartid != null">
+ cartid = #{cartid,jdbcType=VARCHAR},
+ </if>
+ <if test="cartcode != null">
+ cartcode = #{cartcode,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.ShoppingCartProduct">
+ update shopping_cart_product
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ productid = #{productid,jdbcType=VARCHAR},
+ productcode = #{productcode,jdbcType=VARCHAR},
+ productname = #{productname,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ color = #{color,jdbcType=VARCHAR},
+ size = #{size,jdbcType=VARCHAR},
+ count = #{count,jdbcType=INTEGER},
+ image = #{image,jdbcType=VARCHAR},
+ price = #{price,jdbcType=DECIMAL},
+ saleprice = #{saleprice,jdbcType=DECIMAL},
+ cartid = #{cartid,jdbcType=VARCHAR},
+ cartcode = #{cartcode,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.java
new file mode 100644
index 0000000..6e96897
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.SystemAuditTrail;
+import com.farriver.bwf.data.master.model.SystemAuditTrailExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SystemAuditTrailMapper {
+ long countByExample(SystemAuditTrailExample example);
+
+ int deleteByExample(SystemAuditTrailExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(SystemAuditTrail record);
+
+ int insertSelective(SystemAuditTrail record);
+
+ List<SystemAuditTrail> selectByExample(SystemAuditTrailExample example);
+
+ SystemAuditTrail selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") SystemAuditTrail record, @Param("example") SystemAuditTrailExample example);
+
+ int updateByExample(@Param("record") SystemAuditTrail record, @Param("example") SystemAuditTrailExample example);
+
+ int updateByPrimaryKeySelective(SystemAuditTrail record);
+
+ int updateByPrimaryKey(SystemAuditTrail record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.xml
new file mode 100644
index 0000000..bf4ecc0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemAuditTrailMapper.xml
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.SystemAuditTrailMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.SystemAuditTrail">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="message" jdbcType="VARCHAR" property="message"/>
+ <result column="actionby" jdbcType="VARCHAR" property="actionby"/>
+ <result column="actiontype" jdbcType="VARCHAR" property="actiontype"/>
+ <result column="actionip" jdbcType="VARCHAR" property="actionip"/>
+ <result column="actiontime" jdbcType="TIMESTAMP" property="actiontime"/>
+ <result column="module" jdbcType="VARCHAR" property="module"/>
+ <result column="beforetarget" jdbcType="VARCHAR" property="beforetarget"/>
+ <result column="aftertarget" jdbcType="VARCHAR" property="aftertarget"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , message, actionby, actiontype, actionip, actiontime, module, beforetarget, aftertarget,
+ isdeleted, remark, createtime, updatetime
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.SystemAuditTrailExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from system_audittrail
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from system_audittrail
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from system_audittrail
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.SystemAuditTrailExample">
+ delete from system_audittrail
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.SystemAuditTrail">
+ insert into system_audittrail (id, message, actionby,
+ actiontype, actionip, actiontime,
+ module, beforetarget, aftertarget,
+ isdeleted, remark, createtime,
+ updatetime)
+ values (#{id,jdbcType=VARCHAR}, #{message,jdbcType=VARCHAR}, #{actionby,jdbcType=VARCHAR},
+ #{actiontype,jdbcType=VARCHAR}, #{actionip,jdbcType=VARCHAR}, #{actiontime,jdbcType=TIMESTAMP},
+ #{module,jdbcType=VARCHAR}, #{beforetarget,jdbcType=VARCHAR}, #{aftertarget,jdbcType=VARCHAR},
+ #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP},
+ #{updatetime,jdbcType=TIMESTAMP})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.SystemAuditTrail">
+ insert into system_audittrail
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="message != null">
+ message,
+ </if>
+ <if test="actionby != null">
+ actionby,
+ </if>
+ <if test="actiontype != null">
+ actiontype,
+ </if>
+ <if test="actionip != null">
+ actionip,
+ </if>
+ <if test="actiontime != null">
+ actiontime,
+ </if>
+ <if test="module != null">
+ module,
+ </if>
+ <if test="beforetarget != null">
+ beforetarget,
+ </if>
+ <if test="aftertarget != null">
+ aftertarget,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="message != null">
+ #{message,jdbcType=VARCHAR},
+ </if>
+ <if test="actionby != null">
+ #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="actiontype != null">
+ #{actiontype,jdbcType=VARCHAR},
+ </if>
+ <if test="actionip != null">
+ #{actionip,jdbcType=VARCHAR},
+ </if>
+ <if test="actiontime != null">
+ #{actiontime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="module != null">
+ #{module,jdbcType=VARCHAR},
+ </if>
+ <if test="beforetarget != null">
+ #{beforetarget,jdbcType=VARCHAR},
+ </if>
+ <if test="aftertarget != null">
+ #{aftertarget,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.SystemAuditTrailExample"
+ resultType="java.lang.Long">
+ select count(*) from system_audittrail
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update system_audittrail
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.message != null">
+ message = #{record.message,jdbcType=VARCHAR},
+ </if>
+ <if test="record.actionby != null">
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="record.actiontype != null">
+ actiontype = #{record.actiontype,jdbcType=VARCHAR},
+ </if>
+ <if test="record.actionip != null">
+ actionip = #{record.actionip,jdbcType=VARCHAR},
+ </if>
+ <if test="record.actiontime != null">
+ actiontime = #{record.actiontime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.module != null">
+ module = #{record.module,jdbcType=VARCHAR},
+ </if>
+ <if test="record.beforetarget != null">
+ beforetarget = #{record.beforetarget,jdbcType=VARCHAR},
+ </if>
+ <if test="record.aftertarget != null">
+ aftertarget = #{record.aftertarget,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update system_audittrail
+ set id = #{record.id,jdbcType=VARCHAR},
+ message = #{record.message,jdbcType=VARCHAR},
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ actiontype = #{record.actiontype,jdbcType=VARCHAR},
+ actionip = #{record.actionip,jdbcType=VARCHAR},
+ actiontime = #{record.actiontime,jdbcType=TIMESTAMP},
+ module = #{record.module,jdbcType=VARCHAR},
+ beforetarget = #{record.beforetarget,jdbcType=VARCHAR},
+ aftertarget = #{record.aftertarget,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.SystemAuditTrail">
+ update system_audittrail
+ <set>
+ <if test="message != null">
+ message = #{message,jdbcType=VARCHAR},
+ </if>
+ <if test="actionby != null">
+ actionby = #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="actiontype != null">
+ actiontype = #{actiontype,jdbcType=VARCHAR},
+ </if>
+ <if test="actionip != null">
+ actionip = #{actionip,jdbcType=VARCHAR},
+ </if>
+ <if test="actiontime != null">
+ actiontime = #{actiontime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="module != null">
+ module = #{module,jdbcType=VARCHAR},
+ </if>
+ <if test="beforetarget != null">
+ beforetarget = #{beforetarget,jdbcType=VARCHAR},
+ </if>
+ <if test="aftertarget != null">
+ aftertarget = #{aftertarget,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.SystemAuditTrail">
+ update system_audittrail
+ set message = #{message,jdbcType=VARCHAR},
+ actionby = #{actionby,jdbcType=VARCHAR},
+ actiontype = #{actiontype,jdbcType=VARCHAR},
+ actionip = #{actionip,jdbcType=VARCHAR},
+ actiontime = #{actiontime,jdbcType=TIMESTAMP},
+ module = #{module,jdbcType=VARCHAR},
+ beforetarget = #{beforetarget,jdbcType=VARCHAR},
+ aftertarget = #{aftertarget,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.java
new file mode 100644
index 0000000..e0e2935
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.SystemConfig;
+import com.farriver.bwf.data.master.model.SystemConfigExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SystemConfigMapper {
+ long countByExample(SystemConfigExample example);
+
+ int deleteByExample(SystemConfigExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(SystemConfig record);
+
+ int insertSelective(SystemConfig record);
+
+ List<SystemConfig> selectByExample(SystemConfigExample example);
+
+ SystemConfig selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") SystemConfig record, @Param("example") SystemConfigExample example);
+
+ int updateByExample(@Param("record") SystemConfig record, @Param("example") SystemConfigExample example);
+
+ int updateByPrimaryKeySelective(SystemConfig record);
+
+ int updateByPrimaryKey(SystemConfig record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.xml
new file mode 100644
index 0000000..bf04cae
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemConfigMapper.xml
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.SystemConfigMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.SystemConfig">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="ckey" jdbcType="VARCHAR" property="ckey"/>
+ <result column="cvalue" jdbcType="VARCHAR" property="cvalue"/>
+ <result column="clevel" jdbcType="VARCHAR" property="clevel"/>
+ <result column="category" jdbcType="VARCHAR" property="category"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , ckey, cvalue, clevel, category, isdeleted, remark, createtime, updatetime
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.SystemConfigExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from system_config
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from system_config
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from system_config
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.SystemConfigExample">
+ delete from system_config
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.SystemConfig">
+ insert into system_config (id, ckey, cvalue,
+ clevel, category, isdeleted,
+ remark, createtime, updatetime)
+ values (#{id,jdbcType=VARCHAR}, #{ckey,jdbcType=VARCHAR}, #{cvalue,jdbcType=VARCHAR},
+ #{clevel,jdbcType=VARCHAR}, #{category,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT},
+ #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.SystemConfig">
+ insert into system_config
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="ckey != null">
+ ckey,
+ </if>
+ <if test="cvalue != null">
+ cvalue,
+ </if>
+ <if test="clevel != null">
+ clevel,
+ </if>
+ <if test="category != null">
+ category,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="ckey != null">
+ #{ckey,jdbcType=VARCHAR},
+ </if>
+ <if test="cvalue != null">
+ #{cvalue,jdbcType=VARCHAR},
+ </if>
+ <if test="clevel != null">
+ #{clevel,jdbcType=VARCHAR},
+ </if>
+ <if test="category != null">
+ #{category,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.SystemConfigExample"
+ resultType="java.lang.Long">
+ select count(*) from system_config
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update system_config
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.ckey != null">
+ ckey = #{record.ckey,jdbcType=VARCHAR},
+ </if>
+ <if test="record.cvalue != null">
+ cvalue = #{record.cvalue,jdbcType=VARCHAR},
+ </if>
+ <if test="record.clevel != null">
+ clevel = #{record.clevel,jdbcType=VARCHAR},
+ </if>
+ <if test="record.category != null">
+ category = #{record.category,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update system_config
+ set id = #{record.id,jdbcType=VARCHAR},
+ ckey = #{record.ckey,jdbcType=VARCHAR},
+ cvalue = #{record.cvalue,jdbcType=VARCHAR},
+ clevel = #{record.clevel,jdbcType=VARCHAR},
+ category = #{record.category,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.SystemConfig">
+ update system_config
+ <set>
+ <if test="ckey != null">
+ ckey = #{ckey,jdbcType=VARCHAR},
+ </if>
+ <if test="cvalue != null">
+ cvalue = #{cvalue,jdbcType=VARCHAR},
+ </if>
+ <if test="clevel != null">
+ clevel = #{clevel,jdbcType=VARCHAR},
+ </if>
+ <if test="category != null">
+ category = #{category,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.SystemConfig">
+ update system_config
+ set ckey = #{ckey,jdbcType=VARCHAR},
+ cvalue = #{cvalue,jdbcType=VARCHAR},
+ clevel = #{clevel,jdbcType=VARCHAR},
+ category = #{category,jdbcType=VARCHAR},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.java
new file mode 100644
index 0000000..8cc19cc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.SystemMailLog;
+import com.farriver.bwf.data.master.model.SystemMailLogExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SystemMailLogMapper {
+ long countByExample(SystemMailLogExample example);
+
+ int deleteByExample(SystemMailLogExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(SystemMailLog record);
+
+ int insertSelective(SystemMailLog record);
+
+ List<SystemMailLog> selectByExample(SystemMailLogExample example);
+
+ SystemMailLog selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") SystemMailLog record, @Param("example") SystemMailLogExample example);
+
+ int updateByExample(@Param("record") SystemMailLog record, @Param("example") SystemMailLogExample example);
+
+ int updateByPrimaryKeySelective(SystemMailLog record);
+
+ int updateByPrimaryKey(SystemMailLog record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.xml
new file mode 100644
index 0000000..a8492e6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMailLogMapper.xml
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.SystemMailLogMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.SystemMailLog">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="uid" jdbcType="VARCHAR" property="uid"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="routeKey" jdbcType="VARCHAR" property="routekey"/>
+ <result column="exchange" jdbcType="VARCHAR" property="exchange"/>
+ <result column="count" jdbcType="INTEGER" property="count"/>
+ <result column="tryTime" jdbcType="TIMESTAMP" property="trytime"/>
+ <result column="createTime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updateTime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="username" jdbcType="VARCHAR" property="username"/>
+ <result column="account" jdbcType="VARCHAR" property="account"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , uid, status, routeKey, exchange, count, tryTime, createTime, updateTime, username,
+ account
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.SystemMailLogExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from system_mail_log
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from system_mail_log
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from system_mail_log
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.SystemMailLogExample">
+ delete from system_mail_log
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.SystemMailLog">
+ insert into system_mail_log (id, uid, status,
+ routeKey, exchange, count,
+ tryTime, createTime, updateTime,
+ username, account)
+ values (#{id,jdbcType=VARCHAR}, #{uid,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
+ #{routekey,jdbcType=VARCHAR}, #{exchange,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER},
+ #{trytime,jdbcType=TIMESTAMP}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{username,jdbcType=VARCHAR}, #{account,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.SystemMailLog">
+ insert into system_mail_log
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="uid != null">
+ uid,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="routekey != null">
+ routeKey,
+ </if>
+ <if test="exchange != null">
+ exchange,
+ </if>
+ <if test="count != null">
+ count,
+ </if>
+ <if test="trytime != null">
+ tryTime,
+ </if>
+ <if test="createtime != null">
+ createTime,
+ </if>
+ <if test="updatetime != null">
+ updateTime,
+ </if>
+ <if test="username != null">
+ username,
+ </if>
+ <if test="account != null">
+ account,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="uid != null">
+ #{uid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="routekey != null">
+ #{routekey,jdbcType=VARCHAR},
+ </if>
+ <if test="exchange != null">
+ #{exchange,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ #{count,jdbcType=INTEGER},
+ </if>
+ <if test="trytime != null">
+ #{trytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="username != null">
+ #{username,jdbcType=VARCHAR},
+ </if>
+ <if test="account != null">
+ #{account,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.SystemMailLogExample"
+ resultType="java.lang.Long">
+ select count(*) from system_mail_log
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update system_mail_log
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.uid != null">
+ uid = #{record.uid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.routekey != null">
+ routeKey = #{record.routekey,jdbcType=VARCHAR},
+ </if>
+ <if test="record.exchange != null">
+ exchange = #{record.exchange,jdbcType=VARCHAR},
+ </if>
+ <if test="record.count != null">
+ count = #{record.count,jdbcType=INTEGER},
+ </if>
+ <if test="record.trytime != null">
+ tryTime = #{record.trytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.createtime != null">
+ createTime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updateTime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.username != null">
+ username = #{record.username,jdbcType=VARCHAR},
+ </if>
+ <if test="record.account != null">
+ account = #{record.account,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update system_mail_log
+ set id = #{record.id,jdbcType=VARCHAR},
+ uid = #{record.uid,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ routeKey = #{record.routekey,jdbcType=VARCHAR},
+ exchange = #{record.exchange,jdbcType=VARCHAR},
+ count = #{record.count,jdbcType=INTEGER},
+ tryTime = #{record.trytime,jdbcType=TIMESTAMP},
+ createTime = #{record.createtime,jdbcType=TIMESTAMP},
+ updateTime = #{record.updatetime,jdbcType=TIMESTAMP},
+ username = #{record.username,jdbcType=VARCHAR},
+ account = #{record.account,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.SystemMailLog">
+ update system_mail_log
+ <set>
+ <if test="uid != null">
+ uid = #{uid,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="routekey != null">
+ routeKey = #{routekey,jdbcType=VARCHAR},
+ </if>
+ <if test="exchange != null">
+ exchange = #{exchange,jdbcType=VARCHAR},
+ </if>
+ <if test="count != null">
+ count = #{count,jdbcType=INTEGER},
+ </if>
+ <if test="trytime != null">
+ tryTime = #{trytime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="createtime != null">
+ createTime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updateTime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="username != null">
+ username = #{username,jdbcType=VARCHAR},
+ </if>
+ <if test="account != null">
+ account = #{account,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.SystemMailLog">
+ update system_mail_log
+ set uid = #{uid,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ routeKey = #{routekey,jdbcType=VARCHAR},
+ exchange = #{exchange,jdbcType=VARCHAR},
+ count = #{count,jdbcType=INTEGER},
+ tryTime = #{trytime,jdbcType=TIMESTAMP},
+ createTime = #{createtime,jdbcType=TIMESTAMP},
+ updateTime = #{updatetime,jdbcType=TIMESTAMP},
+ username = #{username,jdbcType=VARCHAR},
+ account = #{account,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.java
new file mode 100644
index 0000000..3afeacd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.SystemMenu;
+import com.farriver.bwf.data.master.model.SystemMenuExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SystemMenuMapper {
+ long countByExample(SystemMenuExample example);
+
+ int deleteByExample(SystemMenuExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(SystemMenu record);
+
+ int insertSelective(SystemMenu record);
+
+ List<SystemMenu> selectByExample(SystemMenuExample example);
+
+ SystemMenu selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") SystemMenu record, @Param("example") SystemMenuExample example);
+
+ int updateByExample(@Param("record") SystemMenu record, @Param("example") SystemMenuExample example);
+
+ int updateByPrimaryKeySelective(SystemMenu record);
+
+ int updateByPrimaryKey(SystemMenu record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.xml
new file mode 100644
index 0000000..4672ac1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemMenuMapper.xml
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.SystemMenuMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.SystemMenu">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="url" jdbcType="VARCHAR" property="url"/>
+ <result column="path" jdbcType="VARCHAR" property="path"/>
+ <result column="component" jdbcType="VARCHAR" property="component"/>
+ <result column="type" jdbcType="INTEGER" property="type"/>
+ <result column="icon" jdbcType="VARCHAR" property="icon"/>
+ <result column="parentid" jdbcType="VARCHAR" property="parentid"/>
+ <result column="keepalive" jdbcType="BIT" property="keepalive"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="level" jdbcType="INTEGER" property="level"/>
+ <result column="languagekey" jdbcType="VARCHAR" property="languagekey"/>
+ <result column="parentcode" jdbcType="VARCHAR" property="parentcode"/>
+ <result column="parentname" jdbcType="VARCHAR" property="parentname"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , code, name, url, path, component, type, icon, parentid, keepalive, isdeleted,
+ remark, createtime, updatetime, level, languagekey, parentcode, parentname
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.SystemMenuExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from system_menu
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from system_menu
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from system_menu
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.SystemMenuExample">
+ delete from system_menu
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.SystemMenu">
+ insert into system_menu (id, code, name,
+ url, path, component,
+ type, icon, parentid,
+ keepalive, isdeleted, remark,
+ createtime, updatetime, level,
+ languagekey, parentcode, parentname)
+ values (#{id,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
+ #{url,jdbcType=VARCHAR}, #{path,jdbcType=VARCHAR}, #{component,jdbcType=VARCHAR},
+ #{type,jdbcType=INTEGER}, #{icon,jdbcType=VARCHAR}, #{parentid,jdbcType=VARCHAR},
+ #{keepalive,jdbcType=BIT}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{level,jdbcType=INTEGER},
+ #{languagekey,jdbcType=VARCHAR}, #{parentcode,jdbcType=VARCHAR}, #{parentname,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.SystemMenu">
+ insert into system_menu
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="url != null">
+ url,
+ </if>
+ <if test="path != null">
+ path,
+ </if>
+ <if test="component != null">
+ component,
+ </if>
+ <if test="type != null">
+ type,
+ </if>
+ <if test="icon != null">
+ icon,
+ </if>
+ <if test="parentid != null">
+ parentid,
+ </if>
+ <if test="keepalive != null">
+ keepalive,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="level != null">
+ level,
+ </if>
+ <if test="languagekey != null">
+ languagekey,
+ </if>
+ <if test="parentcode != null">
+ parentcode,
+ </if>
+ <if test="parentname != null">
+ parentname,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="url != null">
+ #{url,jdbcType=VARCHAR},
+ </if>
+ <if test="path != null">
+ #{path,jdbcType=VARCHAR},
+ </if>
+ <if test="component != null">
+ #{component,jdbcType=VARCHAR},
+ </if>
+ <if test="type != null">
+ #{type,jdbcType=INTEGER},
+ </if>
+ <if test="icon != null">
+ #{icon,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="keepalive != null">
+ #{keepalive,jdbcType=BIT},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="level != null">
+ #{level,jdbcType=INTEGER},
+ </if>
+ <if test="languagekey != null">
+ #{languagekey,jdbcType=VARCHAR},
+ </if>
+ <if test="parentcode != null">
+ #{parentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="parentname != null">
+ #{parentname,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.SystemMenuExample"
+ resultType="java.lang.Long">
+ select count(*) from system_menu
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update system_menu
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.url != null">
+ url = #{record.url,jdbcType=VARCHAR},
+ </if>
+ <if test="record.path != null">
+ path = #{record.path,jdbcType=VARCHAR},
+ </if>
+ <if test="record.component != null">
+ component = #{record.component,jdbcType=VARCHAR},
+ </if>
+ <if test="record.type != null">
+ type = #{record.type,jdbcType=INTEGER},
+ </if>
+ <if test="record.icon != null">
+ icon = #{record.icon,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentid != null">
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.keepalive != null">
+ keepalive = #{record.keepalive,jdbcType=BIT},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.level != null">
+ level = #{record.level,jdbcType=INTEGER},
+ </if>
+ <if test="record.languagekey != null">
+ languagekey = #{record.languagekey,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentcode != null">
+ parentcode = #{record.parentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.parentname != null">
+ parentname = #{record.parentname,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update system_menu
+ set id = #{record.id,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ url = #{record.url,jdbcType=VARCHAR},
+ path = #{record.path,jdbcType=VARCHAR},
+ component = #{record.component,jdbcType=VARCHAR},
+ type = #{record.type,jdbcType=INTEGER},
+ icon = #{record.icon,jdbcType=VARCHAR},
+ parentid = #{record.parentid,jdbcType=VARCHAR},
+ keepalive = #{record.keepalive,jdbcType=BIT},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ level = #{record.level,jdbcType=INTEGER},
+ languagekey = #{record.languagekey,jdbcType=VARCHAR},
+ parentcode = #{record.parentcode,jdbcType=VARCHAR},
+ parentname = #{record.parentname,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.SystemMenu">
+ update system_menu
+ <set>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="url != null">
+ url = #{url,jdbcType=VARCHAR},
+ </if>
+ <if test="path != null">
+ path = #{path,jdbcType=VARCHAR},
+ </if>
+ <if test="component != null">
+ component = #{component,jdbcType=VARCHAR},
+ </if>
+ <if test="type != null">
+ type = #{type,jdbcType=INTEGER},
+ </if>
+ <if test="icon != null">
+ icon = #{icon,jdbcType=VARCHAR},
+ </if>
+ <if test="parentid != null">
+ parentid = #{parentid,jdbcType=VARCHAR},
+ </if>
+ <if test="keepalive != null">
+ keepalive = #{keepalive,jdbcType=BIT},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="level != null">
+ level = #{level,jdbcType=INTEGER},
+ </if>
+ <if test="languagekey != null">
+ languagekey = #{languagekey,jdbcType=VARCHAR},
+ </if>
+ <if test="parentcode != null">
+ parentcode = #{parentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="parentname != null">
+ parentname = #{parentname,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.SystemMenu">
+ update system_menu
+ set code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ url = #{url,jdbcType=VARCHAR},
+ path = #{path,jdbcType=VARCHAR},
+ component = #{component,jdbcType=VARCHAR},
+ type = #{type,jdbcType=INTEGER},
+ icon = #{icon,jdbcType=VARCHAR},
+ parentid = #{parentid,jdbcType=VARCHAR},
+ keepalive = #{keepalive,jdbcType=BIT},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ level = #{level,jdbcType=INTEGER},
+ languagekey = #{languagekey,jdbcType=VARCHAR},
+ parentcode = #{parentcode,jdbcType=VARCHAR},
+ parentname = #{parentname,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.java
new file mode 100644
index 0000000..65d3a68
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.java
@@ -0,0 +1,36 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.SystemNotification;
+import com.farriver.bwf.data.master.model.SystemNotificationExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface SystemNotificationMapper {
+ long countByExample(SystemNotificationExample example);
+
+ int deleteByExample(SystemNotificationExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(SystemNotification record);
+
+ int insertSelective(SystemNotification record);
+
+ List<SystemNotification> selectByExampleWithBLOBs(SystemNotificationExample example);
+
+ List<SystemNotification> selectByExample(SystemNotificationExample example);
+
+ SystemNotification selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") SystemNotification record, @Param("example") SystemNotificationExample example);
+
+ int updateByExampleWithBLOBs(@Param("record") SystemNotification record, @Param("example") SystemNotificationExample example);
+
+ int updateByExample(@Param("record") SystemNotification record, @Param("example") SystemNotificationExample example);
+
+ int updateByPrimaryKeySelective(SystemNotification record);
+
+ int updateByPrimaryKeyWithBLOBs(SystemNotification record);
+
+ int updateByPrimaryKey(SystemNotification record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.xml
new file mode 100644
index 0000000..a75ba06
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/SystemNotificationMapper.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.SystemNotificationMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.SystemNotification">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="title" jdbcType="VARCHAR" property="title"/>
+ <result column="department" jdbcType="VARCHAR" property="department"/>
+ <result column="category" jdbcType="VARCHAR" property="category"/>
+ <result column="nlevel" jdbcType="INTEGER" property="nlevel"/>
+ <result column="keywords" jdbcType="VARCHAR" property="keywords"/>
+ <result column="actionby" jdbcType="VARCHAR" property="actionby"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="publisher" jdbcType="VARCHAR" property="publisher"/>
+ <result column="publishdatetime" jdbcType="TIMESTAMP" property="publishdatetime"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ </resultMap>
+ <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs"
+ type="com.farriver.bwf.data.master.model.SystemNotification">
+ <result column="context" jdbcType="LONGVARCHAR" property="context"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id
+ , title, department, category, nlevel, keywords, actionby, status, publisher, publishdatetime,
+ isdeleted, remark, createtime, updatetime
+ </sql>
+ <sql id="Blob_Column_List">
+ context
+ </sql>
+ <select id="selectByExampleWithBLOBs" parameterType="com.farriver.bwf.data.master.model.SystemNotificationExample"
+ resultMap="ResultMapWithBLOBs">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ ,
+ <include refid="Blob_Column_List"/>
+ from system_notification
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.SystemNotificationExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from system_notification
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="ResultMapWithBLOBs">
+ select
+ <include refid="Base_Column_List"/>
+ ,
+ <include refid="Blob_Column_List"/>
+ from system_notification
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete
+ from system_notification
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.SystemNotificationExample">
+ delete from system_notification
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.SystemNotification">
+ insert into system_notification (id, title, department,
+ category, nlevel, keywords,
+ actionby, status, publisher,
+ publishdatetime, isdeleted, remark,
+ createtime, updatetime, context)
+ values (#{id,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR}, #{department,jdbcType=VARCHAR},
+ #{category,jdbcType=VARCHAR}, #{nlevel,jdbcType=INTEGER}, #{keywords,jdbcType=VARCHAR},
+ #{actionby,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{publisher,jdbcType=VARCHAR},
+ #{publishdatetime,jdbcType=TIMESTAMP}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{context,jdbcType=LONGVARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.SystemNotification">
+ insert into system_notification
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="title != null">
+ title,
+ </if>
+ <if test="department != null">
+ department,
+ </if>
+ <if test="category != null">
+ category,
+ </if>
+ <if test="nlevel != null">
+ nlevel,
+ </if>
+ <if test="keywords != null">
+ keywords,
+ </if>
+ <if test="actionby != null">
+ actionby,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="publisher != null">
+ publisher,
+ </if>
+ <if test="publishdatetime != null">
+ publishdatetime,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="context != null">
+ context,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="title != null">
+ #{title,jdbcType=VARCHAR},
+ </if>
+ <if test="department != null">
+ #{department,jdbcType=VARCHAR},
+ </if>
+ <if test="category != null">
+ #{category,jdbcType=VARCHAR},
+ </if>
+ <if test="nlevel != null">
+ #{nlevel,jdbcType=INTEGER},
+ </if>
+ <if test="keywords != null">
+ #{keywords,jdbcType=VARCHAR},
+ </if>
+ <if test="actionby != null">
+ #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="publisher != null">
+ #{publisher,jdbcType=VARCHAR},
+ </if>
+ <if test="publishdatetime != null">
+ #{publishdatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="context != null">
+ #{context,jdbcType=LONGVARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.SystemNotificationExample"
+ resultType="java.lang.Long">
+ select count(*) from system_notification
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update system_notification
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.title != null">
+ title = #{record.title,jdbcType=VARCHAR},
+ </if>
+ <if test="record.department != null">
+ department = #{record.department,jdbcType=VARCHAR},
+ </if>
+ <if test="record.category != null">
+ category = #{record.category,jdbcType=VARCHAR},
+ </if>
+ <if test="record.nlevel != null">
+ nlevel = #{record.nlevel,jdbcType=INTEGER},
+ </if>
+ <if test="record.keywords != null">
+ keywords = #{record.keywords,jdbcType=VARCHAR},
+ </if>
+ <if test="record.actionby != null">
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.publisher != null">
+ publisher = #{record.publisher,jdbcType=VARCHAR},
+ </if>
+ <if test="record.publishdatetime != null">
+ publishdatetime = #{record.publishdatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.context != null">
+ context = #{record.context,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExampleWithBLOBs" parameterType="map">
+ update system_notification
+ set id = #{record.id,jdbcType=VARCHAR},
+ title = #{record.title,jdbcType=VARCHAR},
+ department = #{record.department,jdbcType=VARCHAR},
+ category = #{record.category,jdbcType=VARCHAR},
+ nlevel = #{record.nlevel,jdbcType=INTEGER},
+ keywords = #{record.keywords,jdbcType=VARCHAR},
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ publisher = #{record.publisher,jdbcType=VARCHAR},
+ publishdatetime = #{record.publishdatetime,jdbcType=TIMESTAMP},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ context = #{record.context,jdbcType=LONGVARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update system_notification
+ set id = #{record.id,jdbcType=VARCHAR},
+ title = #{record.title,jdbcType=VARCHAR},
+ department = #{record.department,jdbcType=VARCHAR},
+ category = #{record.category,jdbcType=VARCHAR},
+ nlevel = #{record.nlevel,jdbcType=INTEGER},
+ keywords = #{record.keywords,jdbcType=VARCHAR},
+ actionby = #{record.actionby,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ publisher = #{record.publisher,jdbcType=VARCHAR},
+ publishdatetime = #{record.publishdatetime,jdbcType=TIMESTAMP},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.SystemNotification">
+ update system_notification
+ <set>
+ <if test="title != null">
+ title = #{title,jdbcType=VARCHAR},
+ </if>
+ <if test="department != null">
+ department = #{department,jdbcType=VARCHAR},
+ </if>
+ <if test="category != null">
+ category = #{category,jdbcType=VARCHAR},
+ </if>
+ <if test="nlevel != null">
+ nlevel = #{nlevel,jdbcType=INTEGER},
+ </if>
+ <if test="keywords != null">
+ keywords = #{keywords,jdbcType=VARCHAR},
+ </if>
+ <if test="actionby != null">
+ actionby = #{actionby,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="publisher != null">
+ publisher = #{publisher,jdbcType=VARCHAR},
+ </if>
+ <if test="publishdatetime != null">
+ publishdatetime = #{publishdatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="context != null">
+ context = #{context,jdbcType=LONGVARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.farriver.bwf.data.master.model.SystemNotification">
+ update system_notification
+ set title = #{title,jdbcType=VARCHAR},
+ department = #{department,jdbcType=VARCHAR},
+ category = #{category,jdbcType=VARCHAR},
+ nlevel = #{nlevel,jdbcType=INTEGER},
+ keywords = #{keywords,jdbcType=VARCHAR},
+ actionby = #{actionby,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ publisher = #{publisher,jdbcType=VARCHAR},
+ publishdatetime = #{publishdatetime,jdbcType=TIMESTAMP},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ context = #{context,jdbcType=LONGVARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.SystemNotification">
+ update system_notification
+ set title = #{title,jdbcType=VARCHAR},
+ department = #{department,jdbcType=VARCHAR},
+ category = #{category,jdbcType=VARCHAR},
+ nlevel = #{nlevel,jdbcType=INTEGER},
+ keywords = #{keywords,jdbcType=VARCHAR},
+ actionby = #{actionby,jdbcType=VARCHAR},
+ status = #{status,jdbcType=INTEGER},
+ publisher = #{publisher,jdbcType=VARCHAR},
+ publishdatetime = #{publishdatetime,jdbcType=TIMESTAMP},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.java
new file mode 100644
index 0000000..c5837b4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.VIPCouponActive;
+import com.farriver.bwf.data.master.model.VIPCouponActiveExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface VIPCouponActiveMapper {
+ long countByExample(VIPCouponActiveExample example);
+
+ int deleteByExample(VIPCouponActiveExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(VIPCouponActive record);
+
+ int insertSelective(VIPCouponActive record);
+
+ List<VIPCouponActive> selectByExample(VIPCouponActiveExample example);
+
+ VIPCouponActive selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") VIPCouponActive record, @Param("example") VIPCouponActiveExample example);
+
+ int updateByExample(@Param("record") VIPCouponActive record, @Param("example") VIPCouponActiveExample example);
+
+ int updateByPrimaryKeySelective(VIPCouponActive record);
+
+ int updateByPrimaryKey(VIPCouponActive record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.xml
new file mode 100644
index 0000000..7fb04d2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponActiveMapper.xml
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.VIPCouponActiveMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.VIPCouponActive">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="type" jdbcType="INTEGER" property="type"/>
+ <result column="activityname" jdbcType="VARCHAR" property="activityname"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="distributioncondition" jdbcType="VARCHAR" property="distributioncondition"/>
+ <result column="amount" jdbcType="DECIMAL" property="amount"/>
+ <result column="discount" jdbcType="DECIMAL" property="discount"/>
+ <result column="discountrate" jdbcType="DECIMAL" property="discountrate"/>
+ <result column="validdatefrom" jdbcType="TIMESTAMP" property="validdatefrom"/>
+ <result column="validdateto" jdbcType="TIMESTAMP" property="validdateto"/>
+ <result column="issuingtime" jdbcType="TIMESTAMP" property="issuingtime"/>
+ <result column="usagetime" jdbcType="TIMESTAMP" property="usagetime"/>
+ <result column="orderno" jdbcType="VARCHAR" property="orderno"/>
+ <result column="masterid" jdbcType="VARCHAR" property="masterid"/>
+ <result column="mastercode" jdbcType="VARCHAR" property="mastercode"/>
+ <result column="mastername" jdbcType="VARCHAR" property="mastername"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, isdeleted, remark, createtime, updatetime, status, type, activityname, code,
+ distributioncondition, amount, discount, discountrate, validdatefrom, validdateto,
+ issuingtime, usagetime, orderno, masterid, mastercode, mastername
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.VIPCouponActiveExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from vip_coupon_active
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from vip_coupon_active
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from vip_coupon_active
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.VIPCouponActiveExample">
+ delete from vip_coupon_active
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.VIPCouponActive">
+ insert into vip_coupon_active (id, isdeleted, remark,
+ createtime, updatetime, status,
+ type, activityname, code,
+ distributioncondition, amount, discount,
+ discountrate, validdatefrom, validdateto,
+ issuingtime, usagetime, orderno,
+ masterid, mastercode, mastername
+ )
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER},
+ #{type,jdbcType=INTEGER}, #{activityname,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
+ #{distributioncondition,jdbcType=VARCHAR}, #{amount,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL},
+ #{discountrate,jdbcType=DECIMAL}, #{validdatefrom,jdbcType=TIMESTAMP}, #{validdateto,jdbcType=TIMESTAMP},
+ #{issuingtime,jdbcType=TIMESTAMP}, #{usagetime,jdbcType=TIMESTAMP}, #{orderno,jdbcType=VARCHAR},
+ #{masterid,jdbcType=VARCHAR}, #{mastercode,jdbcType=VARCHAR}, #{mastername,jdbcType=VARCHAR}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.VIPCouponActive">
+ insert into vip_coupon_active
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="type != null">
+ type,
+ </if>
+ <if test="activityname != null">
+ activityname,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="distributioncondition != null">
+ distributioncondition,
+ </if>
+ <if test="amount != null">
+ amount,
+ </if>
+ <if test="discount != null">
+ discount,
+ </if>
+ <if test="discountrate != null">
+ discountrate,
+ </if>
+ <if test="validdatefrom != null">
+ validdatefrom,
+ </if>
+ <if test="validdateto != null">
+ validdateto,
+ </if>
+ <if test="issuingtime != null">
+ issuingtime,
+ </if>
+ <if test="usagetime != null">
+ usagetime,
+ </if>
+ <if test="orderno != null">
+ orderno,
+ </if>
+ <if test="masterid != null">
+ masterid,
+ </if>
+ <if test="mastercode != null">
+ mastercode,
+ </if>
+ <if test="mastername != null">
+ mastername,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="type != null">
+ #{type,jdbcType=INTEGER},
+ </if>
+ <if test="activityname != null">
+ #{activityname,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="distributioncondition != null">
+ #{distributioncondition,jdbcType=VARCHAR},
+ </if>
+ <if test="amount != null">
+ #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="discountrate != null">
+ #{discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="validdatefrom != null">
+ #{validdatefrom,jdbcType=TIMESTAMP},
+ </if>
+ <if test="validdateto != null">
+ #{validdateto,jdbcType=TIMESTAMP},
+ </if>
+ <if test="issuingtime != null">
+ #{issuingtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="usagetime != null">
+ #{usagetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="orderno != null">
+ #{orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="masterid != null">
+ #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ #{mastername,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.VIPCouponActiveExample"
+ resultType="java.lang.Long">
+ select count(*) from vip_coupon_active
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update vip_coupon_active
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.type != null">
+ type = #{record.type,jdbcType=INTEGER},
+ </if>
+ <if test="record.activityname != null">
+ activityname = #{record.activityname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.distributioncondition != null">
+ distributioncondition = #{record.distributioncondition,jdbcType=VARCHAR},
+ </if>
+ <if test="record.amount != null">
+ amount = #{record.amount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discount != null">
+ discount = #{record.discount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discountrate != null">
+ discountrate = #{record.discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="record.validdatefrom != null">
+ validdatefrom = #{record.validdatefrom,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.validdateto != null">
+ validdateto = #{record.validdateto,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.issuingtime != null">
+ issuingtime = #{record.issuingtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.usagetime != null">
+ usagetime = #{record.usagetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.orderno != null">
+ orderno = #{record.orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="record.masterid != null">
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastercode != null">
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastername != null">
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update vip_coupon_active
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ status = #{record.status,jdbcType=INTEGER},
+ type = #{record.type,jdbcType=INTEGER},
+ activityname = #{record.activityname,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ distributioncondition = #{record.distributioncondition,jdbcType=VARCHAR},
+ amount = #{record.amount,jdbcType=DECIMAL},
+ discount = #{record.discount,jdbcType=DECIMAL},
+ discountrate = #{record.discountrate,jdbcType=DECIMAL},
+ validdatefrom = #{record.validdatefrom,jdbcType=TIMESTAMP},
+ validdateto = #{record.validdateto,jdbcType=TIMESTAMP},
+ issuingtime = #{record.issuingtime,jdbcType=TIMESTAMP},
+ usagetime = #{record.usagetime,jdbcType=TIMESTAMP},
+ orderno = #{record.orderno,jdbcType=VARCHAR},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ mastername = #{record.mastername,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.VIPCouponActive">
+ update vip_coupon_active
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="type != null">
+ type = #{type,jdbcType=INTEGER},
+ </if>
+ <if test="activityname != null">
+ activityname = #{activityname,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="distributioncondition != null">
+ distributioncondition = #{distributioncondition,jdbcType=VARCHAR},
+ </if>
+ <if test="amount != null">
+ amount = #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ discount = #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="discountrate != null">
+ discountrate = #{discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="validdatefrom != null">
+ validdatefrom = #{validdatefrom,jdbcType=TIMESTAMP},
+ </if>
+ <if test="validdateto != null">
+ validdateto = #{validdateto,jdbcType=TIMESTAMP},
+ </if>
+ <if test="issuingtime != null">
+ issuingtime = #{issuingtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="usagetime != null">
+ usagetime = #{usagetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="orderno != null">
+ orderno = #{orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="masterid != null">
+ masterid = #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ mastername = #{mastername,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.VIPCouponActive">
+ update vip_coupon_active
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ status = #{status,jdbcType=INTEGER},
+ type = #{type,jdbcType=INTEGER},
+ activityname = #{activityname,jdbcType=VARCHAR},
+ code = #{code,jdbcType=VARCHAR},
+ distributioncondition = #{distributioncondition,jdbcType=VARCHAR},
+ amount = #{amount,jdbcType=DECIMAL},
+ discount = #{discount,jdbcType=DECIMAL},
+ discountrate = #{discountrate,jdbcType=DECIMAL},
+ validdatefrom = #{validdatefrom,jdbcType=TIMESTAMP},
+ validdateto = #{validdateto,jdbcType=TIMESTAMP},
+ issuingtime = #{issuingtime,jdbcType=TIMESTAMP},
+ usagetime = #{usagetime,jdbcType=TIMESTAMP},
+ orderno = #{orderno,jdbcType=VARCHAR},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ mastername = #{mastername,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.java
new file mode 100644
index 0000000..d6ea1d5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.VIPCouponHistory;
+import com.farriver.bwf.data.master.model.VIPCouponHistoryExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface VIPCouponHistoryMapper {
+ long countByExample(VIPCouponHistoryExample example);
+
+ int deleteByExample(VIPCouponHistoryExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(VIPCouponHistory record);
+
+ int insertSelective(VIPCouponHistory record);
+
+ List<VIPCouponHistory> selectByExample(VIPCouponHistoryExample example);
+
+ VIPCouponHistory selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") VIPCouponHistory record, @Param("example") VIPCouponHistoryExample example);
+
+ int updateByExample(@Param("record") VIPCouponHistory record, @Param("example") VIPCouponHistoryExample example);
+
+ int updateByPrimaryKeySelective(VIPCouponHistory record);
+
+ int updateByPrimaryKey(VIPCouponHistory record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.xml
new file mode 100644
index 0000000..c0d1250
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPCouponHistoryMapper.xml
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.VIPCouponHistoryMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.VIPCouponHistory">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="type" jdbcType="INTEGER" property="type"/>
+ <result column="activityname" jdbcType="VARCHAR" property="activityname"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="distributioncondition" jdbcType="VARCHAR" property="distributioncondition"/>
+ <result column="amount" jdbcType="DECIMAL" property="amount"/>
+ <result column="discount" jdbcType="DECIMAL" property="discount"/>
+ <result column="discountrate" jdbcType="DECIMAL" property="discountrate"/>
+ <result column="validdatefrom" jdbcType="TIMESTAMP" property="validdatefrom"/>
+ <result column="validdateto" jdbcType="TIMESTAMP" property="validdateto"/>
+ <result column="issuingtime" jdbcType="TIMESTAMP" property="issuingtime"/>
+ <result column="usagetime" jdbcType="TIMESTAMP" property="usagetime"/>
+ <result column="orderno" jdbcType="VARCHAR" property="orderno"/>
+ <result column="masterid" jdbcType="VARCHAR" property="masterid"/>
+ <result column="mastercode" jdbcType="VARCHAR" property="mastercode"/>
+ <result column="mastername" jdbcType="VARCHAR" property="mastername"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, isdeleted, remark, createtime, updatetime, status, type, activityname, code,
+ distributioncondition, amount, discount, discountrate, validdatefrom, validdateto,
+ issuingtime, usagetime, orderno, masterid, mastercode, mastername
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.VIPCouponHistoryExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from vip_coupon_history
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from vip_coupon_history
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from vip_coupon_history
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.VIPCouponHistoryExample">
+ delete from vip_coupon_history
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.VIPCouponHistory">
+ insert into vip_coupon_history (id, isdeleted, remark,
+ createtime, updatetime, status,
+ type, activityname, code,
+ distributioncondition, amount, discount,
+ discountrate, validdatefrom, validdateto,
+ issuingtime, usagetime, orderno,
+ masterid, mastercode, mastername
+ )
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER},
+ #{type,jdbcType=INTEGER}, #{activityname,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
+ #{distributioncondition,jdbcType=VARCHAR}, #{amount,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL},
+ #{discountrate,jdbcType=DECIMAL}, #{validdatefrom,jdbcType=TIMESTAMP}, #{validdateto,jdbcType=TIMESTAMP},
+ #{issuingtime,jdbcType=TIMESTAMP}, #{usagetime,jdbcType=TIMESTAMP}, #{orderno,jdbcType=VARCHAR},
+ #{masterid,jdbcType=VARCHAR}, #{mastercode,jdbcType=VARCHAR}, #{mastername,jdbcType=VARCHAR}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.VIPCouponHistory">
+ insert into vip_coupon_history
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="type != null">
+ type,
+ </if>
+ <if test="activityname != null">
+ activityname,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="distributioncondition != null">
+ distributioncondition,
+ </if>
+ <if test="amount != null">
+ amount,
+ </if>
+ <if test="discount != null">
+ discount,
+ </if>
+ <if test="discountrate != null">
+ discountrate,
+ </if>
+ <if test="validdatefrom != null">
+ validdatefrom,
+ </if>
+ <if test="validdateto != null">
+ validdateto,
+ </if>
+ <if test="issuingtime != null">
+ issuingtime,
+ </if>
+ <if test="usagetime != null">
+ usagetime,
+ </if>
+ <if test="orderno != null">
+ orderno,
+ </if>
+ <if test="masterid != null">
+ masterid,
+ </if>
+ <if test="mastercode != null">
+ mastercode,
+ </if>
+ <if test="mastername != null">
+ mastername,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="type != null">
+ #{type,jdbcType=INTEGER},
+ </if>
+ <if test="activityname != null">
+ #{activityname,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="distributioncondition != null">
+ #{distributioncondition,jdbcType=VARCHAR},
+ </if>
+ <if test="amount != null">
+ #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="discountrate != null">
+ #{discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="validdatefrom != null">
+ #{validdatefrom,jdbcType=TIMESTAMP},
+ </if>
+ <if test="validdateto != null">
+ #{validdateto,jdbcType=TIMESTAMP},
+ </if>
+ <if test="issuingtime != null">
+ #{issuingtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="usagetime != null">
+ #{usagetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="orderno != null">
+ #{orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="masterid != null">
+ #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ #{mastername,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.VIPCouponHistoryExample"
+ resultType="java.lang.Long">
+ select count(*) from vip_coupon_history
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update vip_coupon_history
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.type != null">
+ type = #{record.type,jdbcType=INTEGER},
+ </if>
+ <if test="record.activityname != null">
+ activityname = #{record.activityname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.distributioncondition != null">
+ distributioncondition = #{record.distributioncondition,jdbcType=VARCHAR},
+ </if>
+ <if test="record.amount != null">
+ amount = #{record.amount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discount != null">
+ discount = #{record.discount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discountrate != null">
+ discountrate = #{record.discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="record.validdatefrom != null">
+ validdatefrom = #{record.validdatefrom,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.validdateto != null">
+ validdateto = #{record.validdateto,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.issuingtime != null">
+ issuingtime = #{record.issuingtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.usagetime != null">
+ usagetime = #{record.usagetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.orderno != null">
+ orderno = #{record.orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="record.masterid != null">
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastercode != null">
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastername != null">
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update vip_coupon_history
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ status = #{record.status,jdbcType=INTEGER},
+ type = #{record.type,jdbcType=INTEGER},
+ activityname = #{record.activityname,jdbcType=VARCHAR},
+ code = #{record.code,jdbcType=VARCHAR},
+ distributioncondition = #{record.distributioncondition,jdbcType=VARCHAR},
+ amount = #{record.amount,jdbcType=DECIMAL},
+ discount = #{record.discount,jdbcType=DECIMAL},
+ discountrate = #{record.discountrate,jdbcType=DECIMAL},
+ validdatefrom = #{record.validdatefrom,jdbcType=TIMESTAMP},
+ validdateto = #{record.validdateto,jdbcType=TIMESTAMP},
+ issuingtime = #{record.issuingtime,jdbcType=TIMESTAMP},
+ usagetime = #{record.usagetime,jdbcType=TIMESTAMP},
+ orderno = #{record.orderno,jdbcType=VARCHAR},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ mastername = #{record.mastername,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.VIPCouponHistory">
+ update vip_coupon_history
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="type != null">
+ type = #{type,jdbcType=INTEGER},
+ </if>
+ <if test="activityname != null">
+ activityname = #{activityname,jdbcType=VARCHAR},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="distributioncondition != null">
+ distributioncondition = #{distributioncondition,jdbcType=VARCHAR},
+ </if>
+ <if test="amount != null">
+ amount = #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ discount = #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="discountrate != null">
+ discountrate = #{discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="validdatefrom != null">
+ validdatefrom = #{validdatefrom,jdbcType=TIMESTAMP},
+ </if>
+ <if test="validdateto != null">
+ validdateto = #{validdateto,jdbcType=TIMESTAMP},
+ </if>
+ <if test="issuingtime != null">
+ issuingtime = #{issuingtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="usagetime != null">
+ usagetime = #{usagetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="orderno != null">
+ orderno = #{orderno,jdbcType=VARCHAR},
+ </if>
+ <if test="masterid != null">
+ masterid = #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ mastername = #{mastername,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.VIPCouponHistory">
+ update vip_coupon_history
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ status = #{status,jdbcType=INTEGER},
+ type = #{type,jdbcType=INTEGER},
+ activityname = #{activityname,jdbcType=VARCHAR},
+ code = #{code,jdbcType=VARCHAR},
+ distributioncondition = #{distributioncondition,jdbcType=VARCHAR},
+ amount = #{amount,jdbcType=DECIMAL},
+ discount = #{discount,jdbcType=DECIMAL},
+ discountrate = #{discountrate,jdbcType=DECIMAL},
+ validdatefrom = #{validdatefrom,jdbcType=TIMESTAMP},
+ validdateto = #{validdateto,jdbcType=TIMESTAMP},
+ issuingtime = #{issuingtime,jdbcType=TIMESTAMP},
+ usagetime = #{usagetime,jdbcType=TIMESTAMP},
+ orderno = #{orderno,jdbcType=VARCHAR},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ mastername = #{mastername,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.java
new file mode 100644
index 0000000..4b63479
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.VIPDepositActivity;
+import com.farriver.bwf.data.master.model.VIPDepositActivityExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface VIPDepositActivityMapper {
+ long countByExample(VIPDepositActivityExample example);
+
+ int deleteByExample(VIPDepositActivityExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(VIPDepositActivity record);
+
+ int insertSelective(VIPDepositActivity record);
+
+ List<VIPDepositActivity> selectByExample(VIPDepositActivityExample example);
+
+ VIPDepositActivity selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") VIPDepositActivity record, @Param("example") VIPDepositActivityExample example);
+
+ int updateByExample(@Param("record") VIPDepositActivity record, @Param("example") VIPDepositActivityExample example);
+
+ int updateByPrimaryKeySelective(VIPDepositActivity record);
+
+ int updateByPrimaryKey(VIPDepositActivity record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.xml
new file mode 100644
index 0000000..a44f056
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPDepositActivityMapper.xml
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.VIPDepositActivityMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.VIPDepositActivity">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="description" jdbcType="VARCHAR" property="description"/>
+ <result column="amount" jdbcType="DECIMAL" property="amount"/>
+ <result column="discount" jdbcType="DECIMAL" property="discount"/>
+ <result column="present" jdbcType="DECIMAL" property="present"/>
+ <result column="discountrate" jdbcType="DECIMAL" property="discountrate"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, status, isdeleted, remark, createtime, updatetime, code, name, description, amount,
+ discount, present, discountrate
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.VIPDepositActivityExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from vip_deposit_activity
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from vip_deposit_activity
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from vip_deposit_activity
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.VIPDepositActivityExample">
+ delete from vip_deposit_activity
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.VIPDepositActivity">
+ insert into vip_deposit_activity (id, status, isdeleted,
+ remark, createtime, updatetime,
+ code, name, description,
+ amount, discount, present,
+ discountrate)
+ values (#{id,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{isdeleted,jdbcType=BIT},
+ #{remark,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP},
+ #{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR},
+ #{amount,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL}, #{present,jdbcType=DECIMAL},
+ #{discountrate,jdbcType=DECIMAL})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.VIPDepositActivity">
+ insert into vip_deposit_activity
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="description != null">
+ description,
+ </if>
+ <if test="amount != null">
+ amount,
+ </if>
+ <if test="discount != null">
+ discount,
+ </if>
+ <if test="present != null">
+ present,
+ </if>
+ <if test="discountrate != null">
+ discountrate,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="description != null">
+ #{description,jdbcType=VARCHAR},
+ </if>
+ <if test="amount != null">
+ #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="present != null">
+ #{present,jdbcType=DECIMAL},
+ </if>
+ <if test="discountrate != null">
+ #{discountrate,jdbcType=DECIMAL},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.VIPDepositActivityExample"
+ resultType="java.lang.Long">
+ select count(*) from vip_deposit_activity
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update vip_deposit_activity
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.description != null">
+ description = #{record.description,jdbcType=VARCHAR},
+ </if>
+ <if test="record.amount != null">
+ amount = #{record.amount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discount != null">
+ discount = #{record.discount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.present != null">
+ present = #{record.present,jdbcType=DECIMAL},
+ </if>
+ <if test="record.discountrate != null">
+ discountrate = #{record.discountrate,jdbcType=DECIMAL},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update vip_deposit_activity
+ set id = #{record.id,jdbcType=VARCHAR},
+ status = #{record.status,jdbcType=INTEGER},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ description = #{record.description,jdbcType=VARCHAR},
+ amount = #{record.amount,jdbcType=DECIMAL},
+ discount = #{record.discount,jdbcType=DECIMAL},
+ present = #{record.present,jdbcType=DECIMAL},
+ discountrate = #{record.discountrate,jdbcType=DECIMAL}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.VIPDepositActivity">
+ update vip_deposit_activity
+ <set>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="description != null">
+ description = #{description,jdbcType=VARCHAR},
+ </if>
+ <if test="amount != null">
+ amount = #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="discount != null">
+ discount = #{discount,jdbcType=DECIMAL},
+ </if>
+ <if test="present != null">
+ present = #{present,jdbcType=DECIMAL},
+ </if>
+ <if test="discountrate != null">
+ discountrate = #{discountrate,jdbcType=DECIMAL},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.VIPDepositActivity">
+ update vip_deposit_activity
+ set status = #{status,jdbcType=INTEGER},
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ description = #{description,jdbcType=VARCHAR},
+ amount = #{amount,jdbcType=DECIMAL},
+ discount = #{discount,jdbcType=DECIMAL},
+ present = #{present,jdbcType=DECIMAL},
+ discountrate = #{discountrate,jdbcType=DECIMAL}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.java
new file mode 100644
index 0000000..4e371a7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.VIPMaster;
+import com.farriver.bwf.data.master.model.VIPMasterExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface VIPMasterMapper {
+ long countByExample(VIPMasterExample example);
+
+ int deleteByExample(VIPMasterExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(VIPMaster record);
+
+ int insertSelective(VIPMaster record);
+
+ List<VIPMaster> selectByExample(VIPMasterExample example);
+
+ VIPMaster selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") VIPMaster record, @Param("example") VIPMasterExample example);
+
+ int updateByExample(@Param("record") VIPMaster record, @Param("example") VIPMasterExample example);
+
+ int updateByPrimaryKeySelective(VIPMaster record);
+
+ int updateByPrimaryKey(VIPMaster record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.xml
new file mode 100644
index 0000000..3b336bb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterMapper.xml
@@ -0,0 +1,508 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.VIPMasterMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.VIPMaster">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="code" jdbcType="VARCHAR" property="code"/>
+ <result column="name" jdbcType="VARCHAR" property="name"/>
+ <result column="diamondtype" jdbcType="INTEGER" property="diamondtype"/>
+ <result column="type" jdbcType="INTEGER" property="type"/>
+ <result column="discountrate" jdbcType="DECIMAL" property="discountrate"/>
+ <result column="idcard" jdbcType="VARCHAR" property="idcard"/>
+ <result column="gender" jdbcType="BIT" property="gender"/>
+ <result column="birthday" jdbcType="TIMESTAMP" property="birthday"/>
+ <result column="openid" jdbcType="VARCHAR" property="openid"/>
+ <result column="nickname" jdbcType="VARCHAR" property="nickname"/>
+ <result column="language" jdbcType="VARCHAR" property="language"/>
+ <result column="city" jdbcType="VARCHAR" property="city"/>
+ <result column="province" jdbcType="VARCHAR" property="province"/>
+ <result column="country" jdbcType="VARCHAR" property="country"/>
+ <result column="avatarurl" jdbcType="VARCHAR" property="avatarurl"/>
+ <result column="cellphone" jdbcType="VARCHAR" property="cellphone"/>
+ <result column="token" jdbcType="VARCHAR" property="token"/>
+ <result column="password" jdbcType="VARCHAR" property="password"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, isdeleted, remark, createtime, updatetime, code, name, diamondtype, type, discountrate,
+ idcard, gender, birthday, openid, nickname, language, city, province, country, avatarurl,
+ cellphone, token, password
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from vip_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from vip_master
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from vip_master
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterExample">
+ delete from vip_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.VIPMaster">
+ insert into vip_master (id, isdeleted, remark,
+ createtime, updatetime, code,
+ name, diamondtype, type,
+ discountrate, idcard, gender,
+ birthday, openid, nickname,
+ language, city, province,
+ country, avatarurl, cellphone,
+ token, password)
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{code,jdbcType=VARCHAR},
+ #{name,jdbcType=VARCHAR}, #{diamondtype,jdbcType=INTEGER}, #{type,jdbcType=INTEGER},
+ #{discountrate,jdbcType=DECIMAL}, #{idcard,jdbcType=VARCHAR}, #{gender,jdbcType=BIT},
+ #{birthday,jdbcType=TIMESTAMP}, #{openid,jdbcType=VARCHAR}, #{nickname,jdbcType=VARCHAR},
+ #{language,jdbcType=VARCHAR}, #{city,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR},
+ #{country,jdbcType=VARCHAR}, #{avatarurl,jdbcType=VARCHAR}, #{cellphone,jdbcType=VARCHAR},
+ #{token,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.VIPMaster">
+ insert into vip_master
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="code != null">
+ code,
+ </if>
+ <if test="name != null">
+ name,
+ </if>
+ <if test="diamondtype != null">
+ diamondtype,
+ </if>
+ <if test="type != null">
+ type,
+ </if>
+ <if test="discountrate != null">
+ discountrate,
+ </if>
+ <if test="idcard != null">
+ idcard,
+ </if>
+ <if test="gender != null">
+ gender,
+ </if>
+ <if test="birthday != null">
+ birthday,
+ </if>
+ <if test="openid != null">
+ openid,
+ </if>
+ <if test="nickname != null">
+ nickname,
+ </if>
+ <if test="language != null">
+ language,
+ </if>
+ <if test="city != null">
+ city,
+ </if>
+ <if test="province != null">
+ province,
+ </if>
+ <if test="country != null">
+ country,
+ </if>
+ <if test="avatarurl != null">
+ avatarurl,
+ </if>
+ <if test="cellphone != null">
+ cellphone,
+ </if>
+ <if test="token != null">
+ token,
+ </if>
+ <if test="password != null">
+ password,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="diamondtype != null">
+ #{diamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="type != null">
+ #{type,jdbcType=INTEGER},
+ </if>
+ <if test="discountrate != null">
+ #{discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="idcard != null">
+ #{idcard,jdbcType=VARCHAR},
+ </if>
+ <if test="gender != null">
+ #{gender,jdbcType=BIT},
+ </if>
+ <if test="birthday != null">
+ #{birthday,jdbcType=TIMESTAMP},
+ </if>
+ <if test="openid != null">
+ #{openid,jdbcType=VARCHAR},
+ </if>
+ <if test="nickname != null">
+ #{nickname,jdbcType=VARCHAR},
+ </if>
+ <if test="language != null">
+ #{language,jdbcType=VARCHAR},
+ </if>
+ <if test="city != null">
+ #{city,jdbcType=VARCHAR},
+ </if>
+ <if test="province != null">
+ #{province,jdbcType=VARCHAR},
+ </if>
+ <if test="country != null">
+ #{country,jdbcType=VARCHAR},
+ </if>
+ <if test="avatarurl != null">
+ #{avatarurl,jdbcType=VARCHAR},
+ </if>
+ <if test="cellphone != null">
+ #{cellphone,jdbcType=VARCHAR},
+ </if>
+ <if test="token != null">
+ #{token,jdbcType=VARCHAR},
+ </if>
+ <if test="password != null">
+ #{password,jdbcType=VARCHAR},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterExample"
+ resultType="java.lang.Long">
+ select count(*) from vip_master
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update vip_master
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.code != null">
+ code = #{record.code,jdbcType=VARCHAR},
+ </if>
+ <if test="record.name != null">
+ name = #{record.name,jdbcType=VARCHAR},
+ </if>
+ <if test="record.diamondtype != null">
+ diamondtype = #{record.diamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="record.type != null">
+ type = #{record.type,jdbcType=INTEGER},
+ </if>
+ <if test="record.discountrate != null">
+ discountrate = #{record.discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="record.idcard != null">
+ idcard = #{record.idcard,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gender != null">
+ gender = #{record.gender,jdbcType=BIT},
+ </if>
+ <if test="record.birthday != null">
+ birthday = #{record.birthday,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.openid != null">
+ openid = #{record.openid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.nickname != null">
+ nickname = #{record.nickname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.language != null">
+ language = #{record.language,jdbcType=VARCHAR},
+ </if>
+ <if test="record.city != null">
+ city = #{record.city,jdbcType=VARCHAR},
+ </if>
+ <if test="record.province != null">
+ province = #{record.province,jdbcType=VARCHAR},
+ </if>
+ <if test="record.country != null">
+ country = #{record.country,jdbcType=VARCHAR},
+ </if>
+ <if test="record.avatarurl != null">
+ avatarurl = #{record.avatarurl,jdbcType=VARCHAR},
+ </if>
+ <if test="record.cellphone != null">
+ cellphone = #{record.cellphone,jdbcType=VARCHAR},
+ </if>
+ <if test="record.token != null">
+ token = #{record.token,jdbcType=VARCHAR},
+ </if>
+ <if test="record.password != null">
+ password = #{record.password,jdbcType=VARCHAR},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update vip_master
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ code = #{record.code,jdbcType=VARCHAR},
+ name = #{record.name,jdbcType=VARCHAR},
+ diamondtype = #{record.diamondtype,jdbcType=INTEGER},
+ type = #{record.type,jdbcType=INTEGER},
+ discountrate = #{record.discountrate,jdbcType=DECIMAL},
+ idcard = #{record.idcard,jdbcType=VARCHAR},
+ gender = #{record.gender,jdbcType=BIT},
+ birthday = #{record.birthday,jdbcType=TIMESTAMP},
+ openid = #{record.openid,jdbcType=VARCHAR},
+ nickname = #{record.nickname,jdbcType=VARCHAR},
+ language = #{record.language,jdbcType=VARCHAR},
+ city = #{record.city,jdbcType=VARCHAR},
+ province = #{record.province,jdbcType=VARCHAR},
+ country = #{record.country,jdbcType=VARCHAR},
+ avatarurl = #{record.avatarurl,jdbcType=VARCHAR},
+ cellphone = #{record.cellphone,jdbcType=VARCHAR},
+ token = #{record.token,jdbcType=VARCHAR},
+ password = #{record.password,jdbcType=VARCHAR}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.VIPMaster">
+ update vip_master
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="code != null">
+ code = #{code,jdbcType=VARCHAR},
+ </if>
+ <if test="name != null">
+ name = #{name,jdbcType=VARCHAR},
+ </if>
+ <if test="diamondtype != null">
+ diamondtype = #{diamondtype,jdbcType=INTEGER},
+ </if>
+ <if test="type != null">
+ type = #{type,jdbcType=INTEGER},
+ </if>
+ <if test="discountrate != null">
+ discountrate = #{discountrate,jdbcType=DECIMAL},
+ </if>
+ <if test="idcard != null">
+ idcard = #{idcard,jdbcType=VARCHAR},
+ </if>
+ <if test="gender != null">
+ gender = #{gender,jdbcType=BIT},
+ </if>
+ <if test="birthday != null">
+ birthday = #{birthday,jdbcType=TIMESTAMP},
+ </if>
+ <if test="openid != null">
+ openid = #{openid,jdbcType=VARCHAR},
+ </if>
+ <if test="nickname != null">
+ nickname = #{nickname,jdbcType=VARCHAR},
+ </if>
+ <if test="language != null">
+ language = #{language,jdbcType=VARCHAR},
+ </if>
+ <if test="city != null">
+ city = #{city,jdbcType=VARCHAR},
+ </if>
+ <if test="province != null">
+ province = #{province,jdbcType=VARCHAR},
+ </if>
+ <if test="country != null">
+ country = #{country,jdbcType=VARCHAR},
+ </if>
+ <if test="avatarurl != null">
+ avatarurl = #{avatarurl,jdbcType=VARCHAR},
+ </if>
+ <if test="cellphone != null">
+ cellphone = #{cellphone,jdbcType=VARCHAR},
+ </if>
+ <if test="token != null">
+ token = #{token,jdbcType=VARCHAR},
+ </if>
+ <if test="password != null">
+ password = #{password,jdbcType=VARCHAR},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.VIPMaster">
+ update vip_master
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ code = #{code,jdbcType=VARCHAR},
+ name = #{name,jdbcType=VARCHAR},
+ diamondtype = #{diamondtype,jdbcType=INTEGER},
+ type = #{type,jdbcType=INTEGER},
+ discountrate = #{discountrate,jdbcType=DECIMAL},
+ idcard = #{idcard,jdbcType=VARCHAR},
+ gender = #{gender,jdbcType=BIT},
+ birthday = #{birthday,jdbcType=TIMESTAMP},
+ openid = #{openid,jdbcType=VARCHAR},
+ nickname = #{nickname,jdbcType=VARCHAR},
+ language = #{language,jdbcType=VARCHAR},
+ city = #{city,jdbcType=VARCHAR},
+ province = #{province,jdbcType=VARCHAR},
+ country = #{country,jdbcType=VARCHAR},
+ avatarurl = #{avatarurl,jdbcType=VARCHAR},
+ cellphone = #{cellphone,jdbcType=VARCHAR},
+ token = #{token,jdbcType=VARCHAR},
+ password = #{password,jdbcType=VARCHAR}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.java
new file mode 100644
index 0000000..7fc8c8c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.VIPMasterOrganization;
+import com.farriver.bwf.data.master.model.VIPMasterOrganizationExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface VIPMasterOrganizationMapper {
+ long countByExample(VIPMasterOrganizationExample example);
+
+ int deleteByExample(VIPMasterOrganizationExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(VIPMasterOrganization record);
+
+ int insertSelective(VIPMasterOrganization record);
+
+ List<VIPMasterOrganization> selectByExample(VIPMasterOrganizationExample example);
+
+ VIPMasterOrganization selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") VIPMasterOrganization record, @Param("example") VIPMasterOrganizationExample example);
+
+ int updateByExample(@Param("record") VIPMasterOrganization record, @Param("example") VIPMasterOrganizationExample example);
+
+ int updateByPrimaryKeySelective(VIPMasterOrganization record);
+
+ int updateByPrimaryKey(VIPMasterOrganization record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.xml
new file mode 100644
index 0000000..a756359
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterOrganizationMapper.xml
@@ -0,0 +1,527 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.VIPMasterOrganizationMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.VIPMasterOrganization">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="masterid" jdbcType="VARCHAR" property="masterid"/>
+ <result column="mastercode" jdbcType="VARCHAR" property="mastercode"/>
+ <result column="mastername" jdbcType="VARCHAR" property="mastername"/>
+ <result column="organizationid" jdbcType="VARCHAR" property="organizationid"/>
+ <result column="organizationname" jdbcType="VARCHAR" property="organizationname"/>
+ <result column="organizationcode" jdbcType="VARCHAR" property="organizationcode"/>
+ <result column="departmentid" jdbcType="VARCHAR" property="departmentid"/>
+ <result column="departmentname" jdbcType="VARCHAR" property="departmentname"/>
+ <result column="departmentcode" jdbcType="VARCHAR" property="departmentcode"/>
+ <result column="majorid" jdbcType="VARCHAR" property="majorid"/>
+ <result column="majorname" jdbcType="VARCHAR" property="majorname"/>
+ <result column="majorcode" jdbcType="VARCHAR" property="majorcode"/>
+ <result column="gradeid" jdbcType="VARCHAR" property="gradeid"/>
+ <result column="gradename" jdbcType="VARCHAR" property="gradename"/>
+ <result column="gradecode" jdbcType="VARCHAR" property="gradecode"/>
+ <result column="classid" jdbcType="VARCHAR" property="classid"/>
+ <result column="classname" jdbcType="VARCHAR" property="classname"/>
+ <result column="classcode" jdbcType="VARCHAR" property="classcode"/>
+ <result column="updatecount" jdbcType="INTEGER" property="updatecount"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, isdeleted, remark, createtime, updatetime, masterid, mastercode, mastername,
+ organizationid, organizationname, organizationcode, departmentid, departmentname,
+ departmentcode, majorid, majorname, majorcode, gradeid, gradename, gradecode, classid,
+ classname, classcode, updatecount
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterOrganizationExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from vip_master_organization
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from vip_master_organization
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from vip_master_organization
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterOrganizationExample">
+ delete from vip_master_organization
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.VIPMasterOrganization">
+ insert into vip_master_organization (id, isdeleted, remark,
+ createtime, updatetime, masterid,
+ mastercode, mastername, organizationid,
+ organizationname, organizationcode, departmentid,
+ departmentname, departmentcode, majorid,
+ majorname, majorcode, gradeid,
+ gradename, gradecode, classid,
+ classname, classcode, updatecount
+ )
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{masterid,jdbcType=VARCHAR},
+ #{mastercode,jdbcType=VARCHAR}, #{mastername,jdbcType=VARCHAR}, #{organizationid,jdbcType=VARCHAR},
+ #{organizationname,jdbcType=VARCHAR}, #{organizationcode,jdbcType=VARCHAR}, #{departmentid,jdbcType=VARCHAR},
+ #{departmentname,jdbcType=VARCHAR}, #{departmentcode,jdbcType=VARCHAR}, #{majorid,jdbcType=VARCHAR},
+ #{majorname,jdbcType=VARCHAR}, #{majorcode,jdbcType=VARCHAR}, #{gradeid,jdbcType=VARCHAR},
+ #{gradename,jdbcType=VARCHAR}, #{gradecode,jdbcType=VARCHAR}, #{classid,jdbcType=VARCHAR},
+ #{classname,jdbcType=VARCHAR}, #{classcode,jdbcType=VARCHAR}, #{updatecount,jdbcType=INTEGER}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.VIPMasterOrganization">
+ insert into vip_master_organization
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="masterid != null">
+ masterid,
+ </if>
+ <if test="mastercode != null">
+ mastercode,
+ </if>
+ <if test="mastername != null">
+ mastername,
+ </if>
+ <if test="organizationid != null">
+ organizationid,
+ </if>
+ <if test="organizationname != null">
+ organizationname,
+ </if>
+ <if test="organizationcode != null">
+ organizationcode,
+ </if>
+ <if test="departmentid != null">
+ departmentid,
+ </if>
+ <if test="departmentname != null">
+ departmentname,
+ </if>
+ <if test="departmentcode != null">
+ departmentcode,
+ </if>
+ <if test="majorid != null">
+ majorid,
+ </if>
+ <if test="majorname != null">
+ majorname,
+ </if>
+ <if test="majorcode != null">
+ majorcode,
+ </if>
+ <if test="gradeid != null">
+ gradeid,
+ </if>
+ <if test="gradename != null">
+ gradename,
+ </if>
+ <if test="gradecode != null">
+ gradecode,
+ </if>
+ <if test="classid != null">
+ classid,
+ </if>
+ <if test="classname != null">
+ classname,
+ </if>
+ <if test="classcode != null">
+ classcode,
+ </if>
+ <if test="updatecount != null">
+ updatecount,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ #{mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationid != null">
+ #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="majorid != null">
+ #{majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="majorname != null">
+ #{majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="majorcode != null">
+ #{majorcode,jdbcType=VARCHAR},
+ </if>
+ <if test="gradeid != null">
+ #{gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="gradename != null">
+ #{gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="gradecode != null">
+ #{gradecode,jdbcType=VARCHAR},
+ </if>
+ <if test="classid != null">
+ #{classid,jdbcType=VARCHAR},
+ </if>
+ <if test="classname != null">
+ #{classname,jdbcType=VARCHAR},
+ </if>
+ <if test="classcode != null">
+ #{classcode,jdbcType=VARCHAR},
+ </if>
+ <if test="updatecount != null">
+ #{updatecount,jdbcType=INTEGER},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterOrganizationExample"
+ resultType="java.lang.Long">
+ select count(*) from vip_master_organization
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update vip_master_organization
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.masterid != null">
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastercode != null">
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastername != null">
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationid != null">
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationname != null">
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.organizationcode != null">
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentid != null">
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentname != null">
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.departmentcode != null">
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorid != null">
+ majorid = #{record.majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorname != null">
+ majorname = #{record.majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.majorcode != null">
+ majorcode = #{record.majorcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradeid != null">
+ gradeid = #{record.gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradename != null">
+ gradename = #{record.gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="record.gradecode != null">
+ gradecode = #{record.gradecode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.classid != null">
+ classid = #{record.classid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.classname != null">
+ classname = #{record.classname,jdbcType=VARCHAR},
+ </if>
+ <if test="record.classcode != null">
+ classcode = #{record.classcode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.updatecount != null">
+ updatecount = #{record.updatecount,jdbcType=INTEGER},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update vip_master_organization
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ organizationid = #{record.organizationid,jdbcType=VARCHAR},
+ organizationname = #{record.organizationname,jdbcType=VARCHAR},
+ organizationcode = #{record.organizationcode,jdbcType=VARCHAR},
+ departmentid = #{record.departmentid,jdbcType=VARCHAR},
+ departmentname = #{record.departmentname,jdbcType=VARCHAR},
+ departmentcode = #{record.departmentcode,jdbcType=VARCHAR},
+ majorid = #{record.majorid,jdbcType=VARCHAR},
+ majorname = #{record.majorname,jdbcType=VARCHAR},
+ majorcode = #{record.majorcode,jdbcType=VARCHAR},
+ gradeid = #{record.gradeid,jdbcType=VARCHAR},
+ gradename = #{record.gradename,jdbcType=VARCHAR},
+ gradecode = #{record.gradecode,jdbcType=VARCHAR},
+ classid = #{record.classid,jdbcType=VARCHAR},
+ classname = #{record.classname,jdbcType=VARCHAR},
+ classcode = #{record.classcode,jdbcType=VARCHAR},
+ updatecount = #{record.updatecount,jdbcType=INTEGER}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.VIPMasterOrganization">
+ update vip_master_organization
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ masterid = #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ mastername = #{mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationid != null">
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationname != null">
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ </if>
+ <if test="organizationcode != null">
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentid != null">
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentname != null">
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ </if>
+ <if test="departmentcode != null">
+ departmentcode = #{departmentcode,jdbcType=VARCHAR},
+ </if>
+ <if test="majorid != null">
+ majorid = #{majorid,jdbcType=VARCHAR},
+ </if>
+ <if test="majorname != null">
+ majorname = #{majorname,jdbcType=VARCHAR},
+ </if>
+ <if test="majorcode != null">
+ majorcode = #{majorcode,jdbcType=VARCHAR},
+ </if>
+ <if test="gradeid != null">
+ gradeid = #{gradeid,jdbcType=VARCHAR},
+ </if>
+ <if test="gradename != null">
+ gradename = #{gradename,jdbcType=VARCHAR},
+ </if>
+ <if test="gradecode != null">
+ gradecode = #{gradecode,jdbcType=VARCHAR},
+ </if>
+ <if test="classid != null">
+ classid = #{classid,jdbcType=VARCHAR},
+ </if>
+ <if test="classname != null">
+ classname = #{classname,jdbcType=VARCHAR},
+ </if>
+ <if test="classcode != null">
+ classcode = #{classcode,jdbcType=VARCHAR},
+ </if>
+ <if test="updatecount != null">
+ updatecount = #{updatecount,jdbcType=INTEGER},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.VIPMasterOrganization">
+ update vip_master_organization
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ mastername = #{mastername,jdbcType=VARCHAR},
+ organizationid = #{organizationid,jdbcType=VARCHAR},
+ organizationname = #{organizationname,jdbcType=VARCHAR},
+ organizationcode = #{organizationcode,jdbcType=VARCHAR},
+ departmentid = #{departmentid,jdbcType=VARCHAR},
+ departmentname = #{departmentname,jdbcType=VARCHAR},
+ departmentcode = #{departmentcode,jdbcType=VARCHAR},
+ majorid = #{majorid,jdbcType=VARCHAR},
+ majorname = #{majorname,jdbcType=VARCHAR},
+ majorcode = #{majorcode,jdbcType=VARCHAR},
+ gradeid = #{gradeid,jdbcType=VARCHAR},
+ gradename = #{gradename,jdbcType=VARCHAR},
+ gradecode = #{gradecode,jdbcType=VARCHAR},
+ classid = #{classid,jdbcType=VARCHAR},
+ classname = #{classname,jdbcType=VARCHAR},
+ classcode = #{classcode,jdbcType=VARCHAR},
+ updatecount = #{updatecount,jdbcType=INTEGER}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.java
new file mode 100644
index 0000000..d69bc9f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.VIPMasterPaperRelation;
+import com.farriver.bwf.data.master.model.VIPMasterPaperRelationExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface VIPMasterPaperRelationMapper {
+ long countByExample(VIPMasterPaperRelationExample example);
+
+ int deleteByExample(VIPMasterPaperRelationExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(VIPMasterPaperRelation record);
+
+ int insertSelective(VIPMasterPaperRelation record);
+
+ List<VIPMasterPaperRelation> selectByExample(VIPMasterPaperRelationExample example);
+
+ VIPMasterPaperRelation selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") VIPMasterPaperRelation record, @Param("example") VIPMasterPaperRelationExample example);
+
+ int updateByExample(@Param("record") VIPMasterPaperRelation record, @Param("example") VIPMasterPaperRelationExample example);
+
+ int updateByPrimaryKeySelective(VIPMasterPaperRelation record);
+
+ int updateByPrimaryKey(VIPMasterPaperRelation record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.xml
new file mode 100644
index 0000000..dd53a07
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterPaperRelationMapper.xml
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.VIPMasterPaperRelationMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.VIPMasterPaperRelation">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="masterid" jdbcType="VARCHAR" property="masterid"/>
+ <result column="mastercode" jdbcType="VARCHAR" property="mastercode"/>
+ <result column="mastername" jdbcType="VARCHAR" property="mastername"/>
+ <result column="paperid" jdbcType="VARCHAR" property="paperid"/>
+ <result column="papercode" jdbcType="VARCHAR" property="papercode"/>
+ <result column="papername" jdbcType="VARCHAR" property="papername"/>
+ <result column="buyedtime" jdbcType="TIMESTAMP" property="buyedtime"/>
+ <result column="amount" jdbcType="DECIMAL" property="amount"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, isdeleted, remark, createtime, updatetime, masterid, mastercode, mastername,
+ paperid, papercode, papername, buyedtime, amount, status
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterPaperRelationExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from vip_master_paper_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from vip_master_paper_relation
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from vip_master_paper_relation
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample"
+ parameterType="com.farriver.bwf.data.master.model.VIPMasterPaperRelationExample">
+ delete from vip_master_paper_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.VIPMasterPaperRelation">
+ insert into vip_master_paper_relation (id, isdeleted, remark,
+ createtime, updatetime, masterid,
+ mastercode, mastername, paperid,
+ papercode, papername, buyedtime,
+ amount, status)
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{masterid,jdbcType=VARCHAR},
+ #{mastercode,jdbcType=VARCHAR}, #{mastername,jdbcType=VARCHAR}, #{paperid,jdbcType=VARCHAR},
+ #{papercode,jdbcType=VARCHAR}, #{papername,jdbcType=VARCHAR}, #{buyedtime,jdbcType=TIMESTAMP},
+ #{amount,jdbcType=DECIMAL}, #{status,jdbcType=INTEGER})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.VIPMasterPaperRelation">
+ insert into vip_master_paper_relation
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="masterid != null">
+ masterid,
+ </if>
+ <if test="mastercode != null">
+ mastercode,
+ </if>
+ <if test="mastername != null">
+ mastername,
+ </if>
+ <if test="paperid != null">
+ paperid,
+ </if>
+ <if test="papercode != null">
+ papercode,
+ </if>
+ <if test="papername != null">
+ papername,
+ </if>
+ <if test="buyedtime != null">
+ buyedtime,
+ </if>
+ <if test="amount != null">
+ amount,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ #{mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="paperid != null">
+ #{paperid,jdbcType=VARCHAR},
+ </if>
+ <if test="papercode != null">
+ #{papercode,jdbcType=VARCHAR},
+ </if>
+ <if test="papername != null">
+ #{papername,jdbcType=VARCHAR},
+ </if>
+ <if test="buyedtime != null">
+ #{buyedtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="amount != null">
+ #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterPaperRelationExample"
+ resultType="java.lang.Long">
+ select count(*) from vip_master_paper_relation
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update vip_master_paper_relation
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.masterid != null">
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastercode != null">
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastername != null">
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="record.paperid != null">
+ paperid = #{record.paperid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.papercode != null">
+ papercode = #{record.papercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.papername != null">
+ papername = #{record.papername,jdbcType=VARCHAR},
+ </if>
+ <if test="record.buyedtime != null">
+ buyedtime = #{record.buyedtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.amount != null">
+ amount = #{record.amount,jdbcType=DECIMAL},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update vip_master_paper_relation
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ paperid = #{record.paperid,jdbcType=VARCHAR},
+ papercode = #{record.papercode,jdbcType=VARCHAR},
+ papername = #{record.papername,jdbcType=VARCHAR},
+ buyedtime = #{record.buyedtime,jdbcType=TIMESTAMP},
+ amount = #{record.amount,jdbcType=DECIMAL},
+ status = #{record.status,jdbcType=INTEGER}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective"
+ parameterType="com.farriver.bwf.data.master.model.VIPMasterPaperRelation">
+ update vip_master_paper_relation
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ masterid = #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ mastername = #{mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="paperid != null">
+ paperid = #{paperid,jdbcType=VARCHAR},
+ </if>
+ <if test="papercode != null">
+ papercode = #{papercode,jdbcType=VARCHAR},
+ </if>
+ <if test="papername != null">
+ papername = #{papername,jdbcType=VARCHAR},
+ </if>
+ <if test="buyedtime != null">
+ buyedtime = #{buyedtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="amount != null">
+ amount = #{amount,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.VIPMasterPaperRelation">
+ update vip_master_paper_relation
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ mastername = #{mastername,jdbcType=VARCHAR},
+ paperid = #{paperid,jdbcType=VARCHAR},
+ papercode = #{papercode,jdbcType=VARCHAR},
+ papername = #{papername,jdbcType=VARCHAR},
+ buyedtime = #{buyedtime,jdbcType=TIMESTAMP},
+ amount = #{amount,jdbcType=DECIMAL},
+ status = #{status,jdbcType=INTEGER}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.java
new file mode 100644
index 0000000..470dc06
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.java
@@ -0,0 +1,30 @@
+package com.farriver.bwf.data.master.mapper;
+
+import com.farriver.bwf.data.master.model.VIPMasterWallet;
+import com.farriver.bwf.data.master.model.VIPMasterWalletExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface VIPMasterWalletMapper {
+ long countByExample(VIPMasterWalletExample example);
+
+ int deleteByExample(VIPMasterWalletExample example);
+
+ int deleteByPrimaryKey(String id);
+
+ int insert(VIPMasterWallet record);
+
+ int insertSelective(VIPMasterWallet record);
+
+ List<VIPMasterWallet> selectByExample(VIPMasterWalletExample example);
+
+ VIPMasterWallet selectByPrimaryKey(String id);
+
+ int updateByExampleSelective(@Param("record") VIPMasterWallet record, @Param("example") VIPMasterWalletExample example);
+
+ int updateByExample(@Param("record") VIPMasterWallet record, @Param("example") VIPMasterWalletExample example);
+
+ int updateByPrimaryKeySelective(VIPMasterWallet record);
+
+ int updateByPrimaryKey(VIPMasterWallet record);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.xml
new file mode 100644
index 0000000..3839cf0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/mapper/VIPMasterWalletMapper.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.farriver.bwf.data.master.mapper.VIPMasterWalletMapper">
+ <resultMap id="BaseResultMap" type="com.farriver.bwf.data.master.model.VIPMasterWallet">
+ <id column="id" jdbcType="VARCHAR" property="id"/>
+ <result column="isdeleted" jdbcType="BIT" property="isdeleted"/>
+ <result column="remark" jdbcType="VARCHAR" property="remark"/>
+ <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
+ <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
+ <result column="masterid" jdbcType="VARCHAR" property="masterid"/>
+ <result column="mastercode" jdbcType="VARCHAR" property="mastercode"/>
+ <result column="mastername" jdbcType="VARCHAR" property="mastername"/>
+ <result column="balance" jdbcType="DECIMAL" property="balance"/>
+ <result column="status" jdbcType="INTEGER" property="status"/>
+ </resultMap>
+ <sql id="Example_Where_Clause">
+ <where>
+ <foreach collection="oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Update_By_Example_Where_Clause">
+ <where>
+ <foreach collection="example.oredCriteria" item="criteria" separator="or">
+ <if test="criteria.valid">
+ <trim prefix="(" prefixOverrides="and" suffix=")">
+ <foreach collection="criteria.criteria" item="criterion">
+ <choose>
+ <when test="criterion.noValue">
+ and ${criterion.condition}
+ </when>
+ <when test="criterion.singleValue">
+ and ${criterion.condition} #{criterion.value}
+ </when>
+ <when test="criterion.betweenValue">
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+ </when>
+ <when test="criterion.listValue">
+ and ${criterion.condition}
+ <foreach close=")" collection="criterion.value" item="listItem" open="("
+ separator=",">
+ #{listItem}
+ </foreach>
+ </when>
+ </choose>
+ </foreach>
+ </trim>
+ </if>
+ </foreach>
+ </where>
+ </sql>
+ <sql id="Base_Column_List">
+ id, isdeleted, remark, createtime, updatetime, masterid, mastercode, mastername,
+ balance, status
+ </sql>
+ <select id="selectByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterWalletExample"
+ resultMap="BaseResultMap">
+ select
+ <if test="distinct">
+ distinct
+ </if>
+ 'true' as QUERYID,
+ <include refid="Base_Column_List"/>
+ from vip_master_wallet
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ <if test="orderByClause != null">
+ order by ${orderByClause}
+ </if>
+ <if test="rows != null">
+ <if test="offset != null">
+ limit ${offset}, ${rows}
+ </if>
+ <if test="offset == null">
+ limit ${rows}
+ </if>
+ </if>
+ </select>
+ <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from vip_master_wallet
+ where id = #{id,jdbcType=VARCHAR}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+ delete from vip_master_wallet
+ where id = #{id,jdbcType=VARCHAR}
+ </delete>
+ <delete id="deleteByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterWalletExample">
+ delete from vip_master_wallet
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </delete>
+ <insert id="insert" parameterType="com.farriver.bwf.data.master.model.VIPMasterWallet">
+ insert into vip_master_wallet (id, isdeleted, remark,
+ createtime, updatetime, masterid,
+ mastercode, mastername, balance,
+ status)
+ values (#{id,jdbcType=VARCHAR}, #{isdeleted,jdbcType=BIT}, #{remark,jdbcType=VARCHAR},
+ #{createtime,jdbcType=TIMESTAMP}, #{updatetime,jdbcType=TIMESTAMP}, #{masterid,jdbcType=VARCHAR},
+ #{mastercode,jdbcType=VARCHAR}, #{mastername,jdbcType=VARCHAR}, #{balance,jdbcType=DECIMAL},
+ #{status,jdbcType=INTEGER})
+ </insert>
+ <insert id="insertSelective" parameterType="com.farriver.bwf.data.master.model.VIPMasterWallet">
+ insert into vip_master_wallet
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="isdeleted != null">
+ isdeleted,
+ </if>
+ <if test="remark != null">
+ remark,
+ </if>
+ <if test="createtime != null">
+ createtime,
+ </if>
+ <if test="updatetime != null">
+ updatetime,
+ </if>
+ <if test="masterid != null">
+ masterid,
+ </if>
+ <if test="mastercode != null">
+ mastercode,
+ </if>
+ <if test="mastername != null">
+ mastername,
+ </if>
+ <if test="balance != null">
+ balance,
+ </if>
+ <if test="status != null">
+ status,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=VARCHAR},
+ </if>
+ <if test="isdeleted != null">
+ #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ #{mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="balance != null">
+ #{balance,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ #{status,jdbcType=INTEGER},
+ </if>
+ </trim>
+ </insert>
+ <select id="countByExample" parameterType="com.farriver.bwf.data.master.model.VIPMasterWalletExample"
+ resultType="java.lang.Long">
+ select count(*) from vip_master_wallet
+ <if test="_parameter != null">
+ <include refid="Example_Where_Clause"/>
+ </if>
+ </select>
+ <update id="updateByExampleSelective" parameterType="map">
+ update vip_master_wallet
+ <set>
+ <if test="record.id != null">
+ id = #{record.id,jdbcType=VARCHAR},
+ </if>
+ <if test="record.isdeleted != null">
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ </if>
+ <if test="record.remark != null">
+ remark = #{record.remark,jdbcType=VARCHAR},
+ </if>
+ <if test="record.createtime != null">
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.updatetime != null">
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="record.masterid != null">
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastercode != null">
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="record.mastername != null">
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="record.balance != null">
+ balance = #{record.balance,jdbcType=DECIMAL},
+ </if>
+ <if test="record.status != null">
+ status = #{record.status,jdbcType=INTEGER},
+ </if>
+ </set>
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByExample" parameterType="map">
+ update vip_master_wallet
+ set id = #{record.id,jdbcType=VARCHAR},
+ isdeleted = #{record.isdeleted,jdbcType=BIT},
+ remark = #{record.remark,jdbcType=VARCHAR},
+ createtime = #{record.createtime,jdbcType=TIMESTAMP},
+ updatetime = #{record.updatetime,jdbcType=TIMESTAMP},
+ masterid = #{record.masterid,jdbcType=VARCHAR},
+ mastercode = #{record.mastercode,jdbcType=VARCHAR},
+ mastername = #{record.mastername,jdbcType=VARCHAR},
+ balance = #{record.balance,jdbcType=DECIMAL},
+ status = #{record.status,jdbcType=INTEGER}
+ <if test="_parameter != null">
+ <include refid="Update_By_Example_Where_Clause"/>
+ </if>
+ </update>
+ <update id="updateByPrimaryKeySelective" parameterType="com.farriver.bwf.data.master.model.VIPMasterWallet">
+ update vip_master_wallet
+ <set>
+ <if test="isdeleted != null">
+ isdeleted = #{isdeleted,jdbcType=BIT},
+ </if>
+ <if test="remark != null">
+ remark = #{remark,jdbcType=VARCHAR},
+ </if>
+ <if test="createtime != null">
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="updatetime != null">
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ </if>
+ <if test="masterid != null">
+ masterid = #{masterid,jdbcType=VARCHAR},
+ </if>
+ <if test="mastercode != null">
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ </if>
+ <if test="mastername != null">
+ mastername = #{mastername,jdbcType=VARCHAR},
+ </if>
+ <if test="balance != null">
+ balance = #{balance,jdbcType=DECIMAL},
+ </if>
+ <if test="status != null">
+ status = #{status,jdbcType=INTEGER},
+ </if>
+ </set>
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.farriver.bwf.data.master.model.VIPMasterWallet">
+ update vip_master_wallet
+ set isdeleted = #{isdeleted,jdbcType=BIT},
+ remark = #{remark,jdbcType=VARCHAR},
+ createtime = #{createtime,jdbcType=TIMESTAMP},
+ updatetime = #{updatetime,jdbcType=TIMESTAMP},
+ masterid = #{masterid,jdbcType=VARCHAR},
+ mastercode = #{mastercode,jdbcType=VARCHAR},
+ mastername = #{mastername,jdbcType=VARCHAR},
+ balance = #{balance,jdbcType=DECIMAL},
+ status = #{status,jdbcType=INTEGER}
+ where id = #{id,jdbcType=VARCHAR}
+ </update>
+</mapper>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActive.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActive.java
new file mode 100644
index 0000000..9a533b2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActive.java
@@ -0,0 +1,406 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderActive {
+ private String id;
+
+ private String no;
+
+ private BigDecimal totalmoney;
+
+ private BigDecimal payedmoney;
+
+ private Integer paymentmethod;
+
+ private BigDecimal discountmoney;
+
+ private Integer status;
+
+ private Date ordertime;
+
+ private Date paytime;
+
+ private Date sendtime;
+
+ private Date receivetime;
+
+ private Date commenttime;
+
+ private Date completetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String sendername;
+
+ private String sendercode;
+
+ private Integer sendercontactno;
+
+ private String targetaddress;
+
+ private String deliveryaddress;
+
+ private String optimalcoupon;
+
+ private String logisticscompany;
+
+ private String logisticsno;
+
+ private String transportmode;
+
+ private Integer boxcount;
+
+ private BigDecimal boxweight;
+
+ private BigDecimal freight;
+
+ private String commentcontent;
+
+ private Integer commentlevel;
+
+ private String receiverid;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ private Integer type;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public BigDecimal getTotalmoney() {
+ return totalmoney;
+ }
+
+ public void setTotalmoney(BigDecimal totalmoney) {
+ this.totalmoney = totalmoney;
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public Integer getPaymentmethod() {
+ return paymentmethod;
+ }
+
+ public void setPaymentmethod(Integer paymentmethod) {
+ this.paymentmethod = paymentmethod;
+ }
+
+ public BigDecimal getDiscountmoney() {
+ return discountmoney;
+ }
+
+ public void setDiscountmoney(BigDecimal discountmoney) {
+ this.discountmoney = discountmoney;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Date getOrdertime() {
+ return ordertime;
+ }
+
+ public void setOrdertime(Date ordertime) {
+ this.ordertime = ordertime;
+ }
+
+ public Date getPaytime() {
+ return paytime;
+ }
+
+ public void setPaytime(Date paytime) {
+ this.paytime = paytime;
+ }
+
+ public Date getSendtime() {
+ return sendtime;
+ }
+
+ public void setSendtime(Date sendtime) {
+ this.sendtime = sendtime;
+ }
+
+ public Date getReceivetime() {
+ return receivetime;
+ }
+
+ public void setReceivetime(Date receivetime) {
+ this.receivetime = receivetime;
+ }
+
+ public Date getCommenttime() {
+ return commenttime;
+ }
+
+ public void setCommenttime(Date commenttime) {
+ this.commenttime = commenttime;
+ }
+
+ public Date getCompletetime() {
+ return completetime;
+ }
+
+ public void setCompletetime(Date completetime) {
+ this.completetime = completetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getSendername() {
+ return sendername;
+ }
+
+ public void setSendername(String sendername) {
+ this.sendername = sendername == null ? null : sendername.trim();
+ }
+
+ public String getSendercode() {
+ return sendercode;
+ }
+
+ public void setSendercode(String sendercode) {
+ this.sendercode = sendercode == null ? null : sendercode.trim();
+ }
+
+ public Integer getSendercontactno() {
+ return sendercontactno;
+ }
+
+ public void setSendercontactno(Integer sendercontactno) {
+ this.sendercontactno = sendercontactno;
+ }
+
+ public String getTargetaddress() {
+ return targetaddress;
+ }
+
+ public void setTargetaddress(String targetaddress) {
+ this.targetaddress = targetaddress == null ? null : targetaddress.trim();
+ }
+
+ public String getDeliveryaddress() {
+ return deliveryaddress;
+ }
+
+ public void setDeliveryaddress(String deliveryaddress) {
+ this.deliveryaddress = deliveryaddress == null ? null : deliveryaddress.trim();
+ }
+
+ public String getOptimalcoupon() {
+ return optimalcoupon;
+ }
+
+ public void setOptimalcoupon(String optimalcoupon) {
+ this.optimalcoupon = optimalcoupon == null ? null : optimalcoupon.trim();
+ }
+
+ public String getLogisticscompany() {
+ return logisticscompany;
+ }
+
+ public void setLogisticscompany(String logisticscompany) {
+ this.logisticscompany = logisticscompany == null ? null : logisticscompany.trim();
+ }
+
+ public String getLogisticsno() {
+ return logisticsno;
+ }
+
+ public void setLogisticsno(String logisticsno) {
+ this.logisticsno = logisticsno == null ? null : logisticsno.trim();
+ }
+
+ public String getTransportmode() {
+ return transportmode;
+ }
+
+ public void setTransportmode(String transportmode) {
+ this.transportmode = transportmode == null ? null : transportmode.trim();
+ }
+
+ public Integer getBoxcount() {
+ return boxcount;
+ }
+
+ public void setBoxcount(Integer boxcount) {
+ this.boxcount = boxcount;
+ }
+
+ public BigDecimal getBoxweight() {
+ return boxweight;
+ }
+
+ public void setBoxweight(BigDecimal boxweight) {
+ this.boxweight = boxweight;
+ }
+
+ public BigDecimal getFreight() {
+ return freight;
+ }
+
+ public void setFreight(BigDecimal freight) {
+ this.freight = freight;
+ }
+
+ public String getCommentcontent() {
+ return commentcontent;
+ }
+
+ public void setCommentcontent(String commentcontent) {
+ this.commentcontent = commentcontent == null ? null : commentcontent.trim();
+ }
+
+ public Integer getCommentlevel() {
+ return commentlevel;
+ }
+
+ public void setCommentlevel(Integer commentlevel) {
+ this.commentlevel = commentlevel;
+ }
+
+ public String getReceiverid() {
+ return receiverid;
+ }
+
+ public void setReceiverid(String receiverid) {
+ this.receiverid = receiverid == null ? null : receiverid.trim();
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveExample.java
new file mode 100644
index 0000000..4e155f0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveExample.java
@@ -0,0 +1,2874 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrderActiveExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrderActiveExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderActiveExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderActiveExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderActiveExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoIsNull() {
+ addCriterion("no is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoIsNotNull() {
+ addCriterion("no is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoEqualTo(String value) {
+ addCriterion("no =", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotEqualTo(String value) {
+ addCriterion("no <>", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoGreaterThan(String value) {
+ addCriterion("no >", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoGreaterThanOrEqualTo(String value) {
+ addCriterion("no >=", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoLessThan(String value) {
+ addCriterion("no <", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoLessThanOrEqualTo(String value) {
+ addCriterion("no <=", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoLike(String value) {
+ addCriterion("no like", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotLike(String value) {
+ addCriterion("no not like", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoIn(List<String> values) {
+ addCriterion("no in", values, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotIn(List<String> values) {
+ addCriterion("no not in", values, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoBetween(String value1, String value2) {
+ addCriterion("no between", value1, value2, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotBetween(String value1, String value2) {
+ addCriterion("no not between", value1, value2, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyIsNull() {
+ addCriterion("totalmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyIsNotNull() {
+ addCriterion("totalmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyEqualTo(BigDecimal value) {
+ addCriterion("totalmoney =", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("totalmoney <>", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyGreaterThan(BigDecimal value) {
+ addCriterion("totalmoney >", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("totalmoney >=", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyLessThan(BigDecimal value) {
+ addCriterion("totalmoney <", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("totalmoney <=", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyIn(List<BigDecimal> values) {
+ addCriterion("totalmoney in", values, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("totalmoney not in", values, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("totalmoney between", value1, value2, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("totalmoney not between", value1, value2, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNull() {
+ addCriterion("payedmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNotNull() {
+ addCriterion("payedmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyEqualTo(BigDecimal value) {
+ addCriterion("payedmoney =", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <>", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThan(BigDecimal value) {
+ addCriterion("payedmoney >", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney >=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThan(BigDecimal value) {
+ addCriterion("payedmoney <", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIn(List<BigDecimal> values) {
+ addCriterion("payedmoney in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("payedmoney not in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney not between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodIsNull() {
+ addCriterion("paymentmethod is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodIsNotNull() {
+ addCriterion("paymentmethod is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodEqualTo(Integer value) {
+ addCriterion("paymentmethod =", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodNotEqualTo(Integer value) {
+ addCriterion("paymentmethod <>", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodGreaterThan(Integer value) {
+ addCriterion("paymentmethod >", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodGreaterThanOrEqualTo(Integer value) {
+ addCriterion("paymentmethod >=", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodLessThan(Integer value) {
+ addCriterion("paymentmethod <", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodLessThanOrEqualTo(Integer value) {
+ addCriterion("paymentmethod <=", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodIn(List<Integer> values) {
+ addCriterion("paymentmethod in", values, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodNotIn(List<Integer> values) {
+ addCriterion("paymentmethod not in", values, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodBetween(Integer value1, Integer value2) {
+ addCriterion("paymentmethod between", value1, value2, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodNotBetween(Integer value1, Integer value2) {
+ addCriterion("paymentmethod not between", value1, value2, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyIsNull() {
+ addCriterion("discountmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyIsNotNull() {
+ addCriterion("discountmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyEqualTo(BigDecimal value) {
+ addCriterion("discountmoney =", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("discountmoney <>", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyGreaterThan(BigDecimal value) {
+ addCriterion("discountmoney >", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountmoney >=", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyLessThan(BigDecimal value) {
+ addCriterion("discountmoney <", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountmoney <=", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyIn(List<BigDecimal> values) {
+ addCriterion("discountmoney in", values, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("discountmoney not in", values, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountmoney between", value1, value2, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountmoney not between", value1, value2, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeIsNull() {
+ addCriterion("ordertime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeIsNotNull() {
+ addCriterion("ordertime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeEqualTo(Date value) {
+ addCriterion("ordertime =", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeNotEqualTo(Date value) {
+ addCriterion("ordertime <>", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeGreaterThan(Date value) {
+ addCriterion("ordertime >", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("ordertime >=", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeLessThan(Date value) {
+ addCriterion("ordertime <", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeLessThanOrEqualTo(Date value) {
+ addCriterion("ordertime <=", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeIn(List<Date> values) {
+ addCriterion("ordertime in", values, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeNotIn(List<Date> values) {
+ addCriterion("ordertime not in", values, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeBetween(Date value1, Date value2) {
+ addCriterion("ordertime between", value1, value2, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeNotBetween(Date value1, Date value2) {
+ addCriterion("ordertime not between", value1, value2, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeIsNull() {
+ addCriterion("paytime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeIsNotNull() {
+ addCriterion("paytime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeEqualTo(Date value) {
+ addCriterion("paytime =", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeNotEqualTo(Date value) {
+ addCriterion("paytime <>", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeGreaterThan(Date value) {
+ addCriterion("paytime >", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("paytime >=", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeLessThan(Date value) {
+ addCriterion("paytime <", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeLessThanOrEqualTo(Date value) {
+ addCriterion("paytime <=", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeIn(List<Date> values) {
+ addCriterion("paytime in", values, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeNotIn(List<Date> values) {
+ addCriterion("paytime not in", values, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeBetween(Date value1, Date value2) {
+ addCriterion("paytime between", value1, value2, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeNotBetween(Date value1, Date value2) {
+ addCriterion("paytime not between", value1, value2, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeIsNull() {
+ addCriterion("sendtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeIsNotNull() {
+ addCriterion("sendtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeEqualTo(Date value) {
+ addCriterion("sendtime =", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeNotEqualTo(Date value) {
+ addCriterion("sendtime <>", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeGreaterThan(Date value) {
+ addCriterion("sendtime >", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("sendtime >=", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeLessThan(Date value) {
+ addCriterion("sendtime <", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeLessThanOrEqualTo(Date value) {
+ addCriterion("sendtime <=", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeIn(List<Date> values) {
+ addCriterion("sendtime in", values, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeNotIn(List<Date> values) {
+ addCriterion("sendtime not in", values, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeBetween(Date value1, Date value2) {
+ addCriterion("sendtime between", value1, value2, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeNotBetween(Date value1, Date value2) {
+ addCriterion("sendtime not between", value1, value2, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeIsNull() {
+ addCriterion("receivetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeIsNotNull() {
+ addCriterion("receivetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeEqualTo(Date value) {
+ addCriterion("receivetime =", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeNotEqualTo(Date value) {
+ addCriterion("receivetime <>", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeGreaterThan(Date value) {
+ addCriterion("receivetime >", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("receivetime >=", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeLessThan(Date value) {
+ addCriterion("receivetime <", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeLessThanOrEqualTo(Date value) {
+ addCriterion("receivetime <=", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeIn(List<Date> values) {
+ addCriterion("receivetime in", values, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeNotIn(List<Date> values) {
+ addCriterion("receivetime not in", values, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeBetween(Date value1, Date value2) {
+ addCriterion("receivetime between", value1, value2, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeNotBetween(Date value1, Date value2) {
+ addCriterion("receivetime not between", value1, value2, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeIsNull() {
+ addCriterion("commenttime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeIsNotNull() {
+ addCriterion("commenttime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeEqualTo(Date value) {
+ addCriterion("commenttime =", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeNotEqualTo(Date value) {
+ addCriterion("commenttime <>", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeGreaterThan(Date value) {
+ addCriterion("commenttime >", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("commenttime >=", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeLessThan(Date value) {
+ addCriterion("commenttime <", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeLessThanOrEqualTo(Date value) {
+ addCriterion("commenttime <=", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeIn(List<Date> values) {
+ addCriterion("commenttime in", values, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeNotIn(List<Date> values) {
+ addCriterion("commenttime not in", values, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeBetween(Date value1, Date value2) {
+ addCriterion("commenttime between", value1, value2, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeNotBetween(Date value1, Date value2) {
+ addCriterion("commenttime not between", value1, value2, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeIsNull() {
+ addCriterion("completetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeIsNotNull() {
+ addCriterion("completetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeEqualTo(Date value) {
+ addCriterion("completetime =", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeNotEqualTo(Date value) {
+ addCriterion("completetime <>", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeGreaterThan(Date value) {
+ addCriterion("completetime >", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("completetime >=", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeLessThan(Date value) {
+ addCriterion("completetime <", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeLessThanOrEqualTo(Date value) {
+ addCriterion("completetime <=", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeIn(List<Date> values) {
+ addCriterion("completetime in", values, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeNotIn(List<Date> values) {
+ addCriterion("completetime not in", values, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeBetween(Date value1, Date value2) {
+ addCriterion("completetime between", value1, value2, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeNotBetween(Date value1, Date value2) {
+ addCriterion("completetime not between", value1, value2, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameIsNull() {
+ addCriterion("sendername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameIsNotNull() {
+ addCriterion("sendername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameEqualTo(String value) {
+ addCriterion("sendername =", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotEqualTo(String value) {
+ addCriterion("sendername <>", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameGreaterThan(String value) {
+ addCriterion("sendername >", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameGreaterThanOrEqualTo(String value) {
+ addCriterion("sendername >=", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameLessThan(String value) {
+ addCriterion("sendername <", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameLessThanOrEqualTo(String value) {
+ addCriterion("sendername <=", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameLike(String value) {
+ addCriterion("sendername like", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotLike(String value) {
+ addCriterion("sendername not like", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameIn(List<String> values) {
+ addCriterion("sendername in", values, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotIn(List<String> values) {
+ addCriterion("sendername not in", values, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameBetween(String value1, String value2) {
+ addCriterion("sendername between", value1, value2, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotBetween(String value1, String value2) {
+ addCriterion("sendername not between", value1, value2, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeIsNull() {
+ addCriterion("sendercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeIsNotNull() {
+ addCriterion("sendercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeEqualTo(String value) {
+ addCriterion("sendercode =", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotEqualTo(String value) {
+ addCriterion("sendercode <>", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeGreaterThan(String value) {
+ addCriterion("sendercode >", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("sendercode >=", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeLessThan(String value) {
+ addCriterion("sendercode <", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeLessThanOrEqualTo(String value) {
+ addCriterion("sendercode <=", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeLike(String value) {
+ addCriterion("sendercode like", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotLike(String value) {
+ addCriterion("sendercode not like", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeIn(List<String> values) {
+ addCriterion("sendercode in", values, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotIn(List<String> values) {
+ addCriterion("sendercode not in", values, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeBetween(String value1, String value2) {
+ addCriterion("sendercode between", value1, value2, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotBetween(String value1, String value2) {
+ addCriterion("sendercode not between", value1, value2, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoIsNull() {
+ addCriterion("sendercontactno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoIsNotNull() {
+ addCriterion("sendercontactno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoEqualTo(Integer value) {
+ addCriterion("sendercontactno =", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoNotEqualTo(Integer value) {
+ addCriterion("sendercontactno <>", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoGreaterThan(Integer value) {
+ addCriterion("sendercontactno >", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoGreaterThanOrEqualTo(Integer value) {
+ addCriterion("sendercontactno >=", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoLessThan(Integer value) {
+ addCriterion("sendercontactno <", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoLessThanOrEqualTo(Integer value) {
+ addCriterion("sendercontactno <=", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoIn(List<Integer> values) {
+ addCriterion("sendercontactno in", values, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoNotIn(List<Integer> values) {
+ addCriterion("sendercontactno not in", values, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoBetween(Integer value1, Integer value2) {
+ addCriterion("sendercontactno between", value1, value2, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoNotBetween(Integer value1, Integer value2) {
+ addCriterion("sendercontactno not between", value1, value2, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressIsNull() {
+ addCriterion("targetaddress is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressIsNotNull() {
+ addCriterion("targetaddress is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressEqualTo(String value) {
+ addCriterion("targetaddress =", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotEqualTo(String value) {
+ addCriterion("targetaddress <>", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressGreaterThan(String value) {
+ addCriterion("targetaddress >", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressGreaterThanOrEqualTo(String value) {
+ addCriterion("targetaddress >=", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressLessThan(String value) {
+ addCriterion("targetaddress <", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressLessThanOrEqualTo(String value) {
+ addCriterion("targetaddress <=", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressLike(String value) {
+ addCriterion("targetaddress like", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotLike(String value) {
+ addCriterion("targetaddress not like", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressIn(List<String> values) {
+ addCriterion("targetaddress in", values, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotIn(List<String> values) {
+ addCriterion("targetaddress not in", values, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressBetween(String value1, String value2) {
+ addCriterion("targetaddress between", value1, value2, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotBetween(String value1, String value2) {
+ addCriterion("targetaddress not between", value1, value2, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressIsNull() {
+ addCriterion("deliveryaddress is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressIsNotNull() {
+ addCriterion("deliveryaddress is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressEqualTo(String value) {
+ addCriterion("deliveryaddress =", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotEqualTo(String value) {
+ addCriterion("deliveryaddress <>", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressGreaterThan(String value) {
+ addCriterion("deliveryaddress >", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressGreaterThanOrEqualTo(String value) {
+ addCriterion("deliveryaddress >=", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressLessThan(String value) {
+ addCriterion("deliveryaddress <", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressLessThanOrEqualTo(String value) {
+ addCriterion("deliveryaddress <=", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressLike(String value) {
+ addCriterion("deliveryaddress like", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotLike(String value) {
+ addCriterion("deliveryaddress not like", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressIn(List<String> values) {
+ addCriterion("deliveryaddress in", values, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotIn(List<String> values) {
+ addCriterion("deliveryaddress not in", values, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressBetween(String value1, String value2) {
+ addCriterion("deliveryaddress between", value1, value2, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotBetween(String value1, String value2) {
+ addCriterion("deliveryaddress not between", value1, value2, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponIsNull() {
+ addCriterion("optimalcoupon is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponIsNotNull() {
+ addCriterion("optimalcoupon is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponEqualTo(String value) {
+ addCriterion("optimalcoupon =", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotEqualTo(String value) {
+ addCriterion("optimalcoupon <>", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponGreaterThan(String value) {
+ addCriterion("optimalcoupon >", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponGreaterThanOrEqualTo(String value) {
+ addCriterion("optimalcoupon >=", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponLessThan(String value) {
+ addCriterion("optimalcoupon <", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponLessThanOrEqualTo(String value) {
+ addCriterion("optimalcoupon <=", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponLike(String value) {
+ addCriterion("optimalcoupon like", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotLike(String value) {
+ addCriterion("optimalcoupon not like", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponIn(List<String> values) {
+ addCriterion("optimalcoupon in", values, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotIn(List<String> values) {
+ addCriterion("optimalcoupon not in", values, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponBetween(String value1, String value2) {
+ addCriterion("optimalcoupon between", value1, value2, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotBetween(String value1, String value2) {
+ addCriterion("optimalcoupon not between", value1, value2, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyIsNull() {
+ addCriterion("logisticscompany is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyIsNotNull() {
+ addCriterion("logisticscompany is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyEqualTo(String value) {
+ addCriterion("logisticscompany =", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotEqualTo(String value) {
+ addCriterion("logisticscompany <>", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyGreaterThan(String value) {
+ addCriterion("logisticscompany >", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyGreaterThanOrEqualTo(String value) {
+ addCriterion("logisticscompany >=", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyLessThan(String value) {
+ addCriterion("logisticscompany <", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyLessThanOrEqualTo(String value) {
+ addCriterion("logisticscompany <=", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyLike(String value) {
+ addCriterion("logisticscompany like", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotLike(String value) {
+ addCriterion("logisticscompany not like", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyIn(List<String> values) {
+ addCriterion("logisticscompany in", values, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotIn(List<String> values) {
+ addCriterion("logisticscompany not in", values, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyBetween(String value1, String value2) {
+ addCriterion("logisticscompany between", value1, value2, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotBetween(String value1, String value2) {
+ addCriterion("logisticscompany not between", value1, value2, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoIsNull() {
+ addCriterion("logisticsno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoIsNotNull() {
+ addCriterion("logisticsno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoEqualTo(String value) {
+ addCriterion("logisticsno =", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotEqualTo(String value) {
+ addCriterion("logisticsno <>", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoGreaterThan(String value) {
+ addCriterion("logisticsno >", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoGreaterThanOrEqualTo(String value) {
+ addCriterion("logisticsno >=", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoLessThan(String value) {
+ addCriterion("logisticsno <", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoLessThanOrEqualTo(String value) {
+ addCriterion("logisticsno <=", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoLike(String value) {
+ addCriterion("logisticsno like", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotLike(String value) {
+ addCriterion("logisticsno not like", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoIn(List<String> values) {
+ addCriterion("logisticsno in", values, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotIn(List<String> values) {
+ addCriterion("logisticsno not in", values, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoBetween(String value1, String value2) {
+ addCriterion("logisticsno between", value1, value2, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotBetween(String value1, String value2) {
+ addCriterion("logisticsno not between", value1, value2, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeIsNull() {
+ addCriterion("transportmode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeIsNotNull() {
+ addCriterion("transportmode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeEqualTo(String value) {
+ addCriterion("transportmode =", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotEqualTo(String value) {
+ addCriterion("transportmode <>", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeGreaterThan(String value) {
+ addCriterion("transportmode >", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeGreaterThanOrEqualTo(String value) {
+ addCriterion("transportmode >=", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeLessThan(String value) {
+ addCriterion("transportmode <", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeLessThanOrEqualTo(String value) {
+ addCriterion("transportmode <=", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeLike(String value) {
+ addCriterion("transportmode like", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotLike(String value) {
+ addCriterion("transportmode not like", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeIn(List<String> values) {
+ addCriterion("transportmode in", values, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotIn(List<String> values) {
+ addCriterion("transportmode not in", values, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeBetween(String value1, String value2) {
+ addCriterion("transportmode between", value1, value2, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotBetween(String value1, String value2) {
+ addCriterion("transportmode not between", value1, value2, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountIsNull() {
+ addCriterion("boxcount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountIsNotNull() {
+ addCriterion("boxcount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountEqualTo(Integer value) {
+ addCriterion("boxcount =", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountNotEqualTo(Integer value) {
+ addCriterion("boxcount <>", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountGreaterThan(Integer value) {
+ addCriterion("boxcount >", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountGreaterThanOrEqualTo(Integer value) {
+ addCriterion("boxcount >=", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountLessThan(Integer value) {
+ addCriterion("boxcount <", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountLessThanOrEqualTo(Integer value) {
+ addCriterion("boxcount <=", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountIn(List<Integer> values) {
+ addCriterion("boxcount in", values, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountNotIn(List<Integer> values) {
+ addCriterion("boxcount not in", values, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountBetween(Integer value1, Integer value2) {
+ addCriterion("boxcount between", value1, value2, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountNotBetween(Integer value1, Integer value2) {
+ addCriterion("boxcount not between", value1, value2, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightIsNull() {
+ addCriterion("boxweight is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightIsNotNull() {
+ addCriterion("boxweight is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightEqualTo(BigDecimal value) {
+ addCriterion("boxweight =", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightNotEqualTo(BigDecimal value) {
+ addCriterion("boxweight <>", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightGreaterThan(BigDecimal value) {
+ addCriterion("boxweight >", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("boxweight >=", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightLessThan(BigDecimal value) {
+ addCriterion("boxweight <", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("boxweight <=", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightIn(List<BigDecimal> values) {
+ addCriterion("boxweight in", values, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightNotIn(List<BigDecimal> values) {
+ addCriterion("boxweight not in", values, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("boxweight between", value1, value2, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("boxweight not between", value1, value2, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightIsNull() {
+ addCriterion("freight is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightIsNotNull() {
+ addCriterion("freight is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightEqualTo(BigDecimal value) {
+ addCriterion("freight =", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightNotEqualTo(BigDecimal value) {
+ addCriterion("freight <>", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightGreaterThan(BigDecimal value) {
+ addCriterion("freight >", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("freight >=", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightLessThan(BigDecimal value) {
+ addCriterion("freight <", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("freight <=", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightIn(List<BigDecimal> values) {
+ addCriterion("freight in", values, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightNotIn(List<BigDecimal> values) {
+ addCriterion("freight not in", values, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("freight between", value1, value2, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("freight not between", value1, value2, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentIsNull() {
+ addCriterion("commentcontent is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentIsNotNull() {
+ addCriterion("commentcontent is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentEqualTo(String value) {
+ addCriterion("commentcontent =", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotEqualTo(String value) {
+ addCriterion("commentcontent <>", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentGreaterThan(String value) {
+ addCriterion("commentcontent >", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentGreaterThanOrEqualTo(String value) {
+ addCriterion("commentcontent >=", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentLessThan(String value) {
+ addCriterion("commentcontent <", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentLessThanOrEqualTo(String value) {
+ addCriterion("commentcontent <=", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentLike(String value) {
+ addCriterion("commentcontent like", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotLike(String value) {
+ addCriterion("commentcontent not like", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentIn(List<String> values) {
+ addCriterion("commentcontent in", values, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotIn(List<String> values) {
+ addCriterion("commentcontent not in", values, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentBetween(String value1, String value2) {
+ addCriterion("commentcontent between", value1, value2, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotBetween(String value1, String value2) {
+ addCriterion("commentcontent not between", value1, value2, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelIsNull() {
+ addCriterion("commentlevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelIsNotNull() {
+ addCriterion("commentlevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelEqualTo(Integer value) {
+ addCriterion("commentlevel =", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelNotEqualTo(Integer value) {
+ addCriterion("commentlevel <>", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelGreaterThan(Integer value) {
+ addCriterion("commentlevel >", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("commentlevel >=", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelLessThan(Integer value) {
+ addCriterion("commentlevel <", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelLessThanOrEqualTo(Integer value) {
+ addCriterion("commentlevel <=", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelIn(List<Integer> values) {
+ addCriterion("commentlevel in", values, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelNotIn(List<Integer> values) {
+ addCriterion("commentlevel not in", values, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelBetween(Integer value1, Integer value2) {
+ addCriterion("commentlevel between", value1, value2, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("commentlevel not between", value1, value2, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridIsNull() {
+ addCriterion("receiverid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridIsNotNull() {
+ addCriterion("receiverid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridEqualTo(String value) {
+ addCriterion("receiverid =", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotEqualTo(String value) {
+ addCriterion("receiverid <>", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridGreaterThan(String value) {
+ addCriterion("receiverid >", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridGreaterThanOrEqualTo(String value) {
+ addCriterion("receiverid >=", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridLessThan(String value) {
+ addCriterion("receiverid <", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridLessThanOrEqualTo(String value) {
+ addCriterion("receiverid <=", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridLike(String value) {
+ addCriterion("receiverid like", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotLike(String value) {
+ addCriterion("receiverid not like", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridIn(List<String> values) {
+ addCriterion("receiverid in", values, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotIn(List<String> values) {
+ addCriterion("receiverid not in", values, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridBetween(String value1, String value2) {
+ addCriterion("receiverid between", value1, value2, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotBetween(String value1, String value2) {
+ addCriterion("receiverid not between", value1, value2, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIsNull() {
+ addCriterion("vipuserId is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIsNotNull() {
+ addCriterion("vipuserId is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridEqualTo(String value) {
+ addCriterion("vipuserId =", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotEqualTo(String value) {
+ addCriterion("vipuserId <>", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridGreaterThan(String value) {
+ addCriterion("vipuserId >", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridGreaterThanOrEqualTo(String value) {
+ addCriterion("vipuserId >=", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLessThan(String value) {
+ addCriterion("vipuserId <", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLessThanOrEqualTo(String value) {
+ addCriterion("vipuserId <=", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLike(String value) {
+ addCriterion("vipuserId like", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotLike(String value) {
+ addCriterion("vipuserId not like", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIn(List<String> values) {
+ addCriterion("vipuserId in", values, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotIn(List<String> values) {
+ addCriterion("vipuserId not in", values, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridBetween(String value1, String value2) {
+ addCriterion("vipuserId between", value1, value2, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotBetween(String value1, String value2) {
+ addCriterion("vipuserId not between", value1, value2, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIsNull() {
+ addCriterion("vipname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIsNotNull() {
+ addCriterion("vipname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameEqualTo(String value) {
+ addCriterion("vipname =", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotEqualTo(String value) {
+ addCriterion("vipname <>", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameGreaterThan(String value) {
+ addCriterion("vipname >", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameGreaterThanOrEqualTo(String value) {
+ addCriterion("vipname >=", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLessThan(String value) {
+ addCriterion("vipname <", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLessThanOrEqualTo(String value) {
+ addCriterion("vipname <=", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLike(String value) {
+ addCriterion("vipname like", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotLike(String value) {
+ addCriterion("vipname not like", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIn(List<String> values) {
+ addCriterion("vipname in", values, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotIn(List<String> values) {
+ addCriterion("vipname not in", values, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameBetween(String value1, String value2) {
+ addCriterion("vipname between", value1, value2, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotBetween(String value1, String value2) {
+ addCriterion("vipname not between", value1, value2, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIsNull() {
+ addCriterion("vipphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIsNotNull() {
+ addCriterion("vipphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneEqualTo(String value) {
+ addCriterion("vipphone =", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotEqualTo(String value) {
+ addCriterion("vipphone <>", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneGreaterThan(String value) {
+ addCriterion("vipphone >", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("vipphone >=", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLessThan(String value) {
+ addCriterion("vipphone <", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLessThanOrEqualTo(String value) {
+ addCriterion("vipphone <=", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLike(String value) {
+ addCriterion("vipphone like", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotLike(String value) {
+ addCriterion("vipphone not like", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIn(List<String> values) {
+ addCriterion("vipphone in", values, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotIn(List<String> values) {
+ addCriterion("vipphone not in", values, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneBetween(String value1, String value2) {
+ addCriterion("vipphone between", value1, value2, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotBetween(String value1, String value2) {
+ addCriterion("vipphone not between", value1, value2, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIsNull() {
+ addCriterion("vipdiamondtype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIsNotNull() {
+ addCriterion("vipdiamondtype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeEqualTo(Integer value) {
+ addCriterion("vipdiamondtype =", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotEqualTo(Integer value) {
+ addCriterion("vipdiamondtype <>", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeGreaterThan(Integer value) {
+ addCriterion("vipdiamondtype >", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("vipdiamondtype >=", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeLessThan(Integer value) {
+ addCriterion("vipdiamondtype <", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeLessThanOrEqualTo(Integer value) {
+ addCriterion("vipdiamondtype <=", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIn(List<Integer> values) {
+ addCriterion("vipdiamondtype in", values, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotIn(List<Integer> values) {
+ addCriterion("vipdiamondtype not in", values, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeBetween(Integer value1, Integer value2) {
+ addCriterion("vipdiamondtype between", value1, value2, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("vipdiamondtype not between", value1, value2, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIsNull() {
+ addCriterion("viptype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIsNotNull() {
+ addCriterion("viptype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeEqualTo(Integer value) {
+ addCriterion("viptype =", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotEqualTo(Integer value) {
+ addCriterion("viptype <>", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeGreaterThan(Integer value) {
+ addCriterion("viptype >", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("viptype >=", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeLessThan(Integer value) {
+ addCriterion("viptype <", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeLessThanOrEqualTo(Integer value) {
+ addCriterion("viptype <=", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIn(List<Integer> values) {
+ addCriterion("viptype in", values, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotIn(List<Integer> values) {
+ addCriterion("viptype not in", values, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeBetween(Integer value1, Integer value2) {
+ addCriterion("viptype between", value1, value2, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("viptype not between", value1, value2, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIsNull() {
+ addCriterion("vippicture is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIsNotNull() {
+ addCriterion("vippicture is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureEqualTo(String value) {
+ addCriterion("vippicture =", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotEqualTo(String value) {
+ addCriterion("vippicture <>", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureGreaterThan(String value) {
+ addCriterion("vippicture >", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureGreaterThanOrEqualTo(String value) {
+ addCriterion("vippicture >=", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLessThan(String value) {
+ addCriterion("vippicture <", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLessThanOrEqualTo(String value) {
+ addCriterion("vippicture <=", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLike(String value) {
+ addCriterion("vippicture like", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotLike(String value) {
+ addCriterion("vippicture not like", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIn(List<String> values) {
+ addCriterion("vippicture in", values, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotIn(List<String> values) {
+ addCriterion("vippicture not in", values, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureBetween(String value1, String value2) {
+ addCriterion("vippicture between", value1, value2, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotBetween(String value1, String value2) {
+ addCriterion("vippicture not between", value1, value2, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIsNull() {
+ addCriterion("vipcarddiscountrate is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIsNotNull() {
+ addCriterion("vipcarddiscountrate is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate =", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <>", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateGreaterThan(BigDecimal value) {
+ addCriterion("vipcarddiscountrate >", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate >=", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateLessThan(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <=", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIn(List<BigDecimal> values) {
+ addCriterion("vipcarddiscountrate in", values, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotIn(List<BigDecimal> values) {
+ addCriterion("vipcarddiscountrate not in", values, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("vipcarddiscountrate between", value1, value2, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("vipcarddiscountrate not between", value1, value2, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("type is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("type is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("type =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("type <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("type >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("type >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("type <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("type <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List<Integer> values) {
+ addCriterion("type in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List<Integer> values) {
+ addCriterion("type not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("type between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("type not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProduct.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProduct.java
new file mode 100644
index 0000000..91221d6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProduct.java
@@ -0,0 +1,246 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderActiveProduct {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String rejectreason;
+
+ private String rejectcomment;
+
+ private Date rejecttime;
+
+ private String payer;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discount;
+
+ private String payee;
+
+ private String orderid;
+
+ private String orderno;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getRejectreason() {
+ return rejectreason;
+ }
+
+ public void setRejectreason(String rejectreason) {
+ this.rejectreason = rejectreason == null ? null : rejectreason.trim();
+ }
+
+ public String getRejectcomment() {
+ return rejectcomment;
+ }
+
+ public void setRejectcomment(String rejectcomment) {
+ this.rejectcomment = rejectcomment == null ? null : rejectcomment.trim();
+ }
+
+ public Date getRejecttime() {
+ return rejecttime;
+ }
+
+ public void setRejecttime(Date rejecttime) {
+ this.rejecttime = rejecttime;
+ }
+
+ public String getPayer() {
+ return payer;
+ }
+
+ public void setPayer(String payer) {
+ this.payer = payer == null ? null : payer.trim();
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public String getPayee() {
+ return payee;
+ }
+
+ public void setPayee(String payee) {
+ this.payee = payee == null ? null : payee.trim();
+ }
+
+ public String getOrderid() {
+ return orderid;
+ }
+
+ public void setOrderid(String orderid) {
+ this.orderid = orderid == null ? null : orderid.trim();
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProductExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProductExample.java
new file mode 100644
index 0000000..f747af9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderActiveProductExample.java
@@ -0,0 +1,1884 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrderActiveProductExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrderActiveProductExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderActiveProductExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderActiveProductExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_active_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderActiveProductExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIsNull() {
+ addCriterion("productid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIsNotNull() {
+ addCriterion("productid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidEqualTo(String value) {
+ addCriterion("productid =", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotEqualTo(String value) {
+ addCriterion("productid <>", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidGreaterThan(String value) {
+ addCriterion("productid >", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidGreaterThanOrEqualTo(String value) {
+ addCriterion("productid >=", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLessThan(String value) {
+ addCriterion("productid <", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLessThanOrEqualTo(String value) {
+ addCriterion("productid <=", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLike(String value) {
+ addCriterion("productid like", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotLike(String value) {
+ addCriterion("productid not like", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIn(List<String> values) {
+ addCriterion("productid in", values, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotIn(List<String> values) {
+ addCriterion("productid not in", values, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidBetween(String value1, String value2) {
+ addCriterion("productid between", value1, value2, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotBetween(String value1, String value2) {
+ addCriterion("productid not between", value1, value2, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIsNull() {
+ addCriterion("productcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIsNotNull() {
+ addCriterion("productcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeEqualTo(String value) {
+ addCriterion("productcode =", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotEqualTo(String value) {
+ addCriterion("productcode <>", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeGreaterThan(String value) {
+ addCriterion("productcode >", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("productcode >=", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLessThan(String value) {
+ addCriterion("productcode <", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLessThanOrEqualTo(String value) {
+ addCriterion("productcode <=", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLike(String value) {
+ addCriterion("productcode like", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotLike(String value) {
+ addCriterion("productcode not like", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIn(List<String> values) {
+ addCriterion("productcode in", values, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotIn(List<String> values) {
+ addCriterion("productcode not in", values, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeBetween(String value1, String value2) {
+ addCriterion("productcode between", value1, value2, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotBetween(String value1, String value2) {
+ addCriterion("productcode not between", value1, value2, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIsNull() {
+ addCriterion("productname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIsNotNull() {
+ addCriterion("productname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameEqualTo(String value) {
+ addCriterion("productname =", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotEqualTo(String value) {
+ addCriterion("productname <>", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameGreaterThan(String value) {
+ addCriterion("productname >", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameGreaterThanOrEqualTo(String value) {
+ addCriterion("productname >=", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLessThan(String value) {
+ addCriterion("productname <", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLessThanOrEqualTo(String value) {
+ addCriterion("productname <=", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLike(String value) {
+ addCriterion("productname like", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotLike(String value) {
+ addCriterion("productname not like", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIn(List<String> values) {
+ addCriterion("productname in", values, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotIn(List<String> values) {
+ addCriterion("productname not in", values, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameBetween(String value1, String value2) {
+ addCriterion("productname between", value1, value2, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotBetween(String value1, String value2) {
+ addCriterion("productname not between", value1, value2, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIsNull() {
+ addCriterion("color is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIsNotNull() {
+ addCriterion("color is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorEqualTo(String value) {
+ addCriterion("color =", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotEqualTo(String value) {
+ addCriterion("color <>", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorGreaterThan(String value) {
+ addCriterion("color >", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorGreaterThanOrEqualTo(String value) {
+ addCriterion("color >=", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLessThan(String value) {
+ addCriterion("color <", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLessThanOrEqualTo(String value) {
+ addCriterion("color <=", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLike(String value) {
+ addCriterion("color like", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotLike(String value) {
+ addCriterion("color not like", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIn(List<String> values) {
+ addCriterion("color in", values, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotIn(List<String> values) {
+ addCriterion("color not in", values, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorBetween(String value1, String value2) {
+ addCriterion("color between", value1, value2, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotBetween(String value1, String value2) {
+ addCriterion("color not between", value1, value2, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIsNull() {
+ addCriterion("size is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIsNotNull() {
+ addCriterion("size is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeEqualTo(String value) {
+ addCriterion("size =", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotEqualTo(String value) {
+ addCriterion("size <>", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeGreaterThan(String value) {
+ addCriterion("size >", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeGreaterThanOrEqualTo(String value) {
+ addCriterion("size >=", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLessThan(String value) {
+ addCriterion("size <", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLessThanOrEqualTo(String value) {
+ addCriterion("size <=", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLike(String value) {
+ addCriterion("size like", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotLike(String value) {
+ addCriterion("size not like", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIn(List<String> values) {
+ addCriterion("size in", values, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotIn(List<String> values) {
+ addCriterion("size not in", values, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeBetween(String value1, String value2) {
+ addCriterion("size between", value1, value2, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotBetween(String value1, String value2) {
+ addCriterion("size not between", value1, value2, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNull() {
+ addCriterion("count is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNotNull() {
+ addCriterion("count is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountEqualTo(Integer value) {
+ addCriterion("count =", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotEqualTo(Integer value) {
+ addCriterion("count <>", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThan(Integer value) {
+ addCriterion("count >", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThanOrEqualTo(Integer value) {
+ addCriterion("count >=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThan(Integer value) {
+ addCriterion("count <", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThanOrEqualTo(Integer value) {
+ addCriterion("count <=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIn(List<Integer> values) {
+ addCriterion("count in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotIn(List<Integer> values) {
+ addCriterion("count not in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountBetween(Integer value1, Integer value2) {
+ addCriterion("count between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotBetween(Integer value1, Integer value2) {
+ addCriterion("count not between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIsNull() {
+ addCriterion("image is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIsNotNull() {
+ addCriterion("image is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageEqualTo(String value) {
+ addCriterion("image =", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotEqualTo(String value) {
+ addCriterion("image <>", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageGreaterThan(String value) {
+ addCriterion("image >", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageGreaterThanOrEqualTo(String value) {
+ addCriterion("image >=", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLessThan(String value) {
+ addCriterion("image <", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLessThanOrEqualTo(String value) {
+ addCriterion("image <=", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLike(String value) {
+ addCriterion("image like", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotLike(String value) {
+ addCriterion("image not like", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIn(List<String> values) {
+ addCriterion("image in", values, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotIn(List<String> values) {
+ addCriterion("image not in", values, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageBetween(String value1, String value2) {
+ addCriterion("image between", value1, value2, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotBetween(String value1, String value2) {
+ addCriterion("image not between", value1, value2, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNull() {
+ addCriterion("price is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNotNull() {
+ addCriterion("price is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceEqualTo(BigDecimal value) {
+ addCriterion("price =", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotEqualTo(BigDecimal value) {
+ addCriterion("price <>", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThan(BigDecimal value) {
+ addCriterion("price >", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("price >=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThan(BigDecimal value) {
+ addCriterion("price <", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("price <=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIn(List<BigDecimal> values) {
+ addCriterion("price in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotIn(List<BigDecimal> values) {
+ addCriterion("price not in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price not between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIsNull() {
+ addCriterion("saleprice is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIsNotNull() {
+ addCriterion("saleprice is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceEqualTo(BigDecimal value) {
+ addCriterion("saleprice =", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotEqualTo(BigDecimal value) {
+ addCriterion("saleprice <>", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceGreaterThan(BigDecimal value) {
+ addCriterion("saleprice >", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("saleprice >=", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceLessThan(BigDecimal value) {
+ addCriterion("saleprice <", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("saleprice <=", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIn(List<BigDecimal> values) {
+ addCriterion("saleprice in", values, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotIn(List<BigDecimal> values) {
+ addCriterion("saleprice not in", values, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("saleprice between", value1, value2, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("saleprice not between", value1, value2, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonIsNull() {
+ addCriterion("rejectreason is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonIsNotNull() {
+ addCriterion("rejectreason is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonEqualTo(String value) {
+ addCriterion("rejectreason =", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotEqualTo(String value) {
+ addCriterion("rejectreason <>", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonGreaterThan(String value) {
+ addCriterion("rejectreason >", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonGreaterThanOrEqualTo(String value) {
+ addCriterion("rejectreason >=", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonLessThan(String value) {
+ addCriterion("rejectreason <", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonLessThanOrEqualTo(String value) {
+ addCriterion("rejectreason <=", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonLike(String value) {
+ addCriterion("rejectreason like", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotLike(String value) {
+ addCriterion("rejectreason not like", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonIn(List<String> values) {
+ addCriterion("rejectreason in", values, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotIn(List<String> values) {
+ addCriterion("rejectreason not in", values, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonBetween(String value1, String value2) {
+ addCriterion("rejectreason between", value1, value2, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotBetween(String value1, String value2) {
+ addCriterion("rejectreason not between", value1, value2, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentIsNull() {
+ addCriterion("rejectcomment is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentIsNotNull() {
+ addCriterion("rejectcomment is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentEqualTo(String value) {
+ addCriterion("rejectcomment =", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotEqualTo(String value) {
+ addCriterion("rejectcomment <>", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentGreaterThan(String value) {
+ addCriterion("rejectcomment >", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentGreaterThanOrEqualTo(String value) {
+ addCriterion("rejectcomment >=", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentLessThan(String value) {
+ addCriterion("rejectcomment <", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentLessThanOrEqualTo(String value) {
+ addCriterion("rejectcomment <=", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentLike(String value) {
+ addCriterion("rejectcomment like", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotLike(String value) {
+ addCriterion("rejectcomment not like", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentIn(List<String> values) {
+ addCriterion("rejectcomment in", values, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotIn(List<String> values) {
+ addCriterion("rejectcomment not in", values, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentBetween(String value1, String value2) {
+ addCriterion("rejectcomment between", value1, value2, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotBetween(String value1, String value2) {
+ addCriterion("rejectcomment not between", value1, value2, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeIsNull() {
+ addCriterion("rejecttime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeIsNotNull() {
+ addCriterion("rejecttime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeEqualTo(Date value) {
+ addCriterion("rejecttime =", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeNotEqualTo(Date value) {
+ addCriterion("rejecttime <>", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeGreaterThan(Date value) {
+ addCriterion("rejecttime >", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("rejecttime >=", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeLessThan(Date value) {
+ addCriterion("rejecttime <", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeLessThanOrEqualTo(Date value) {
+ addCriterion("rejecttime <=", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeIn(List<Date> values) {
+ addCriterion("rejecttime in", values, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeNotIn(List<Date> values) {
+ addCriterion("rejecttime not in", values, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeBetween(Date value1, Date value2) {
+ addCriterion("rejecttime between", value1, value2, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeNotBetween(Date value1, Date value2) {
+ addCriterion("rejecttime not between", value1, value2, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerIsNull() {
+ addCriterion("payer is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerIsNotNull() {
+ addCriterion("payer is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerEqualTo(String value) {
+ addCriterion("payer =", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotEqualTo(String value) {
+ addCriterion("payer <>", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerGreaterThan(String value) {
+ addCriterion("payer >", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerGreaterThanOrEqualTo(String value) {
+ addCriterion("payer >=", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerLessThan(String value) {
+ addCriterion("payer <", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerLessThanOrEqualTo(String value) {
+ addCriterion("payer <=", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerLike(String value) {
+ addCriterion("payer like", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotLike(String value) {
+ addCriterion("payer not like", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerIn(List<String> values) {
+ addCriterion("payer in", values, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotIn(List<String> values) {
+ addCriterion("payer not in", values, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerBetween(String value1, String value2) {
+ addCriterion("payer between", value1, value2, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotBetween(String value1, String value2) {
+ addCriterion("payer not between", value1, value2, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNull() {
+ addCriterion("payedmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNotNull() {
+ addCriterion("payedmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyEqualTo(BigDecimal value) {
+ addCriterion("payedmoney =", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <>", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThan(BigDecimal value) {
+ addCriterion("payedmoney >", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney >=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThan(BigDecimal value) {
+ addCriterion("payedmoney <", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIn(List<BigDecimal> values) {
+ addCriterion("payedmoney in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("payedmoney not in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney not between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNull() {
+ addCriterion("discount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNotNull() {
+ addCriterion("discount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountEqualTo(BigDecimal value) {
+ addCriterion("discount =", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotEqualTo(BigDecimal value) {
+ addCriterion("discount <>", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThan(BigDecimal value) {
+ addCriterion("discount >", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount >=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThan(BigDecimal value) {
+ addCriterion("discount <", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount <=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIn(List<BigDecimal> values) {
+ addCriterion("discount in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotIn(List<BigDecimal> values) {
+ addCriterion("discount not in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount not between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeIsNull() {
+ addCriterion("payee is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeIsNotNull() {
+ addCriterion("payee is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeEqualTo(String value) {
+ addCriterion("payee =", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotEqualTo(String value) {
+ addCriterion("payee <>", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeGreaterThan(String value) {
+ addCriterion("payee >", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeGreaterThanOrEqualTo(String value) {
+ addCriterion("payee >=", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeLessThan(String value) {
+ addCriterion("payee <", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeLessThanOrEqualTo(String value) {
+ addCriterion("payee <=", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeLike(String value) {
+ addCriterion("payee like", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotLike(String value) {
+ addCriterion("payee not like", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeIn(List<String> values) {
+ addCriterion("payee in", values, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotIn(List<String> values) {
+ addCriterion("payee not in", values, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeBetween(String value1, String value2) {
+ addCriterion("payee between", value1, value2, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotBetween(String value1, String value2) {
+ addCriterion("payee not between", value1, value2, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidIsNull() {
+ addCriterion("orderid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidIsNotNull() {
+ addCriterion("orderid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidEqualTo(String value) {
+ addCriterion("orderid =", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotEqualTo(String value) {
+ addCriterion("orderid <>", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidGreaterThan(String value) {
+ addCriterion("orderid >", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidGreaterThanOrEqualTo(String value) {
+ addCriterion("orderid >=", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidLessThan(String value) {
+ addCriterion("orderid <", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidLessThanOrEqualTo(String value) {
+ addCriterion("orderid <=", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidLike(String value) {
+ addCriterion("orderid like", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotLike(String value) {
+ addCriterion("orderid not like", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidIn(List<String> values) {
+ addCriterion("orderid in", values, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotIn(List<String> values) {
+ addCriterion("orderid not in", values, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidBetween(String value1, String value2) {
+ addCriterion("orderid between", value1, value2, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotBetween(String value1, String value2) {
+ addCriterion("orderid not between", value1, value2, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNull() {
+ addCriterion("orderno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNotNull() {
+ addCriterion("orderno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoEqualTo(String value) {
+ addCriterion("orderno =", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotEqualTo(String value) {
+ addCriterion("orderno <>", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThan(String value) {
+ addCriterion("orderno >", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThanOrEqualTo(String value) {
+ addCriterion("orderno >=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThan(String value) {
+ addCriterion("orderno <", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThanOrEqualTo(String value) {
+ addCriterion("orderno <=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLike(String value) {
+ addCriterion("orderno like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotLike(String value) {
+ addCriterion("orderno not like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIn(List<String> values) {
+ addCriterion("orderno in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotIn(List<String> values) {
+ addCriterion("orderno not in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoBetween(String value1, String value2) {
+ addCriterion("orderno between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotBetween(String value1, String value2) {
+ addCriterion("orderno not between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistory.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistory.java
new file mode 100644
index 0000000..efea826
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistory.java
@@ -0,0 +1,406 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderHistory {
+ private String id;
+
+ private String no;
+
+ private BigDecimal totalmoney;
+
+ private BigDecimal payedmoney;
+
+ private Integer paymentmethod;
+
+ private BigDecimal discountmoney;
+
+ private Integer status;
+
+ private Date ordertime;
+
+ private Date paytime;
+
+ private Date sendtime;
+
+ private Date receivetime;
+
+ private Date commenttime;
+
+ private Date completetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String sendername;
+
+ private String sendercode;
+
+ private Integer sendercontactno;
+
+ private String targetaddress;
+
+ private String deliveryaddress;
+
+ private String optimalcoupon;
+
+ private String logisticscompany;
+
+ private String logisticsno;
+
+ private String transportmode;
+
+ private Integer boxcount;
+
+ private BigDecimal boxweight;
+
+ private BigDecimal freight;
+
+ private String commentcontent;
+
+ private Integer commentlevel;
+
+ private String receiverid;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ private Integer type;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public BigDecimal getTotalmoney() {
+ return totalmoney;
+ }
+
+ public void setTotalmoney(BigDecimal totalmoney) {
+ this.totalmoney = totalmoney;
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public Integer getPaymentmethod() {
+ return paymentmethod;
+ }
+
+ public void setPaymentmethod(Integer paymentmethod) {
+ this.paymentmethod = paymentmethod;
+ }
+
+ public BigDecimal getDiscountmoney() {
+ return discountmoney;
+ }
+
+ public void setDiscountmoney(BigDecimal discountmoney) {
+ this.discountmoney = discountmoney;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Date getOrdertime() {
+ return ordertime;
+ }
+
+ public void setOrdertime(Date ordertime) {
+ this.ordertime = ordertime;
+ }
+
+ public Date getPaytime() {
+ return paytime;
+ }
+
+ public void setPaytime(Date paytime) {
+ this.paytime = paytime;
+ }
+
+ public Date getSendtime() {
+ return sendtime;
+ }
+
+ public void setSendtime(Date sendtime) {
+ this.sendtime = sendtime;
+ }
+
+ public Date getReceivetime() {
+ return receivetime;
+ }
+
+ public void setReceivetime(Date receivetime) {
+ this.receivetime = receivetime;
+ }
+
+ public Date getCommenttime() {
+ return commenttime;
+ }
+
+ public void setCommenttime(Date commenttime) {
+ this.commenttime = commenttime;
+ }
+
+ public Date getCompletetime() {
+ return completetime;
+ }
+
+ public void setCompletetime(Date completetime) {
+ this.completetime = completetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getSendername() {
+ return sendername;
+ }
+
+ public void setSendername(String sendername) {
+ this.sendername = sendername == null ? null : sendername.trim();
+ }
+
+ public String getSendercode() {
+ return sendercode;
+ }
+
+ public void setSendercode(String sendercode) {
+ this.sendercode = sendercode == null ? null : sendercode.trim();
+ }
+
+ public Integer getSendercontactno() {
+ return sendercontactno;
+ }
+
+ public void setSendercontactno(Integer sendercontactno) {
+ this.sendercontactno = sendercontactno;
+ }
+
+ public String getTargetaddress() {
+ return targetaddress;
+ }
+
+ public void setTargetaddress(String targetaddress) {
+ this.targetaddress = targetaddress == null ? null : targetaddress.trim();
+ }
+
+ public String getDeliveryaddress() {
+ return deliveryaddress;
+ }
+
+ public void setDeliveryaddress(String deliveryaddress) {
+ this.deliveryaddress = deliveryaddress == null ? null : deliveryaddress.trim();
+ }
+
+ public String getOptimalcoupon() {
+ return optimalcoupon;
+ }
+
+ public void setOptimalcoupon(String optimalcoupon) {
+ this.optimalcoupon = optimalcoupon == null ? null : optimalcoupon.trim();
+ }
+
+ public String getLogisticscompany() {
+ return logisticscompany;
+ }
+
+ public void setLogisticscompany(String logisticscompany) {
+ this.logisticscompany = logisticscompany == null ? null : logisticscompany.trim();
+ }
+
+ public String getLogisticsno() {
+ return logisticsno;
+ }
+
+ public void setLogisticsno(String logisticsno) {
+ this.logisticsno = logisticsno == null ? null : logisticsno.trim();
+ }
+
+ public String getTransportmode() {
+ return transportmode;
+ }
+
+ public void setTransportmode(String transportmode) {
+ this.transportmode = transportmode == null ? null : transportmode.trim();
+ }
+
+ public Integer getBoxcount() {
+ return boxcount;
+ }
+
+ public void setBoxcount(Integer boxcount) {
+ this.boxcount = boxcount;
+ }
+
+ public BigDecimal getBoxweight() {
+ return boxweight;
+ }
+
+ public void setBoxweight(BigDecimal boxweight) {
+ this.boxweight = boxweight;
+ }
+
+ public BigDecimal getFreight() {
+ return freight;
+ }
+
+ public void setFreight(BigDecimal freight) {
+ this.freight = freight;
+ }
+
+ public String getCommentcontent() {
+ return commentcontent;
+ }
+
+ public void setCommentcontent(String commentcontent) {
+ this.commentcontent = commentcontent == null ? null : commentcontent.trim();
+ }
+
+ public Integer getCommentlevel() {
+ return commentlevel;
+ }
+
+ public void setCommentlevel(Integer commentlevel) {
+ this.commentlevel = commentlevel;
+ }
+
+ public String getReceiverid() {
+ return receiverid;
+ }
+
+ public void setReceiverid(String receiverid) {
+ this.receiverid = receiverid == null ? null : receiverid.trim();
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryExample.java
new file mode 100644
index 0000000..60bb0bf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryExample.java
@@ -0,0 +1,2874 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrderHistoryExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrderHistoryExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderHistoryExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderHistoryExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderHistoryExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoIsNull() {
+ addCriterion("no is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoIsNotNull() {
+ addCriterion("no is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoEqualTo(String value) {
+ addCriterion("no =", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotEqualTo(String value) {
+ addCriterion("no <>", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoGreaterThan(String value) {
+ addCriterion("no >", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoGreaterThanOrEqualTo(String value) {
+ addCriterion("no >=", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoLessThan(String value) {
+ addCriterion("no <", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoLessThanOrEqualTo(String value) {
+ addCriterion("no <=", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoLike(String value) {
+ addCriterion("no like", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotLike(String value) {
+ addCriterion("no not like", value, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoIn(List<String> values) {
+ addCriterion("no in", values, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotIn(List<String> values) {
+ addCriterion("no not in", values, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoBetween(String value1, String value2) {
+ addCriterion("no between", value1, value2, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andNoNotBetween(String value1, String value2) {
+ addCriterion("no not between", value1, value2, "no");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyIsNull() {
+ addCriterion("totalmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyIsNotNull() {
+ addCriterion("totalmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyEqualTo(BigDecimal value) {
+ addCriterion("totalmoney =", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("totalmoney <>", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyGreaterThan(BigDecimal value) {
+ addCriterion("totalmoney >", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("totalmoney >=", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyLessThan(BigDecimal value) {
+ addCriterion("totalmoney <", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("totalmoney <=", value, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyIn(List<BigDecimal> values) {
+ addCriterion("totalmoney in", values, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("totalmoney not in", values, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("totalmoney between", value1, value2, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andTotalmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("totalmoney not between", value1, value2, "totalmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNull() {
+ addCriterion("payedmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNotNull() {
+ addCriterion("payedmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyEqualTo(BigDecimal value) {
+ addCriterion("payedmoney =", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <>", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThan(BigDecimal value) {
+ addCriterion("payedmoney >", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney >=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThan(BigDecimal value) {
+ addCriterion("payedmoney <", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIn(List<BigDecimal> values) {
+ addCriterion("payedmoney in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("payedmoney not in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney not between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodIsNull() {
+ addCriterion("paymentmethod is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodIsNotNull() {
+ addCriterion("paymentmethod is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodEqualTo(Integer value) {
+ addCriterion("paymentmethod =", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodNotEqualTo(Integer value) {
+ addCriterion("paymentmethod <>", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodGreaterThan(Integer value) {
+ addCriterion("paymentmethod >", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodGreaterThanOrEqualTo(Integer value) {
+ addCriterion("paymentmethod >=", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodLessThan(Integer value) {
+ addCriterion("paymentmethod <", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodLessThanOrEqualTo(Integer value) {
+ addCriterion("paymentmethod <=", value, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodIn(List<Integer> values) {
+ addCriterion("paymentmethod in", values, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodNotIn(List<Integer> values) {
+ addCriterion("paymentmethod not in", values, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodBetween(Integer value1, Integer value2) {
+ addCriterion("paymentmethod between", value1, value2, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaymentmethodNotBetween(Integer value1, Integer value2) {
+ addCriterion("paymentmethod not between", value1, value2, "paymentmethod");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyIsNull() {
+ addCriterion("discountmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyIsNotNull() {
+ addCriterion("discountmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyEqualTo(BigDecimal value) {
+ addCriterion("discountmoney =", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("discountmoney <>", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyGreaterThan(BigDecimal value) {
+ addCriterion("discountmoney >", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountmoney >=", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyLessThan(BigDecimal value) {
+ addCriterion("discountmoney <", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountmoney <=", value, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyIn(List<BigDecimal> values) {
+ addCriterion("discountmoney in", values, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("discountmoney not in", values, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountmoney between", value1, value2, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountmoney not between", value1, value2, "discountmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeIsNull() {
+ addCriterion("ordertime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeIsNotNull() {
+ addCriterion("ordertime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeEqualTo(Date value) {
+ addCriterion("ordertime =", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeNotEqualTo(Date value) {
+ addCriterion("ordertime <>", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeGreaterThan(Date value) {
+ addCriterion("ordertime >", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("ordertime >=", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeLessThan(Date value) {
+ addCriterion("ordertime <", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeLessThanOrEqualTo(Date value) {
+ addCriterion("ordertime <=", value, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeIn(List<Date> values) {
+ addCriterion("ordertime in", values, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeNotIn(List<Date> values) {
+ addCriterion("ordertime not in", values, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeBetween(Date value1, Date value2) {
+ addCriterion("ordertime between", value1, value2, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdertimeNotBetween(Date value1, Date value2) {
+ addCriterion("ordertime not between", value1, value2, "ordertime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeIsNull() {
+ addCriterion("paytime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeIsNotNull() {
+ addCriterion("paytime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeEqualTo(Date value) {
+ addCriterion("paytime =", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeNotEqualTo(Date value) {
+ addCriterion("paytime <>", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeGreaterThan(Date value) {
+ addCriterion("paytime >", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("paytime >=", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeLessThan(Date value) {
+ addCriterion("paytime <", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeLessThanOrEqualTo(Date value) {
+ addCriterion("paytime <=", value, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeIn(List<Date> values) {
+ addCriterion("paytime in", values, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeNotIn(List<Date> values) {
+ addCriterion("paytime not in", values, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeBetween(Date value1, Date value2) {
+ addCriterion("paytime between", value1, value2, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaytimeNotBetween(Date value1, Date value2) {
+ addCriterion("paytime not between", value1, value2, "paytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeIsNull() {
+ addCriterion("sendtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeIsNotNull() {
+ addCriterion("sendtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeEqualTo(Date value) {
+ addCriterion("sendtime =", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeNotEqualTo(Date value) {
+ addCriterion("sendtime <>", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeGreaterThan(Date value) {
+ addCriterion("sendtime >", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("sendtime >=", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeLessThan(Date value) {
+ addCriterion("sendtime <", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeLessThanOrEqualTo(Date value) {
+ addCriterion("sendtime <=", value, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeIn(List<Date> values) {
+ addCriterion("sendtime in", values, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeNotIn(List<Date> values) {
+ addCriterion("sendtime not in", values, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeBetween(Date value1, Date value2) {
+ addCriterion("sendtime between", value1, value2, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendtimeNotBetween(Date value1, Date value2) {
+ addCriterion("sendtime not between", value1, value2, "sendtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeIsNull() {
+ addCriterion("receivetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeIsNotNull() {
+ addCriterion("receivetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeEqualTo(Date value) {
+ addCriterion("receivetime =", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeNotEqualTo(Date value) {
+ addCriterion("receivetime <>", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeGreaterThan(Date value) {
+ addCriterion("receivetime >", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("receivetime >=", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeLessThan(Date value) {
+ addCriterion("receivetime <", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeLessThanOrEqualTo(Date value) {
+ addCriterion("receivetime <=", value, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeIn(List<Date> values) {
+ addCriterion("receivetime in", values, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeNotIn(List<Date> values) {
+ addCriterion("receivetime not in", values, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeBetween(Date value1, Date value2) {
+ addCriterion("receivetime between", value1, value2, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceivetimeNotBetween(Date value1, Date value2) {
+ addCriterion("receivetime not between", value1, value2, "receivetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeIsNull() {
+ addCriterion("commenttime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeIsNotNull() {
+ addCriterion("commenttime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeEqualTo(Date value) {
+ addCriterion("commenttime =", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeNotEqualTo(Date value) {
+ addCriterion("commenttime <>", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeGreaterThan(Date value) {
+ addCriterion("commenttime >", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("commenttime >=", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeLessThan(Date value) {
+ addCriterion("commenttime <", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeLessThanOrEqualTo(Date value) {
+ addCriterion("commenttime <=", value, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeIn(List<Date> values) {
+ addCriterion("commenttime in", values, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeNotIn(List<Date> values) {
+ addCriterion("commenttime not in", values, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeBetween(Date value1, Date value2) {
+ addCriterion("commenttime between", value1, value2, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommenttimeNotBetween(Date value1, Date value2) {
+ addCriterion("commenttime not between", value1, value2, "commenttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeIsNull() {
+ addCriterion("completetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeIsNotNull() {
+ addCriterion("completetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeEqualTo(Date value) {
+ addCriterion("completetime =", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeNotEqualTo(Date value) {
+ addCriterion("completetime <>", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeGreaterThan(Date value) {
+ addCriterion("completetime >", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("completetime >=", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeLessThan(Date value) {
+ addCriterion("completetime <", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeLessThanOrEqualTo(Date value) {
+ addCriterion("completetime <=", value, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeIn(List<Date> values) {
+ addCriterion("completetime in", values, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeNotIn(List<Date> values) {
+ addCriterion("completetime not in", values, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeBetween(Date value1, Date value2) {
+ addCriterion("completetime between", value1, value2, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCompletetimeNotBetween(Date value1, Date value2) {
+ addCriterion("completetime not between", value1, value2, "completetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameIsNull() {
+ addCriterion("sendername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameIsNotNull() {
+ addCriterion("sendername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameEqualTo(String value) {
+ addCriterion("sendername =", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotEqualTo(String value) {
+ addCriterion("sendername <>", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameGreaterThan(String value) {
+ addCriterion("sendername >", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameGreaterThanOrEqualTo(String value) {
+ addCriterion("sendername >=", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameLessThan(String value) {
+ addCriterion("sendername <", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameLessThanOrEqualTo(String value) {
+ addCriterion("sendername <=", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameLike(String value) {
+ addCriterion("sendername like", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotLike(String value) {
+ addCriterion("sendername not like", value, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameIn(List<String> values) {
+ addCriterion("sendername in", values, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotIn(List<String> values) {
+ addCriterion("sendername not in", values, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameBetween(String value1, String value2) {
+ addCriterion("sendername between", value1, value2, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendernameNotBetween(String value1, String value2) {
+ addCriterion("sendername not between", value1, value2, "sendername");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeIsNull() {
+ addCriterion("sendercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeIsNotNull() {
+ addCriterion("sendercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeEqualTo(String value) {
+ addCriterion("sendercode =", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotEqualTo(String value) {
+ addCriterion("sendercode <>", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeGreaterThan(String value) {
+ addCriterion("sendercode >", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("sendercode >=", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeLessThan(String value) {
+ addCriterion("sendercode <", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeLessThanOrEqualTo(String value) {
+ addCriterion("sendercode <=", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeLike(String value) {
+ addCriterion("sendercode like", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotLike(String value) {
+ addCriterion("sendercode not like", value, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeIn(List<String> values) {
+ addCriterion("sendercode in", values, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotIn(List<String> values) {
+ addCriterion("sendercode not in", values, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeBetween(String value1, String value2) {
+ addCriterion("sendercode between", value1, value2, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercodeNotBetween(String value1, String value2) {
+ addCriterion("sendercode not between", value1, value2, "sendercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoIsNull() {
+ addCriterion("sendercontactno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoIsNotNull() {
+ addCriterion("sendercontactno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoEqualTo(Integer value) {
+ addCriterion("sendercontactno =", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoNotEqualTo(Integer value) {
+ addCriterion("sendercontactno <>", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoGreaterThan(Integer value) {
+ addCriterion("sendercontactno >", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoGreaterThanOrEqualTo(Integer value) {
+ addCriterion("sendercontactno >=", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoLessThan(Integer value) {
+ addCriterion("sendercontactno <", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoLessThanOrEqualTo(Integer value) {
+ addCriterion("sendercontactno <=", value, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoIn(List<Integer> values) {
+ addCriterion("sendercontactno in", values, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoNotIn(List<Integer> values) {
+ addCriterion("sendercontactno not in", values, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoBetween(Integer value1, Integer value2) {
+ addCriterion("sendercontactno between", value1, value2, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSendercontactnoNotBetween(Integer value1, Integer value2) {
+ addCriterion("sendercontactno not between", value1, value2, "sendercontactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressIsNull() {
+ addCriterion("targetaddress is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressIsNotNull() {
+ addCriterion("targetaddress is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressEqualTo(String value) {
+ addCriterion("targetaddress =", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotEqualTo(String value) {
+ addCriterion("targetaddress <>", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressGreaterThan(String value) {
+ addCriterion("targetaddress >", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressGreaterThanOrEqualTo(String value) {
+ addCriterion("targetaddress >=", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressLessThan(String value) {
+ addCriterion("targetaddress <", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressLessThanOrEqualTo(String value) {
+ addCriterion("targetaddress <=", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressLike(String value) {
+ addCriterion("targetaddress like", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotLike(String value) {
+ addCriterion("targetaddress not like", value, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressIn(List<String> values) {
+ addCriterion("targetaddress in", values, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotIn(List<String> values) {
+ addCriterion("targetaddress not in", values, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressBetween(String value1, String value2) {
+ addCriterion("targetaddress between", value1, value2, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andTargetaddressNotBetween(String value1, String value2) {
+ addCriterion("targetaddress not between", value1, value2, "targetaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressIsNull() {
+ addCriterion("deliveryaddress is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressIsNotNull() {
+ addCriterion("deliveryaddress is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressEqualTo(String value) {
+ addCriterion("deliveryaddress =", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotEqualTo(String value) {
+ addCriterion("deliveryaddress <>", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressGreaterThan(String value) {
+ addCriterion("deliveryaddress >", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressGreaterThanOrEqualTo(String value) {
+ addCriterion("deliveryaddress >=", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressLessThan(String value) {
+ addCriterion("deliveryaddress <", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressLessThanOrEqualTo(String value) {
+ addCriterion("deliveryaddress <=", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressLike(String value) {
+ addCriterion("deliveryaddress like", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotLike(String value) {
+ addCriterion("deliveryaddress not like", value, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressIn(List<String> values) {
+ addCriterion("deliveryaddress in", values, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotIn(List<String> values) {
+ addCriterion("deliveryaddress not in", values, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressBetween(String value1, String value2) {
+ addCriterion("deliveryaddress between", value1, value2, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeliveryaddressNotBetween(String value1, String value2) {
+ addCriterion("deliveryaddress not between", value1, value2, "deliveryaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponIsNull() {
+ addCriterion("optimalcoupon is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponIsNotNull() {
+ addCriterion("optimalcoupon is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponEqualTo(String value) {
+ addCriterion("optimalcoupon =", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotEqualTo(String value) {
+ addCriterion("optimalcoupon <>", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponGreaterThan(String value) {
+ addCriterion("optimalcoupon >", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponGreaterThanOrEqualTo(String value) {
+ addCriterion("optimalcoupon >=", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponLessThan(String value) {
+ addCriterion("optimalcoupon <", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponLessThanOrEqualTo(String value) {
+ addCriterion("optimalcoupon <=", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponLike(String value) {
+ addCriterion("optimalcoupon like", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotLike(String value) {
+ addCriterion("optimalcoupon not like", value, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponIn(List<String> values) {
+ addCriterion("optimalcoupon in", values, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotIn(List<String> values) {
+ addCriterion("optimalcoupon not in", values, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponBetween(String value1, String value2) {
+ addCriterion("optimalcoupon between", value1, value2, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andOptimalcouponNotBetween(String value1, String value2) {
+ addCriterion("optimalcoupon not between", value1, value2, "optimalcoupon");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyIsNull() {
+ addCriterion("logisticscompany is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyIsNotNull() {
+ addCriterion("logisticscompany is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyEqualTo(String value) {
+ addCriterion("logisticscompany =", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotEqualTo(String value) {
+ addCriterion("logisticscompany <>", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyGreaterThan(String value) {
+ addCriterion("logisticscompany >", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyGreaterThanOrEqualTo(String value) {
+ addCriterion("logisticscompany >=", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyLessThan(String value) {
+ addCriterion("logisticscompany <", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyLessThanOrEqualTo(String value) {
+ addCriterion("logisticscompany <=", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyLike(String value) {
+ addCriterion("logisticscompany like", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotLike(String value) {
+ addCriterion("logisticscompany not like", value, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyIn(List<String> values) {
+ addCriterion("logisticscompany in", values, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotIn(List<String> values) {
+ addCriterion("logisticscompany not in", values, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyBetween(String value1, String value2) {
+ addCriterion("logisticscompany between", value1, value2, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticscompanyNotBetween(String value1, String value2) {
+ addCriterion("logisticscompany not between", value1, value2, "logisticscompany");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoIsNull() {
+ addCriterion("logisticsno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoIsNotNull() {
+ addCriterion("logisticsno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoEqualTo(String value) {
+ addCriterion("logisticsno =", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotEqualTo(String value) {
+ addCriterion("logisticsno <>", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoGreaterThan(String value) {
+ addCriterion("logisticsno >", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoGreaterThanOrEqualTo(String value) {
+ addCriterion("logisticsno >=", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoLessThan(String value) {
+ addCriterion("logisticsno <", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoLessThanOrEqualTo(String value) {
+ addCriterion("logisticsno <=", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoLike(String value) {
+ addCriterion("logisticsno like", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotLike(String value) {
+ addCriterion("logisticsno not like", value, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoIn(List<String> values) {
+ addCriterion("logisticsno in", values, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotIn(List<String> values) {
+ addCriterion("logisticsno not in", values, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoBetween(String value1, String value2) {
+ addCriterion("logisticsno between", value1, value2, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andLogisticsnoNotBetween(String value1, String value2) {
+ addCriterion("logisticsno not between", value1, value2, "logisticsno");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeIsNull() {
+ addCriterion("transportmode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeIsNotNull() {
+ addCriterion("transportmode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeEqualTo(String value) {
+ addCriterion("transportmode =", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotEqualTo(String value) {
+ addCriterion("transportmode <>", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeGreaterThan(String value) {
+ addCriterion("transportmode >", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeGreaterThanOrEqualTo(String value) {
+ addCriterion("transportmode >=", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeLessThan(String value) {
+ addCriterion("transportmode <", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeLessThanOrEqualTo(String value) {
+ addCriterion("transportmode <=", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeLike(String value) {
+ addCriterion("transportmode like", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotLike(String value) {
+ addCriterion("transportmode not like", value, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeIn(List<String> values) {
+ addCriterion("transportmode in", values, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotIn(List<String> values) {
+ addCriterion("transportmode not in", values, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeBetween(String value1, String value2) {
+ addCriterion("transportmode between", value1, value2, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andTransportmodeNotBetween(String value1, String value2) {
+ addCriterion("transportmode not between", value1, value2, "transportmode");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountIsNull() {
+ addCriterion("boxcount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountIsNotNull() {
+ addCriterion("boxcount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountEqualTo(Integer value) {
+ addCriterion("boxcount =", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountNotEqualTo(Integer value) {
+ addCriterion("boxcount <>", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountGreaterThan(Integer value) {
+ addCriterion("boxcount >", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountGreaterThanOrEqualTo(Integer value) {
+ addCriterion("boxcount >=", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountLessThan(Integer value) {
+ addCriterion("boxcount <", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountLessThanOrEqualTo(Integer value) {
+ addCriterion("boxcount <=", value, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountIn(List<Integer> values) {
+ addCriterion("boxcount in", values, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountNotIn(List<Integer> values) {
+ addCriterion("boxcount not in", values, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountBetween(Integer value1, Integer value2) {
+ addCriterion("boxcount between", value1, value2, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxcountNotBetween(Integer value1, Integer value2) {
+ addCriterion("boxcount not between", value1, value2, "boxcount");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightIsNull() {
+ addCriterion("boxweight is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightIsNotNull() {
+ addCriterion("boxweight is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightEqualTo(BigDecimal value) {
+ addCriterion("boxweight =", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightNotEqualTo(BigDecimal value) {
+ addCriterion("boxweight <>", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightGreaterThan(BigDecimal value) {
+ addCriterion("boxweight >", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("boxweight >=", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightLessThan(BigDecimal value) {
+ addCriterion("boxweight <", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("boxweight <=", value, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightIn(List<BigDecimal> values) {
+ addCriterion("boxweight in", values, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightNotIn(List<BigDecimal> values) {
+ addCriterion("boxweight not in", values, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("boxweight between", value1, value2, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andBoxweightNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("boxweight not between", value1, value2, "boxweight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightIsNull() {
+ addCriterion("freight is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightIsNotNull() {
+ addCriterion("freight is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightEqualTo(BigDecimal value) {
+ addCriterion("freight =", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightNotEqualTo(BigDecimal value) {
+ addCriterion("freight <>", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightGreaterThan(BigDecimal value) {
+ addCriterion("freight >", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("freight >=", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightLessThan(BigDecimal value) {
+ addCriterion("freight <", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("freight <=", value, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightIn(List<BigDecimal> values) {
+ addCriterion("freight in", values, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightNotIn(List<BigDecimal> values) {
+ addCriterion("freight not in", values, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("freight between", value1, value2, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andFreightNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("freight not between", value1, value2, "freight");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentIsNull() {
+ addCriterion("commentcontent is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentIsNotNull() {
+ addCriterion("commentcontent is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentEqualTo(String value) {
+ addCriterion("commentcontent =", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotEqualTo(String value) {
+ addCriterion("commentcontent <>", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentGreaterThan(String value) {
+ addCriterion("commentcontent >", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentGreaterThanOrEqualTo(String value) {
+ addCriterion("commentcontent >=", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentLessThan(String value) {
+ addCriterion("commentcontent <", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentLessThanOrEqualTo(String value) {
+ addCriterion("commentcontent <=", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentLike(String value) {
+ addCriterion("commentcontent like", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotLike(String value) {
+ addCriterion("commentcontent not like", value, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentIn(List<String> values) {
+ addCriterion("commentcontent in", values, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotIn(List<String> values) {
+ addCriterion("commentcontent not in", values, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentBetween(String value1, String value2) {
+ addCriterion("commentcontent between", value1, value2, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentcontentNotBetween(String value1, String value2) {
+ addCriterion("commentcontent not between", value1, value2, "commentcontent");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelIsNull() {
+ addCriterion("commentlevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelIsNotNull() {
+ addCriterion("commentlevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelEqualTo(Integer value) {
+ addCriterion("commentlevel =", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelNotEqualTo(Integer value) {
+ addCriterion("commentlevel <>", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelGreaterThan(Integer value) {
+ addCriterion("commentlevel >", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("commentlevel >=", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelLessThan(Integer value) {
+ addCriterion("commentlevel <", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelLessThanOrEqualTo(Integer value) {
+ addCriterion("commentlevel <=", value, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelIn(List<Integer> values) {
+ addCriterion("commentlevel in", values, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelNotIn(List<Integer> values) {
+ addCriterion("commentlevel not in", values, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelBetween(Integer value1, Integer value2) {
+ addCriterion("commentlevel between", value1, value2, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCommentlevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("commentlevel not between", value1, value2, "commentlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridIsNull() {
+ addCriterion("receiverid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridIsNotNull() {
+ addCriterion("receiverid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridEqualTo(String value) {
+ addCriterion("receiverid =", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotEqualTo(String value) {
+ addCriterion("receiverid <>", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridGreaterThan(String value) {
+ addCriterion("receiverid >", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridGreaterThanOrEqualTo(String value) {
+ addCriterion("receiverid >=", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridLessThan(String value) {
+ addCriterion("receiverid <", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridLessThanOrEqualTo(String value) {
+ addCriterion("receiverid <=", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridLike(String value) {
+ addCriterion("receiverid like", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotLike(String value) {
+ addCriterion("receiverid not like", value, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridIn(List<String> values) {
+ addCriterion("receiverid in", values, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotIn(List<String> values) {
+ addCriterion("receiverid not in", values, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridBetween(String value1, String value2) {
+ addCriterion("receiverid between", value1, value2, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveridNotBetween(String value1, String value2) {
+ addCriterion("receiverid not between", value1, value2, "receiverid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIsNull() {
+ addCriterion("vipuserId is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIsNotNull() {
+ addCriterion("vipuserId is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridEqualTo(String value) {
+ addCriterion("vipuserId =", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotEqualTo(String value) {
+ addCriterion("vipuserId <>", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridGreaterThan(String value) {
+ addCriterion("vipuserId >", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridGreaterThanOrEqualTo(String value) {
+ addCriterion("vipuserId >=", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLessThan(String value) {
+ addCriterion("vipuserId <", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLessThanOrEqualTo(String value) {
+ addCriterion("vipuserId <=", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLike(String value) {
+ addCriterion("vipuserId like", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotLike(String value) {
+ addCriterion("vipuserId not like", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIn(List<String> values) {
+ addCriterion("vipuserId in", values, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotIn(List<String> values) {
+ addCriterion("vipuserId not in", values, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridBetween(String value1, String value2) {
+ addCriterion("vipuserId between", value1, value2, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotBetween(String value1, String value2) {
+ addCriterion("vipuserId not between", value1, value2, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIsNull() {
+ addCriterion("vipname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIsNotNull() {
+ addCriterion("vipname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameEqualTo(String value) {
+ addCriterion("vipname =", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotEqualTo(String value) {
+ addCriterion("vipname <>", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameGreaterThan(String value) {
+ addCriterion("vipname >", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameGreaterThanOrEqualTo(String value) {
+ addCriterion("vipname >=", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLessThan(String value) {
+ addCriterion("vipname <", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLessThanOrEqualTo(String value) {
+ addCriterion("vipname <=", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLike(String value) {
+ addCriterion("vipname like", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotLike(String value) {
+ addCriterion("vipname not like", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIn(List<String> values) {
+ addCriterion("vipname in", values, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotIn(List<String> values) {
+ addCriterion("vipname not in", values, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameBetween(String value1, String value2) {
+ addCriterion("vipname between", value1, value2, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotBetween(String value1, String value2) {
+ addCriterion("vipname not between", value1, value2, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIsNull() {
+ addCriterion("vipphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIsNotNull() {
+ addCriterion("vipphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneEqualTo(String value) {
+ addCriterion("vipphone =", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotEqualTo(String value) {
+ addCriterion("vipphone <>", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneGreaterThan(String value) {
+ addCriterion("vipphone >", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("vipphone >=", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLessThan(String value) {
+ addCriterion("vipphone <", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLessThanOrEqualTo(String value) {
+ addCriterion("vipphone <=", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLike(String value) {
+ addCriterion("vipphone like", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotLike(String value) {
+ addCriterion("vipphone not like", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIn(List<String> values) {
+ addCriterion("vipphone in", values, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotIn(List<String> values) {
+ addCriterion("vipphone not in", values, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneBetween(String value1, String value2) {
+ addCriterion("vipphone between", value1, value2, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotBetween(String value1, String value2) {
+ addCriterion("vipphone not between", value1, value2, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIsNull() {
+ addCriterion("vipdiamondtype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIsNotNull() {
+ addCriterion("vipdiamondtype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeEqualTo(Integer value) {
+ addCriterion("vipdiamondtype =", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotEqualTo(Integer value) {
+ addCriterion("vipdiamondtype <>", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeGreaterThan(Integer value) {
+ addCriterion("vipdiamondtype >", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("vipdiamondtype >=", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeLessThan(Integer value) {
+ addCriterion("vipdiamondtype <", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeLessThanOrEqualTo(Integer value) {
+ addCriterion("vipdiamondtype <=", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIn(List<Integer> values) {
+ addCriterion("vipdiamondtype in", values, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotIn(List<Integer> values) {
+ addCriterion("vipdiamondtype not in", values, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeBetween(Integer value1, Integer value2) {
+ addCriterion("vipdiamondtype between", value1, value2, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("vipdiamondtype not between", value1, value2, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIsNull() {
+ addCriterion("viptype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIsNotNull() {
+ addCriterion("viptype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeEqualTo(Integer value) {
+ addCriterion("viptype =", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotEqualTo(Integer value) {
+ addCriterion("viptype <>", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeGreaterThan(Integer value) {
+ addCriterion("viptype >", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("viptype >=", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeLessThan(Integer value) {
+ addCriterion("viptype <", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeLessThanOrEqualTo(Integer value) {
+ addCriterion("viptype <=", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIn(List<Integer> values) {
+ addCriterion("viptype in", values, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotIn(List<Integer> values) {
+ addCriterion("viptype not in", values, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeBetween(Integer value1, Integer value2) {
+ addCriterion("viptype between", value1, value2, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("viptype not between", value1, value2, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIsNull() {
+ addCriterion("vippicture is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIsNotNull() {
+ addCriterion("vippicture is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureEqualTo(String value) {
+ addCriterion("vippicture =", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotEqualTo(String value) {
+ addCriterion("vippicture <>", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureGreaterThan(String value) {
+ addCriterion("vippicture >", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureGreaterThanOrEqualTo(String value) {
+ addCriterion("vippicture >=", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLessThan(String value) {
+ addCriterion("vippicture <", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLessThanOrEqualTo(String value) {
+ addCriterion("vippicture <=", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLike(String value) {
+ addCriterion("vippicture like", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotLike(String value) {
+ addCriterion("vippicture not like", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIn(List<String> values) {
+ addCriterion("vippicture in", values, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotIn(List<String> values) {
+ addCriterion("vippicture not in", values, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureBetween(String value1, String value2) {
+ addCriterion("vippicture between", value1, value2, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotBetween(String value1, String value2) {
+ addCriterion("vippicture not between", value1, value2, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIsNull() {
+ addCriterion("vipcarddiscountrate is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIsNotNull() {
+ addCriterion("vipcarddiscountrate is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate =", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <>", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateGreaterThan(BigDecimal value) {
+ addCriterion("vipcarddiscountrate >", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate >=", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateLessThan(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <=", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIn(List<BigDecimal> values) {
+ addCriterion("vipcarddiscountrate in", values, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotIn(List<BigDecimal> values) {
+ addCriterion("vipcarddiscountrate not in", values, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("vipcarddiscountrate between", value1, value2, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("vipcarddiscountrate not between", value1, value2, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("type is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("type is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("type =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("type <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("type >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("type >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("type <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("type <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List<Integer> values) {
+ addCriterion("type in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List<Integer> values) {
+ addCriterion("type not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("type between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("type not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProduct.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProduct.java
new file mode 100644
index 0000000..cff6d2d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProduct.java
@@ -0,0 +1,246 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderHistoryProduct {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String rejectreason;
+
+ private String rejectcomment;
+
+ private Date rejecttime;
+
+ private String payer;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discount;
+
+ private String payee;
+
+ private String orderno;
+
+ private String orderid;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getRejectreason() {
+ return rejectreason;
+ }
+
+ public void setRejectreason(String rejectreason) {
+ this.rejectreason = rejectreason == null ? null : rejectreason.trim();
+ }
+
+ public String getRejectcomment() {
+ return rejectcomment;
+ }
+
+ public void setRejectcomment(String rejectcomment) {
+ this.rejectcomment = rejectcomment == null ? null : rejectcomment.trim();
+ }
+
+ public Date getRejecttime() {
+ return rejecttime;
+ }
+
+ public void setRejecttime(Date rejecttime) {
+ this.rejecttime = rejecttime;
+ }
+
+ public String getPayer() {
+ return payer;
+ }
+
+ public void setPayer(String payer) {
+ this.payer = payer == null ? null : payer.trim();
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public String getPayee() {
+ return payee;
+ }
+
+ public void setPayee(String payee) {
+ this.payee = payee == null ? null : payee.trim();
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getOrderid() {
+ return orderid;
+ }
+
+ public void setOrderid(String orderid) {
+ this.orderid = orderid == null ? null : orderid.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProductExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProductExample.java
new file mode 100644
index 0000000..bc4d699
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderHistoryProductExample.java
@@ -0,0 +1,1884 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrderHistoryProductExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrderHistoryProductExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderHistoryProductExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderHistoryProductExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_history_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderHistoryProductExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIsNull() {
+ addCriterion("productid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIsNotNull() {
+ addCriterion("productid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidEqualTo(String value) {
+ addCriterion("productid =", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotEqualTo(String value) {
+ addCriterion("productid <>", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidGreaterThan(String value) {
+ addCriterion("productid >", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidGreaterThanOrEqualTo(String value) {
+ addCriterion("productid >=", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLessThan(String value) {
+ addCriterion("productid <", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLessThanOrEqualTo(String value) {
+ addCriterion("productid <=", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLike(String value) {
+ addCriterion("productid like", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotLike(String value) {
+ addCriterion("productid not like", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIn(List<String> values) {
+ addCriterion("productid in", values, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotIn(List<String> values) {
+ addCriterion("productid not in", values, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidBetween(String value1, String value2) {
+ addCriterion("productid between", value1, value2, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotBetween(String value1, String value2) {
+ addCriterion("productid not between", value1, value2, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIsNull() {
+ addCriterion("productcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIsNotNull() {
+ addCriterion("productcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeEqualTo(String value) {
+ addCriterion("productcode =", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotEqualTo(String value) {
+ addCriterion("productcode <>", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeGreaterThan(String value) {
+ addCriterion("productcode >", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("productcode >=", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLessThan(String value) {
+ addCriterion("productcode <", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLessThanOrEqualTo(String value) {
+ addCriterion("productcode <=", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLike(String value) {
+ addCriterion("productcode like", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotLike(String value) {
+ addCriterion("productcode not like", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIn(List<String> values) {
+ addCriterion("productcode in", values, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotIn(List<String> values) {
+ addCriterion("productcode not in", values, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeBetween(String value1, String value2) {
+ addCriterion("productcode between", value1, value2, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotBetween(String value1, String value2) {
+ addCriterion("productcode not between", value1, value2, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIsNull() {
+ addCriterion("productname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIsNotNull() {
+ addCriterion("productname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameEqualTo(String value) {
+ addCriterion("productname =", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotEqualTo(String value) {
+ addCriterion("productname <>", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameGreaterThan(String value) {
+ addCriterion("productname >", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameGreaterThanOrEqualTo(String value) {
+ addCriterion("productname >=", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLessThan(String value) {
+ addCriterion("productname <", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLessThanOrEqualTo(String value) {
+ addCriterion("productname <=", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLike(String value) {
+ addCriterion("productname like", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotLike(String value) {
+ addCriterion("productname not like", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIn(List<String> values) {
+ addCriterion("productname in", values, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotIn(List<String> values) {
+ addCriterion("productname not in", values, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameBetween(String value1, String value2) {
+ addCriterion("productname between", value1, value2, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotBetween(String value1, String value2) {
+ addCriterion("productname not between", value1, value2, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIsNull() {
+ addCriterion("color is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIsNotNull() {
+ addCriterion("color is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorEqualTo(String value) {
+ addCriterion("color =", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotEqualTo(String value) {
+ addCriterion("color <>", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorGreaterThan(String value) {
+ addCriterion("color >", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorGreaterThanOrEqualTo(String value) {
+ addCriterion("color >=", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLessThan(String value) {
+ addCriterion("color <", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLessThanOrEqualTo(String value) {
+ addCriterion("color <=", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLike(String value) {
+ addCriterion("color like", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotLike(String value) {
+ addCriterion("color not like", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIn(List<String> values) {
+ addCriterion("color in", values, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotIn(List<String> values) {
+ addCriterion("color not in", values, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorBetween(String value1, String value2) {
+ addCriterion("color between", value1, value2, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotBetween(String value1, String value2) {
+ addCriterion("color not between", value1, value2, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIsNull() {
+ addCriterion("size is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIsNotNull() {
+ addCriterion("size is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeEqualTo(String value) {
+ addCriterion("size =", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotEqualTo(String value) {
+ addCriterion("size <>", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeGreaterThan(String value) {
+ addCriterion("size >", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeGreaterThanOrEqualTo(String value) {
+ addCriterion("size >=", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLessThan(String value) {
+ addCriterion("size <", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLessThanOrEqualTo(String value) {
+ addCriterion("size <=", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLike(String value) {
+ addCriterion("size like", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotLike(String value) {
+ addCriterion("size not like", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIn(List<String> values) {
+ addCriterion("size in", values, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotIn(List<String> values) {
+ addCriterion("size not in", values, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeBetween(String value1, String value2) {
+ addCriterion("size between", value1, value2, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotBetween(String value1, String value2) {
+ addCriterion("size not between", value1, value2, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNull() {
+ addCriterion("count is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNotNull() {
+ addCriterion("count is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountEqualTo(Integer value) {
+ addCriterion("count =", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotEqualTo(Integer value) {
+ addCriterion("count <>", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThan(Integer value) {
+ addCriterion("count >", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThanOrEqualTo(Integer value) {
+ addCriterion("count >=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThan(Integer value) {
+ addCriterion("count <", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThanOrEqualTo(Integer value) {
+ addCriterion("count <=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIn(List<Integer> values) {
+ addCriterion("count in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotIn(List<Integer> values) {
+ addCriterion("count not in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountBetween(Integer value1, Integer value2) {
+ addCriterion("count between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotBetween(Integer value1, Integer value2) {
+ addCriterion("count not between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIsNull() {
+ addCriterion("image is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIsNotNull() {
+ addCriterion("image is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageEqualTo(String value) {
+ addCriterion("image =", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotEqualTo(String value) {
+ addCriterion("image <>", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageGreaterThan(String value) {
+ addCriterion("image >", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageGreaterThanOrEqualTo(String value) {
+ addCriterion("image >=", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLessThan(String value) {
+ addCriterion("image <", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLessThanOrEqualTo(String value) {
+ addCriterion("image <=", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLike(String value) {
+ addCriterion("image like", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotLike(String value) {
+ addCriterion("image not like", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIn(List<String> values) {
+ addCriterion("image in", values, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotIn(List<String> values) {
+ addCriterion("image not in", values, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageBetween(String value1, String value2) {
+ addCriterion("image between", value1, value2, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotBetween(String value1, String value2) {
+ addCriterion("image not between", value1, value2, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNull() {
+ addCriterion("price is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNotNull() {
+ addCriterion("price is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceEqualTo(BigDecimal value) {
+ addCriterion("price =", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotEqualTo(BigDecimal value) {
+ addCriterion("price <>", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThan(BigDecimal value) {
+ addCriterion("price >", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("price >=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThan(BigDecimal value) {
+ addCriterion("price <", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("price <=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIn(List<BigDecimal> values) {
+ addCriterion("price in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotIn(List<BigDecimal> values) {
+ addCriterion("price not in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price not between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIsNull() {
+ addCriterion("saleprice is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIsNotNull() {
+ addCriterion("saleprice is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceEqualTo(BigDecimal value) {
+ addCriterion("saleprice =", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotEqualTo(BigDecimal value) {
+ addCriterion("saleprice <>", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceGreaterThan(BigDecimal value) {
+ addCriterion("saleprice >", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("saleprice >=", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceLessThan(BigDecimal value) {
+ addCriterion("saleprice <", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("saleprice <=", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIn(List<BigDecimal> values) {
+ addCriterion("saleprice in", values, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotIn(List<BigDecimal> values) {
+ addCriterion("saleprice not in", values, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("saleprice between", value1, value2, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("saleprice not between", value1, value2, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonIsNull() {
+ addCriterion("rejectreason is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonIsNotNull() {
+ addCriterion("rejectreason is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonEqualTo(String value) {
+ addCriterion("rejectreason =", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotEqualTo(String value) {
+ addCriterion("rejectreason <>", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonGreaterThan(String value) {
+ addCriterion("rejectreason >", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonGreaterThanOrEqualTo(String value) {
+ addCriterion("rejectreason >=", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonLessThan(String value) {
+ addCriterion("rejectreason <", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonLessThanOrEqualTo(String value) {
+ addCriterion("rejectreason <=", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonLike(String value) {
+ addCriterion("rejectreason like", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotLike(String value) {
+ addCriterion("rejectreason not like", value, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonIn(List<String> values) {
+ addCriterion("rejectreason in", values, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotIn(List<String> values) {
+ addCriterion("rejectreason not in", values, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonBetween(String value1, String value2) {
+ addCriterion("rejectreason between", value1, value2, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectreasonNotBetween(String value1, String value2) {
+ addCriterion("rejectreason not between", value1, value2, "rejectreason");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentIsNull() {
+ addCriterion("rejectcomment is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentIsNotNull() {
+ addCriterion("rejectcomment is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentEqualTo(String value) {
+ addCriterion("rejectcomment =", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotEqualTo(String value) {
+ addCriterion("rejectcomment <>", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentGreaterThan(String value) {
+ addCriterion("rejectcomment >", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentGreaterThanOrEqualTo(String value) {
+ addCriterion("rejectcomment >=", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentLessThan(String value) {
+ addCriterion("rejectcomment <", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentLessThanOrEqualTo(String value) {
+ addCriterion("rejectcomment <=", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentLike(String value) {
+ addCriterion("rejectcomment like", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotLike(String value) {
+ addCriterion("rejectcomment not like", value, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentIn(List<String> values) {
+ addCriterion("rejectcomment in", values, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotIn(List<String> values) {
+ addCriterion("rejectcomment not in", values, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentBetween(String value1, String value2) {
+ addCriterion("rejectcomment between", value1, value2, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejectcommentNotBetween(String value1, String value2) {
+ addCriterion("rejectcomment not between", value1, value2, "rejectcomment");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeIsNull() {
+ addCriterion("rejecttime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeIsNotNull() {
+ addCriterion("rejecttime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeEqualTo(Date value) {
+ addCriterion("rejecttime =", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeNotEqualTo(Date value) {
+ addCriterion("rejecttime <>", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeGreaterThan(Date value) {
+ addCriterion("rejecttime >", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("rejecttime >=", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeLessThan(Date value) {
+ addCriterion("rejecttime <", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeLessThanOrEqualTo(Date value) {
+ addCriterion("rejecttime <=", value, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeIn(List<Date> values) {
+ addCriterion("rejecttime in", values, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeNotIn(List<Date> values) {
+ addCriterion("rejecttime not in", values, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeBetween(Date value1, Date value2) {
+ addCriterion("rejecttime between", value1, value2, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRejecttimeNotBetween(Date value1, Date value2) {
+ addCriterion("rejecttime not between", value1, value2, "rejecttime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerIsNull() {
+ addCriterion("payer is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerIsNotNull() {
+ addCriterion("payer is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerEqualTo(String value) {
+ addCriterion("payer =", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotEqualTo(String value) {
+ addCriterion("payer <>", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerGreaterThan(String value) {
+ addCriterion("payer >", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerGreaterThanOrEqualTo(String value) {
+ addCriterion("payer >=", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerLessThan(String value) {
+ addCriterion("payer <", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerLessThanOrEqualTo(String value) {
+ addCriterion("payer <=", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerLike(String value) {
+ addCriterion("payer like", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotLike(String value) {
+ addCriterion("payer not like", value, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerIn(List<String> values) {
+ addCriterion("payer in", values, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotIn(List<String> values) {
+ addCriterion("payer not in", values, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerBetween(String value1, String value2) {
+ addCriterion("payer between", value1, value2, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayerNotBetween(String value1, String value2) {
+ addCriterion("payer not between", value1, value2, "payer");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNull() {
+ addCriterion("payedmoney is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIsNotNull() {
+ addCriterion("payedmoney is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyEqualTo(BigDecimal value) {
+ addCriterion("payedmoney =", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <>", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThan(BigDecimal value) {
+ addCriterion("payedmoney >", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney >=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThan(BigDecimal value) {
+ addCriterion("payedmoney <", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("payedmoney <=", value, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyIn(List<BigDecimal> values) {
+ addCriterion("payedmoney in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotIn(List<BigDecimal> values) {
+ addCriterion("payedmoney not in", values, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayedmoneyNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("payedmoney not between", value1, value2, "payedmoney");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNull() {
+ addCriterion("discount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNotNull() {
+ addCriterion("discount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountEqualTo(BigDecimal value) {
+ addCriterion("discount =", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotEqualTo(BigDecimal value) {
+ addCriterion("discount <>", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThan(BigDecimal value) {
+ addCriterion("discount >", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount >=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThan(BigDecimal value) {
+ addCriterion("discount <", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount <=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIn(List<BigDecimal> values) {
+ addCriterion("discount in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotIn(List<BigDecimal> values) {
+ addCriterion("discount not in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount not between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeIsNull() {
+ addCriterion("payee is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeIsNotNull() {
+ addCriterion("payee is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeEqualTo(String value) {
+ addCriterion("payee =", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotEqualTo(String value) {
+ addCriterion("payee <>", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeGreaterThan(String value) {
+ addCriterion("payee >", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeGreaterThanOrEqualTo(String value) {
+ addCriterion("payee >=", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeLessThan(String value) {
+ addCriterion("payee <", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeLessThanOrEqualTo(String value) {
+ addCriterion("payee <=", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeLike(String value) {
+ addCriterion("payee like", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotLike(String value) {
+ addCriterion("payee not like", value, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeIn(List<String> values) {
+ addCriterion("payee in", values, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotIn(List<String> values) {
+ addCriterion("payee not in", values, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeBetween(String value1, String value2) {
+ addCriterion("payee between", value1, value2, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andPayeeNotBetween(String value1, String value2) {
+ addCriterion("payee not between", value1, value2, "payee");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNull() {
+ addCriterion("orderno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNotNull() {
+ addCriterion("orderno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoEqualTo(String value) {
+ addCriterion("orderno =", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotEqualTo(String value) {
+ addCriterion("orderno <>", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThan(String value) {
+ addCriterion("orderno >", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThanOrEqualTo(String value) {
+ addCriterion("orderno >=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThan(String value) {
+ addCriterion("orderno <", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThanOrEqualTo(String value) {
+ addCriterion("orderno <=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLike(String value) {
+ addCriterion("orderno like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotLike(String value) {
+ addCriterion("orderno not like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIn(List<String> values) {
+ addCriterion("orderno in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotIn(List<String> values) {
+ addCriterion("orderno not in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoBetween(String value1, String value2) {
+ addCriterion("orderno between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotBetween(String value1, String value2) {
+ addCriterion("orderno not between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidIsNull() {
+ addCriterion("orderid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidIsNotNull() {
+ addCriterion("orderid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidEqualTo(String value) {
+ addCriterion("orderid =", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotEqualTo(String value) {
+ addCriterion("orderid <>", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidGreaterThan(String value) {
+ addCriterion("orderid >", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidGreaterThanOrEqualTo(String value) {
+ addCriterion("orderid >=", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidLessThan(String value) {
+ addCriterion("orderid <", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidLessThanOrEqualTo(String value) {
+ addCriterion("orderid <=", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidLike(String value) {
+ addCriterion("orderid like", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotLike(String value) {
+ addCriterion("orderid not like", value, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidIn(List<String> values) {
+ addCriterion("orderid in", values, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotIn(List<String> values) {
+ addCriterion("orderid not in", values, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidBetween(String value1, String value2) {
+ addCriterion("orderid between", value1, value2, "orderid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrderidNotBetween(String value1, String value2) {
+ addCriterion("orderid not between", value1, value2, "orderid");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiver.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiver.java
new file mode 100644
index 0000000..a5d8cbb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiver.java
@@ -0,0 +1,155 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class OrderReceiver {
+ private String id;
+
+ private String userid;
+
+ private String code;
+
+ private String name;
+
+ private String contactno;
+
+ private String country;
+
+ private String province;
+
+ private String city;
+
+ private String region;
+
+ private String receiveaddress;
+
+ private String isoftenused;
+
+ private Boolean isdeleted;
+
+ private Date updatetime;
+
+ private Date createtime;
+
+ private String remark;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid == null ? null : userid.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getContactno() {
+ return contactno;
+ }
+
+ public void setContactno(String contactno) {
+ this.contactno = contactno == null ? null : contactno.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getRegion() {
+ return region;
+ }
+
+ public void setRegion(String region) {
+ this.region = region == null ? null : region.trim();
+ }
+
+ public String getReceiveaddress() {
+ return receiveaddress;
+ }
+
+ public void setReceiveaddress(String receiveaddress) {
+ this.receiveaddress = receiveaddress == null ? null : receiveaddress.trim();
+ }
+
+ public String getIsoftenused() {
+ return isoftenused;
+ }
+
+ public void setIsoftenused(String isoftenused) {
+ this.isoftenused = isoftenused == null ? null : isoftenused.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiverExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiverExample.java
new file mode 100644
index 0000000..fd3cf3e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrderReceiverExample.java
@@ -0,0 +1,1323 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrderReceiverExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrderReceiverExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderReceiverExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderReceiverExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..order_receiver
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrderReceiverExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridIsNull() {
+ addCriterion("userid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridIsNotNull() {
+ addCriterion("userid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridEqualTo(String value) {
+ addCriterion("userid =", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridNotEqualTo(String value) {
+ addCriterion("userid <>", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridGreaterThan(String value) {
+ addCriterion("userid >", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridGreaterThanOrEqualTo(String value) {
+ addCriterion("userid >=", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridLessThan(String value) {
+ addCriterion("userid <", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridLessThanOrEqualTo(String value) {
+ addCriterion("userid <=", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridLike(String value) {
+ addCriterion("userid like", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridNotLike(String value) {
+ addCriterion("userid not like", value, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridIn(List<String> values) {
+ addCriterion("userid in", values, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridNotIn(List<String> values) {
+ addCriterion("userid not in", values, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridBetween(String value1, String value2) {
+ addCriterion("userid between", value1, value2, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUseridNotBetween(String value1, String value2) {
+ addCriterion("userid not between", value1, value2, "userid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoIsNull() {
+ addCriterion("contactno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoIsNotNull() {
+ addCriterion("contactno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoEqualTo(String value) {
+ addCriterion("contactno =", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoNotEqualTo(String value) {
+ addCriterion("contactno <>", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoGreaterThan(String value) {
+ addCriterion("contactno >", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoGreaterThanOrEqualTo(String value) {
+ addCriterion("contactno >=", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoLessThan(String value) {
+ addCriterion("contactno <", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoLessThanOrEqualTo(String value) {
+ addCriterion("contactno <=", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoLike(String value) {
+ addCriterion("contactno like", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoNotLike(String value) {
+ addCriterion("contactno not like", value, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoIn(List<String> values) {
+ addCriterion("contactno in", values, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoNotIn(List<String> values) {
+ addCriterion("contactno not in", values, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoBetween(String value1, String value2) {
+ addCriterion("contactno between", value1, value2, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andContactnoNotBetween(String value1, String value2) {
+ addCriterion("contactno not between", value1, value2, "contactno");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryIsNull() {
+ addCriterion("country is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryIsNotNull() {
+ addCriterion("country is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryEqualTo(String value) {
+ addCriterion("country =", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotEqualTo(String value) {
+ addCriterion("country <>", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryGreaterThan(String value) {
+ addCriterion("country >", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryGreaterThanOrEqualTo(String value) {
+ addCriterion("country >=", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryLessThan(String value) {
+ addCriterion("country <", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryLessThanOrEqualTo(String value) {
+ addCriterion("country <=", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryLike(String value) {
+ addCriterion("country like", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotLike(String value) {
+ addCriterion("country not like", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryIn(List<String> values) {
+ addCriterion("country in", values, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotIn(List<String> values) {
+ addCriterion("country not in", values, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryBetween(String value1, String value2) {
+ addCriterion("country between", value1, value2, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotBetween(String value1, String value2) {
+ addCriterion("country not between", value1, value2, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceIsNull() {
+ addCriterion("province is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceIsNotNull() {
+ addCriterion("province is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceEqualTo(String value) {
+ addCriterion("province =", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotEqualTo(String value) {
+ addCriterion("province <>", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceGreaterThan(String value) {
+ addCriterion("province >", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceGreaterThanOrEqualTo(String value) {
+ addCriterion("province >=", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceLessThan(String value) {
+ addCriterion("province <", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceLessThanOrEqualTo(String value) {
+ addCriterion("province <=", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceLike(String value) {
+ addCriterion("province like", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotLike(String value) {
+ addCriterion("province not like", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceIn(List<String> values) {
+ addCriterion("province in", values, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotIn(List<String> values) {
+ addCriterion("province not in", values, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceBetween(String value1, String value2) {
+ addCriterion("province between", value1, value2, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotBetween(String value1, String value2) {
+ addCriterion("province not between", value1, value2, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityIsNull() {
+ addCriterion("city is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityIsNotNull() {
+ addCriterion("city is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityEqualTo(String value) {
+ addCriterion("city =", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotEqualTo(String value) {
+ addCriterion("city <>", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityGreaterThan(String value) {
+ addCriterion("city >", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityGreaterThanOrEqualTo(String value) {
+ addCriterion("city >=", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityLessThan(String value) {
+ addCriterion("city <", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityLessThanOrEqualTo(String value) {
+ addCriterion("city <=", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityLike(String value) {
+ addCriterion("city like", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotLike(String value) {
+ addCriterion("city not like", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityIn(List<String> values) {
+ addCriterion("city in", values, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotIn(List<String> values) {
+ addCriterion("city not in", values, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityBetween(String value1, String value2) {
+ addCriterion("city between", value1, value2, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotBetween(String value1, String value2) {
+ addCriterion("city not between", value1, value2, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionIsNull() {
+ addCriterion("region is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionIsNotNull() {
+ addCriterion("region is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionEqualTo(String value) {
+ addCriterion("region =", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionNotEqualTo(String value) {
+ addCriterion("region <>", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionGreaterThan(String value) {
+ addCriterion("region >", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionGreaterThanOrEqualTo(String value) {
+ addCriterion("region >=", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionLessThan(String value) {
+ addCriterion("region <", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionLessThanOrEqualTo(String value) {
+ addCriterion("region <=", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionLike(String value) {
+ addCriterion("region like", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionNotLike(String value) {
+ addCriterion("region not like", value, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionIn(List<String> values) {
+ addCriterion("region in", values, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionNotIn(List<String> values) {
+ addCriterion("region not in", values, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionBetween(String value1, String value2) {
+ addCriterion("region between", value1, value2, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andRegionNotBetween(String value1, String value2) {
+ addCriterion("region not between", value1, value2, "region");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressIsNull() {
+ addCriterion("receiveaddress is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressIsNotNull() {
+ addCriterion("receiveaddress is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressEqualTo(String value) {
+ addCriterion("receiveaddress =", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressNotEqualTo(String value) {
+ addCriterion("receiveaddress <>", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressGreaterThan(String value) {
+ addCriterion("receiveaddress >", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressGreaterThanOrEqualTo(String value) {
+ addCriterion("receiveaddress >=", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressLessThan(String value) {
+ addCriterion("receiveaddress <", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressLessThanOrEqualTo(String value) {
+ addCriterion("receiveaddress <=", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressLike(String value) {
+ addCriterion("receiveaddress like", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressNotLike(String value) {
+ addCriterion("receiveaddress not like", value, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressIn(List<String> values) {
+ addCriterion("receiveaddress in", values, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressNotIn(List<String> values) {
+ addCriterion("receiveaddress not in", values, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressBetween(String value1, String value2) {
+ addCriterion("receiveaddress between", value1, value2, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andReceiveaddressNotBetween(String value1, String value2) {
+ addCriterion("receiveaddress not between", value1, value2, "receiveaddress");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedIsNull() {
+ addCriterion("isoftenused is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedIsNotNull() {
+ addCriterion("isoftenused is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedEqualTo(String value) {
+ addCriterion("isoftenused =", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedNotEqualTo(String value) {
+ addCriterion("isoftenused <>", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedGreaterThan(String value) {
+ addCriterion("isoftenused >", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedGreaterThanOrEqualTo(String value) {
+ addCriterion("isoftenused >=", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedLessThan(String value) {
+ addCriterion("isoftenused <", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedLessThanOrEqualTo(String value) {
+ addCriterion("isoftenused <=", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedLike(String value) {
+ addCriterion("isoftenused like", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedNotLike(String value) {
+ addCriterion("isoftenused not like", value, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedIn(List<String> values) {
+ addCriterion("isoftenused in", values, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedNotIn(List<String> values) {
+ addCriterion("isoftenused not in", values, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedBetween(String value1, String value2) {
+ addCriterion("isoftenused between", value1, value2, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsoftenusedNotBetween(String value1, String value2) {
+ addCriterion("isoftenused not between", value1, value2, "isoftenused");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClass.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClass.java
new file mode 100644
index 0000000..a3bfd46
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClass.java
@@ -0,0 +1,295 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class OrganizationClass {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClassExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClassExample.java
new file mode 100644
index 0000000..2803858
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationClassExample.java
@@ -0,0 +1,2283 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrganizationClassExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrganizationClassExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationClassExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationClassExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_class
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationClassExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNull() {
+ addCriterion("outerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNotNull() {
+ addCriterion("outerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneEqualTo(String value) {
+ addCriterion("outerphone =", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotEqualTo(String value) {
+ addCriterion("outerphone <>", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThan(String value) {
+ addCriterion("outerphone >", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("outerphone >=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThan(String value) {
+ addCriterion("outerphone <", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThanOrEqualTo(String value) {
+ addCriterion("outerphone <=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLike(String value) {
+ addCriterion("outerphone like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotLike(String value) {
+ addCriterion("outerphone not like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIn(List<String> values) {
+ addCriterion("outerphone in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotIn(List<String> values) {
+ addCriterion("outerphone not in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneBetween(String value1, String value2) {
+ addCriterion("outerphone between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotBetween(String value1, String value2) {
+ addCriterion("outerphone not between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNull() {
+ addCriterion("innerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNotNull() {
+ addCriterion("innerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneEqualTo(String value) {
+ addCriterion("innerphone =", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotEqualTo(String value) {
+ addCriterion("innerphone <>", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThan(String value) {
+ addCriterion("innerphone >", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("innerphone >=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThan(String value) {
+ addCriterion("innerphone <", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThanOrEqualTo(String value) {
+ addCriterion("innerphone <=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLike(String value) {
+ addCriterion("innerphone like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotLike(String value) {
+ addCriterion("innerphone not like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIn(List<String> values) {
+ addCriterion("innerphone in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotIn(List<String> values) {
+ addCriterion("innerphone not in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneBetween(String value1, String value2) {
+ addCriterion("innerphone between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotBetween(String value1, String value2) {
+ addCriterion("innerphone not between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNull() {
+ addCriterion("supervisor is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNotNull() {
+ addCriterion("supervisor is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorEqualTo(String value) {
+ addCriterion("supervisor =", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotEqualTo(String value) {
+ addCriterion("supervisor <>", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThan(String value) {
+ addCriterion("supervisor >", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisor >=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThan(String value) {
+ addCriterion("supervisor <", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThanOrEqualTo(String value) {
+ addCriterion("supervisor <=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLike(String value) {
+ addCriterion("supervisor like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotLike(String value) {
+ addCriterion("supervisor not like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIn(List<String> values) {
+ addCriterion("supervisor in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotIn(List<String> values) {
+ addCriterion("supervisor not in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorBetween(String value1, String value2) {
+ addCriterion("supervisor between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotBetween(String value1, String value2) {
+ addCriterion("supervisor not between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNull() {
+ addCriterion("supervisorassistant is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNotNull() {
+ addCriterion("supervisorassistant is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantEqualTo(String value) {
+ addCriterion("supervisorassistant =", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotEqualTo(String value) {
+ addCriterion("supervisorassistant <>", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThan(String value) {
+ addCriterion("supervisorassistant >", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant >=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThan(String value) {
+ addCriterion("supervisorassistant <", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant <=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLike(String value) {
+ addCriterion("supervisorassistant like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotLike(String value) {
+ addCriterion("supervisorassistant not like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIn(List<String> values) {
+ addCriterion("supervisorassistant in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotIn(List<String> values) {
+ addCriterion("supervisorassistant not in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantBetween(String value1, String value2) {
+ addCriterion("supervisorassistant between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotBetween(String value1, String value2) {
+ addCriterion("supervisorassistant not between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNull() {
+ addCriterion("fax is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNotNull() {
+ addCriterion("fax is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxEqualTo(String value) {
+ addCriterion("fax =", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotEqualTo(String value) {
+ addCriterion("fax <>", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThan(String value) {
+ addCriterion("fax >", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThanOrEqualTo(String value) {
+ addCriterion("fax >=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThan(String value) {
+ addCriterion("fax <", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThanOrEqualTo(String value) {
+ addCriterion("fax <=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLike(String value) {
+ addCriterion("fax like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotLike(String value) {
+ addCriterion("fax not like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIn(List<String> values) {
+ addCriterion("fax in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotIn(List<String> values) {
+ addCriterion("fax not in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxBetween(String value1, String value2) {
+ addCriterion("fax between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotBetween(String value1, String value2) {
+ addCriterion("fax not between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNull() {
+ addCriterion("zipcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNotNull() {
+ addCriterion("zipcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeEqualTo(String value) {
+ addCriterion("zipcode =", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotEqualTo(String value) {
+ addCriterion("zipcode <>", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThan(String value) {
+ addCriterion("zipcode >", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("zipcode >=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThan(String value) {
+ addCriterion("zipcode <", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThanOrEqualTo(String value) {
+ addCriterion("zipcode <=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLike(String value) {
+ addCriterion("zipcode like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotLike(String value) {
+ addCriterion("zipcode not like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIn(List<String> values) {
+ addCriterion("zipcode in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotIn(List<String> values) {
+ addCriterion("zipcode not in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeBetween(String value1, String value2) {
+ addCriterion("zipcode between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotBetween(String value1, String value2) {
+ addCriterion("zipcode not between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNull() {
+ addCriterion("address is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNotNull() {
+ addCriterion("address is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressEqualTo(String value) {
+ addCriterion("address =", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotEqualTo(String value) {
+ addCriterion("address <>", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThan(String value) {
+ addCriterion("address >", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThanOrEqualTo(String value) {
+ addCriterion("address >=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThan(String value) {
+ addCriterion("address <", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThanOrEqualTo(String value) {
+ addCriterion("address <=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLike(String value) {
+ addCriterion("address like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotLike(String value) {
+ addCriterion("address not like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIn(List<String> values) {
+ addCriterion("address in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotIn(List<String> values) {
+ addCriterion("address not in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressBetween(String value1, String value2) {
+ addCriterion("address between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotBetween(String value1, String value2) {
+ addCriterion("address not between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNull() {
+ addCriterion("deplevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNotNull() {
+ addCriterion("deplevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelEqualTo(Integer value) {
+ addCriterion("deplevel =", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotEqualTo(Integer value) {
+ addCriterion("deplevel <>", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThan(Integer value) {
+ addCriterion("deplevel >", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("deplevel >=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThan(Integer value) {
+ addCriterion("deplevel <", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThanOrEqualTo(Integer value) {
+ addCriterion("deplevel <=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIn(List<Integer> values) {
+ addCriterion("deplevel in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotIn(List<Integer> values) {
+ addCriterion("deplevel not in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel not between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNull() {
+ addCriterion("organizationid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNotNull() {
+ addCriterion("organizationid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidEqualTo(String value) {
+ addCriterion("organizationid =", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotEqualTo(String value) {
+ addCriterion("organizationid <>", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThan(String value) {
+ addCriterion("organizationid >", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationid >=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThan(String value) {
+ addCriterion("organizationid <", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThanOrEqualTo(String value) {
+ addCriterion("organizationid <=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLike(String value) {
+ addCriterion("organizationid like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotLike(String value) {
+ addCriterion("organizationid not like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIn(List<String> values) {
+ addCriterion("organizationid in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotIn(List<String> values) {
+ addCriterion("organizationid not in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidBetween(String value1, String value2) {
+ addCriterion("organizationid between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotBetween(String value1, String value2) {
+ addCriterion("organizationid not between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNull() {
+ addCriterion("organizationname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNotNull() {
+ addCriterion("organizationname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameEqualTo(String value) {
+ addCriterion("organizationname =", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotEqualTo(String value) {
+ addCriterion("organizationname <>", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThan(String value) {
+ addCriterion("organizationname >", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationname >=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThan(String value) {
+ addCriterion("organizationname <", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThanOrEqualTo(String value) {
+ addCriterion("organizationname <=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLike(String value) {
+ addCriterion("organizationname like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotLike(String value) {
+ addCriterion("organizationname not like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIn(List<String> values) {
+ addCriterion("organizationname in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotIn(List<String> values) {
+ addCriterion("organizationname not in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameBetween(String value1, String value2) {
+ addCriterion("organizationname between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotBetween(String value1, String value2) {
+ addCriterion("organizationname not between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNull() {
+ addCriterion("organizationcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNotNull() {
+ addCriterion("organizationcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeEqualTo(String value) {
+ addCriterion("organizationcode =", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotEqualTo(String value) {
+ addCriterion("organizationcode <>", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThan(String value) {
+ addCriterion("organizationcode >", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationcode >=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThan(String value) {
+ addCriterion("organizationcode <", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThanOrEqualTo(String value) {
+ addCriterion("organizationcode <=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLike(String value) {
+ addCriterion("organizationcode like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotLike(String value) {
+ addCriterion("organizationcode not like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIn(List<String> values) {
+ addCriterion("organizationcode in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotIn(List<String> values) {
+ addCriterion("organizationcode not in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeBetween(String value1, String value2) {
+ addCriterion("organizationcode between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotBetween(String value1, String value2) {
+ addCriterion("organizationcode not between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNull() {
+ addCriterion("departmentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNotNull() {
+ addCriterion("departmentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidEqualTo(String value) {
+ addCriterion("departmentid =", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotEqualTo(String value) {
+ addCriterion("departmentid <>", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThan(String value) {
+ addCriterion("departmentid >", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentid >=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThan(String value) {
+ addCriterion("departmentid <", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThanOrEqualTo(String value) {
+ addCriterion("departmentid <=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLike(String value) {
+ addCriterion("departmentid like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotLike(String value) {
+ addCriterion("departmentid not like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIn(List<String> values) {
+ addCriterion("departmentid in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotIn(List<String> values) {
+ addCriterion("departmentid not in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidBetween(String value1, String value2) {
+ addCriterion("departmentid between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotBetween(String value1, String value2) {
+ addCriterion("departmentid not between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNull() {
+ addCriterion("departmentname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNotNull() {
+ addCriterion("departmentname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameEqualTo(String value) {
+ addCriterion("departmentname =", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotEqualTo(String value) {
+ addCriterion("departmentname <>", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThan(String value) {
+ addCriterion("departmentname >", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentname >=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThan(String value) {
+ addCriterion("departmentname <", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThanOrEqualTo(String value) {
+ addCriterion("departmentname <=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLike(String value) {
+ addCriterion("departmentname like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotLike(String value) {
+ addCriterion("departmentname not like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIn(List<String> values) {
+ addCriterion("departmentname in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotIn(List<String> values) {
+ addCriterion("departmentname not in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameBetween(String value1, String value2) {
+ addCriterion("departmentname between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotBetween(String value1, String value2) {
+ addCriterion("departmentname not between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNull() {
+ addCriterion("departmentcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNotNull() {
+ addCriterion("departmentcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeEqualTo(String value) {
+ addCriterion("departmentcode =", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotEqualTo(String value) {
+ addCriterion("departmentcode <>", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThan(String value) {
+ addCriterion("departmentcode >", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentcode >=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThan(String value) {
+ addCriterion("departmentcode <", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThanOrEqualTo(String value) {
+ addCriterion("departmentcode <=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLike(String value) {
+ addCriterion("departmentcode like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotLike(String value) {
+ addCriterion("departmentcode not like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIn(List<String> values) {
+ addCriterion("departmentcode in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotIn(List<String> values) {
+ addCriterion("departmentcode not in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeBetween(String value1, String value2) {
+ addCriterion("departmentcode between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotBetween(String value1, String value2) {
+ addCriterion("departmentcode not between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIsNull() {
+ addCriterion("majorid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIsNotNull() {
+ addCriterion("majorid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridEqualTo(String value) {
+ addCriterion("majorid =", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotEqualTo(String value) {
+ addCriterion("majorid <>", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridGreaterThan(String value) {
+ addCriterion("majorid >", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridGreaterThanOrEqualTo(String value) {
+ addCriterion("majorid >=", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLessThan(String value) {
+ addCriterion("majorid <", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLessThanOrEqualTo(String value) {
+ addCriterion("majorid <=", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLike(String value) {
+ addCriterion("majorid like", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotLike(String value) {
+ addCriterion("majorid not like", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIn(List<String> values) {
+ addCriterion("majorid in", values, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotIn(List<String> values) {
+ addCriterion("majorid not in", values, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridBetween(String value1, String value2) {
+ addCriterion("majorid between", value1, value2, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotBetween(String value1, String value2) {
+ addCriterion("majorid not between", value1, value2, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIsNull() {
+ addCriterion("majorname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIsNotNull() {
+ addCriterion("majorname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameEqualTo(String value) {
+ addCriterion("majorname =", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotEqualTo(String value) {
+ addCriterion("majorname <>", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameGreaterThan(String value) {
+ addCriterion("majorname >", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameGreaterThanOrEqualTo(String value) {
+ addCriterion("majorname >=", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLessThan(String value) {
+ addCriterion("majorname <", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLessThanOrEqualTo(String value) {
+ addCriterion("majorname <=", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLike(String value) {
+ addCriterion("majorname like", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotLike(String value) {
+ addCriterion("majorname not like", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIn(List<String> values) {
+ addCriterion("majorname in", values, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotIn(List<String> values) {
+ addCriterion("majorname not in", values, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameBetween(String value1, String value2) {
+ addCriterion("majorname between", value1, value2, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotBetween(String value1, String value2) {
+ addCriterion("majorname not between", value1, value2, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIsNull() {
+ addCriterion("majorcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIsNotNull() {
+ addCriterion("majorcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeEqualTo(String value) {
+ addCriterion("majorcode =", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotEqualTo(String value) {
+ addCriterion("majorcode <>", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeGreaterThan(String value) {
+ addCriterion("majorcode >", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("majorcode >=", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLessThan(String value) {
+ addCriterion("majorcode <", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLessThanOrEqualTo(String value) {
+ addCriterion("majorcode <=", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLike(String value) {
+ addCriterion("majorcode like", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotLike(String value) {
+ addCriterion("majorcode not like", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIn(List<String> values) {
+ addCriterion("majorcode in", values, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotIn(List<String> values) {
+ addCriterion("majorcode not in", values, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeBetween(String value1, String value2) {
+ addCriterion("majorcode between", value1, value2, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotBetween(String value1, String value2) {
+ addCriterion("majorcode not between", value1, value2, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIsNull() {
+ addCriterion("gradeid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIsNotNull() {
+ addCriterion("gradeid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidEqualTo(String value) {
+ addCriterion("gradeid =", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotEqualTo(String value) {
+ addCriterion("gradeid <>", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidGreaterThan(String value) {
+ addCriterion("gradeid >", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidGreaterThanOrEqualTo(String value) {
+ addCriterion("gradeid >=", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLessThan(String value) {
+ addCriterion("gradeid <", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLessThanOrEqualTo(String value) {
+ addCriterion("gradeid <=", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLike(String value) {
+ addCriterion("gradeid like", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotLike(String value) {
+ addCriterion("gradeid not like", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIn(List<String> values) {
+ addCriterion("gradeid in", values, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotIn(List<String> values) {
+ addCriterion("gradeid not in", values, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidBetween(String value1, String value2) {
+ addCriterion("gradeid between", value1, value2, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotBetween(String value1, String value2) {
+ addCriterion("gradeid not between", value1, value2, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIsNull() {
+ addCriterion("gradename is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIsNotNull() {
+ addCriterion("gradename is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameEqualTo(String value) {
+ addCriterion("gradename =", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotEqualTo(String value) {
+ addCriterion("gradename <>", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameGreaterThan(String value) {
+ addCriterion("gradename >", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameGreaterThanOrEqualTo(String value) {
+ addCriterion("gradename >=", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLessThan(String value) {
+ addCriterion("gradename <", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLessThanOrEqualTo(String value) {
+ addCriterion("gradename <=", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLike(String value) {
+ addCriterion("gradename like", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotLike(String value) {
+ addCriterion("gradename not like", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIn(List<String> values) {
+ addCriterion("gradename in", values, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotIn(List<String> values) {
+ addCriterion("gradename not in", values, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameBetween(String value1, String value2) {
+ addCriterion("gradename between", value1, value2, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotBetween(String value1, String value2) {
+ addCriterion("gradename not between", value1, value2, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIsNull() {
+ addCriterion("gradecode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIsNotNull() {
+ addCriterion("gradecode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeEqualTo(String value) {
+ addCriterion("gradecode =", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotEqualTo(String value) {
+ addCriterion("gradecode <>", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeGreaterThan(String value) {
+ addCriterion("gradecode >", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeGreaterThanOrEqualTo(String value) {
+ addCriterion("gradecode >=", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLessThan(String value) {
+ addCriterion("gradecode <", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLessThanOrEqualTo(String value) {
+ addCriterion("gradecode <=", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLike(String value) {
+ addCriterion("gradecode like", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotLike(String value) {
+ addCriterion("gradecode not like", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIn(List<String> values) {
+ addCriterion("gradecode in", values, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotIn(List<String> values) {
+ addCriterion("gradecode not in", values, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeBetween(String value1, String value2) {
+ addCriterion("gradecode between", value1, value2, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotBetween(String value1, String value2) {
+ addCriterion("gradecode not between", value1, value2, "gradecode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartment.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartment.java
new file mode 100644
index 0000000..38e9c4f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartment.java
@@ -0,0 +1,205 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class OrganizationDepartment {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartmentExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartmentExample.java
new file mode 100644
index 0000000..193b18a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationDepartmentExample.java
@@ -0,0 +1,1653 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrganizationDepartmentExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrganizationDepartmentExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationDepartmentExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationDepartmentExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_department
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationDepartmentExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNull() {
+ addCriterion("outerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNotNull() {
+ addCriterion("outerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneEqualTo(String value) {
+ addCriterion("outerphone =", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotEqualTo(String value) {
+ addCriterion("outerphone <>", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThan(String value) {
+ addCriterion("outerphone >", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("outerphone >=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThan(String value) {
+ addCriterion("outerphone <", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThanOrEqualTo(String value) {
+ addCriterion("outerphone <=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLike(String value) {
+ addCriterion("outerphone like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotLike(String value) {
+ addCriterion("outerphone not like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIn(List<String> values) {
+ addCriterion("outerphone in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotIn(List<String> values) {
+ addCriterion("outerphone not in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneBetween(String value1, String value2) {
+ addCriterion("outerphone between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotBetween(String value1, String value2) {
+ addCriterion("outerphone not between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNull() {
+ addCriterion("innerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNotNull() {
+ addCriterion("innerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneEqualTo(String value) {
+ addCriterion("innerphone =", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotEqualTo(String value) {
+ addCriterion("innerphone <>", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThan(String value) {
+ addCriterion("innerphone >", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("innerphone >=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThan(String value) {
+ addCriterion("innerphone <", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThanOrEqualTo(String value) {
+ addCriterion("innerphone <=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLike(String value) {
+ addCriterion("innerphone like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotLike(String value) {
+ addCriterion("innerphone not like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIn(List<String> values) {
+ addCriterion("innerphone in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotIn(List<String> values) {
+ addCriterion("innerphone not in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneBetween(String value1, String value2) {
+ addCriterion("innerphone between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotBetween(String value1, String value2) {
+ addCriterion("innerphone not between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNull() {
+ addCriterion("supervisor is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNotNull() {
+ addCriterion("supervisor is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorEqualTo(String value) {
+ addCriterion("supervisor =", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotEqualTo(String value) {
+ addCriterion("supervisor <>", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThan(String value) {
+ addCriterion("supervisor >", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisor >=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThan(String value) {
+ addCriterion("supervisor <", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThanOrEqualTo(String value) {
+ addCriterion("supervisor <=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLike(String value) {
+ addCriterion("supervisor like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotLike(String value) {
+ addCriterion("supervisor not like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIn(List<String> values) {
+ addCriterion("supervisor in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotIn(List<String> values) {
+ addCriterion("supervisor not in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorBetween(String value1, String value2) {
+ addCriterion("supervisor between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotBetween(String value1, String value2) {
+ addCriterion("supervisor not between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNull() {
+ addCriterion("supervisorassistant is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNotNull() {
+ addCriterion("supervisorassistant is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantEqualTo(String value) {
+ addCriterion("supervisorassistant =", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotEqualTo(String value) {
+ addCriterion("supervisorassistant <>", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThan(String value) {
+ addCriterion("supervisorassistant >", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant >=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThan(String value) {
+ addCriterion("supervisorassistant <", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant <=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLike(String value) {
+ addCriterion("supervisorassistant like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotLike(String value) {
+ addCriterion("supervisorassistant not like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIn(List<String> values) {
+ addCriterion("supervisorassistant in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotIn(List<String> values) {
+ addCriterion("supervisorassistant not in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantBetween(String value1, String value2) {
+ addCriterion("supervisorassistant between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotBetween(String value1, String value2) {
+ addCriterion("supervisorassistant not between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNull() {
+ addCriterion("fax is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNotNull() {
+ addCriterion("fax is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxEqualTo(String value) {
+ addCriterion("fax =", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotEqualTo(String value) {
+ addCriterion("fax <>", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThan(String value) {
+ addCriterion("fax >", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThanOrEqualTo(String value) {
+ addCriterion("fax >=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThan(String value) {
+ addCriterion("fax <", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThanOrEqualTo(String value) {
+ addCriterion("fax <=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLike(String value) {
+ addCriterion("fax like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotLike(String value) {
+ addCriterion("fax not like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIn(List<String> values) {
+ addCriterion("fax in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotIn(List<String> values) {
+ addCriterion("fax not in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxBetween(String value1, String value2) {
+ addCriterion("fax between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotBetween(String value1, String value2) {
+ addCriterion("fax not between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNull() {
+ addCriterion("zipcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNotNull() {
+ addCriterion("zipcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeEqualTo(String value) {
+ addCriterion("zipcode =", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotEqualTo(String value) {
+ addCriterion("zipcode <>", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThan(String value) {
+ addCriterion("zipcode >", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("zipcode >=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThan(String value) {
+ addCriterion("zipcode <", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThanOrEqualTo(String value) {
+ addCriterion("zipcode <=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLike(String value) {
+ addCriterion("zipcode like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotLike(String value) {
+ addCriterion("zipcode not like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIn(List<String> values) {
+ addCriterion("zipcode in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotIn(List<String> values) {
+ addCriterion("zipcode not in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeBetween(String value1, String value2) {
+ addCriterion("zipcode between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotBetween(String value1, String value2) {
+ addCriterion("zipcode not between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNull() {
+ addCriterion("address is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNotNull() {
+ addCriterion("address is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressEqualTo(String value) {
+ addCriterion("address =", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotEqualTo(String value) {
+ addCriterion("address <>", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThan(String value) {
+ addCriterion("address >", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThanOrEqualTo(String value) {
+ addCriterion("address >=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThan(String value) {
+ addCriterion("address <", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThanOrEqualTo(String value) {
+ addCriterion("address <=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLike(String value) {
+ addCriterion("address like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotLike(String value) {
+ addCriterion("address not like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIn(List<String> values) {
+ addCriterion("address in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotIn(List<String> values) {
+ addCriterion("address not in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressBetween(String value1, String value2) {
+ addCriterion("address between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotBetween(String value1, String value2) {
+ addCriterion("address not between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNull() {
+ addCriterion("deplevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNotNull() {
+ addCriterion("deplevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelEqualTo(Integer value) {
+ addCriterion("deplevel =", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotEqualTo(Integer value) {
+ addCriterion("deplevel <>", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThan(Integer value) {
+ addCriterion("deplevel >", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("deplevel >=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThan(Integer value) {
+ addCriterion("deplevel <", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThanOrEqualTo(Integer value) {
+ addCriterion("deplevel <=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIn(List<Integer> values) {
+ addCriterion("deplevel in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotIn(List<Integer> values) {
+ addCriterion("deplevel not in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel not between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNull() {
+ addCriterion("organizationid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNotNull() {
+ addCriterion("organizationid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidEqualTo(String value) {
+ addCriterion("organizationid =", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotEqualTo(String value) {
+ addCriterion("organizationid <>", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThan(String value) {
+ addCriterion("organizationid >", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationid >=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThan(String value) {
+ addCriterion("organizationid <", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThanOrEqualTo(String value) {
+ addCriterion("organizationid <=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLike(String value) {
+ addCriterion("organizationid like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotLike(String value) {
+ addCriterion("organizationid not like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIn(List<String> values) {
+ addCriterion("organizationid in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotIn(List<String> values) {
+ addCriterion("organizationid not in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidBetween(String value1, String value2) {
+ addCriterion("organizationid between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotBetween(String value1, String value2) {
+ addCriterion("organizationid not between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNull() {
+ addCriterion("organizationname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNotNull() {
+ addCriterion("organizationname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameEqualTo(String value) {
+ addCriterion("organizationname =", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotEqualTo(String value) {
+ addCriterion("organizationname <>", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThan(String value) {
+ addCriterion("organizationname >", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationname >=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThan(String value) {
+ addCriterion("organizationname <", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThanOrEqualTo(String value) {
+ addCriterion("organizationname <=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLike(String value) {
+ addCriterion("organizationname like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotLike(String value) {
+ addCriterion("organizationname not like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIn(List<String> values) {
+ addCriterion("organizationname in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotIn(List<String> values) {
+ addCriterion("organizationname not in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameBetween(String value1, String value2) {
+ addCriterion("organizationname between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotBetween(String value1, String value2) {
+ addCriterion("organizationname not between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNull() {
+ addCriterion("organizationcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNotNull() {
+ addCriterion("organizationcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeEqualTo(String value) {
+ addCriterion("organizationcode =", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotEqualTo(String value) {
+ addCriterion("organizationcode <>", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThan(String value) {
+ addCriterion("organizationcode >", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationcode >=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThan(String value) {
+ addCriterion("organizationcode <", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThanOrEqualTo(String value) {
+ addCriterion("organizationcode <=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLike(String value) {
+ addCriterion("organizationcode like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotLike(String value) {
+ addCriterion("organizationcode not like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIn(List<String> values) {
+ addCriterion("organizationcode in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotIn(List<String> values) {
+ addCriterion("organizationcode not in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeBetween(String value1, String value2) {
+ addCriterion("organizationcode between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotBetween(String value1, String value2) {
+ addCriterion("organizationcode not between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGrade.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGrade.java
new file mode 100644
index 0000000..8639246
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGrade.java
@@ -0,0 +1,265 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class OrganizationGrade {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGradeExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGradeExample.java
new file mode 100644
index 0000000..5048fdd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationGradeExample.java
@@ -0,0 +1,2073 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrganizationGradeExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrganizationGradeExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationGradeExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationGradeExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_grade
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationGradeExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNull() {
+ addCriterion("outerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNotNull() {
+ addCriterion("outerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneEqualTo(String value) {
+ addCriterion("outerphone =", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotEqualTo(String value) {
+ addCriterion("outerphone <>", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThan(String value) {
+ addCriterion("outerphone >", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("outerphone >=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThan(String value) {
+ addCriterion("outerphone <", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThanOrEqualTo(String value) {
+ addCriterion("outerphone <=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLike(String value) {
+ addCriterion("outerphone like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotLike(String value) {
+ addCriterion("outerphone not like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIn(List<String> values) {
+ addCriterion("outerphone in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotIn(List<String> values) {
+ addCriterion("outerphone not in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneBetween(String value1, String value2) {
+ addCriterion("outerphone between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotBetween(String value1, String value2) {
+ addCriterion("outerphone not between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNull() {
+ addCriterion("innerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNotNull() {
+ addCriterion("innerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneEqualTo(String value) {
+ addCriterion("innerphone =", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotEqualTo(String value) {
+ addCriterion("innerphone <>", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThan(String value) {
+ addCriterion("innerphone >", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("innerphone >=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThan(String value) {
+ addCriterion("innerphone <", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThanOrEqualTo(String value) {
+ addCriterion("innerphone <=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLike(String value) {
+ addCriterion("innerphone like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotLike(String value) {
+ addCriterion("innerphone not like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIn(List<String> values) {
+ addCriterion("innerphone in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotIn(List<String> values) {
+ addCriterion("innerphone not in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneBetween(String value1, String value2) {
+ addCriterion("innerphone between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotBetween(String value1, String value2) {
+ addCriterion("innerphone not between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNull() {
+ addCriterion("supervisor is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNotNull() {
+ addCriterion("supervisor is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorEqualTo(String value) {
+ addCriterion("supervisor =", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotEqualTo(String value) {
+ addCriterion("supervisor <>", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThan(String value) {
+ addCriterion("supervisor >", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisor >=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThan(String value) {
+ addCriterion("supervisor <", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThanOrEqualTo(String value) {
+ addCriterion("supervisor <=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLike(String value) {
+ addCriterion("supervisor like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotLike(String value) {
+ addCriterion("supervisor not like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIn(List<String> values) {
+ addCriterion("supervisor in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotIn(List<String> values) {
+ addCriterion("supervisor not in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorBetween(String value1, String value2) {
+ addCriterion("supervisor between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotBetween(String value1, String value2) {
+ addCriterion("supervisor not between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNull() {
+ addCriterion("supervisorassistant is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNotNull() {
+ addCriterion("supervisorassistant is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantEqualTo(String value) {
+ addCriterion("supervisorassistant =", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotEqualTo(String value) {
+ addCriterion("supervisorassistant <>", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThan(String value) {
+ addCriterion("supervisorassistant >", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant >=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThan(String value) {
+ addCriterion("supervisorassistant <", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant <=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLike(String value) {
+ addCriterion("supervisorassistant like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotLike(String value) {
+ addCriterion("supervisorassistant not like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIn(List<String> values) {
+ addCriterion("supervisorassistant in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotIn(List<String> values) {
+ addCriterion("supervisorassistant not in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantBetween(String value1, String value2) {
+ addCriterion("supervisorassistant between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotBetween(String value1, String value2) {
+ addCriterion("supervisorassistant not between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNull() {
+ addCriterion("fax is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNotNull() {
+ addCriterion("fax is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxEqualTo(String value) {
+ addCriterion("fax =", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotEqualTo(String value) {
+ addCriterion("fax <>", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThan(String value) {
+ addCriterion("fax >", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThanOrEqualTo(String value) {
+ addCriterion("fax >=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThan(String value) {
+ addCriterion("fax <", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThanOrEqualTo(String value) {
+ addCriterion("fax <=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLike(String value) {
+ addCriterion("fax like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotLike(String value) {
+ addCriterion("fax not like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIn(List<String> values) {
+ addCriterion("fax in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotIn(List<String> values) {
+ addCriterion("fax not in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxBetween(String value1, String value2) {
+ addCriterion("fax between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotBetween(String value1, String value2) {
+ addCriterion("fax not between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNull() {
+ addCriterion("zipcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNotNull() {
+ addCriterion("zipcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeEqualTo(String value) {
+ addCriterion("zipcode =", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotEqualTo(String value) {
+ addCriterion("zipcode <>", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThan(String value) {
+ addCriterion("zipcode >", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("zipcode >=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThan(String value) {
+ addCriterion("zipcode <", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThanOrEqualTo(String value) {
+ addCriterion("zipcode <=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLike(String value) {
+ addCriterion("zipcode like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotLike(String value) {
+ addCriterion("zipcode not like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIn(List<String> values) {
+ addCriterion("zipcode in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotIn(List<String> values) {
+ addCriterion("zipcode not in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeBetween(String value1, String value2) {
+ addCriterion("zipcode between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotBetween(String value1, String value2) {
+ addCriterion("zipcode not between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNull() {
+ addCriterion("address is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNotNull() {
+ addCriterion("address is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressEqualTo(String value) {
+ addCriterion("address =", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotEqualTo(String value) {
+ addCriterion("address <>", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThan(String value) {
+ addCriterion("address >", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThanOrEqualTo(String value) {
+ addCriterion("address >=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThan(String value) {
+ addCriterion("address <", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThanOrEqualTo(String value) {
+ addCriterion("address <=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLike(String value) {
+ addCriterion("address like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotLike(String value) {
+ addCriterion("address not like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIn(List<String> values) {
+ addCriterion("address in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotIn(List<String> values) {
+ addCriterion("address not in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressBetween(String value1, String value2) {
+ addCriterion("address between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotBetween(String value1, String value2) {
+ addCriterion("address not between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNull() {
+ addCriterion("deplevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNotNull() {
+ addCriterion("deplevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelEqualTo(Integer value) {
+ addCriterion("deplevel =", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotEqualTo(Integer value) {
+ addCriterion("deplevel <>", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThan(Integer value) {
+ addCriterion("deplevel >", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("deplevel >=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThan(Integer value) {
+ addCriterion("deplevel <", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThanOrEqualTo(Integer value) {
+ addCriterion("deplevel <=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIn(List<Integer> values) {
+ addCriterion("deplevel in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotIn(List<Integer> values) {
+ addCriterion("deplevel not in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel not between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNull() {
+ addCriterion("organizationid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNotNull() {
+ addCriterion("organizationid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidEqualTo(String value) {
+ addCriterion("organizationid =", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotEqualTo(String value) {
+ addCriterion("organizationid <>", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThan(String value) {
+ addCriterion("organizationid >", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationid >=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThan(String value) {
+ addCriterion("organizationid <", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThanOrEqualTo(String value) {
+ addCriterion("organizationid <=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLike(String value) {
+ addCriterion("organizationid like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotLike(String value) {
+ addCriterion("organizationid not like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIn(List<String> values) {
+ addCriterion("organizationid in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotIn(List<String> values) {
+ addCriterion("organizationid not in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidBetween(String value1, String value2) {
+ addCriterion("organizationid between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotBetween(String value1, String value2) {
+ addCriterion("organizationid not between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNull() {
+ addCriterion("organizationname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNotNull() {
+ addCriterion("organizationname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameEqualTo(String value) {
+ addCriterion("organizationname =", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotEqualTo(String value) {
+ addCriterion("organizationname <>", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThan(String value) {
+ addCriterion("organizationname >", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationname >=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThan(String value) {
+ addCriterion("organizationname <", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThanOrEqualTo(String value) {
+ addCriterion("organizationname <=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLike(String value) {
+ addCriterion("organizationname like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotLike(String value) {
+ addCriterion("organizationname not like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIn(List<String> values) {
+ addCriterion("organizationname in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotIn(List<String> values) {
+ addCriterion("organizationname not in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameBetween(String value1, String value2) {
+ addCriterion("organizationname between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotBetween(String value1, String value2) {
+ addCriterion("organizationname not between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNull() {
+ addCriterion("organizationcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNotNull() {
+ addCriterion("organizationcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeEqualTo(String value) {
+ addCriterion("organizationcode =", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotEqualTo(String value) {
+ addCriterion("organizationcode <>", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThan(String value) {
+ addCriterion("organizationcode >", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationcode >=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThan(String value) {
+ addCriterion("organizationcode <", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThanOrEqualTo(String value) {
+ addCriterion("organizationcode <=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLike(String value) {
+ addCriterion("organizationcode like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotLike(String value) {
+ addCriterion("organizationcode not like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIn(List<String> values) {
+ addCriterion("organizationcode in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotIn(List<String> values) {
+ addCriterion("organizationcode not in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeBetween(String value1, String value2) {
+ addCriterion("organizationcode between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotBetween(String value1, String value2) {
+ addCriterion("organizationcode not between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNull() {
+ addCriterion("departmentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNotNull() {
+ addCriterion("departmentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidEqualTo(String value) {
+ addCriterion("departmentid =", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotEqualTo(String value) {
+ addCriterion("departmentid <>", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThan(String value) {
+ addCriterion("departmentid >", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentid >=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThan(String value) {
+ addCriterion("departmentid <", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThanOrEqualTo(String value) {
+ addCriterion("departmentid <=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLike(String value) {
+ addCriterion("departmentid like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotLike(String value) {
+ addCriterion("departmentid not like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIn(List<String> values) {
+ addCriterion("departmentid in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotIn(List<String> values) {
+ addCriterion("departmentid not in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidBetween(String value1, String value2) {
+ addCriterion("departmentid between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotBetween(String value1, String value2) {
+ addCriterion("departmentid not between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNull() {
+ addCriterion("departmentname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNotNull() {
+ addCriterion("departmentname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameEqualTo(String value) {
+ addCriterion("departmentname =", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotEqualTo(String value) {
+ addCriterion("departmentname <>", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThan(String value) {
+ addCriterion("departmentname >", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentname >=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThan(String value) {
+ addCriterion("departmentname <", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThanOrEqualTo(String value) {
+ addCriterion("departmentname <=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLike(String value) {
+ addCriterion("departmentname like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotLike(String value) {
+ addCriterion("departmentname not like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIn(List<String> values) {
+ addCriterion("departmentname in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotIn(List<String> values) {
+ addCriterion("departmentname not in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameBetween(String value1, String value2) {
+ addCriterion("departmentname between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotBetween(String value1, String value2) {
+ addCriterion("departmentname not between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNull() {
+ addCriterion("departmentcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNotNull() {
+ addCriterion("departmentcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeEqualTo(String value) {
+ addCriterion("departmentcode =", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotEqualTo(String value) {
+ addCriterion("departmentcode <>", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThan(String value) {
+ addCriterion("departmentcode >", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentcode >=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThan(String value) {
+ addCriterion("departmentcode <", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThanOrEqualTo(String value) {
+ addCriterion("departmentcode <=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLike(String value) {
+ addCriterion("departmentcode like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotLike(String value) {
+ addCriterion("departmentcode not like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIn(List<String> values) {
+ addCriterion("departmentcode in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotIn(List<String> values) {
+ addCriterion("departmentcode not in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeBetween(String value1, String value2) {
+ addCriterion("departmentcode between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotBetween(String value1, String value2) {
+ addCriterion("departmentcode not between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIsNull() {
+ addCriterion("majorid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIsNotNull() {
+ addCriterion("majorid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridEqualTo(String value) {
+ addCriterion("majorid =", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotEqualTo(String value) {
+ addCriterion("majorid <>", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridGreaterThan(String value) {
+ addCriterion("majorid >", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridGreaterThanOrEqualTo(String value) {
+ addCriterion("majorid >=", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLessThan(String value) {
+ addCriterion("majorid <", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLessThanOrEqualTo(String value) {
+ addCriterion("majorid <=", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLike(String value) {
+ addCriterion("majorid like", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotLike(String value) {
+ addCriterion("majorid not like", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIn(List<String> values) {
+ addCriterion("majorid in", values, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotIn(List<String> values) {
+ addCriterion("majorid not in", values, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridBetween(String value1, String value2) {
+ addCriterion("majorid between", value1, value2, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotBetween(String value1, String value2) {
+ addCriterion("majorid not between", value1, value2, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIsNull() {
+ addCriterion("majorname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIsNotNull() {
+ addCriterion("majorname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameEqualTo(String value) {
+ addCriterion("majorname =", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotEqualTo(String value) {
+ addCriterion("majorname <>", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameGreaterThan(String value) {
+ addCriterion("majorname >", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameGreaterThanOrEqualTo(String value) {
+ addCriterion("majorname >=", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLessThan(String value) {
+ addCriterion("majorname <", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLessThanOrEqualTo(String value) {
+ addCriterion("majorname <=", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLike(String value) {
+ addCriterion("majorname like", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotLike(String value) {
+ addCriterion("majorname not like", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIn(List<String> values) {
+ addCriterion("majorname in", values, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotIn(List<String> values) {
+ addCriterion("majorname not in", values, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameBetween(String value1, String value2) {
+ addCriterion("majorname between", value1, value2, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotBetween(String value1, String value2) {
+ addCriterion("majorname not between", value1, value2, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIsNull() {
+ addCriterion("majorcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIsNotNull() {
+ addCriterion("majorcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeEqualTo(String value) {
+ addCriterion("majorcode =", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotEqualTo(String value) {
+ addCriterion("majorcode <>", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeGreaterThan(String value) {
+ addCriterion("majorcode >", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("majorcode >=", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLessThan(String value) {
+ addCriterion("majorcode <", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLessThanOrEqualTo(String value) {
+ addCriterion("majorcode <=", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLike(String value) {
+ addCriterion("majorcode like", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotLike(String value) {
+ addCriterion("majorcode not like", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIn(List<String> values) {
+ addCriterion("majorcode in", values, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotIn(List<String> values) {
+ addCriterion("majorcode not in", values, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeBetween(String value1, String value2) {
+ addCriterion("majorcode between", value1, value2, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotBetween(String value1, String value2) {
+ addCriterion("majorcode not between", value1, value2, "majorcode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajor.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajor.java
new file mode 100644
index 0000000..54b9b27
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajor.java
@@ -0,0 +1,155 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class OrganizationMajor {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajorExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajorExample.java
new file mode 100644
index 0000000..2ab6ae6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMajorExample.java
@@ -0,0 +1,1313 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrganizationMajorExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrganizationMajorExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationMajorExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationMajorExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_major
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationMajorExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNull() {
+ addCriterion("organizationid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNotNull() {
+ addCriterion("organizationid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidEqualTo(String value) {
+ addCriterion("organizationid =", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotEqualTo(String value) {
+ addCriterion("organizationid <>", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThan(String value) {
+ addCriterion("organizationid >", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationid >=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThan(String value) {
+ addCriterion("organizationid <", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThanOrEqualTo(String value) {
+ addCriterion("organizationid <=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLike(String value) {
+ addCriterion("organizationid like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotLike(String value) {
+ addCriterion("organizationid not like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIn(List<String> values) {
+ addCriterion("organizationid in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotIn(List<String> values) {
+ addCriterion("organizationid not in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidBetween(String value1, String value2) {
+ addCriterion("organizationid between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotBetween(String value1, String value2) {
+ addCriterion("organizationid not between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNull() {
+ addCriterion("organizationname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNotNull() {
+ addCriterion("organizationname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameEqualTo(String value) {
+ addCriterion("organizationname =", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotEqualTo(String value) {
+ addCriterion("organizationname <>", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThan(String value) {
+ addCriterion("organizationname >", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationname >=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThan(String value) {
+ addCriterion("organizationname <", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThanOrEqualTo(String value) {
+ addCriterion("organizationname <=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLike(String value) {
+ addCriterion("organizationname like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotLike(String value) {
+ addCriterion("organizationname not like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIn(List<String> values) {
+ addCriterion("organizationname in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotIn(List<String> values) {
+ addCriterion("organizationname not in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameBetween(String value1, String value2) {
+ addCriterion("organizationname between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotBetween(String value1, String value2) {
+ addCriterion("organizationname not between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNull() {
+ addCriterion("organizationcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNotNull() {
+ addCriterion("organizationcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeEqualTo(String value) {
+ addCriterion("organizationcode =", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotEqualTo(String value) {
+ addCriterion("organizationcode <>", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThan(String value) {
+ addCriterion("organizationcode >", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationcode >=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThan(String value) {
+ addCriterion("organizationcode <", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThanOrEqualTo(String value) {
+ addCriterion("organizationcode <=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLike(String value) {
+ addCriterion("organizationcode like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotLike(String value) {
+ addCriterion("organizationcode not like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIn(List<String> values) {
+ addCriterion("organizationcode in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotIn(List<String> values) {
+ addCriterion("organizationcode not in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeBetween(String value1, String value2) {
+ addCriterion("organizationcode between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotBetween(String value1, String value2) {
+ addCriterion("organizationcode not between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNull() {
+ addCriterion("departmentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNotNull() {
+ addCriterion("departmentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidEqualTo(String value) {
+ addCriterion("departmentid =", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotEqualTo(String value) {
+ addCriterion("departmentid <>", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThan(String value) {
+ addCriterion("departmentid >", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentid >=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThan(String value) {
+ addCriterion("departmentid <", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThanOrEqualTo(String value) {
+ addCriterion("departmentid <=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLike(String value) {
+ addCriterion("departmentid like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotLike(String value) {
+ addCriterion("departmentid not like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIn(List<String> values) {
+ addCriterion("departmentid in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotIn(List<String> values) {
+ addCriterion("departmentid not in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidBetween(String value1, String value2) {
+ addCriterion("departmentid between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotBetween(String value1, String value2) {
+ addCriterion("departmentid not between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNull() {
+ addCriterion("departmentname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNotNull() {
+ addCriterion("departmentname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameEqualTo(String value) {
+ addCriterion("departmentname =", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotEqualTo(String value) {
+ addCriterion("departmentname <>", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThan(String value) {
+ addCriterion("departmentname >", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentname >=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThan(String value) {
+ addCriterion("departmentname <", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThanOrEqualTo(String value) {
+ addCriterion("departmentname <=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLike(String value) {
+ addCriterion("departmentname like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotLike(String value) {
+ addCriterion("departmentname not like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIn(List<String> values) {
+ addCriterion("departmentname in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotIn(List<String> values) {
+ addCriterion("departmentname not in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameBetween(String value1, String value2) {
+ addCriterion("departmentname between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotBetween(String value1, String value2) {
+ addCriterion("departmentname not between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNull() {
+ addCriterion("departmentcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNotNull() {
+ addCriterion("departmentcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeEqualTo(String value) {
+ addCriterion("departmentcode =", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotEqualTo(String value) {
+ addCriterion("departmentcode <>", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThan(String value) {
+ addCriterion("departmentcode >", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentcode >=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThan(String value) {
+ addCriterion("departmentcode <", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThanOrEqualTo(String value) {
+ addCriterion("departmentcode <=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLike(String value) {
+ addCriterion("departmentcode like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotLike(String value) {
+ addCriterion("departmentcode not like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIn(List<String> values) {
+ addCriterion("departmentcode in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotIn(List<String> values) {
+ addCriterion("departmentcode not in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeBetween(String value1, String value2) {
+ addCriterion("departmentcode between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotBetween(String value1, String value2) {
+ addCriterion("departmentcode not between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMaster.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMaster.java
new file mode 100644
index 0000000..a6b6e8b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMaster.java
@@ -0,0 +1,175 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class OrganizationMaster {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMasterExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMasterExample.java
new file mode 100644
index 0000000..440f489
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/OrganizationMasterExample.java
@@ -0,0 +1,1443 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class OrganizationMasterExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public OrganizationMasterExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationMasterExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationMasterExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..organization_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public OrganizationMasterExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNull() {
+ addCriterion("outerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIsNotNull() {
+ addCriterion("outerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneEqualTo(String value) {
+ addCriterion("outerphone =", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotEqualTo(String value) {
+ addCriterion("outerphone <>", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThan(String value) {
+ addCriterion("outerphone >", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("outerphone >=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThan(String value) {
+ addCriterion("outerphone <", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLessThanOrEqualTo(String value) {
+ addCriterion("outerphone <=", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneLike(String value) {
+ addCriterion("outerphone like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotLike(String value) {
+ addCriterion("outerphone not like", value, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneIn(List<String> values) {
+ addCriterion("outerphone in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotIn(List<String> values) {
+ addCriterion("outerphone not in", values, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneBetween(String value1, String value2) {
+ addCriterion("outerphone between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andOuterphoneNotBetween(String value1, String value2) {
+ addCriterion("outerphone not between", value1, value2, "outerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNull() {
+ addCriterion("innerphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIsNotNull() {
+ addCriterion("innerphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneEqualTo(String value) {
+ addCriterion("innerphone =", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotEqualTo(String value) {
+ addCriterion("innerphone <>", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThan(String value) {
+ addCriterion("innerphone >", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("innerphone >=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThan(String value) {
+ addCriterion("innerphone <", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLessThanOrEqualTo(String value) {
+ addCriterion("innerphone <=", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneLike(String value) {
+ addCriterion("innerphone like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotLike(String value) {
+ addCriterion("innerphone not like", value, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneIn(List<String> values) {
+ addCriterion("innerphone in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotIn(List<String> values) {
+ addCriterion("innerphone not in", values, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneBetween(String value1, String value2) {
+ addCriterion("innerphone between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andInnerphoneNotBetween(String value1, String value2) {
+ addCriterion("innerphone not between", value1, value2, "innerphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNull() {
+ addCriterion("supervisor is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIsNotNull() {
+ addCriterion("supervisor is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorEqualTo(String value) {
+ addCriterion("supervisor =", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotEqualTo(String value) {
+ addCriterion("supervisor <>", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThan(String value) {
+ addCriterion("supervisor >", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisor >=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThan(String value) {
+ addCriterion("supervisor <", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLessThanOrEqualTo(String value) {
+ addCriterion("supervisor <=", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorLike(String value) {
+ addCriterion("supervisor like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotLike(String value) {
+ addCriterion("supervisor not like", value, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorIn(List<String> values) {
+ addCriterion("supervisor in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotIn(List<String> values) {
+ addCriterion("supervisor not in", values, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorBetween(String value1, String value2) {
+ addCriterion("supervisor between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorNotBetween(String value1, String value2) {
+ addCriterion("supervisor not between", value1, value2, "supervisor");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNull() {
+ addCriterion("supervisorassistant is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIsNotNull() {
+ addCriterion("supervisorassistant is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantEqualTo(String value) {
+ addCriterion("supervisorassistant =", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotEqualTo(String value) {
+ addCriterion("supervisorassistant <>", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThan(String value) {
+ addCriterion("supervisorassistant >", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantGreaterThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant >=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThan(String value) {
+ addCriterion("supervisorassistant <", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLessThanOrEqualTo(String value) {
+ addCriterion("supervisorassistant <=", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantLike(String value) {
+ addCriterion("supervisorassistant like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotLike(String value) {
+ addCriterion("supervisorassistant not like", value, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantIn(List<String> values) {
+ addCriterion("supervisorassistant in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotIn(List<String> values) {
+ addCriterion("supervisorassistant not in", values, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantBetween(String value1, String value2) {
+ addCriterion("supervisorassistant between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andSupervisorassistantNotBetween(String value1, String value2) {
+ addCriterion("supervisorassistant not between", value1, value2, "supervisorassistant");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNull() {
+ addCriterion("fax is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIsNotNull() {
+ addCriterion("fax is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxEqualTo(String value) {
+ addCriterion("fax =", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotEqualTo(String value) {
+ addCriterion("fax <>", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThan(String value) {
+ addCriterion("fax >", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxGreaterThanOrEqualTo(String value) {
+ addCriterion("fax >=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThan(String value) {
+ addCriterion("fax <", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLessThanOrEqualTo(String value) {
+ addCriterion("fax <=", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxLike(String value) {
+ addCriterion("fax like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotLike(String value) {
+ addCriterion("fax not like", value, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxIn(List<String> values) {
+ addCriterion("fax in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotIn(List<String> values) {
+ addCriterion("fax not in", values, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxBetween(String value1, String value2) {
+ addCriterion("fax between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andFaxNotBetween(String value1, String value2) {
+ addCriterion("fax not between", value1, value2, "fax");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNull() {
+ addCriterion("zipcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIsNotNull() {
+ addCriterion("zipcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeEqualTo(String value) {
+ addCriterion("zipcode =", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotEqualTo(String value) {
+ addCriterion("zipcode <>", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThan(String value) {
+ addCriterion("zipcode >", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("zipcode >=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThan(String value) {
+ addCriterion("zipcode <", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLessThanOrEqualTo(String value) {
+ addCriterion("zipcode <=", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeLike(String value) {
+ addCriterion("zipcode like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotLike(String value) {
+ addCriterion("zipcode not like", value, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeIn(List<String> values) {
+ addCriterion("zipcode in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotIn(List<String> values) {
+ addCriterion("zipcode not in", values, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeBetween(String value1, String value2) {
+ addCriterion("zipcode between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andZipcodeNotBetween(String value1, String value2) {
+ addCriterion("zipcode not between", value1, value2, "zipcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNull() {
+ addCriterion("address is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIsNotNull() {
+ addCriterion("address is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressEqualTo(String value) {
+ addCriterion("address =", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotEqualTo(String value) {
+ addCriterion("address <>", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThan(String value) {
+ addCriterion("address >", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressGreaterThanOrEqualTo(String value) {
+ addCriterion("address >=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThan(String value) {
+ addCriterion("address <", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLessThanOrEqualTo(String value) {
+ addCriterion("address <=", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressLike(String value) {
+ addCriterion("address like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotLike(String value) {
+ addCriterion("address not like", value, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressIn(List<String> values) {
+ addCriterion("address in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotIn(List<String> values) {
+ addCriterion("address not in", values, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressBetween(String value1, String value2) {
+ addCriterion("address between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andAddressNotBetween(String value1, String value2) {
+ addCriterion("address not between", value1, value2, "address");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNull() {
+ addCriterion("deplevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIsNotNull() {
+ addCriterion("deplevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelEqualTo(Integer value) {
+ addCriterion("deplevel =", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotEqualTo(Integer value) {
+ addCriterion("deplevel <>", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThan(Integer value) {
+ addCriterion("deplevel >", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("deplevel >=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThan(Integer value) {
+ addCriterion("deplevel <", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelLessThanOrEqualTo(Integer value) {
+ addCriterion("deplevel <=", value, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelIn(List<Integer> values) {
+ addCriterion("deplevel in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotIn(List<Integer> values) {
+ addCriterion("deplevel not in", values, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andDeplevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("deplevel not between", value1, value2, "deplevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategory.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategory.java
new file mode 100644
index 0000000..ac8b884
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategory.java
@@ -0,0 +1,95 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionCategory {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategoryExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategoryExample.java
new file mode 100644
index 0000000..91abfef
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionCategoryExample.java
@@ -0,0 +1,893 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionCategoryExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionCategoryExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionCategoryExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionCategoryExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionCategoryExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIsNull() {
+ addCriterion("icon is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIsNotNull() {
+ addCriterion("icon is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconEqualTo(String value) {
+ addCriterion("icon =", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotEqualTo(String value) {
+ addCriterion("icon <>", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconGreaterThan(String value) {
+ addCriterion("icon >", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconGreaterThanOrEqualTo(String value) {
+ addCriterion("icon >=", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLessThan(String value) {
+ addCriterion("icon <", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLessThanOrEqualTo(String value) {
+ addCriterion("icon <=", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLike(String value) {
+ addCriterion("icon like", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotLike(String value) {
+ addCriterion("icon not like", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIn(List<String> values) {
+ addCriterion("icon in", values, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotIn(List<String> values) {
+ addCriterion("icon not in", values, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconBetween(String value1, String value2) {
+ addCriterion("icon between", value1, value2, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotBetween(String value1, String value2) {
+ addCriterion("icon not between", value1, value2, "icon");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMaster.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMaster.java
new file mode 100644
index 0000000..3834f88
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMaster.java
@@ -0,0 +1,186 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class QuestionMaster {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private Integer level;
+
+ private BigDecimal score;
+
+ private String knowledgepointid;
+
+ private String knowledgepointname;
+
+ private String knowledgepointcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public BigDecimal getScore() {
+ return score;
+ }
+
+ public void setScore(BigDecimal score) {
+ this.score = score;
+ }
+
+ public String getKnowledgepointid() {
+ return knowledgepointid;
+ }
+
+ public void setKnowledgepointid(String knowledgepointid) {
+ this.knowledgepointid = knowledgepointid == null ? null : knowledgepointid.trim();
+ }
+
+ public String getKnowledgepointname() {
+ return knowledgepointname;
+ }
+
+ public void setKnowledgepointname(String knowledgepointname) {
+ this.knowledgepointname = knowledgepointname == null ? null : knowledgepointname.trim();
+ }
+
+ public String getKnowledgepointcode() {
+ return knowledgepointcode;
+ }
+
+ public void setKnowledgepointcode(String knowledgepointcode) {
+ this.knowledgepointcode = knowledgepointcode == null ? null : knowledgepointcode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswer.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswer.java
new file mode 100644
index 0000000..72eed99
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswer.java
@@ -0,0 +1,85 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionMasterAnswer {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String qkey;
+
+ private Integer sequenceno;
+
+ private String qvalue;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getQkey() {
+ return qkey;
+ }
+
+ public void setQkey(String qkey) {
+ this.qkey = qkey == null ? null : qkey.trim();
+ }
+
+ public Integer getSequenceno() {
+ return sequenceno;
+ }
+
+ public void setSequenceno(Integer sequenceno) {
+ this.sequenceno = sequenceno;
+ }
+
+ public String getQvalue() {
+ return qvalue;
+ }
+
+ public void setQvalue(String qvalue) {
+ this.qvalue = qvalue == null ? null : qvalue.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswerExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswerExample.java
new file mode 100644
index 0000000..64bcd59
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterAnswerExample.java
@@ -0,0 +1,763 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionMasterAnswerExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionMasterAnswerExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterAnswerExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterAnswerExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_answer
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterAnswerExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNull() {
+ addCriterion("masterid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNotNull() {
+ addCriterion("masterid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridEqualTo(String value) {
+ addCriterion("masterid =", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotEqualTo(String value) {
+ addCriterion("masterid <>", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThan(String value) {
+ addCriterion("masterid >", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThanOrEqualTo(String value) {
+ addCriterion("masterid >=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThan(String value) {
+ addCriterion("masterid <", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThanOrEqualTo(String value) {
+ addCriterion("masterid <=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLike(String value) {
+ addCriterion("masterid like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotLike(String value) {
+ addCriterion("masterid not like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIn(List<String> values) {
+ addCriterion("masterid in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotIn(List<String> values) {
+ addCriterion("masterid not in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridBetween(String value1, String value2) {
+ addCriterion("masterid between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotBetween(String value1, String value2) {
+ addCriterion("masterid not between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyIsNull() {
+ addCriterion("qkey is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyIsNotNull() {
+ addCriterion("qkey is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyEqualTo(String value) {
+ addCriterion("qkey =", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotEqualTo(String value) {
+ addCriterion("qkey <>", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyGreaterThan(String value) {
+ addCriterion("qkey >", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyGreaterThanOrEqualTo(String value) {
+ addCriterion("qkey >=", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyLessThan(String value) {
+ addCriterion("qkey <", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyLessThanOrEqualTo(String value) {
+ addCriterion("qkey <=", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyLike(String value) {
+ addCriterion("qkey like", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotLike(String value) {
+ addCriterion("qkey not like", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyIn(List<String> values) {
+ addCriterion("qkey in", values, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotIn(List<String> values) {
+ addCriterion("qkey not in", values, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyBetween(String value1, String value2) {
+ addCriterion("qkey between", value1, value2, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotBetween(String value1, String value2) {
+ addCriterion("qkey not between", value1, value2, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoIsNull() {
+ addCriterion("sequenceno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoIsNotNull() {
+ addCriterion("sequenceno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoEqualTo(Integer value) {
+ addCriterion("sequenceno =", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoNotEqualTo(Integer value) {
+ addCriterion("sequenceno <>", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoGreaterThan(Integer value) {
+ addCriterion("sequenceno >", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoGreaterThanOrEqualTo(Integer value) {
+ addCriterion("sequenceno >=", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoLessThan(Integer value) {
+ addCriterion("sequenceno <", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoLessThanOrEqualTo(Integer value) {
+ addCriterion("sequenceno <=", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoIn(List<Integer> values) {
+ addCriterion("sequenceno in", values, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoNotIn(List<Integer> values) {
+ addCriterion("sequenceno not in", values, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoBetween(Integer value1, Integer value2) {
+ addCriterion("sequenceno between", value1, value2, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoNotBetween(Integer value1, Integer value2) {
+ addCriterion("sequenceno not between", value1, value2, "sequenceno");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterExample.java
new file mode 100644
index 0000000..a31a2a2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterExample.java
@@ -0,0 +1,1504 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionMasterExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionMasterExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNull() {
+ addCriterion("subjectid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNotNull() {
+ addCriterion("subjectid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidEqualTo(String value) {
+ addCriterion("subjectid =", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotEqualTo(String value) {
+ addCriterion("subjectid <>", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThan(String value) {
+ addCriterion("subjectid >", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectid >=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThan(String value) {
+ addCriterion("subjectid <", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThanOrEqualTo(String value) {
+ addCriterion("subjectid <=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLike(String value) {
+ addCriterion("subjectid like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotLike(String value) {
+ addCriterion("subjectid not like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIn(List<String> values) {
+ addCriterion("subjectid in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotIn(List<String> values) {
+ addCriterion("subjectid not in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidBetween(String value1, String value2) {
+ addCriterion("subjectid between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotBetween(String value1, String value2) {
+ addCriterion("subjectid not between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNull() {
+ addCriterion("subjectname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNotNull() {
+ addCriterion("subjectname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameEqualTo(String value) {
+ addCriterion("subjectname =", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotEqualTo(String value) {
+ addCriterion("subjectname <>", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThan(String value) {
+ addCriterion("subjectname >", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectname >=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThan(String value) {
+ addCriterion("subjectname <", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThanOrEqualTo(String value) {
+ addCriterion("subjectname <=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLike(String value) {
+ addCriterion("subjectname like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotLike(String value) {
+ addCriterion("subjectname not like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIn(List<String> values) {
+ addCriterion("subjectname in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotIn(List<String> values) {
+ addCriterion("subjectname not in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameBetween(String value1, String value2) {
+ addCriterion("subjectname between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotBetween(String value1, String value2) {
+ addCriterion("subjectname not between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNull() {
+ addCriterion("subjectcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNotNull() {
+ addCriterion("subjectcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeEqualTo(String value) {
+ addCriterion("subjectcode =", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotEqualTo(String value) {
+ addCriterion("subjectcode <>", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThan(String value) {
+ addCriterion("subjectcode >", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectcode >=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThan(String value) {
+ addCriterion("subjectcode <", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThanOrEqualTo(String value) {
+ addCriterion("subjectcode <=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLike(String value) {
+ addCriterion("subjectcode like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotLike(String value) {
+ addCriterion("subjectcode not like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIn(List<String> values) {
+ addCriterion("subjectcode in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotIn(List<String> values) {
+ addCriterion("subjectcode not in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeBetween(String value1, String value2) {
+ addCriterion("subjectcode between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotBetween(String value1, String value2) {
+ addCriterion("subjectcode not between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidIsNull() {
+ addCriterion("categoryid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidIsNotNull() {
+ addCriterion("categoryid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidEqualTo(String value) {
+ addCriterion("categoryid =", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotEqualTo(String value) {
+ addCriterion("categoryid <>", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidGreaterThan(String value) {
+ addCriterion("categoryid >", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidGreaterThanOrEqualTo(String value) {
+ addCriterion("categoryid >=", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidLessThan(String value) {
+ addCriterion("categoryid <", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidLessThanOrEqualTo(String value) {
+ addCriterion("categoryid <=", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidLike(String value) {
+ addCriterion("categoryid like", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotLike(String value) {
+ addCriterion("categoryid not like", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidIn(List<String> values) {
+ addCriterion("categoryid in", values, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotIn(List<String> values) {
+ addCriterion("categoryid not in", values, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidBetween(String value1, String value2) {
+ addCriterion("categoryid between", value1, value2, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotBetween(String value1, String value2) {
+ addCriterion("categoryid not between", value1, value2, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameIsNull() {
+ addCriterion("categoryname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameIsNotNull() {
+ addCriterion("categoryname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameEqualTo(String value) {
+ addCriterion("categoryname =", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotEqualTo(String value) {
+ addCriterion("categoryname <>", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameGreaterThan(String value) {
+ addCriterion("categoryname >", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameGreaterThanOrEqualTo(String value) {
+ addCriterion("categoryname >=", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameLessThan(String value) {
+ addCriterion("categoryname <", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameLessThanOrEqualTo(String value) {
+ addCriterion("categoryname <=", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameLike(String value) {
+ addCriterion("categoryname like", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotLike(String value) {
+ addCriterion("categoryname not like", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameIn(List<String> values) {
+ addCriterion("categoryname in", values, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotIn(List<String> values) {
+ addCriterion("categoryname not in", values, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameBetween(String value1, String value2) {
+ addCriterion("categoryname between", value1, value2, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotBetween(String value1, String value2) {
+ addCriterion("categoryname not between", value1, value2, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIsNull() {
+ addCriterion("level is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIsNotNull() {
+ addCriterion("level is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelEqualTo(Integer value) {
+ addCriterion("level =", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotEqualTo(Integer value) {
+ addCriterion("level <>", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelGreaterThan(Integer value) {
+ addCriterion("level >", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("level >=", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelLessThan(Integer value) {
+ addCriterion("level <", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelLessThanOrEqualTo(Integer value) {
+ addCriterion("level <=", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIn(List<Integer> values) {
+ addCriterion("level in", values, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotIn(List<Integer> values) {
+ addCriterion("level not in", values, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelBetween(Integer value1, Integer value2) {
+ addCriterion("level between", value1, value2, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("level not between", value1, value2, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreIsNull() {
+ addCriterion("score is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreIsNotNull() {
+ addCriterion("score is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreEqualTo(BigDecimal value) {
+ addCriterion("score =", value, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreNotEqualTo(BigDecimal value) {
+ addCriterion("score <>", value, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreGreaterThan(BigDecimal value) {
+ addCriterion("score >", value, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("score >=", value, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreLessThan(BigDecimal value) {
+ addCriterion("score <", value, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("score <=", value, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreIn(List<BigDecimal> values) {
+ addCriterion("score in", values, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreNotIn(List<BigDecimal> values) {
+ addCriterion("score not in", values, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("score between", value1, value2, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andScoreNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("score not between", value1, value2, "score");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidIsNull() {
+ addCriterion("knowledgepointid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidIsNotNull() {
+ addCriterion("knowledgepointid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidEqualTo(String value) {
+ addCriterion("knowledgepointid =", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidNotEqualTo(String value) {
+ addCriterion("knowledgepointid <>", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidGreaterThan(String value) {
+ addCriterion("knowledgepointid >", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidGreaterThanOrEqualTo(String value) {
+ addCriterion("knowledgepointid >=", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidLessThan(String value) {
+ addCriterion("knowledgepointid <", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidLessThanOrEqualTo(String value) {
+ addCriterion("knowledgepointid <=", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidLike(String value) {
+ addCriterion("knowledgepointid like", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidNotLike(String value) {
+ addCriterion("knowledgepointid not like", value, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidIn(List<String> values) {
+ addCriterion("knowledgepointid in", values, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidNotIn(List<String> values) {
+ addCriterion("knowledgepointid not in", values, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidBetween(String value1, String value2) {
+ addCriterion("knowledgepointid between", value1, value2, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointidNotBetween(String value1, String value2) {
+ addCriterion("knowledgepointid not between", value1, value2, "knowledgepointid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameIsNull() {
+ addCriterion("knowledgepointname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameIsNotNull() {
+ addCriterion("knowledgepointname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameEqualTo(String value) {
+ addCriterion("knowledgepointname =", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameNotEqualTo(String value) {
+ addCriterion("knowledgepointname <>", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameGreaterThan(String value) {
+ addCriterion("knowledgepointname >", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameGreaterThanOrEqualTo(String value) {
+ addCriterion("knowledgepointname >=", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameLessThan(String value) {
+ addCriterion("knowledgepointname <", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameLessThanOrEqualTo(String value) {
+ addCriterion("knowledgepointname <=", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameLike(String value) {
+ addCriterion("knowledgepointname like", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameNotLike(String value) {
+ addCriterion("knowledgepointname not like", value, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameIn(List<String> values) {
+ addCriterion("knowledgepointname in", values, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameNotIn(List<String> values) {
+ addCriterion("knowledgepointname not in", values, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameBetween(String value1, String value2) {
+ addCriterion("knowledgepointname between", value1, value2, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointnameNotBetween(String value1, String value2) {
+ addCriterion("knowledgepointname not between", value1, value2, "knowledgepointname");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeIsNull() {
+ addCriterion("knowledgepointcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeIsNotNull() {
+ addCriterion("knowledgepointcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeEqualTo(String value) {
+ addCriterion("knowledgepointcode =", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeNotEqualTo(String value) {
+ addCriterion("knowledgepointcode <>", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeGreaterThan(String value) {
+ addCriterion("knowledgepointcode >", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("knowledgepointcode >=", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeLessThan(String value) {
+ addCriterion("knowledgepointcode <", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeLessThanOrEqualTo(String value) {
+ addCriterion("knowledgepointcode <=", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeLike(String value) {
+ addCriterion("knowledgepointcode like", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeNotLike(String value) {
+ addCriterion("knowledgepointcode not like", value, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeIn(List<String> values) {
+ addCriterion("knowledgepointcode in", values, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeNotIn(List<String> values) {
+ addCriterion("knowledgepointcode not in", values, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeBetween(String value1, String value2) {
+ addCriterion("knowledgepointcode between", value1, value2, "knowledgepointcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andKnowledgepointcodeNotBetween(String value1, String value2) {
+ addCriterion("knowledgepointcode not between", value1, value2, "knowledgepointcode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOption.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOption.java
new file mode 100644
index 0000000..04d3d00
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOption.java
@@ -0,0 +1,85 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionMasterOption {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String qkey;
+
+ private Integer sequenceno;
+
+ private String qvalue;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getQkey() {
+ return qkey;
+ }
+
+ public void setQkey(String qkey) {
+ this.qkey = qkey == null ? null : qkey.trim();
+ }
+
+ public Integer getSequenceno() {
+ return sequenceno;
+ }
+
+ public void setSequenceno(Integer sequenceno) {
+ this.sequenceno = sequenceno;
+ }
+
+ public String getQvalue() {
+ return qvalue;
+ }
+
+ public void setQvalue(String qvalue) {
+ this.qvalue = qvalue == null ? null : qvalue.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOptionExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOptionExample.java
new file mode 100644
index 0000000..9f88752
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterOptionExample.java
@@ -0,0 +1,763 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionMasterOptionExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionMasterOptionExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterOptionExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterOptionExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_master_option
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionMasterOptionExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNull() {
+ addCriterion("masterid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNotNull() {
+ addCriterion("masterid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridEqualTo(String value) {
+ addCriterion("masterid =", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotEqualTo(String value) {
+ addCriterion("masterid <>", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThan(String value) {
+ addCriterion("masterid >", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThanOrEqualTo(String value) {
+ addCriterion("masterid >=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThan(String value) {
+ addCriterion("masterid <", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThanOrEqualTo(String value) {
+ addCriterion("masterid <=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLike(String value) {
+ addCriterion("masterid like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotLike(String value) {
+ addCriterion("masterid not like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIn(List<String> values) {
+ addCriterion("masterid in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotIn(List<String> values) {
+ addCriterion("masterid not in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridBetween(String value1, String value2) {
+ addCriterion("masterid between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotBetween(String value1, String value2) {
+ addCriterion("masterid not between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyIsNull() {
+ addCriterion("qkey is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyIsNotNull() {
+ addCriterion("qkey is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyEqualTo(String value) {
+ addCriterion("qkey =", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotEqualTo(String value) {
+ addCriterion("qkey <>", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyGreaterThan(String value) {
+ addCriterion("qkey >", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyGreaterThanOrEqualTo(String value) {
+ addCriterion("qkey >=", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyLessThan(String value) {
+ addCriterion("qkey <", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyLessThanOrEqualTo(String value) {
+ addCriterion("qkey <=", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyLike(String value) {
+ addCriterion("qkey like", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotLike(String value) {
+ addCriterion("qkey not like", value, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyIn(List<String> values) {
+ addCriterion("qkey in", values, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotIn(List<String> values) {
+ addCriterion("qkey not in", values, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyBetween(String value1, String value2) {
+ addCriterion("qkey between", value1, value2, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andQkeyNotBetween(String value1, String value2) {
+ addCriterion("qkey not between", value1, value2, "qkey");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoIsNull() {
+ addCriterion("sequenceno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoIsNotNull() {
+ addCriterion("sequenceno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoEqualTo(Integer value) {
+ addCriterion("sequenceno =", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoNotEqualTo(Integer value) {
+ addCriterion("sequenceno <>", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoGreaterThan(Integer value) {
+ addCriterion("sequenceno >", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoGreaterThanOrEqualTo(Integer value) {
+ addCriterion("sequenceno >=", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoLessThan(Integer value) {
+ addCriterion("sequenceno <", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoLessThanOrEqualTo(Integer value) {
+ addCriterion("sequenceno <=", value, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoIn(List<Integer> values) {
+ addCriterion("sequenceno in", values, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoNotIn(List<Integer> values) {
+ addCriterion("sequenceno not in", values, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoBetween(Integer value1, Integer value2) {
+ addCriterion("sequenceno between", value1, value2, "sequenceno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSequencenoNotBetween(Integer value1, Integer value2) {
+ addCriterion("sequenceno not between", value1, value2, "sequenceno");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterWithBLOBs.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterWithBLOBs.java
new file mode 100644
index 0000000..59998f9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionMasterWithBLOBs.java
@@ -0,0 +1,43 @@
+package com.farriver.bwf.data.master.model;
+
+public class QuestionMasterWithBLOBs extends QuestionMaster {
+ private String stem;
+
+ private String answer;
+
+ private String casebody;
+
+ private String analysis;
+
+ public String getStem() {
+ return stem;
+ }
+
+ public void setStem(String stem) {
+ this.stem = stem == null ? null : stem.trim();
+ }
+
+ public String getAnswer() {
+ return answer;
+ }
+
+ public void setAnswer(String answer) {
+ this.answer = answer == null ? null : answer.trim();
+ }
+
+ public String getCasebody() {
+ return casebody;
+ }
+
+ public void setCasebody(String casebody) {
+ this.casebody = casebody == null ? null : casebody.trim();
+ }
+
+ public String getAnalysis() {
+ return analysis;
+ }
+
+ public void setAnalysis(String analysis) {
+ this.analysis = analysis == null ? null : analysis.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaper.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaper.java
new file mode 100644
index 0000000..d2ae3d1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaper.java
@@ -0,0 +1,166 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class QuestionPaper {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private BigDecimal price;
+
+ private Integer type;
+
+ private String coverimage;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getCoverimage() {
+ return coverimage;
+ }
+
+ public void setCoverimage(String coverimage) {
+ this.coverimage = coverimage == null ? null : coverimage.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategory.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategory.java
new file mode 100644
index 0000000..dcf740b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategory.java
@@ -0,0 +1,95 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionPaperCategory {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategoryExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategoryExample.java
new file mode 100644
index 0000000..cf2d696
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperCategoryExample.java
@@ -0,0 +1,893 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionPaperCategoryExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionPaperCategoryExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperCategoryExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperCategoryExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_category
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperCategoryExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIsNull() {
+ addCriterion("icon is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIsNotNull() {
+ addCriterion("icon is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconEqualTo(String value) {
+ addCriterion("icon =", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotEqualTo(String value) {
+ addCriterion("icon <>", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconGreaterThan(String value) {
+ addCriterion("icon >", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconGreaterThanOrEqualTo(String value) {
+ addCriterion("icon >=", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLessThan(String value) {
+ addCriterion("icon <", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLessThanOrEqualTo(String value) {
+ addCriterion("icon <=", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLike(String value) {
+ addCriterion("icon like", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotLike(String value) {
+ addCriterion("icon not like", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIn(List<String> values) {
+ addCriterion("icon in", values, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotIn(List<String> values) {
+ addCriterion("icon not in", values, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconBetween(String value1, String value2) {
+ addCriterion("icon between", value1, value2, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotBetween(String value1, String value2) {
+ addCriterion("icon not between", value1, value2, "icon");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperExample.java
new file mode 100644
index 0000000..83e4d8f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperExample.java
@@ -0,0 +1,1364 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionPaperExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionPaperExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNull() {
+ addCriterion("subjectid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNotNull() {
+ addCriterion("subjectid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidEqualTo(String value) {
+ addCriterion("subjectid =", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotEqualTo(String value) {
+ addCriterion("subjectid <>", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThan(String value) {
+ addCriterion("subjectid >", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectid >=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThan(String value) {
+ addCriterion("subjectid <", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThanOrEqualTo(String value) {
+ addCriterion("subjectid <=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLike(String value) {
+ addCriterion("subjectid like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotLike(String value) {
+ addCriterion("subjectid not like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIn(List<String> values) {
+ addCriterion("subjectid in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotIn(List<String> values) {
+ addCriterion("subjectid not in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidBetween(String value1, String value2) {
+ addCriterion("subjectid between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotBetween(String value1, String value2) {
+ addCriterion("subjectid not between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNull() {
+ addCriterion("subjectname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNotNull() {
+ addCriterion("subjectname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameEqualTo(String value) {
+ addCriterion("subjectname =", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotEqualTo(String value) {
+ addCriterion("subjectname <>", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThan(String value) {
+ addCriterion("subjectname >", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectname >=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThan(String value) {
+ addCriterion("subjectname <", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThanOrEqualTo(String value) {
+ addCriterion("subjectname <=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLike(String value) {
+ addCriterion("subjectname like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotLike(String value) {
+ addCriterion("subjectname not like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIn(List<String> values) {
+ addCriterion("subjectname in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotIn(List<String> values) {
+ addCriterion("subjectname not in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameBetween(String value1, String value2) {
+ addCriterion("subjectname between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotBetween(String value1, String value2) {
+ addCriterion("subjectname not between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNull() {
+ addCriterion("subjectcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNotNull() {
+ addCriterion("subjectcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeEqualTo(String value) {
+ addCriterion("subjectcode =", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotEqualTo(String value) {
+ addCriterion("subjectcode <>", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThan(String value) {
+ addCriterion("subjectcode >", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectcode >=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThan(String value) {
+ addCriterion("subjectcode <", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThanOrEqualTo(String value) {
+ addCriterion("subjectcode <=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLike(String value) {
+ addCriterion("subjectcode like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotLike(String value) {
+ addCriterion("subjectcode not like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIn(List<String> values) {
+ addCriterion("subjectcode in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotIn(List<String> values) {
+ addCriterion("subjectcode not in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeBetween(String value1, String value2) {
+ addCriterion("subjectcode between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotBetween(String value1, String value2) {
+ addCriterion("subjectcode not between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidIsNull() {
+ addCriterion("categoryid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidIsNotNull() {
+ addCriterion("categoryid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidEqualTo(String value) {
+ addCriterion("categoryid =", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotEqualTo(String value) {
+ addCriterion("categoryid <>", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidGreaterThan(String value) {
+ addCriterion("categoryid >", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidGreaterThanOrEqualTo(String value) {
+ addCriterion("categoryid >=", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidLessThan(String value) {
+ addCriterion("categoryid <", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidLessThanOrEqualTo(String value) {
+ addCriterion("categoryid <=", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidLike(String value) {
+ addCriterion("categoryid like", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotLike(String value) {
+ addCriterion("categoryid not like", value, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidIn(List<String> values) {
+ addCriterion("categoryid in", values, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotIn(List<String> values) {
+ addCriterion("categoryid not in", values, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidBetween(String value1, String value2) {
+ addCriterion("categoryid between", value1, value2, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryidNotBetween(String value1, String value2) {
+ addCriterion("categoryid not between", value1, value2, "categoryid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameIsNull() {
+ addCriterion("categoryname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameIsNotNull() {
+ addCriterion("categoryname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameEqualTo(String value) {
+ addCriterion("categoryname =", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotEqualTo(String value) {
+ addCriterion("categoryname <>", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameGreaterThan(String value) {
+ addCriterion("categoryname >", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameGreaterThanOrEqualTo(String value) {
+ addCriterion("categoryname >=", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameLessThan(String value) {
+ addCriterion("categoryname <", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameLessThanOrEqualTo(String value) {
+ addCriterion("categoryname <=", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameLike(String value) {
+ addCriterion("categoryname like", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotLike(String value) {
+ addCriterion("categoryname not like", value, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameIn(List<String> values) {
+ addCriterion("categoryname in", values, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotIn(List<String> values) {
+ addCriterion("categoryname not in", values, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameBetween(String value1, String value2) {
+ addCriterion("categoryname between", value1, value2, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategorynameNotBetween(String value1, String value2) {
+ addCriterion("categoryname not between", value1, value2, "categoryname");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNull() {
+ addCriterion("price is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNotNull() {
+ addCriterion("price is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceEqualTo(BigDecimal value) {
+ addCriterion("price =", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotEqualTo(BigDecimal value) {
+ addCriterion("price <>", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThan(BigDecimal value) {
+ addCriterion("price >", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("price >=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThan(BigDecimal value) {
+ addCriterion("price <", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("price <=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIn(List<BigDecimal> values) {
+ addCriterion("price in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotIn(List<BigDecimal> values) {
+ addCriterion("price not in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price not between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("type is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("type is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("type =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("type <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("type >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("type >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("type <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("type <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List<Integer> values) {
+ addCriterion("type in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List<Integer> values) {
+ addCriterion("type not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("type between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("type not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageIsNull() {
+ addCriterion("coverimage is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageIsNotNull() {
+ addCriterion("coverimage is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageEqualTo(String value) {
+ addCriterion("coverimage =", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageNotEqualTo(String value) {
+ addCriterion("coverimage <>", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageGreaterThan(String value) {
+ addCriterion("coverimage >", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageGreaterThanOrEqualTo(String value) {
+ addCriterion("coverimage >=", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageLessThan(String value) {
+ addCriterion("coverimage <", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageLessThanOrEqualTo(String value) {
+ addCriterion("coverimage <=", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageLike(String value) {
+ addCriterion("coverimage like", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageNotLike(String value) {
+ addCriterion("coverimage not like", value, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageIn(List<String> values) {
+ addCriterion("coverimage in", values, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageNotIn(List<String> values) {
+ addCriterion("coverimage not in", values, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageBetween(String value1, String value2) {
+ addCriterion("coverimage between", value1, value2, "coverimage");
+ return (Criteria) this;
+ }
+
+ public Criteria andCoverimageNotBetween(String value1, String value2) {
+ addCriterion("coverimage not between", value1, value2, "coverimage");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelation.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelation.java
new file mode 100644
index 0000000..bcc3cee
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelation.java
@@ -0,0 +1,165 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionPaperQuestionMasterRelation {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String questionid;
+
+ private String questionname;
+
+ private String questioncode;
+
+ private String paperid;
+
+ private String papername;
+
+ private String papercode;
+
+ private String quetioncategory;
+
+ private String subjectid;
+
+ private String subjectcode;
+
+ private String subjectname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getQuestionid() {
+ return questionid;
+ }
+
+ public void setQuestionid(String questionid) {
+ this.questionid = questionid == null ? null : questionid.trim();
+ }
+
+ public String getQuestionname() {
+ return questionname;
+ }
+
+ public void setQuestionname(String questionname) {
+ this.questionname = questionname == null ? null : questionname.trim();
+ }
+
+ public String getQuestioncode() {
+ return questioncode;
+ }
+
+ public void setQuestioncode(String questioncode) {
+ this.questioncode = questioncode == null ? null : questioncode.trim();
+ }
+
+ public String getPaperid() {
+ return paperid;
+ }
+
+ public void setPaperid(String paperid) {
+ this.paperid = paperid == null ? null : paperid.trim();
+ }
+
+ public String getPapername() {
+ return papername;
+ }
+
+ public void setPapername(String papername) {
+ this.papername = papername == null ? null : papername.trim();
+ }
+
+ public String getPapercode() {
+ return papercode;
+ }
+
+ public void setPapercode(String papercode) {
+ this.papercode = papercode == null ? null : papercode.trim();
+ }
+
+ public String getQuetioncategory() {
+ return quetioncategory;
+ }
+
+ public void setQuetioncategory(String quetioncategory) {
+ this.quetioncategory = quetioncategory == null ? null : quetioncategory.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelationExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelationExample.java
new file mode 100644
index 0000000..84cf703
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionPaperQuestionMasterRelationExample.java
@@ -0,0 +1,1383 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionPaperQuestionMasterRelationExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionPaperQuestionMasterRelationExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperQuestionMasterRelationExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperQuestionMasterRelationExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_paper_question_master_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionPaperQuestionMasterRelationExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNull() {
+ addCriterion("actionby is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNotNull() {
+ addCriterion("actionby is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyEqualTo(String value) {
+ addCriterion("actionby =", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotEqualTo(String value) {
+ addCriterion("actionby <>", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThan(String value) {
+ addCriterion("actionby >", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThanOrEqualTo(String value) {
+ addCriterion("actionby >=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThan(String value) {
+ addCriterion("actionby <", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThanOrEqualTo(String value) {
+ addCriterion("actionby <=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLike(String value) {
+ addCriterion("actionby like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotLike(String value) {
+ addCriterion("actionby not like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIn(List<String> values) {
+ addCriterion("actionby in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotIn(List<String> values) {
+ addCriterion("actionby not in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyBetween(String value1, String value2) {
+ addCriterion("actionby between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotBetween(String value1, String value2) {
+ addCriterion("actionby not between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidIsNull() {
+ addCriterion("questionid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidIsNotNull() {
+ addCriterion("questionid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidEqualTo(String value) {
+ addCriterion("questionid =", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidNotEqualTo(String value) {
+ addCriterion("questionid <>", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidGreaterThan(String value) {
+ addCriterion("questionid >", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidGreaterThanOrEqualTo(String value) {
+ addCriterion("questionid >=", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidLessThan(String value) {
+ addCriterion("questionid <", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidLessThanOrEqualTo(String value) {
+ addCriterion("questionid <=", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidLike(String value) {
+ addCriterion("questionid like", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidNotLike(String value) {
+ addCriterion("questionid not like", value, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidIn(List<String> values) {
+ addCriterion("questionid in", values, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidNotIn(List<String> values) {
+ addCriterion("questionid not in", values, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidBetween(String value1, String value2) {
+ addCriterion("questionid between", value1, value2, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionidNotBetween(String value1, String value2) {
+ addCriterion("questionid not between", value1, value2, "questionid");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameIsNull() {
+ addCriterion("questionname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameIsNotNull() {
+ addCriterion("questionname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameEqualTo(String value) {
+ addCriterion("questionname =", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameNotEqualTo(String value) {
+ addCriterion("questionname <>", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameGreaterThan(String value) {
+ addCriterion("questionname >", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameGreaterThanOrEqualTo(String value) {
+ addCriterion("questionname >=", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameLessThan(String value) {
+ addCriterion("questionname <", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameLessThanOrEqualTo(String value) {
+ addCriterion("questionname <=", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameLike(String value) {
+ addCriterion("questionname like", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameNotLike(String value) {
+ addCriterion("questionname not like", value, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameIn(List<String> values) {
+ addCriterion("questionname in", values, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameNotIn(List<String> values) {
+ addCriterion("questionname not in", values, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameBetween(String value1, String value2) {
+ addCriterion("questionname between", value1, value2, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestionnameNotBetween(String value1, String value2) {
+ addCriterion("questionname not between", value1, value2, "questionname");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeIsNull() {
+ addCriterion("questioncode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeIsNotNull() {
+ addCriterion("questioncode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeEqualTo(String value) {
+ addCriterion("questioncode =", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeNotEqualTo(String value) {
+ addCriterion("questioncode <>", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeGreaterThan(String value) {
+ addCriterion("questioncode >", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeGreaterThanOrEqualTo(String value) {
+ addCriterion("questioncode >=", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeLessThan(String value) {
+ addCriterion("questioncode <", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeLessThanOrEqualTo(String value) {
+ addCriterion("questioncode <=", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeLike(String value) {
+ addCriterion("questioncode like", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeNotLike(String value) {
+ addCriterion("questioncode not like", value, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeIn(List<String> values) {
+ addCriterion("questioncode in", values, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeNotIn(List<String> values) {
+ addCriterion("questioncode not in", values, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeBetween(String value1, String value2) {
+ addCriterion("questioncode between", value1, value2, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuestioncodeNotBetween(String value1, String value2) {
+ addCriterion("questioncode not between", value1, value2, "questioncode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidIsNull() {
+ addCriterion("paperid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidIsNotNull() {
+ addCriterion("paperid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidEqualTo(String value) {
+ addCriterion("paperid =", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotEqualTo(String value) {
+ addCriterion("paperid <>", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidGreaterThan(String value) {
+ addCriterion("paperid >", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidGreaterThanOrEqualTo(String value) {
+ addCriterion("paperid >=", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidLessThan(String value) {
+ addCriterion("paperid <", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidLessThanOrEqualTo(String value) {
+ addCriterion("paperid <=", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidLike(String value) {
+ addCriterion("paperid like", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotLike(String value) {
+ addCriterion("paperid not like", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidIn(List<String> values) {
+ addCriterion("paperid in", values, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotIn(List<String> values) {
+ addCriterion("paperid not in", values, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidBetween(String value1, String value2) {
+ addCriterion("paperid between", value1, value2, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotBetween(String value1, String value2) {
+ addCriterion("paperid not between", value1, value2, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameIsNull() {
+ addCriterion("papername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameIsNotNull() {
+ addCriterion("papername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameEqualTo(String value) {
+ addCriterion("papername =", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotEqualTo(String value) {
+ addCriterion("papername <>", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameGreaterThan(String value) {
+ addCriterion("papername >", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameGreaterThanOrEqualTo(String value) {
+ addCriterion("papername >=", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameLessThan(String value) {
+ addCriterion("papername <", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameLessThanOrEqualTo(String value) {
+ addCriterion("papername <=", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameLike(String value) {
+ addCriterion("papername like", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotLike(String value) {
+ addCriterion("papername not like", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameIn(List<String> values) {
+ addCriterion("papername in", values, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotIn(List<String> values) {
+ addCriterion("papername not in", values, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameBetween(String value1, String value2) {
+ addCriterion("papername between", value1, value2, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotBetween(String value1, String value2) {
+ addCriterion("papername not between", value1, value2, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeIsNull() {
+ addCriterion("papercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeIsNotNull() {
+ addCriterion("papercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeEqualTo(String value) {
+ addCriterion("papercode =", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotEqualTo(String value) {
+ addCriterion("papercode <>", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeGreaterThan(String value) {
+ addCriterion("papercode >", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("papercode >=", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeLessThan(String value) {
+ addCriterion("papercode <", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeLessThanOrEqualTo(String value) {
+ addCriterion("papercode <=", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeLike(String value) {
+ addCriterion("papercode like", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotLike(String value) {
+ addCriterion("papercode not like", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeIn(List<String> values) {
+ addCriterion("papercode in", values, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotIn(List<String> values) {
+ addCriterion("papercode not in", values, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeBetween(String value1, String value2) {
+ addCriterion("papercode between", value1, value2, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotBetween(String value1, String value2) {
+ addCriterion("papercode not between", value1, value2, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryIsNull() {
+ addCriterion("quetioncategory is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryIsNotNull() {
+ addCriterion("quetioncategory is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryEqualTo(String value) {
+ addCriterion("quetioncategory =", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryNotEqualTo(String value) {
+ addCriterion("quetioncategory <>", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryGreaterThan(String value) {
+ addCriterion("quetioncategory >", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryGreaterThanOrEqualTo(String value) {
+ addCriterion("quetioncategory >=", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryLessThan(String value) {
+ addCriterion("quetioncategory <", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryLessThanOrEqualTo(String value) {
+ addCriterion("quetioncategory <=", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryLike(String value) {
+ addCriterion("quetioncategory like", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryNotLike(String value) {
+ addCriterion("quetioncategory not like", value, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryIn(List<String> values) {
+ addCriterion("quetioncategory in", values, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryNotIn(List<String> values) {
+ addCriterion("quetioncategory not in", values, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryBetween(String value1, String value2) {
+ addCriterion("quetioncategory between", value1, value2, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andQuetioncategoryNotBetween(String value1, String value2) {
+ addCriterion("quetioncategory not between", value1, value2, "quetioncategory");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNull() {
+ addCriterion("subjectid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNotNull() {
+ addCriterion("subjectid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidEqualTo(String value) {
+ addCriterion("subjectid =", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotEqualTo(String value) {
+ addCriterion("subjectid <>", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThan(String value) {
+ addCriterion("subjectid >", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectid >=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThan(String value) {
+ addCriterion("subjectid <", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThanOrEqualTo(String value) {
+ addCriterion("subjectid <=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLike(String value) {
+ addCriterion("subjectid like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotLike(String value) {
+ addCriterion("subjectid not like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIn(List<String> values) {
+ addCriterion("subjectid in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotIn(List<String> values) {
+ addCriterion("subjectid not in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidBetween(String value1, String value2) {
+ addCriterion("subjectid between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotBetween(String value1, String value2) {
+ addCriterion("subjectid not between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNull() {
+ addCriterion("subjectcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNotNull() {
+ addCriterion("subjectcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeEqualTo(String value) {
+ addCriterion("subjectcode =", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotEqualTo(String value) {
+ addCriterion("subjectcode <>", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThan(String value) {
+ addCriterion("subjectcode >", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectcode >=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThan(String value) {
+ addCriterion("subjectcode <", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThanOrEqualTo(String value) {
+ addCriterion("subjectcode <=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLike(String value) {
+ addCriterion("subjectcode like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotLike(String value) {
+ addCriterion("subjectcode not like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIn(List<String> values) {
+ addCriterion("subjectcode in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotIn(List<String> values) {
+ addCriterion("subjectcode not in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeBetween(String value1, String value2) {
+ addCriterion("subjectcode between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotBetween(String value1, String value2) {
+ addCriterion("subjectcode not between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNull() {
+ addCriterion("subjectname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNotNull() {
+ addCriterion("subjectname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameEqualTo(String value) {
+ addCriterion("subjectname =", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotEqualTo(String value) {
+ addCriterion("subjectname <>", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThan(String value) {
+ addCriterion("subjectname >", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectname >=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThan(String value) {
+ addCriterion("subjectname <", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThanOrEqualTo(String value) {
+ addCriterion("subjectname <=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLike(String value) {
+ addCriterion("subjectname like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotLike(String value) {
+ addCriterion("subjectname not like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIn(List<String> values) {
+ addCriterion("subjectname in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotIn(List<String> values) {
+ addCriterion("subjectname not in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameBetween(String value1, String value2) {
+ addCriterion("subjectname between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotBetween(String value1, String value2) {
+ addCriterion("subjectname not between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubject.java
new file mode 100644
index 0000000..054da7c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubject.java
@@ -0,0 +1,85 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionSubject {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectExample.java
new file mode 100644
index 0000000..3b8f6fa
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectExample.java
@@ -0,0 +1,823 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionSubjectExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionSubjectExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelation.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelation.java
new file mode 100644
index 0000000..cb30db4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelation.java
@@ -0,0 +1,125 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionSubjectGradeRelation {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelationExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelationExample.java
new file mode 100644
index 0000000..8e2fdc8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectGradeRelationExample.java
@@ -0,0 +1,1103 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionSubjectGradeRelationExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionSubjectGradeRelationExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectGradeRelationExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectGradeRelationExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_grade_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectGradeRelationExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNull() {
+ addCriterion("actionby is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNotNull() {
+ addCriterion("actionby is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyEqualTo(String value) {
+ addCriterion("actionby =", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotEqualTo(String value) {
+ addCriterion("actionby <>", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThan(String value) {
+ addCriterion("actionby >", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThanOrEqualTo(String value) {
+ addCriterion("actionby >=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThan(String value) {
+ addCriterion("actionby <", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThanOrEqualTo(String value) {
+ addCriterion("actionby <=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLike(String value) {
+ addCriterion("actionby like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotLike(String value) {
+ addCriterion("actionby not like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIn(List<String> values) {
+ addCriterion("actionby in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotIn(List<String> values) {
+ addCriterion("actionby not in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyBetween(String value1, String value2) {
+ addCriterion("actionby between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotBetween(String value1, String value2) {
+ addCriterion("actionby not between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIsNull() {
+ addCriterion("gradeid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIsNotNull() {
+ addCriterion("gradeid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidEqualTo(String value) {
+ addCriterion("gradeid =", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotEqualTo(String value) {
+ addCriterion("gradeid <>", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidGreaterThan(String value) {
+ addCriterion("gradeid >", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidGreaterThanOrEqualTo(String value) {
+ addCriterion("gradeid >=", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLessThan(String value) {
+ addCriterion("gradeid <", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLessThanOrEqualTo(String value) {
+ addCriterion("gradeid <=", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLike(String value) {
+ addCriterion("gradeid like", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotLike(String value) {
+ addCriterion("gradeid not like", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIn(List<String> values) {
+ addCriterion("gradeid in", values, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotIn(List<String> values) {
+ addCriterion("gradeid not in", values, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidBetween(String value1, String value2) {
+ addCriterion("gradeid between", value1, value2, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotBetween(String value1, String value2) {
+ addCriterion("gradeid not between", value1, value2, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIsNull() {
+ addCriterion("gradename is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIsNotNull() {
+ addCriterion("gradename is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameEqualTo(String value) {
+ addCriterion("gradename =", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotEqualTo(String value) {
+ addCriterion("gradename <>", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameGreaterThan(String value) {
+ addCriterion("gradename >", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameGreaterThanOrEqualTo(String value) {
+ addCriterion("gradename >=", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLessThan(String value) {
+ addCriterion("gradename <", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLessThanOrEqualTo(String value) {
+ addCriterion("gradename <=", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLike(String value) {
+ addCriterion("gradename like", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotLike(String value) {
+ addCriterion("gradename not like", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIn(List<String> values) {
+ addCriterion("gradename in", values, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotIn(List<String> values) {
+ addCriterion("gradename not in", values, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameBetween(String value1, String value2) {
+ addCriterion("gradename between", value1, value2, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotBetween(String value1, String value2) {
+ addCriterion("gradename not between", value1, value2, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIsNull() {
+ addCriterion("gradecode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIsNotNull() {
+ addCriterion("gradecode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeEqualTo(String value) {
+ addCriterion("gradecode =", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotEqualTo(String value) {
+ addCriterion("gradecode <>", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeGreaterThan(String value) {
+ addCriterion("gradecode >", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeGreaterThanOrEqualTo(String value) {
+ addCriterion("gradecode >=", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLessThan(String value) {
+ addCriterion("gradecode <", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLessThanOrEqualTo(String value) {
+ addCriterion("gradecode <=", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLike(String value) {
+ addCriterion("gradecode like", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotLike(String value) {
+ addCriterion("gradecode not like", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIn(List<String> values) {
+ addCriterion("gradecode in", values, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotIn(List<String> values) {
+ addCriterion("gradecode not in", values, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeBetween(String value1, String value2) {
+ addCriterion("gradecode between", value1, value2, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotBetween(String value1, String value2) {
+ addCriterion("gradecode not between", value1, value2, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNull() {
+ addCriterion("subjectid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNotNull() {
+ addCriterion("subjectid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidEqualTo(String value) {
+ addCriterion("subjectid =", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotEqualTo(String value) {
+ addCriterion("subjectid <>", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThan(String value) {
+ addCriterion("subjectid >", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectid >=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThan(String value) {
+ addCriterion("subjectid <", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThanOrEqualTo(String value) {
+ addCriterion("subjectid <=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLike(String value) {
+ addCriterion("subjectid like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotLike(String value) {
+ addCriterion("subjectid not like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIn(List<String> values) {
+ addCriterion("subjectid in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotIn(List<String> values) {
+ addCriterion("subjectid not in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidBetween(String value1, String value2) {
+ addCriterion("subjectid between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotBetween(String value1, String value2) {
+ addCriterion("subjectid not between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNull() {
+ addCriterion("subjectname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNotNull() {
+ addCriterion("subjectname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameEqualTo(String value) {
+ addCriterion("subjectname =", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotEqualTo(String value) {
+ addCriterion("subjectname <>", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThan(String value) {
+ addCriterion("subjectname >", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectname >=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThan(String value) {
+ addCriterion("subjectname <", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThanOrEqualTo(String value) {
+ addCriterion("subjectname <=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLike(String value) {
+ addCriterion("subjectname like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotLike(String value) {
+ addCriterion("subjectname not like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIn(List<String> values) {
+ addCriterion("subjectname in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotIn(List<String> values) {
+ addCriterion("subjectname not in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameBetween(String value1, String value2) {
+ addCriterion("subjectname between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotBetween(String value1, String value2) {
+ addCriterion("subjectname not between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNull() {
+ addCriterion("subjectcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNotNull() {
+ addCriterion("subjectcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeEqualTo(String value) {
+ addCriterion("subjectcode =", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotEqualTo(String value) {
+ addCriterion("subjectcode <>", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThan(String value) {
+ addCriterion("subjectcode >", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectcode >=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThan(String value) {
+ addCriterion("subjectcode <", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThanOrEqualTo(String value) {
+ addCriterion("subjectcode <=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLike(String value) {
+ addCriterion("subjectcode like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotLike(String value) {
+ addCriterion("subjectcode not like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIn(List<String> values) {
+ addCriterion("subjectcode in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotIn(List<String> values) {
+ addCriterion("subjectcode not in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeBetween(String value1, String value2) {
+ addCriterion("subjectcode between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotBetween(String value1, String value2) {
+ addCriterion("subjectcode not between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePoint.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePoint.java
new file mode 100644
index 0000000..9618316
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePoint.java
@@ -0,0 +1,115 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class QuestionSubjectKnowledgePoint {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePointExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePointExample.java
new file mode 100644
index 0000000..4b57988
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/QuestionSubjectKnowledgePointExample.java
@@ -0,0 +1,1033 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionSubjectKnowledgePointExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public QuestionSubjectKnowledgePointExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectKnowledgePointExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectKnowledgePointExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..question_subject_knowledge_point
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public QuestionSubjectKnowledgePointExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNull() {
+ addCriterion("subjectid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIsNotNull() {
+ addCriterion("subjectid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidEqualTo(String value) {
+ addCriterion("subjectid =", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotEqualTo(String value) {
+ addCriterion("subjectid <>", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThan(String value) {
+ addCriterion("subjectid >", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectid >=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThan(String value) {
+ addCriterion("subjectid <", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLessThanOrEqualTo(String value) {
+ addCriterion("subjectid <=", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidLike(String value) {
+ addCriterion("subjectid like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotLike(String value) {
+ addCriterion("subjectid not like", value, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidIn(List<String> values) {
+ addCriterion("subjectid in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotIn(List<String> values) {
+ addCriterion("subjectid not in", values, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidBetween(String value1, String value2) {
+ addCriterion("subjectid between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectidNotBetween(String value1, String value2) {
+ addCriterion("subjectid not between", value1, value2, "subjectid");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNull() {
+ addCriterion("subjectname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIsNotNull() {
+ addCriterion("subjectname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameEqualTo(String value) {
+ addCriterion("subjectname =", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotEqualTo(String value) {
+ addCriterion("subjectname <>", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThan(String value) {
+ addCriterion("subjectname >", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectname >=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThan(String value) {
+ addCriterion("subjectname <", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLessThanOrEqualTo(String value) {
+ addCriterion("subjectname <=", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameLike(String value) {
+ addCriterion("subjectname like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotLike(String value) {
+ addCriterion("subjectname not like", value, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameIn(List<String> values) {
+ addCriterion("subjectname in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotIn(List<String> values) {
+ addCriterion("subjectname not in", values, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameBetween(String value1, String value2) {
+ addCriterion("subjectname between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectnameNotBetween(String value1, String value2) {
+ addCriterion("subjectname not between", value1, value2, "subjectname");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNull() {
+ addCriterion("subjectcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIsNotNull() {
+ addCriterion("subjectcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeEqualTo(String value) {
+ addCriterion("subjectcode =", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotEqualTo(String value) {
+ addCriterion("subjectcode <>", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThan(String value) {
+ addCriterion("subjectcode >", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("subjectcode >=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThan(String value) {
+ addCriterion("subjectcode <", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLessThanOrEqualTo(String value) {
+ addCriterion("subjectcode <=", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeLike(String value) {
+ addCriterion("subjectcode like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotLike(String value) {
+ addCriterion("subjectcode not like", value, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeIn(List<String> values) {
+ addCriterion("subjectcode in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotIn(List<String> values) {
+ addCriterion("subjectcode not in", values, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeBetween(String value1, String value2) {
+ addCriterion("subjectcode between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andSubjectcodeNotBetween(String value1, String value2) {
+ addCriterion("subjectcode not between", value1, value2, "subjectcode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCart.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCart.java
new file mode 100644
index 0000000..2c00995
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCart.java
@@ -0,0 +1,136 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ShoppingCart {
+ private String id;
+
+ private String code;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartExample.java
new file mode 100644
index 0000000..def105f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartExample.java
@@ -0,0 +1,1154 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ShoppingCartExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public ShoppingCartExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public ShoppingCartExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public ShoppingCartExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public ShoppingCartExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIsNull() {
+ addCriterion("vipuserId is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIsNotNull() {
+ addCriterion("vipuserId is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridEqualTo(String value) {
+ addCriterion("vipuserId =", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotEqualTo(String value) {
+ addCriterion("vipuserId <>", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridGreaterThan(String value) {
+ addCriterion("vipuserId >", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridGreaterThanOrEqualTo(String value) {
+ addCriterion("vipuserId >=", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLessThan(String value) {
+ addCriterion("vipuserId <", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLessThanOrEqualTo(String value) {
+ addCriterion("vipuserId <=", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridLike(String value) {
+ addCriterion("vipuserId like", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotLike(String value) {
+ addCriterion("vipuserId not like", value, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridIn(List<String> values) {
+ addCriterion("vipuserId in", values, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotIn(List<String> values) {
+ addCriterion("vipuserId not in", values, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridBetween(String value1, String value2) {
+ addCriterion("vipuserId between", value1, value2, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipuseridNotBetween(String value1, String value2) {
+ addCriterion("vipuserId not between", value1, value2, "vipuserid");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIsNull() {
+ addCriterion("vipname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIsNotNull() {
+ addCriterion("vipname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameEqualTo(String value) {
+ addCriterion("vipname =", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotEqualTo(String value) {
+ addCriterion("vipname <>", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameGreaterThan(String value) {
+ addCriterion("vipname >", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameGreaterThanOrEqualTo(String value) {
+ addCriterion("vipname >=", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLessThan(String value) {
+ addCriterion("vipname <", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLessThanOrEqualTo(String value) {
+ addCriterion("vipname <=", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameLike(String value) {
+ addCriterion("vipname like", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotLike(String value) {
+ addCriterion("vipname not like", value, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameIn(List<String> values) {
+ addCriterion("vipname in", values, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotIn(List<String> values) {
+ addCriterion("vipname not in", values, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameBetween(String value1, String value2) {
+ addCriterion("vipname between", value1, value2, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipnameNotBetween(String value1, String value2) {
+ addCriterion("vipname not between", value1, value2, "vipname");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIsNull() {
+ addCriterion("vipphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIsNotNull() {
+ addCriterion("vipphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneEqualTo(String value) {
+ addCriterion("vipphone =", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotEqualTo(String value) {
+ addCriterion("vipphone <>", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneGreaterThan(String value) {
+ addCriterion("vipphone >", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("vipphone >=", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLessThan(String value) {
+ addCriterion("vipphone <", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLessThanOrEqualTo(String value) {
+ addCriterion("vipphone <=", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneLike(String value) {
+ addCriterion("vipphone like", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotLike(String value) {
+ addCriterion("vipphone not like", value, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneIn(List<String> values) {
+ addCriterion("vipphone in", values, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotIn(List<String> values) {
+ addCriterion("vipphone not in", values, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneBetween(String value1, String value2) {
+ addCriterion("vipphone between", value1, value2, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipphoneNotBetween(String value1, String value2) {
+ addCriterion("vipphone not between", value1, value2, "vipphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIsNull() {
+ addCriterion("vipdiamondtype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIsNotNull() {
+ addCriterion("vipdiamondtype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeEqualTo(Integer value) {
+ addCriterion("vipdiamondtype =", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotEqualTo(Integer value) {
+ addCriterion("vipdiamondtype <>", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeGreaterThan(Integer value) {
+ addCriterion("vipdiamondtype >", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("vipdiamondtype >=", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeLessThan(Integer value) {
+ addCriterion("vipdiamondtype <", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeLessThanOrEqualTo(Integer value) {
+ addCriterion("vipdiamondtype <=", value, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeIn(List<Integer> values) {
+ addCriterion("vipdiamondtype in", values, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotIn(List<Integer> values) {
+ addCriterion("vipdiamondtype not in", values, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeBetween(Integer value1, Integer value2) {
+ addCriterion("vipdiamondtype between", value1, value2, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipdiamondtypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("vipdiamondtype not between", value1, value2, "vipdiamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIsNull() {
+ addCriterion("viptype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIsNotNull() {
+ addCriterion("viptype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeEqualTo(Integer value) {
+ addCriterion("viptype =", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotEqualTo(Integer value) {
+ addCriterion("viptype <>", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeGreaterThan(Integer value) {
+ addCriterion("viptype >", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("viptype >=", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeLessThan(Integer value) {
+ addCriterion("viptype <", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeLessThanOrEqualTo(Integer value) {
+ addCriterion("viptype <=", value, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeIn(List<Integer> values) {
+ addCriterion("viptype in", values, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotIn(List<Integer> values) {
+ addCriterion("viptype not in", values, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeBetween(Integer value1, Integer value2) {
+ addCriterion("viptype between", value1, value2, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andViptypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("viptype not between", value1, value2, "viptype");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIsNull() {
+ addCriterion("vippicture is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIsNotNull() {
+ addCriterion("vippicture is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureEqualTo(String value) {
+ addCriterion("vippicture =", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotEqualTo(String value) {
+ addCriterion("vippicture <>", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureGreaterThan(String value) {
+ addCriterion("vippicture >", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureGreaterThanOrEqualTo(String value) {
+ addCriterion("vippicture >=", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLessThan(String value) {
+ addCriterion("vippicture <", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLessThanOrEqualTo(String value) {
+ addCriterion("vippicture <=", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureLike(String value) {
+ addCriterion("vippicture like", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotLike(String value) {
+ addCriterion("vippicture not like", value, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureIn(List<String> values) {
+ addCriterion("vippicture in", values, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotIn(List<String> values) {
+ addCriterion("vippicture not in", values, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureBetween(String value1, String value2) {
+ addCriterion("vippicture between", value1, value2, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVippictureNotBetween(String value1, String value2) {
+ addCriterion("vippicture not between", value1, value2, "vippicture");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIsNull() {
+ addCriterion("vipcarddiscountrate is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIsNotNull() {
+ addCriterion("vipcarddiscountrate is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate =", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <>", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateGreaterThan(BigDecimal value) {
+ addCriterion("vipcarddiscountrate >", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate >=", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateLessThan(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("vipcarddiscountrate <=", value, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateIn(List<BigDecimal> values) {
+ addCriterion("vipcarddiscountrate in", values, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotIn(List<BigDecimal> values) {
+ addCriterion("vipcarddiscountrate not in", values, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("vipcarddiscountrate between", value1, value2, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andVipcarddiscountrateNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("vipcarddiscountrate not between", value1, value2, "vipcarddiscountrate");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProduct.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProduct.java
new file mode 100644
index 0000000..ae4246c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProduct.java
@@ -0,0 +1,176 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ShoppingCartProduct {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String cartid;
+
+ private String cartcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getCartid() {
+ return cartid;
+ }
+
+ public void setCartid(String cartid) {
+ this.cartid = cartid == null ? null : cartid.trim();
+ }
+
+ public String getCartcode() {
+ return cartcode;
+ }
+
+ public void setCartcode(String cartcode) {
+ this.cartcode = cartcode == null ? null : cartcode.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProductExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProductExample.java
new file mode 100644
index 0000000..c476e78
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/ShoppingCartProductExample.java
@@ -0,0 +1,1424 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ShoppingCartProductExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public ShoppingCartProductExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public ShoppingCartProductExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public ShoppingCartProductExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..shopping_cart_product
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public ShoppingCartProductExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIsNull() {
+ addCriterion("productid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIsNotNull() {
+ addCriterion("productid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidEqualTo(String value) {
+ addCriterion("productid =", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotEqualTo(String value) {
+ addCriterion("productid <>", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidGreaterThan(String value) {
+ addCriterion("productid >", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidGreaterThanOrEqualTo(String value) {
+ addCriterion("productid >=", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLessThan(String value) {
+ addCriterion("productid <", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLessThanOrEqualTo(String value) {
+ addCriterion("productid <=", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidLike(String value) {
+ addCriterion("productid like", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotLike(String value) {
+ addCriterion("productid not like", value, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidIn(List<String> values) {
+ addCriterion("productid in", values, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotIn(List<String> values) {
+ addCriterion("productid not in", values, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidBetween(String value1, String value2) {
+ addCriterion("productid between", value1, value2, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductidNotBetween(String value1, String value2) {
+ addCriterion("productid not between", value1, value2, "productid");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIsNull() {
+ addCriterion("productcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIsNotNull() {
+ addCriterion("productcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeEqualTo(String value) {
+ addCriterion("productcode =", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotEqualTo(String value) {
+ addCriterion("productcode <>", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeGreaterThan(String value) {
+ addCriterion("productcode >", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("productcode >=", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLessThan(String value) {
+ addCriterion("productcode <", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLessThanOrEqualTo(String value) {
+ addCriterion("productcode <=", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeLike(String value) {
+ addCriterion("productcode like", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotLike(String value) {
+ addCriterion("productcode not like", value, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeIn(List<String> values) {
+ addCriterion("productcode in", values, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotIn(List<String> values) {
+ addCriterion("productcode not in", values, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeBetween(String value1, String value2) {
+ addCriterion("productcode between", value1, value2, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductcodeNotBetween(String value1, String value2) {
+ addCriterion("productcode not between", value1, value2, "productcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIsNull() {
+ addCriterion("productname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIsNotNull() {
+ addCriterion("productname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameEqualTo(String value) {
+ addCriterion("productname =", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotEqualTo(String value) {
+ addCriterion("productname <>", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameGreaterThan(String value) {
+ addCriterion("productname >", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameGreaterThanOrEqualTo(String value) {
+ addCriterion("productname >=", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLessThan(String value) {
+ addCriterion("productname <", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLessThanOrEqualTo(String value) {
+ addCriterion("productname <=", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameLike(String value) {
+ addCriterion("productname like", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotLike(String value) {
+ addCriterion("productname not like", value, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameIn(List<String> values) {
+ addCriterion("productname in", values, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotIn(List<String> values) {
+ addCriterion("productname not in", values, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameBetween(String value1, String value2) {
+ addCriterion("productname between", value1, value2, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andProductnameNotBetween(String value1, String value2) {
+ addCriterion("productname not between", value1, value2, "productname");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIsNull() {
+ addCriterion("color is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIsNotNull() {
+ addCriterion("color is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorEqualTo(String value) {
+ addCriterion("color =", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotEqualTo(String value) {
+ addCriterion("color <>", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorGreaterThan(String value) {
+ addCriterion("color >", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorGreaterThanOrEqualTo(String value) {
+ addCriterion("color >=", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLessThan(String value) {
+ addCriterion("color <", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLessThanOrEqualTo(String value) {
+ addCriterion("color <=", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorLike(String value) {
+ addCriterion("color like", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotLike(String value) {
+ addCriterion("color not like", value, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorIn(List<String> values) {
+ addCriterion("color in", values, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotIn(List<String> values) {
+ addCriterion("color not in", values, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorBetween(String value1, String value2) {
+ addCriterion("color between", value1, value2, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andColorNotBetween(String value1, String value2) {
+ addCriterion("color not between", value1, value2, "color");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIsNull() {
+ addCriterion("size is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIsNotNull() {
+ addCriterion("size is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeEqualTo(String value) {
+ addCriterion("size =", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotEqualTo(String value) {
+ addCriterion("size <>", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeGreaterThan(String value) {
+ addCriterion("size >", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeGreaterThanOrEqualTo(String value) {
+ addCriterion("size >=", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLessThan(String value) {
+ addCriterion("size <", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLessThanOrEqualTo(String value) {
+ addCriterion("size <=", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeLike(String value) {
+ addCriterion("size like", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotLike(String value) {
+ addCriterion("size not like", value, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeIn(List<String> values) {
+ addCriterion("size in", values, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotIn(List<String> values) {
+ addCriterion("size not in", values, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeBetween(String value1, String value2) {
+ addCriterion("size between", value1, value2, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andSizeNotBetween(String value1, String value2) {
+ addCriterion("size not between", value1, value2, "size");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNull() {
+ addCriterion("count is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNotNull() {
+ addCriterion("count is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountEqualTo(Integer value) {
+ addCriterion("count =", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotEqualTo(Integer value) {
+ addCriterion("count <>", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThan(Integer value) {
+ addCriterion("count >", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThanOrEqualTo(Integer value) {
+ addCriterion("count >=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThan(Integer value) {
+ addCriterion("count <", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThanOrEqualTo(Integer value) {
+ addCriterion("count <=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIn(List<Integer> values) {
+ addCriterion("count in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotIn(List<Integer> values) {
+ addCriterion("count not in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountBetween(Integer value1, Integer value2) {
+ addCriterion("count between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotBetween(Integer value1, Integer value2) {
+ addCriterion("count not between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIsNull() {
+ addCriterion("image is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIsNotNull() {
+ addCriterion("image is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageEqualTo(String value) {
+ addCriterion("image =", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotEqualTo(String value) {
+ addCriterion("image <>", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageGreaterThan(String value) {
+ addCriterion("image >", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageGreaterThanOrEqualTo(String value) {
+ addCriterion("image >=", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLessThan(String value) {
+ addCriterion("image <", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLessThanOrEqualTo(String value) {
+ addCriterion("image <=", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageLike(String value) {
+ addCriterion("image like", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotLike(String value) {
+ addCriterion("image not like", value, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageIn(List<String> values) {
+ addCriterion("image in", values, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotIn(List<String> values) {
+ addCriterion("image not in", values, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageBetween(String value1, String value2) {
+ addCriterion("image between", value1, value2, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andImageNotBetween(String value1, String value2) {
+ addCriterion("image not between", value1, value2, "image");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNull() {
+ addCriterion("price is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIsNotNull() {
+ addCriterion("price is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceEqualTo(BigDecimal value) {
+ addCriterion("price =", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotEqualTo(BigDecimal value) {
+ addCriterion("price <>", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThan(BigDecimal value) {
+ addCriterion("price >", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("price >=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThan(BigDecimal value) {
+ addCriterion("price <", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("price <=", value, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceIn(List<BigDecimal> values) {
+ addCriterion("price in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotIn(List<BigDecimal> values) {
+ addCriterion("price not in", values, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("price not between", value1, value2, "price");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIsNull() {
+ addCriterion("saleprice is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIsNotNull() {
+ addCriterion("saleprice is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceEqualTo(BigDecimal value) {
+ addCriterion("saleprice =", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotEqualTo(BigDecimal value) {
+ addCriterion("saleprice <>", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceGreaterThan(BigDecimal value) {
+ addCriterion("saleprice >", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("saleprice >=", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceLessThan(BigDecimal value) {
+ addCriterion("saleprice <", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("saleprice <=", value, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceIn(List<BigDecimal> values) {
+ addCriterion("saleprice in", values, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotIn(List<BigDecimal> values) {
+ addCriterion("saleprice not in", values, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("saleprice between", value1, value2, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andSalepriceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("saleprice not between", value1, value2, "saleprice");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidIsNull() {
+ addCriterion("cartid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidIsNotNull() {
+ addCriterion("cartid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidEqualTo(String value) {
+ addCriterion("cartid =", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidNotEqualTo(String value) {
+ addCriterion("cartid <>", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidGreaterThan(String value) {
+ addCriterion("cartid >", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidGreaterThanOrEqualTo(String value) {
+ addCriterion("cartid >=", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidLessThan(String value) {
+ addCriterion("cartid <", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidLessThanOrEqualTo(String value) {
+ addCriterion("cartid <=", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidLike(String value) {
+ addCriterion("cartid like", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidNotLike(String value) {
+ addCriterion("cartid not like", value, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidIn(List<String> values) {
+ addCriterion("cartid in", values, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidNotIn(List<String> values) {
+ addCriterion("cartid not in", values, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidBetween(String value1, String value2) {
+ addCriterion("cartid between", value1, value2, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartidNotBetween(String value1, String value2) {
+ addCriterion("cartid not between", value1, value2, "cartid");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeIsNull() {
+ addCriterion("cartcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeIsNotNull() {
+ addCriterion("cartcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeEqualTo(String value) {
+ addCriterion("cartcode =", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeNotEqualTo(String value) {
+ addCriterion("cartcode <>", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeGreaterThan(String value) {
+ addCriterion("cartcode >", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("cartcode >=", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeLessThan(String value) {
+ addCriterion("cartcode <", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeLessThanOrEqualTo(String value) {
+ addCriterion("cartcode <=", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeLike(String value) {
+ addCriterion("cartcode like", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeNotLike(String value) {
+ addCriterion("cartcode not like", value, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeIn(List<String> values) {
+ addCriterion("cartcode in", values, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeNotIn(List<String> values) {
+ addCriterion("cartcode not in", values, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeBetween(String value1, String value2) {
+ addCriterion("cartcode between", value1, value2, "cartcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andCartcodeNotBetween(String value1, String value2) {
+ addCriterion("cartcode not between", value1, value2, "cartcode");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrail.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrail.java
new file mode 100644
index 0000000..7685efb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrail.java
@@ -0,0 +1,135 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class SystemAuditTrail {
+ private String id;
+
+ private String message;
+
+ private String actionby;
+
+ private String actiontype;
+
+ private String actionip;
+
+ private Date actiontime;
+
+ private String module;
+
+ private String beforetarget;
+
+ private String aftertarget;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message == null ? null : message.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getActiontype() {
+ return actiontype;
+ }
+
+ public void setActiontype(String actiontype) {
+ this.actiontype = actiontype == null ? null : actiontype.trim();
+ }
+
+ public String getActionip() {
+ return actionip;
+ }
+
+ public void setActionip(String actionip) {
+ this.actionip = actionip == null ? null : actionip.trim();
+ }
+
+ public Date getActiontime() {
+ return actiontime;
+ }
+
+ public void setActiontime(Date actiontime) {
+ this.actiontime = actiontime;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module == null ? null : module.trim();
+ }
+
+ public String getBeforetarget() {
+ return beforetarget;
+ }
+
+ public void setBeforetarget(String beforetarget) {
+ this.beforetarget = beforetarget == null ? null : beforetarget.trim();
+ }
+
+ public String getAftertarget() {
+ return aftertarget;
+ }
+
+ public void setAftertarget(String aftertarget) {
+ this.aftertarget = aftertarget == null ? null : aftertarget.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrailExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrailExample.java
new file mode 100644
index 0000000..cf68d1d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemAuditTrailExample.java
@@ -0,0 +1,1173 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SystemAuditTrailExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public SystemAuditTrailExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemAuditTrailExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemAuditTrailExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_audittrail
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemAuditTrailExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageIsNull() {
+ addCriterion("message is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageIsNotNull() {
+ addCriterion("message is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageEqualTo(String value) {
+ addCriterion("message =", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageNotEqualTo(String value) {
+ addCriterion("message <>", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageGreaterThan(String value) {
+ addCriterion("message >", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageGreaterThanOrEqualTo(String value) {
+ addCriterion("message >=", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageLessThan(String value) {
+ addCriterion("message <", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageLessThanOrEqualTo(String value) {
+ addCriterion("message <=", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageLike(String value) {
+ addCriterion("message like", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageNotLike(String value) {
+ addCriterion("message not like", value, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageIn(List<String> values) {
+ addCriterion("message in", values, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageNotIn(List<String> values) {
+ addCriterion("message not in", values, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageBetween(String value1, String value2) {
+ addCriterion("message between", value1, value2, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andMessageNotBetween(String value1, String value2) {
+ addCriterion("message not between", value1, value2, "message");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNull() {
+ addCriterion("actionby is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNotNull() {
+ addCriterion("actionby is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyEqualTo(String value) {
+ addCriterion("actionby =", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotEqualTo(String value) {
+ addCriterion("actionby <>", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThan(String value) {
+ addCriterion("actionby >", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThanOrEqualTo(String value) {
+ addCriterion("actionby >=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThan(String value) {
+ addCriterion("actionby <", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThanOrEqualTo(String value) {
+ addCriterion("actionby <=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLike(String value) {
+ addCriterion("actionby like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotLike(String value) {
+ addCriterion("actionby not like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIn(List<String> values) {
+ addCriterion("actionby in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotIn(List<String> values) {
+ addCriterion("actionby not in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyBetween(String value1, String value2) {
+ addCriterion("actionby between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotBetween(String value1, String value2) {
+ addCriterion("actionby not between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeIsNull() {
+ addCriterion("actiontype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeIsNotNull() {
+ addCriterion("actiontype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeEqualTo(String value) {
+ addCriterion("actiontype =", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeNotEqualTo(String value) {
+ addCriterion("actiontype <>", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeGreaterThan(String value) {
+ addCriterion("actiontype >", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeGreaterThanOrEqualTo(String value) {
+ addCriterion("actiontype >=", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeLessThan(String value) {
+ addCriterion("actiontype <", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeLessThanOrEqualTo(String value) {
+ addCriterion("actiontype <=", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeLike(String value) {
+ addCriterion("actiontype like", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeNotLike(String value) {
+ addCriterion("actiontype not like", value, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeIn(List<String> values) {
+ addCriterion("actiontype in", values, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeNotIn(List<String> values) {
+ addCriterion("actiontype not in", values, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeBetween(String value1, String value2) {
+ addCriterion("actiontype between", value1, value2, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontypeNotBetween(String value1, String value2) {
+ addCriterion("actiontype not between", value1, value2, "actiontype");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipIsNull() {
+ addCriterion("actionip is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipIsNotNull() {
+ addCriterion("actionip is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipEqualTo(String value) {
+ addCriterion("actionip =", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipNotEqualTo(String value) {
+ addCriterion("actionip <>", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipGreaterThan(String value) {
+ addCriterion("actionip >", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipGreaterThanOrEqualTo(String value) {
+ addCriterion("actionip >=", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipLessThan(String value) {
+ addCriterion("actionip <", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipLessThanOrEqualTo(String value) {
+ addCriterion("actionip <=", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipLike(String value) {
+ addCriterion("actionip like", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipNotLike(String value) {
+ addCriterion("actionip not like", value, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipIn(List<String> values) {
+ addCriterion("actionip in", values, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipNotIn(List<String> values) {
+ addCriterion("actionip not in", values, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipBetween(String value1, String value2) {
+ addCriterion("actionip between", value1, value2, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionipNotBetween(String value1, String value2) {
+ addCriterion("actionip not between", value1, value2, "actionip");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeIsNull() {
+ addCriterion("actiontime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeIsNotNull() {
+ addCriterion("actiontime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeEqualTo(Date value) {
+ addCriterion("actiontime =", value, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeNotEqualTo(Date value) {
+ addCriterion("actiontime <>", value, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeGreaterThan(Date value) {
+ addCriterion("actiontime >", value, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("actiontime >=", value, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeLessThan(Date value) {
+ addCriterion("actiontime <", value, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeLessThanOrEqualTo(Date value) {
+ addCriterion("actiontime <=", value, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeIn(List<Date> values) {
+ addCriterion("actiontime in", values, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeNotIn(List<Date> values) {
+ addCriterion("actiontime not in", values, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeBetween(Date value1, Date value2) {
+ addCriterion("actiontime between", value1, value2, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andActiontimeNotBetween(Date value1, Date value2) {
+ addCriterion("actiontime not between", value1, value2, "actiontime");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleIsNull() {
+ addCriterion("module is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleIsNotNull() {
+ addCriterion("module is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleEqualTo(String value) {
+ addCriterion("module =", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleNotEqualTo(String value) {
+ addCriterion("module <>", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleGreaterThan(String value) {
+ addCriterion("module >", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleGreaterThanOrEqualTo(String value) {
+ addCriterion("module >=", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleLessThan(String value) {
+ addCriterion("module <", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleLessThanOrEqualTo(String value) {
+ addCriterion("module <=", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleLike(String value) {
+ addCriterion("module like", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleNotLike(String value) {
+ addCriterion("module not like", value, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleIn(List<String> values) {
+ addCriterion("module in", values, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleNotIn(List<String> values) {
+ addCriterion("module not in", values, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleBetween(String value1, String value2) {
+ addCriterion("module between", value1, value2, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andModuleNotBetween(String value1, String value2) {
+ addCriterion("module not between", value1, value2, "module");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetIsNull() {
+ addCriterion("beforetarget is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetIsNotNull() {
+ addCriterion("beforetarget is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetEqualTo(String value) {
+ addCriterion("beforetarget =", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetNotEqualTo(String value) {
+ addCriterion("beforetarget <>", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetGreaterThan(String value) {
+ addCriterion("beforetarget >", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetGreaterThanOrEqualTo(String value) {
+ addCriterion("beforetarget >=", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetLessThan(String value) {
+ addCriterion("beforetarget <", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetLessThanOrEqualTo(String value) {
+ addCriterion("beforetarget <=", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetLike(String value) {
+ addCriterion("beforetarget like", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetNotLike(String value) {
+ addCriterion("beforetarget not like", value, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetIn(List<String> values) {
+ addCriterion("beforetarget in", values, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetNotIn(List<String> values) {
+ addCriterion("beforetarget not in", values, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetBetween(String value1, String value2) {
+ addCriterion("beforetarget between", value1, value2, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andBeforetargetNotBetween(String value1, String value2) {
+ addCriterion("beforetarget not between", value1, value2, "beforetarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetIsNull() {
+ addCriterion("aftertarget is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetIsNotNull() {
+ addCriterion("aftertarget is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetEqualTo(String value) {
+ addCriterion("aftertarget =", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetNotEqualTo(String value) {
+ addCriterion("aftertarget <>", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetGreaterThan(String value) {
+ addCriterion("aftertarget >", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetGreaterThanOrEqualTo(String value) {
+ addCriterion("aftertarget >=", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetLessThan(String value) {
+ addCriterion("aftertarget <", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetLessThanOrEqualTo(String value) {
+ addCriterion("aftertarget <=", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetLike(String value) {
+ addCriterion("aftertarget like", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetNotLike(String value) {
+ addCriterion("aftertarget not like", value, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetIn(List<String> values) {
+ addCriterion("aftertarget in", values, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetNotIn(List<String> values) {
+ addCriterion("aftertarget not in", values, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetBetween(String value1, String value2) {
+ addCriterion("aftertarget between", value1, value2, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andAftertargetNotBetween(String value1, String value2) {
+ addCriterion("aftertarget not between", value1, value2, "aftertarget");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfig.java
new file mode 100644
index 0000000..82a9c67
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfig.java
@@ -0,0 +1,95 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class SystemConfig {
+ private String id;
+
+ private String ckey;
+
+ private String cvalue;
+
+ private String clevel;
+
+ private String category;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCkey() {
+ return ckey;
+ }
+
+ public void setCkey(String ckey) {
+ this.ckey = ckey == null ? null : ckey.trim();
+ }
+
+ public String getCvalue() {
+ return cvalue;
+ }
+
+ public void setCvalue(String cvalue) {
+ this.cvalue = cvalue == null ? null : cvalue.trim();
+ }
+
+ public String getClevel() {
+ return clevel;
+ }
+
+ public void setClevel(String clevel) {
+ this.clevel = clevel == null ? null : clevel.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfigExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfigExample.java
new file mode 100644
index 0000000..93f43c0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemConfigExample.java
@@ -0,0 +1,903 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SystemConfigExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public SystemConfigExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemConfigExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemConfigExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_config
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemConfigExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyIsNull() {
+ addCriterion("ckey is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyIsNotNull() {
+ addCriterion("ckey is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyEqualTo(String value) {
+ addCriterion("ckey =", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyNotEqualTo(String value) {
+ addCriterion("ckey <>", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyGreaterThan(String value) {
+ addCriterion("ckey >", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyGreaterThanOrEqualTo(String value) {
+ addCriterion("ckey >=", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyLessThan(String value) {
+ addCriterion("ckey <", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyLessThanOrEqualTo(String value) {
+ addCriterion("ckey <=", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyLike(String value) {
+ addCriterion("ckey like", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyNotLike(String value) {
+ addCriterion("ckey not like", value, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyIn(List<String> values) {
+ addCriterion("ckey in", values, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyNotIn(List<String> values) {
+ addCriterion("ckey not in", values, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyBetween(String value1, String value2) {
+ addCriterion("ckey between", value1, value2, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCkeyNotBetween(String value1, String value2) {
+ addCriterion("ckey not between", value1, value2, "ckey");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueIsNull() {
+ addCriterion("cvalue is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueIsNotNull() {
+ addCriterion("cvalue is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueEqualTo(String value) {
+ addCriterion("cvalue =", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueNotEqualTo(String value) {
+ addCriterion("cvalue <>", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueGreaterThan(String value) {
+ addCriterion("cvalue >", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueGreaterThanOrEqualTo(String value) {
+ addCriterion("cvalue >=", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueLessThan(String value) {
+ addCriterion("cvalue <", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueLessThanOrEqualTo(String value) {
+ addCriterion("cvalue <=", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueLike(String value) {
+ addCriterion("cvalue like", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueNotLike(String value) {
+ addCriterion("cvalue not like", value, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueIn(List<String> values) {
+ addCriterion("cvalue in", values, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueNotIn(List<String> values) {
+ addCriterion("cvalue not in", values, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueBetween(String value1, String value2) {
+ addCriterion("cvalue between", value1, value2, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andCvalueNotBetween(String value1, String value2) {
+ addCriterion("cvalue not between", value1, value2, "cvalue");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelIsNull() {
+ addCriterion("clevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelIsNotNull() {
+ addCriterion("clevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelEqualTo(String value) {
+ addCriterion("clevel =", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelNotEqualTo(String value) {
+ addCriterion("clevel <>", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelGreaterThan(String value) {
+ addCriterion("clevel >", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelGreaterThanOrEqualTo(String value) {
+ addCriterion("clevel >=", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelLessThan(String value) {
+ addCriterion("clevel <", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelLessThanOrEqualTo(String value) {
+ addCriterion("clevel <=", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelLike(String value) {
+ addCriterion("clevel like", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelNotLike(String value) {
+ addCriterion("clevel not like", value, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelIn(List<String> values) {
+ addCriterion("clevel in", values, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelNotIn(List<String> values) {
+ addCriterion("clevel not in", values, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelBetween(String value1, String value2) {
+ addCriterion("clevel between", value1, value2, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andClevelNotBetween(String value1, String value2) {
+ addCriterion("clevel not between", value1, value2, "clevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryIsNull() {
+ addCriterion("category is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryIsNotNull() {
+ addCriterion("category is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryEqualTo(String value) {
+ addCriterion("category =", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotEqualTo(String value) {
+ addCriterion("category <>", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryGreaterThan(String value) {
+ addCriterion("category >", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryGreaterThanOrEqualTo(String value) {
+ addCriterion("category >=", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryLessThan(String value) {
+ addCriterion("category <", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryLessThanOrEqualTo(String value) {
+ addCriterion("category <=", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryLike(String value) {
+ addCriterion("category like", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotLike(String value) {
+ addCriterion("category not like", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryIn(List<String> values) {
+ addCriterion("category in", values, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotIn(List<String> values) {
+ addCriterion("category not in", values, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryBetween(String value1, String value2) {
+ addCriterion("category between", value1, value2, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotBetween(String value1, String value2) {
+ addCriterion("category not between", value1, value2, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLog.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLog.java
new file mode 100644
index 0000000..7cbb04d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLog.java
@@ -0,0 +1,115 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class SystemMailLog {
+ private String id;
+
+ private String uid;
+
+ private Integer status;
+
+ private String routekey;
+
+ private String exchange;
+
+ private Integer count;
+
+ private Date trytime;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String username;
+
+ private String account;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRoutekey() {
+ return routekey;
+ }
+
+ public void setRoutekey(String routekey) {
+ this.routekey = routekey == null ? null : routekey.trim();
+ }
+
+ public String getExchange() {
+ return exchange;
+ }
+
+ public void setExchange(String exchange) {
+ this.exchange = exchange == null ? null : exchange.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public Date getTrytime() {
+ return trytime;
+ }
+
+ public void setTrytime(Date trytime) {
+ this.trytime = trytime;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLogExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLogExample.java
new file mode 100644
index 0000000..8b4d42b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMailLogExample.java
@@ -0,0 +1,1023 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SystemMailLogExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public SystemMailLogExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemMailLogExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemMailLogExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_mail_log
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemMailLogExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidIsNull() {
+ addCriterion("uid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidIsNotNull() {
+ addCriterion("uid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidEqualTo(String value) {
+ addCriterion("uid =", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidNotEqualTo(String value) {
+ addCriterion("uid <>", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidGreaterThan(String value) {
+ addCriterion("uid >", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidGreaterThanOrEqualTo(String value) {
+ addCriterion("uid >=", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidLessThan(String value) {
+ addCriterion("uid <", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidLessThanOrEqualTo(String value) {
+ addCriterion("uid <=", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidLike(String value) {
+ addCriterion("uid like", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidNotLike(String value) {
+ addCriterion("uid not like", value, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidIn(List<String> values) {
+ addCriterion("uid in", values, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidNotIn(List<String> values) {
+ addCriterion("uid not in", values, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidBetween(String value1, String value2) {
+ addCriterion("uid between", value1, value2, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andUidNotBetween(String value1, String value2) {
+ addCriterion("uid not between", value1, value2, "uid");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyIsNull() {
+ addCriterion("routeKey is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyIsNotNull() {
+ addCriterion("routeKey is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyEqualTo(String value) {
+ addCriterion("routeKey =", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyNotEqualTo(String value) {
+ addCriterion("routeKey <>", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyGreaterThan(String value) {
+ addCriterion("routeKey >", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyGreaterThanOrEqualTo(String value) {
+ addCriterion("routeKey >=", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyLessThan(String value) {
+ addCriterion("routeKey <", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyLessThanOrEqualTo(String value) {
+ addCriterion("routeKey <=", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyLike(String value) {
+ addCriterion("routeKey like", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyNotLike(String value) {
+ addCriterion("routeKey not like", value, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyIn(List<String> values) {
+ addCriterion("routeKey in", values, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyNotIn(List<String> values) {
+ addCriterion("routeKey not in", values, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyBetween(String value1, String value2) {
+ addCriterion("routeKey between", value1, value2, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andRoutekeyNotBetween(String value1, String value2) {
+ addCriterion("routeKey not between", value1, value2, "routekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeIsNull() {
+ addCriterion("exchange is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeIsNotNull() {
+ addCriterion("exchange is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeEqualTo(String value) {
+ addCriterion("exchange =", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeNotEqualTo(String value) {
+ addCriterion("exchange <>", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeGreaterThan(String value) {
+ addCriterion("exchange >", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeGreaterThanOrEqualTo(String value) {
+ addCriterion("exchange >=", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeLessThan(String value) {
+ addCriterion("exchange <", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeLessThanOrEqualTo(String value) {
+ addCriterion("exchange <=", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeLike(String value) {
+ addCriterion("exchange like", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeNotLike(String value) {
+ addCriterion("exchange not like", value, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeIn(List<String> values) {
+ addCriterion("exchange in", values, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeNotIn(List<String> values) {
+ addCriterion("exchange not in", values, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeBetween(String value1, String value2) {
+ addCriterion("exchange between", value1, value2, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andExchangeNotBetween(String value1, String value2) {
+ addCriterion("exchange not between", value1, value2, "exchange");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNull() {
+ addCriterion("count is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIsNotNull() {
+ addCriterion("count is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountEqualTo(Integer value) {
+ addCriterion("count =", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotEqualTo(Integer value) {
+ addCriterion("count <>", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThan(Integer value) {
+ addCriterion("count >", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountGreaterThanOrEqualTo(Integer value) {
+ addCriterion("count >=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThan(Integer value) {
+ addCriterion("count <", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountLessThanOrEqualTo(Integer value) {
+ addCriterion("count <=", value, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountIn(List<Integer> values) {
+ addCriterion("count in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotIn(List<Integer> values) {
+ addCriterion("count not in", values, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountBetween(Integer value1, Integer value2) {
+ addCriterion("count between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountNotBetween(Integer value1, Integer value2) {
+ addCriterion("count not between", value1, value2, "count");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeIsNull() {
+ addCriterion("tryTime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeIsNotNull() {
+ addCriterion("tryTime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeEqualTo(Date value) {
+ addCriterion("tryTime =", value, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeNotEqualTo(Date value) {
+ addCriterion("tryTime <>", value, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeGreaterThan(Date value) {
+ addCriterion("tryTime >", value, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("tryTime >=", value, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeLessThan(Date value) {
+ addCriterion("tryTime <", value, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeLessThanOrEqualTo(Date value) {
+ addCriterion("tryTime <=", value, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeIn(List<Date> values) {
+ addCriterion("tryTime in", values, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeNotIn(List<Date> values) {
+ addCriterion("tryTime not in", values, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeBetween(Date value1, Date value2) {
+ addCriterion("tryTime between", value1, value2, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andTrytimeNotBetween(Date value1, Date value2) {
+ addCriterion("tryTime not between", value1, value2, "trytime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createTime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createTime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createTime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createTime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createTime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createTime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createTime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createTime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createTime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createTime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createTime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createTime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updateTime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updateTime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updateTime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updateTime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updateTime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updateTime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updateTime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updateTime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updateTime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updateTime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updateTime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updateTime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameIsNull() {
+ addCriterion("username is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameIsNotNull() {
+ addCriterion("username is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameEqualTo(String value) {
+ addCriterion("username =", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameNotEqualTo(String value) {
+ addCriterion("username <>", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameGreaterThan(String value) {
+ addCriterion("username >", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameGreaterThanOrEqualTo(String value) {
+ addCriterion("username >=", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameLessThan(String value) {
+ addCriterion("username <", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameLessThanOrEqualTo(String value) {
+ addCriterion("username <=", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameLike(String value) {
+ addCriterion("username like", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameNotLike(String value) {
+ addCriterion("username not like", value, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameIn(List<String> values) {
+ addCriterion("username in", values, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameNotIn(List<String> values) {
+ addCriterion("username not in", values, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameBetween(String value1, String value2) {
+ addCriterion("username between", value1, value2, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsernameNotBetween(String value1, String value2) {
+ addCriterion("username not between", value1, value2, "username");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountIsNull() {
+ addCriterion("account is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountIsNotNull() {
+ addCriterion("account is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountEqualTo(String value) {
+ addCriterion("account =", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountNotEqualTo(String value) {
+ addCriterion("account <>", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountGreaterThan(String value) {
+ addCriterion("account >", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountGreaterThanOrEqualTo(String value) {
+ addCriterion("account >=", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountLessThan(String value) {
+ addCriterion("account <", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountLessThanOrEqualTo(String value) {
+ addCriterion("account <=", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountLike(String value) {
+ addCriterion("account like", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountNotLike(String value) {
+ addCriterion("account not like", value, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountIn(List<String> values) {
+ addCriterion("account in", values, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountNotIn(List<String> values) {
+ addCriterion("account not in", values, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountBetween(String value1, String value2) {
+ addCriterion("account between", value1, value2, "account");
+ return (Criteria) this;
+ }
+
+ public Criteria andAccountNotBetween(String value1, String value2) {
+ addCriterion("account not between", value1, value2, "account");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenu.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenu.java
new file mode 100644
index 0000000..b17edd8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenu.java
@@ -0,0 +1,185 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class SystemMenu {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String url;
+
+ private String path;
+
+ private String component;
+
+ private Integer type;
+
+ private String icon;
+
+ private String parentid;
+
+ private Boolean keepalive;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer level;
+
+ private String languagekey;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path == null ? null : path.trim();
+ }
+
+ public String getComponent() {
+ return component;
+ }
+
+ public void setComponent(String component) {
+ this.component = component == null ? null : component.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Boolean getKeepalive() {
+ return keepalive;
+ }
+
+ public void setKeepalive(Boolean keepalive) {
+ this.keepalive = keepalive;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getLanguagekey() {
+ return languagekey;
+ }
+
+ public void setLanguagekey(String languagekey) {
+ this.languagekey = languagekey == null ? null : languagekey.trim();
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenuExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenuExample.java
new file mode 100644
index 0000000..6956241
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemMenuExample.java
@@ -0,0 +1,1503 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SystemMenuExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public SystemMenuExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemMenuExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemMenuExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_menu
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemMenuExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlIsNull() {
+ addCriterion("url is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlIsNotNull() {
+ addCriterion("url is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlEqualTo(String value) {
+ addCriterion("url =", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlNotEqualTo(String value) {
+ addCriterion("url <>", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlGreaterThan(String value) {
+ addCriterion("url >", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlGreaterThanOrEqualTo(String value) {
+ addCriterion("url >=", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlLessThan(String value) {
+ addCriterion("url <", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlLessThanOrEqualTo(String value) {
+ addCriterion("url <=", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlLike(String value) {
+ addCriterion("url like", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlNotLike(String value) {
+ addCriterion("url not like", value, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlIn(List<String> values) {
+ addCriterion("url in", values, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlNotIn(List<String> values) {
+ addCriterion("url not in", values, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlBetween(String value1, String value2) {
+ addCriterion("url between", value1, value2, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andUrlNotBetween(String value1, String value2) {
+ addCriterion("url not between", value1, value2, "url");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathIsNull() {
+ addCriterion("path is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathIsNotNull() {
+ addCriterion("path is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathEqualTo(String value) {
+ addCriterion("path =", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathNotEqualTo(String value) {
+ addCriterion("path <>", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathGreaterThan(String value) {
+ addCriterion("path >", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathGreaterThanOrEqualTo(String value) {
+ addCriterion("path >=", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathLessThan(String value) {
+ addCriterion("path <", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathLessThanOrEqualTo(String value) {
+ addCriterion("path <=", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathLike(String value) {
+ addCriterion("path like", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathNotLike(String value) {
+ addCriterion("path not like", value, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathIn(List<String> values) {
+ addCriterion("path in", values, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathNotIn(List<String> values) {
+ addCriterion("path not in", values, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathBetween(String value1, String value2) {
+ addCriterion("path between", value1, value2, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andPathNotBetween(String value1, String value2) {
+ addCriterion("path not between", value1, value2, "path");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentIsNull() {
+ addCriterion("component is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentIsNotNull() {
+ addCriterion("component is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentEqualTo(String value) {
+ addCriterion("component =", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentNotEqualTo(String value) {
+ addCriterion("component <>", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentGreaterThan(String value) {
+ addCriterion("component >", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentGreaterThanOrEqualTo(String value) {
+ addCriterion("component >=", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentLessThan(String value) {
+ addCriterion("component <", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentLessThanOrEqualTo(String value) {
+ addCriterion("component <=", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentLike(String value) {
+ addCriterion("component like", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentNotLike(String value) {
+ addCriterion("component not like", value, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentIn(List<String> values) {
+ addCriterion("component in", values, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentNotIn(List<String> values) {
+ addCriterion("component not in", values, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentBetween(String value1, String value2) {
+ addCriterion("component between", value1, value2, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andComponentNotBetween(String value1, String value2) {
+ addCriterion("component not between", value1, value2, "component");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("type is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("type is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("type =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("type <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("type >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("type >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("type <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("type <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List<Integer> values) {
+ addCriterion("type in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List<Integer> values) {
+ addCriterion("type not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("type between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("type not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIsNull() {
+ addCriterion("icon is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIsNotNull() {
+ addCriterion("icon is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconEqualTo(String value) {
+ addCriterion("icon =", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotEqualTo(String value) {
+ addCriterion("icon <>", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconGreaterThan(String value) {
+ addCriterion("icon >", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconGreaterThanOrEqualTo(String value) {
+ addCriterion("icon >=", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLessThan(String value) {
+ addCriterion("icon <", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLessThanOrEqualTo(String value) {
+ addCriterion("icon <=", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconLike(String value) {
+ addCriterion("icon like", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotLike(String value) {
+ addCriterion("icon not like", value, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconIn(List<String> values) {
+ addCriterion("icon in", values, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotIn(List<String> values) {
+ addCriterion("icon not in", values, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconBetween(String value1, String value2) {
+ addCriterion("icon between", value1, value2, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andIconNotBetween(String value1, String value2) {
+ addCriterion("icon not between", value1, value2, "icon");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNull() {
+ addCriterion("parentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIsNotNull() {
+ addCriterion("parentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidEqualTo(String value) {
+ addCriterion("parentid =", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotEqualTo(String value) {
+ addCriterion("parentid <>", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThan(String value) {
+ addCriterion("parentid >", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidGreaterThanOrEqualTo(String value) {
+ addCriterion("parentid >=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThan(String value) {
+ addCriterion("parentid <", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLessThanOrEqualTo(String value) {
+ addCriterion("parentid <=", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidLike(String value) {
+ addCriterion("parentid like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotLike(String value) {
+ addCriterion("parentid not like", value, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidIn(List<String> values) {
+ addCriterion("parentid in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotIn(List<String> values) {
+ addCriterion("parentid not in", values, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidBetween(String value1, String value2) {
+ addCriterion("parentid between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentidNotBetween(String value1, String value2) {
+ addCriterion("parentid not between", value1, value2, "parentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveIsNull() {
+ addCriterion("keepalive is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveIsNotNull() {
+ addCriterion("keepalive is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveEqualTo(Boolean value) {
+ addCriterion("keepalive =", value, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveNotEqualTo(Boolean value) {
+ addCriterion("keepalive <>", value, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveGreaterThan(Boolean value) {
+ addCriterion("keepalive >", value, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("keepalive >=", value, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveLessThan(Boolean value) {
+ addCriterion("keepalive <", value, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveLessThanOrEqualTo(Boolean value) {
+ addCriterion("keepalive <=", value, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveIn(List<Boolean> values) {
+ addCriterion("keepalive in", values, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveNotIn(List<Boolean> values) {
+ addCriterion("keepalive not in", values, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveBetween(Boolean value1, Boolean value2) {
+ addCriterion("keepalive between", value1, value2, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeepaliveNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("keepalive not between", value1, value2, "keepalive");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIsNull() {
+ addCriterion("level is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIsNotNull() {
+ addCriterion("level is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelEqualTo(Integer value) {
+ addCriterion("level =", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotEqualTo(Integer value) {
+ addCriterion("level <>", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelGreaterThan(Integer value) {
+ addCriterion("level >", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("level >=", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelLessThan(Integer value) {
+ addCriterion("level <", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelLessThanOrEqualTo(Integer value) {
+ addCriterion("level <=", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIn(List<Integer> values) {
+ addCriterion("level in", values, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotIn(List<Integer> values) {
+ addCriterion("level not in", values, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelBetween(Integer value1, Integer value2) {
+ addCriterion("level between", value1, value2, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("level not between", value1, value2, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyIsNull() {
+ addCriterion("languagekey is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyIsNotNull() {
+ addCriterion("languagekey is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyEqualTo(String value) {
+ addCriterion("languagekey =", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyNotEqualTo(String value) {
+ addCriterion("languagekey <>", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyGreaterThan(String value) {
+ addCriterion("languagekey >", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyGreaterThanOrEqualTo(String value) {
+ addCriterion("languagekey >=", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyLessThan(String value) {
+ addCriterion("languagekey <", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyLessThanOrEqualTo(String value) {
+ addCriterion("languagekey <=", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyLike(String value) {
+ addCriterion("languagekey like", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyNotLike(String value) {
+ addCriterion("languagekey not like", value, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyIn(List<String> values) {
+ addCriterion("languagekey in", values, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyNotIn(List<String> values) {
+ addCriterion("languagekey not in", values, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyBetween(String value1, String value2) {
+ addCriterion("languagekey between", value1, value2, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguagekeyNotBetween(String value1, String value2) {
+ addCriterion("languagekey not between", value1, value2, "languagekey");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeIsNull() {
+ addCriterion("parentcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeIsNotNull() {
+ addCriterion("parentcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeEqualTo(String value) {
+ addCriterion("parentcode =", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeNotEqualTo(String value) {
+ addCriterion("parentcode <>", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeGreaterThan(String value) {
+ addCriterion("parentcode >", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("parentcode >=", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeLessThan(String value) {
+ addCriterion("parentcode <", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeLessThanOrEqualTo(String value) {
+ addCriterion("parentcode <=", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeLike(String value) {
+ addCriterion("parentcode like", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeNotLike(String value) {
+ addCriterion("parentcode not like", value, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeIn(List<String> values) {
+ addCriterion("parentcode in", values, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeNotIn(List<String> values) {
+ addCriterion("parentcode not in", values, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeBetween(String value1, String value2) {
+ addCriterion("parentcode between", value1, value2, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentcodeNotBetween(String value1, String value2) {
+ addCriterion("parentcode not between", value1, value2, "parentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameIsNull() {
+ addCriterion("parentname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameIsNotNull() {
+ addCriterion("parentname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameEqualTo(String value) {
+ addCriterion("parentname =", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameNotEqualTo(String value) {
+ addCriterion("parentname <>", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameGreaterThan(String value) {
+ addCriterion("parentname >", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameGreaterThanOrEqualTo(String value) {
+ addCriterion("parentname >=", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameLessThan(String value) {
+ addCriterion("parentname <", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameLessThanOrEqualTo(String value) {
+ addCriterion("parentname <=", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameLike(String value) {
+ addCriterion("parentname like", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameNotLike(String value) {
+ addCriterion("parentname not like", value, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameIn(List<String> values) {
+ addCriterion("parentname in", values, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameNotIn(List<String> values) {
+ addCriterion("parentname not in", values, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameBetween(String value1, String value2) {
+ addCriterion("parentname between", value1, value2, "parentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andParentnameNotBetween(String value1, String value2) {
+ addCriterion("parentname not between", value1, value2, "parentname");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotification.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotification.java
new file mode 100644
index 0000000..20a027a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotification.java
@@ -0,0 +1,155 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class SystemNotification {
+ private String id;
+
+ private String title;
+
+ private String department;
+
+ private String category;
+
+ private Integer nlevel;
+
+ private String keywords;
+
+ private String actionby;
+
+ private Integer status;
+
+ private String publisher;
+
+ private Date publishdatetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String context;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department == null ? null : department.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getNlevel() {
+ return nlevel;
+ }
+
+ public void setNlevel(Integer nlevel) {
+ this.nlevel = nlevel;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords == null ? null : keywords.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getPublisher() {
+ return publisher;
+ }
+
+ public void setPublisher(String publisher) {
+ this.publisher = publisher == null ? null : publisher.trim();
+ }
+
+ public Date getPublishdatetime() {
+ return publishdatetime;
+ }
+
+ public void setPublishdatetime(Date publishdatetime) {
+ this.publishdatetime = publishdatetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setContext(String context) {
+ this.context = context == null ? null : context.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotificationExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotificationExample.java
new file mode 100644
index 0000000..9473761
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/SystemNotificationExample.java
@@ -0,0 +1,1223 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class SystemNotificationExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public SystemNotificationExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemNotificationExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemNotificationExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table system_notification
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public SystemNotificationExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleIsNull() {
+ addCriterion("title is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleIsNotNull() {
+ addCriterion("title is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleEqualTo(String value) {
+ addCriterion("title =", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleNotEqualTo(String value) {
+ addCriterion("title <>", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleGreaterThan(String value) {
+ addCriterion("title >", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleGreaterThanOrEqualTo(String value) {
+ addCriterion("title >=", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleLessThan(String value) {
+ addCriterion("title <", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleLessThanOrEqualTo(String value) {
+ addCriterion("title <=", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleLike(String value) {
+ addCriterion("title like", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleNotLike(String value) {
+ addCriterion("title not like", value, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleIn(List<String> values) {
+ addCriterion("title in", values, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleNotIn(List<String> values) {
+ addCriterion("title not in", values, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleBetween(String value1, String value2) {
+ addCriterion("title between", value1, value2, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andTitleNotBetween(String value1, String value2) {
+ addCriterion("title not between", value1, value2, "title");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentIsNull() {
+ addCriterion("department is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentIsNotNull() {
+ addCriterion("department is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentEqualTo(String value) {
+ addCriterion("department =", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentNotEqualTo(String value) {
+ addCriterion("department <>", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentGreaterThan(String value) {
+ addCriterion("department >", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentGreaterThanOrEqualTo(String value) {
+ addCriterion("department >=", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentLessThan(String value) {
+ addCriterion("department <", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentLessThanOrEqualTo(String value) {
+ addCriterion("department <=", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentLike(String value) {
+ addCriterion("department like", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentNotLike(String value) {
+ addCriterion("department not like", value, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentIn(List<String> values) {
+ addCriterion("department in", values, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentNotIn(List<String> values) {
+ addCriterion("department not in", values, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentBetween(String value1, String value2) {
+ addCriterion("department between", value1, value2, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentNotBetween(String value1, String value2) {
+ addCriterion("department not between", value1, value2, "department");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryIsNull() {
+ addCriterion("category is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryIsNotNull() {
+ addCriterion("category is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryEqualTo(String value) {
+ addCriterion("category =", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotEqualTo(String value) {
+ addCriterion("category <>", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryGreaterThan(String value) {
+ addCriterion("category >", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryGreaterThanOrEqualTo(String value) {
+ addCriterion("category >=", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryLessThan(String value) {
+ addCriterion("category <", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryLessThanOrEqualTo(String value) {
+ addCriterion("category <=", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryLike(String value) {
+ addCriterion("category like", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotLike(String value) {
+ addCriterion("category not like", value, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryIn(List<String> values) {
+ addCriterion("category in", values, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotIn(List<String> values) {
+ addCriterion("category not in", values, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryBetween(String value1, String value2) {
+ addCriterion("category between", value1, value2, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andCategoryNotBetween(String value1, String value2) {
+ addCriterion("category not between", value1, value2, "category");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelIsNull() {
+ addCriterion("nlevel is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelIsNotNull() {
+ addCriterion("nlevel is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelEqualTo(Integer value) {
+ addCriterion("nlevel =", value, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelNotEqualTo(Integer value) {
+ addCriterion("nlevel <>", value, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelGreaterThan(Integer value) {
+ addCriterion("nlevel >", value, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("nlevel >=", value, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelLessThan(Integer value) {
+ addCriterion("nlevel <", value, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelLessThanOrEqualTo(Integer value) {
+ addCriterion("nlevel <=", value, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelIn(List<Integer> values) {
+ addCriterion("nlevel in", values, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelNotIn(List<Integer> values) {
+ addCriterion("nlevel not in", values, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelBetween(Integer value1, Integer value2) {
+ addCriterion("nlevel between", value1, value2, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andNlevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("nlevel not between", value1, value2, "nlevel");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsIsNull() {
+ addCriterion("keywords is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsIsNotNull() {
+ addCriterion("keywords is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsEqualTo(String value) {
+ addCriterion("keywords =", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsNotEqualTo(String value) {
+ addCriterion("keywords <>", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsGreaterThan(String value) {
+ addCriterion("keywords >", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsGreaterThanOrEqualTo(String value) {
+ addCriterion("keywords >=", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsLessThan(String value) {
+ addCriterion("keywords <", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsLessThanOrEqualTo(String value) {
+ addCriterion("keywords <=", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsLike(String value) {
+ addCriterion("keywords like", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsNotLike(String value) {
+ addCriterion("keywords not like", value, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsIn(List<String> values) {
+ addCriterion("keywords in", values, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsNotIn(List<String> values) {
+ addCriterion("keywords not in", values, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsBetween(String value1, String value2) {
+ addCriterion("keywords between", value1, value2, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andKeywordsNotBetween(String value1, String value2) {
+ addCriterion("keywords not between", value1, value2, "keywords");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNull() {
+ addCriterion("actionby is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIsNotNull() {
+ addCriterion("actionby is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyEqualTo(String value) {
+ addCriterion("actionby =", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotEqualTo(String value) {
+ addCriterion("actionby <>", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThan(String value) {
+ addCriterion("actionby >", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyGreaterThanOrEqualTo(String value) {
+ addCriterion("actionby >=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThan(String value) {
+ addCriterion("actionby <", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLessThanOrEqualTo(String value) {
+ addCriterion("actionby <=", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyLike(String value) {
+ addCriterion("actionby like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotLike(String value) {
+ addCriterion("actionby not like", value, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyIn(List<String> values) {
+ addCriterion("actionby in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotIn(List<String> values) {
+ addCriterion("actionby not in", values, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyBetween(String value1, String value2) {
+ addCriterion("actionby between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andActionbyNotBetween(String value1, String value2) {
+ addCriterion("actionby not between", value1, value2, "actionby");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherIsNull() {
+ addCriterion("publisher is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherIsNotNull() {
+ addCriterion("publisher is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherEqualTo(String value) {
+ addCriterion("publisher =", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherNotEqualTo(String value) {
+ addCriterion("publisher <>", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherGreaterThan(String value) {
+ addCriterion("publisher >", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherGreaterThanOrEqualTo(String value) {
+ addCriterion("publisher >=", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherLessThan(String value) {
+ addCriterion("publisher <", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherLessThanOrEqualTo(String value) {
+ addCriterion("publisher <=", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherLike(String value) {
+ addCriterion("publisher like", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherNotLike(String value) {
+ addCriterion("publisher not like", value, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherIn(List<String> values) {
+ addCriterion("publisher in", values, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherNotIn(List<String> values) {
+ addCriterion("publisher not in", values, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherBetween(String value1, String value2) {
+ addCriterion("publisher between", value1, value2, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublisherNotBetween(String value1, String value2) {
+ addCriterion("publisher not between", value1, value2, "publisher");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeIsNull() {
+ addCriterion("publishdatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeIsNotNull() {
+ addCriterion("publishdatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeEqualTo(Date value) {
+ addCriterion("publishdatetime =", value, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeNotEqualTo(Date value) {
+ addCriterion("publishdatetime <>", value, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeGreaterThan(Date value) {
+ addCriterion("publishdatetime >", value, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("publishdatetime >=", value, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeLessThan(Date value) {
+ addCriterion("publishdatetime <", value, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("publishdatetime <=", value, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeIn(List<Date> values) {
+ addCriterion("publishdatetime in", values, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeNotIn(List<Date> values) {
+ addCriterion("publishdatetime not in", values, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeBetween(Date value1, Date value2) {
+ addCriterion("publishdatetime between", value1, value2, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andPublishdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("publishdatetime not between", value1, value2, "publishdatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActive.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActive.java
new file mode 100644
index 0000000..f287abd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActive.java
@@ -0,0 +1,216 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPCouponActive {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private Integer type;
+
+ private String activityname;
+
+ private String code;
+
+ private String distributioncondition;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal discountrate;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date issuingtime;
+
+ private Date usagetime;
+
+ private String orderno;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getActivityname() {
+ return activityname;
+ }
+
+ public void setActivityname(String activityname) {
+ this.activityname = activityname == null ? null : activityname.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getDistributioncondition() {
+ return distributioncondition;
+ }
+
+ public void setDistributioncondition(String distributioncondition) {
+ this.distributioncondition = distributioncondition == null ? null : distributioncondition.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getIssuingtime() {
+ return issuingtime;
+ }
+
+ public void setIssuingtime(Date issuingtime) {
+ this.issuingtime = issuingtime;
+ }
+
+ public Date getUsagetime() {
+ return usagetime;
+ }
+
+ public void setUsagetime(Date usagetime) {
+ this.usagetime = usagetime;
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActiveExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActiveExample.java
new file mode 100644
index 0000000..85adcd2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponActiveExample.java
@@ -0,0 +1,1654 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class VIPCouponActiveExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public VIPCouponActiveExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPCouponActiveExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPCouponActiveExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_active
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPCouponActiveExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("type is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("type is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("type =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("type <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("type >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("type >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("type <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("type <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List<Integer> values) {
+ addCriterion("type in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List<Integer> values) {
+ addCriterion("type not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("type between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("type not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameIsNull() {
+ addCriterion("activityname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameIsNotNull() {
+ addCriterion("activityname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameEqualTo(String value) {
+ addCriterion("activityname =", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotEqualTo(String value) {
+ addCriterion("activityname <>", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameGreaterThan(String value) {
+ addCriterion("activityname >", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameGreaterThanOrEqualTo(String value) {
+ addCriterion("activityname >=", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameLessThan(String value) {
+ addCriterion("activityname <", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameLessThanOrEqualTo(String value) {
+ addCriterion("activityname <=", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameLike(String value) {
+ addCriterion("activityname like", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotLike(String value) {
+ addCriterion("activityname not like", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameIn(List<String> values) {
+ addCriterion("activityname in", values, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotIn(List<String> values) {
+ addCriterion("activityname not in", values, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameBetween(String value1, String value2) {
+ addCriterion("activityname between", value1, value2, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotBetween(String value1, String value2) {
+ addCriterion("activityname not between", value1, value2, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionIsNull() {
+ addCriterion("distributioncondition is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionIsNotNull() {
+ addCriterion("distributioncondition is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionEqualTo(String value) {
+ addCriterion("distributioncondition =", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotEqualTo(String value) {
+ addCriterion("distributioncondition <>", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionGreaterThan(String value) {
+ addCriterion("distributioncondition >", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionGreaterThanOrEqualTo(String value) {
+ addCriterion("distributioncondition >=", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionLessThan(String value) {
+ addCriterion("distributioncondition <", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionLessThanOrEqualTo(String value) {
+ addCriterion("distributioncondition <=", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionLike(String value) {
+ addCriterion("distributioncondition like", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotLike(String value) {
+ addCriterion("distributioncondition not like", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionIn(List<String> values) {
+ addCriterion("distributioncondition in", values, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotIn(List<String> values) {
+ addCriterion("distributioncondition not in", values, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionBetween(String value1, String value2) {
+ addCriterion("distributioncondition between", value1, value2, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotBetween(String value1, String value2) {
+ addCriterion("distributioncondition not between", value1, value2, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNull() {
+ addCriterion("amount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNotNull() {
+ addCriterion("amount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountEqualTo(BigDecimal value) {
+ addCriterion("amount =", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotEqualTo(BigDecimal value) {
+ addCriterion("amount <>", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThan(BigDecimal value) {
+ addCriterion("amount >", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount >=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThan(BigDecimal value) {
+ addCriterion("amount <", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount <=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIn(List<BigDecimal> values) {
+ addCriterion("amount in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotIn(List<BigDecimal> values) {
+ addCriterion("amount not in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount not between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNull() {
+ addCriterion("discount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNotNull() {
+ addCriterion("discount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountEqualTo(BigDecimal value) {
+ addCriterion("discount =", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotEqualTo(BigDecimal value) {
+ addCriterion("discount <>", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThan(BigDecimal value) {
+ addCriterion("discount >", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount >=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThan(BigDecimal value) {
+ addCriterion("discount <", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount <=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIn(List<BigDecimal> values) {
+ addCriterion("discount in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotIn(List<BigDecimal> values) {
+ addCriterion("discount not in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount not between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNull() {
+ addCriterion("discountrate is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNotNull() {
+ addCriterion("discountrate is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateEqualTo(BigDecimal value) {
+ addCriterion("discountrate =", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotEqualTo(BigDecimal value) {
+ addCriterion("discountrate <>", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThan(BigDecimal value) {
+ addCriterion("discountrate >", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate >=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThan(BigDecimal value) {
+ addCriterion("discountrate <", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate <=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIn(List<BigDecimal> values) {
+ addCriterion("discountrate in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotIn(List<BigDecimal> values) {
+ addCriterion("discountrate not in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate not between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromIsNull() {
+ addCriterion("validdatefrom is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromIsNotNull() {
+ addCriterion("validdatefrom is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromEqualTo(Date value) {
+ addCriterion("validdatefrom =", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromNotEqualTo(Date value) {
+ addCriterion("validdatefrom <>", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromGreaterThan(Date value) {
+ addCriterion("validdatefrom >", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromGreaterThanOrEqualTo(Date value) {
+ addCriterion("validdatefrom >=", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromLessThan(Date value) {
+ addCriterion("validdatefrom <", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromLessThanOrEqualTo(Date value) {
+ addCriterion("validdatefrom <=", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromIn(List<Date> values) {
+ addCriterion("validdatefrom in", values, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromNotIn(List<Date> values) {
+ addCriterion("validdatefrom not in", values, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromBetween(Date value1, Date value2) {
+ addCriterion("validdatefrom between", value1, value2, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromNotBetween(Date value1, Date value2) {
+ addCriterion("validdatefrom not between", value1, value2, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoIsNull() {
+ addCriterion("validdateto is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoIsNotNull() {
+ addCriterion("validdateto is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoEqualTo(Date value) {
+ addCriterion("validdateto =", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoNotEqualTo(Date value) {
+ addCriterion("validdateto <>", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoGreaterThan(Date value) {
+ addCriterion("validdateto >", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoGreaterThanOrEqualTo(Date value) {
+ addCriterion("validdateto >=", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoLessThan(Date value) {
+ addCriterion("validdateto <", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoLessThanOrEqualTo(Date value) {
+ addCriterion("validdateto <=", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoIn(List<Date> values) {
+ addCriterion("validdateto in", values, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoNotIn(List<Date> values) {
+ addCriterion("validdateto not in", values, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoBetween(Date value1, Date value2) {
+ addCriterion("validdateto between", value1, value2, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoNotBetween(Date value1, Date value2) {
+ addCriterion("validdateto not between", value1, value2, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeIsNull() {
+ addCriterion("issuingtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeIsNotNull() {
+ addCriterion("issuingtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeEqualTo(Date value) {
+ addCriterion("issuingtime =", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeNotEqualTo(Date value) {
+ addCriterion("issuingtime <>", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeGreaterThan(Date value) {
+ addCriterion("issuingtime >", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("issuingtime >=", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeLessThan(Date value) {
+ addCriterion("issuingtime <", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeLessThanOrEqualTo(Date value) {
+ addCriterion("issuingtime <=", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeIn(List<Date> values) {
+ addCriterion("issuingtime in", values, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeNotIn(List<Date> values) {
+ addCriterion("issuingtime not in", values, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeBetween(Date value1, Date value2) {
+ addCriterion("issuingtime between", value1, value2, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeNotBetween(Date value1, Date value2) {
+ addCriterion("issuingtime not between", value1, value2, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeIsNull() {
+ addCriterion("usagetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeIsNotNull() {
+ addCriterion("usagetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeEqualTo(Date value) {
+ addCriterion("usagetime =", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeNotEqualTo(Date value) {
+ addCriterion("usagetime <>", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeGreaterThan(Date value) {
+ addCriterion("usagetime >", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("usagetime >=", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeLessThan(Date value) {
+ addCriterion("usagetime <", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeLessThanOrEqualTo(Date value) {
+ addCriterion("usagetime <=", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeIn(List<Date> values) {
+ addCriterion("usagetime in", values, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeNotIn(List<Date> values) {
+ addCriterion("usagetime not in", values, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeBetween(Date value1, Date value2) {
+ addCriterion("usagetime between", value1, value2, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeNotBetween(Date value1, Date value2) {
+ addCriterion("usagetime not between", value1, value2, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNull() {
+ addCriterion("orderno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNotNull() {
+ addCriterion("orderno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoEqualTo(String value) {
+ addCriterion("orderno =", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotEqualTo(String value) {
+ addCriterion("orderno <>", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThan(String value) {
+ addCriterion("orderno >", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThanOrEqualTo(String value) {
+ addCriterion("orderno >=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThan(String value) {
+ addCriterion("orderno <", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThanOrEqualTo(String value) {
+ addCriterion("orderno <=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLike(String value) {
+ addCriterion("orderno like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotLike(String value) {
+ addCriterion("orderno not like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIn(List<String> values) {
+ addCriterion("orderno in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotIn(List<String> values) {
+ addCriterion("orderno not in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoBetween(String value1, String value2) {
+ addCriterion("orderno between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotBetween(String value1, String value2) {
+ addCriterion("orderno not between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNull() {
+ addCriterion("masterid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNotNull() {
+ addCriterion("masterid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridEqualTo(String value) {
+ addCriterion("masterid =", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotEqualTo(String value) {
+ addCriterion("masterid <>", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThan(String value) {
+ addCriterion("masterid >", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThanOrEqualTo(String value) {
+ addCriterion("masterid >=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThan(String value) {
+ addCriterion("masterid <", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThanOrEqualTo(String value) {
+ addCriterion("masterid <=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLike(String value) {
+ addCriterion("masterid like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotLike(String value) {
+ addCriterion("masterid not like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIn(List<String> values) {
+ addCriterion("masterid in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotIn(List<String> values) {
+ addCriterion("masterid not in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridBetween(String value1, String value2) {
+ addCriterion("masterid between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotBetween(String value1, String value2) {
+ addCriterion("masterid not between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNull() {
+ addCriterion("mastercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNotNull() {
+ addCriterion("mastercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeEqualTo(String value) {
+ addCriterion("mastercode =", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotEqualTo(String value) {
+ addCriterion("mastercode <>", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThan(String value) {
+ addCriterion("mastercode >", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("mastercode >=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThan(String value) {
+ addCriterion("mastercode <", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThanOrEqualTo(String value) {
+ addCriterion("mastercode <=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLike(String value) {
+ addCriterion("mastercode like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotLike(String value) {
+ addCriterion("mastercode not like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIn(List<String> values) {
+ addCriterion("mastercode in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotIn(List<String> values) {
+ addCriterion("mastercode not in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeBetween(String value1, String value2) {
+ addCriterion("mastercode between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotBetween(String value1, String value2) {
+ addCriterion("mastercode not between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNull() {
+ addCriterion("mastername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNotNull() {
+ addCriterion("mastername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameEqualTo(String value) {
+ addCriterion("mastername =", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotEqualTo(String value) {
+ addCriterion("mastername <>", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThan(String value) {
+ addCriterion("mastername >", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThanOrEqualTo(String value) {
+ addCriterion("mastername >=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThan(String value) {
+ addCriterion("mastername <", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThanOrEqualTo(String value) {
+ addCriterion("mastername <=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLike(String value) {
+ addCriterion("mastername like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotLike(String value) {
+ addCriterion("mastername not like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIn(List<String> values) {
+ addCriterion("mastername in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotIn(List<String> values) {
+ addCriterion("mastername not in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameBetween(String value1, String value2) {
+ addCriterion("mastername between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotBetween(String value1, String value2) {
+ addCriterion("mastername not between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistory.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistory.java
new file mode 100644
index 0000000..49d0a97
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistory.java
@@ -0,0 +1,216 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPCouponHistory {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private Integer type;
+
+ private String activityname;
+
+ private String code;
+
+ private String distributioncondition;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal discountrate;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date issuingtime;
+
+ private Date usagetime;
+
+ private String orderno;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getActivityname() {
+ return activityname;
+ }
+
+ public void setActivityname(String activityname) {
+ this.activityname = activityname == null ? null : activityname.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getDistributioncondition() {
+ return distributioncondition;
+ }
+
+ public void setDistributioncondition(String distributioncondition) {
+ this.distributioncondition = distributioncondition == null ? null : distributioncondition.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getIssuingtime() {
+ return issuingtime;
+ }
+
+ public void setIssuingtime(Date issuingtime) {
+ this.issuingtime = issuingtime;
+ }
+
+ public Date getUsagetime() {
+ return usagetime;
+ }
+
+ public void setUsagetime(Date usagetime) {
+ this.usagetime = usagetime;
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistoryExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistoryExample.java
new file mode 100644
index 0000000..84c6d2c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPCouponHistoryExample.java
@@ -0,0 +1,1654 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class VIPCouponHistoryExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public VIPCouponHistoryExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPCouponHistoryExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPCouponHistoryExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_coupon_history
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPCouponHistoryExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("type is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("type is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("type =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("type <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("type >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("type >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("type <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("type <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List<Integer> values) {
+ addCriterion("type in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List<Integer> values) {
+ addCriterion("type not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("type between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("type not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameIsNull() {
+ addCriterion("activityname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameIsNotNull() {
+ addCriterion("activityname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameEqualTo(String value) {
+ addCriterion("activityname =", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotEqualTo(String value) {
+ addCriterion("activityname <>", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameGreaterThan(String value) {
+ addCriterion("activityname >", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameGreaterThanOrEqualTo(String value) {
+ addCriterion("activityname >=", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameLessThan(String value) {
+ addCriterion("activityname <", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameLessThanOrEqualTo(String value) {
+ addCriterion("activityname <=", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameLike(String value) {
+ addCriterion("activityname like", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotLike(String value) {
+ addCriterion("activityname not like", value, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameIn(List<String> values) {
+ addCriterion("activityname in", values, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotIn(List<String> values) {
+ addCriterion("activityname not in", values, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameBetween(String value1, String value2) {
+ addCriterion("activityname between", value1, value2, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andActivitynameNotBetween(String value1, String value2) {
+ addCriterion("activityname not between", value1, value2, "activityname");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionIsNull() {
+ addCriterion("distributioncondition is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionIsNotNull() {
+ addCriterion("distributioncondition is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionEqualTo(String value) {
+ addCriterion("distributioncondition =", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotEqualTo(String value) {
+ addCriterion("distributioncondition <>", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionGreaterThan(String value) {
+ addCriterion("distributioncondition >", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionGreaterThanOrEqualTo(String value) {
+ addCriterion("distributioncondition >=", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionLessThan(String value) {
+ addCriterion("distributioncondition <", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionLessThanOrEqualTo(String value) {
+ addCriterion("distributioncondition <=", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionLike(String value) {
+ addCriterion("distributioncondition like", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotLike(String value) {
+ addCriterion("distributioncondition not like", value, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionIn(List<String> values) {
+ addCriterion("distributioncondition in", values, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotIn(List<String> values) {
+ addCriterion("distributioncondition not in", values, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionBetween(String value1, String value2) {
+ addCriterion("distributioncondition between", value1, value2, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andDistributionconditionNotBetween(String value1, String value2) {
+ addCriterion("distributioncondition not between", value1, value2, "distributioncondition");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNull() {
+ addCriterion("amount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNotNull() {
+ addCriterion("amount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountEqualTo(BigDecimal value) {
+ addCriterion("amount =", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotEqualTo(BigDecimal value) {
+ addCriterion("amount <>", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThan(BigDecimal value) {
+ addCriterion("amount >", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount >=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThan(BigDecimal value) {
+ addCriterion("amount <", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount <=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIn(List<BigDecimal> values) {
+ addCriterion("amount in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotIn(List<BigDecimal> values) {
+ addCriterion("amount not in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount not between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNull() {
+ addCriterion("discount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNotNull() {
+ addCriterion("discount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountEqualTo(BigDecimal value) {
+ addCriterion("discount =", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotEqualTo(BigDecimal value) {
+ addCriterion("discount <>", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThan(BigDecimal value) {
+ addCriterion("discount >", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount >=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThan(BigDecimal value) {
+ addCriterion("discount <", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount <=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIn(List<BigDecimal> values) {
+ addCriterion("discount in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotIn(List<BigDecimal> values) {
+ addCriterion("discount not in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount not between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNull() {
+ addCriterion("discountrate is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNotNull() {
+ addCriterion("discountrate is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateEqualTo(BigDecimal value) {
+ addCriterion("discountrate =", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotEqualTo(BigDecimal value) {
+ addCriterion("discountrate <>", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThan(BigDecimal value) {
+ addCriterion("discountrate >", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate >=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThan(BigDecimal value) {
+ addCriterion("discountrate <", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate <=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIn(List<BigDecimal> values) {
+ addCriterion("discountrate in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotIn(List<BigDecimal> values) {
+ addCriterion("discountrate not in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate not between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromIsNull() {
+ addCriterion("validdatefrom is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromIsNotNull() {
+ addCriterion("validdatefrom is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromEqualTo(Date value) {
+ addCriterion("validdatefrom =", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromNotEqualTo(Date value) {
+ addCriterion("validdatefrom <>", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromGreaterThan(Date value) {
+ addCriterion("validdatefrom >", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromGreaterThanOrEqualTo(Date value) {
+ addCriterion("validdatefrom >=", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromLessThan(Date value) {
+ addCriterion("validdatefrom <", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromLessThanOrEqualTo(Date value) {
+ addCriterion("validdatefrom <=", value, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromIn(List<Date> values) {
+ addCriterion("validdatefrom in", values, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromNotIn(List<Date> values) {
+ addCriterion("validdatefrom not in", values, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromBetween(Date value1, Date value2) {
+ addCriterion("validdatefrom between", value1, value2, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatefromNotBetween(Date value1, Date value2) {
+ addCriterion("validdatefrom not between", value1, value2, "validdatefrom");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoIsNull() {
+ addCriterion("validdateto is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoIsNotNull() {
+ addCriterion("validdateto is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoEqualTo(Date value) {
+ addCriterion("validdateto =", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoNotEqualTo(Date value) {
+ addCriterion("validdateto <>", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoGreaterThan(Date value) {
+ addCriterion("validdateto >", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoGreaterThanOrEqualTo(Date value) {
+ addCriterion("validdateto >=", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoLessThan(Date value) {
+ addCriterion("validdateto <", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoLessThanOrEqualTo(Date value) {
+ addCriterion("validdateto <=", value, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoIn(List<Date> values) {
+ addCriterion("validdateto in", values, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoNotIn(List<Date> values) {
+ addCriterion("validdateto not in", values, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoBetween(Date value1, Date value2) {
+ addCriterion("validdateto between", value1, value2, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andValiddatetoNotBetween(Date value1, Date value2) {
+ addCriterion("validdateto not between", value1, value2, "validdateto");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeIsNull() {
+ addCriterion("issuingtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeIsNotNull() {
+ addCriterion("issuingtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeEqualTo(Date value) {
+ addCriterion("issuingtime =", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeNotEqualTo(Date value) {
+ addCriterion("issuingtime <>", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeGreaterThan(Date value) {
+ addCriterion("issuingtime >", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("issuingtime >=", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeLessThan(Date value) {
+ addCriterion("issuingtime <", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeLessThanOrEqualTo(Date value) {
+ addCriterion("issuingtime <=", value, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeIn(List<Date> values) {
+ addCriterion("issuingtime in", values, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeNotIn(List<Date> values) {
+ addCriterion("issuingtime not in", values, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeBetween(Date value1, Date value2) {
+ addCriterion("issuingtime between", value1, value2, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andIssuingtimeNotBetween(Date value1, Date value2) {
+ addCriterion("issuingtime not between", value1, value2, "issuingtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeIsNull() {
+ addCriterion("usagetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeIsNotNull() {
+ addCriterion("usagetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeEqualTo(Date value) {
+ addCriterion("usagetime =", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeNotEqualTo(Date value) {
+ addCriterion("usagetime <>", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeGreaterThan(Date value) {
+ addCriterion("usagetime >", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("usagetime >=", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeLessThan(Date value) {
+ addCriterion("usagetime <", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeLessThanOrEqualTo(Date value) {
+ addCriterion("usagetime <=", value, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeIn(List<Date> values) {
+ addCriterion("usagetime in", values, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeNotIn(List<Date> values) {
+ addCriterion("usagetime not in", values, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeBetween(Date value1, Date value2) {
+ addCriterion("usagetime between", value1, value2, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUsagetimeNotBetween(Date value1, Date value2) {
+ addCriterion("usagetime not between", value1, value2, "usagetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNull() {
+ addCriterion("orderno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIsNotNull() {
+ addCriterion("orderno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoEqualTo(String value) {
+ addCriterion("orderno =", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotEqualTo(String value) {
+ addCriterion("orderno <>", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThan(String value) {
+ addCriterion("orderno >", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoGreaterThanOrEqualTo(String value) {
+ addCriterion("orderno >=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThan(String value) {
+ addCriterion("orderno <", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLessThanOrEqualTo(String value) {
+ addCriterion("orderno <=", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoLike(String value) {
+ addCriterion("orderno like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotLike(String value) {
+ addCriterion("orderno not like", value, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoIn(List<String> values) {
+ addCriterion("orderno in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotIn(List<String> values) {
+ addCriterion("orderno not in", values, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoBetween(String value1, String value2) {
+ addCriterion("orderno between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrdernoNotBetween(String value1, String value2) {
+ addCriterion("orderno not between", value1, value2, "orderno");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNull() {
+ addCriterion("masterid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNotNull() {
+ addCriterion("masterid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridEqualTo(String value) {
+ addCriterion("masterid =", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotEqualTo(String value) {
+ addCriterion("masterid <>", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThan(String value) {
+ addCriterion("masterid >", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThanOrEqualTo(String value) {
+ addCriterion("masterid >=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThan(String value) {
+ addCriterion("masterid <", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThanOrEqualTo(String value) {
+ addCriterion("masterid <=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLike(String value) {
+ addCriterion("masterid like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotLike(String value) {
+ addCriterion("masterid not like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIn(List<String> values) {
+ addCriterion("masterid in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotIn(List<String> values) {
+ addCriterion("masterid not in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridBetween(String value1, String value2) {
+ addCriterion("masterid between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotBetween(String value1, String value2) {
+ addCriterion("masterid not between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNull() {
+ addCriterion("mastercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNotNull() {
+ addCriterion("mastercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeEqualTo(String value) {
+ addCriterion("mastercode =", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotEqualTo(String value) {
+ addCriterion("mastercode <>", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThan(String value) {
+ addCriterion("mastercode >", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("mastercode >=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThan(String value) {
+ addCriterion("mastercode <", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThanOrEqualTo(String value) {
+ addCriterion("mastercode <=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLike(String value) {
+ addCriterion("mastercode like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotLike(String value) {
+ addCriterion("mastercode not like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIn(List<String> values) {
+ addCriterion("mastercode in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotIn(List<String> values) {
+ addCriterion("mastercode not in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeBetween(String value1, String value2) {
+ addCriterion("mastercode between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotBetween(String value1, String value2) {
+ addCriterion("mastercode not between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNull() {
+ addCriterion("mastername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNotNull() {
+ addCriterion("mastername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameEqualTo(String value) {
+ addCriterion("mastername =", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotEqualTo(String value) {
+ addCriterion("mastername <>", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThan(String value) {
+ addCriterion("mastername >", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThanOrEqualTo(String value) {
+ addCriterion("mastername >=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThan(String value) {
+ addCriterion("mastername <", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThanOrEqualTo(String value) {
+ addCriterion("mastername <=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLike(String value) {
+ addCriterion("mastername like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotLike(String value) {
+ addCriterion("mastername not like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIn(List<String> values) {
+ addCriterion("mastername in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotIn(List<String> values) {
+ addCriterion("mastername not in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameBetween(String value1, String value2) {
+ addCriterion("mastername between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotBetween(String value1, String value2) {
+ addCriterion("mastername not between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivity.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivity.java
new file mode 100644
index 0000000..e8422ed
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivity.java
@@ -0,0 +1,136 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPDepositActivity {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String description;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal present;
+
+ private BigDecimal discountrate;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getPresent() {
+ return present;
+ }
+
+ public void setPresent(BigDecimal present) {
+ this.present = present;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivityExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivityExample.java
new file mode 100644
index 0000000..1d7ff0c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPDepositActivityExample.java
@@ -0,0 +1,1134 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class VIPDepositActivityExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public VIPDepositActivityExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPDepositActivityExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPDepositActivityExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_deposit_activity
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPDepositActivityExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionIsNull() {
+ addCriterion("description is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionIsNotNull() {
+ addCriterion("description is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionEqualTo(String value) {
+ addCriterion("description =", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionNotEqualTo(String value) {
+ addCriterion("description <>", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionGreaterThan(String value) {
+ addCriterion("description >", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionGreaterThanOrEqualTo(String value) {
+ addCriterion("description >=", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionLessThan(String value) {
+ addCriterion("description <", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionLessThanOrEqualTo(String value) {
+ addCriterion("description <=", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionLike(String value) {
+ addCriterion("description like", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionNotLike(String value) {
+ addCriterion("description not like", value, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionIn(List<String> values) {
+ addCriterion("description in", values, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionNotIn(List<String> values) {
+ addCriterion("description not in", values, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionBetween(String value1, String value2) {
+ addCriterion("description between", value1, value2, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andDescriptionNotBetween(String value1, String value2) {
+ addCriterion("description not between", value1, value2, "description");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNull() {
+ addCriterion("amount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNotNull() {
+ addCriterion("amount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountEqualTo(BigDecimal value) {
+ addCriterion("amount =", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotEqualTo(BigDecimal value) {
+ addCriterion("amount <>", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThan(BigDecimal value) {
+ addCriterion("amount >", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount >=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThan(BigDecimal value) {
+ addCriterion("amount <", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount <=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIn(List<BigDecimal> values) {
+ addCriterion("amount in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotIn(List<BigDecimal> values) {
+ addCriterion("amount not in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount not between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNull() {
+ addCriterion("discount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIsNotNull() {
+ addCriterion("discount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountEqualTo(BigDecimal value) {
+ addCriterion("discount =", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotEqualTo(BigDecimal value) {
+ addCriterion("discount <>", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThan(BigDecimal value) {
+ addCriterion("discount >", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount >=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThan(BigDecimal value) {
+ addCriterion("discount <", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discount <=", value, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountIn(List<BigDecimal> values) {
+ addCriterion("discount in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotIn(List<BigDecimal> values) {
+ addCriterion("discount not in", values, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discount not between", value1, value2, "discount");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentIsNull() {
+ addCriterion("present is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentIsNotNull() {
+ addCriterion("present is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentEqualTo(BigDecimal value) {
+ addCriterion("present =", value, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentNotEqualTo(BigDecimal value) {
+ addCriterion("present <>", value, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentGreaterThan(BigDecimal value) {
+ addCriterion("present >", value, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("present >=", value, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentLessThan(BigDecimal value) {
+ addCriterion("present <", value, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("present <=", value, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentIn(List<BigDecimal> values) {
+ addCriterion("present in", values, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentNotIn(List<BigDecimal> values) {
+ addCriterion("present not in", values, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("present between", value1, value2, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andPresentNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("present not between", value1, value2, "present");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNull() {
+ addCriterion("discountrate is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNotNull() {
+ addCriterion("discountrate is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateEqualTo(BigDecimal value) {
+ addCriterion("discountrate =", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotEqualTo(BigDecimal value) {
+ addCriterion("discountrate <>", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThan(BigDecimal value) {
+ addCriterion("discountrate >", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate >=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThan(BigDecimal value) {
+ addCriterion("discountrate <", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate <=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIn(List<BigDecimal> values) {
+ addCriterion("discountrate in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotIn(List<BigDecimal> values) {
+ addCriterion("discountrate not in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate not between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMaster.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMaster.java
new file mode 100644
index 0000000..5064cc0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMaster.java
@@ -0,0 +1,236 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMaster {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private Integer diamondtype;
+
+ private Integer type;
+
+ private BigDecimal discountrate;
+
+ private String idcard;
+
+ private Boolean gender;
+
+ private Date birthday;
+
+ private String openid;
+
+ private String nickname;
+
+ private String language;
+
+ private String city;
+
+ private String province;
+
+ private String country;
+
+ private String avatarurl;
+
+ private String cellphone;
+
+ private String token;
+
+ private String password;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getDiamondtype() {
+ return diamondtype;
+ }
+
+ public void setDiamondtype(Integer diamondtype) {
+ this.diamondtype = diamondtype;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid == null ? null : openid.trim();
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname == null ? null : nickname.trim();
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language == null ? null : language.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getAvatarurl() {
+ return avatarurl;
+ }
+
+ public void setAvatarurl(String avatarurl) {
+ this.avatarurl = avatarurl == null ? null : avatarurl.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token == null ? null : token.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterExample.java
new file mode 100644
index 0000000..e84788b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterExample.java
@@ -0,0 +1,1834 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class VIPMasterExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public VIPMasterExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNull() {
+ addCriterion("code is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIsNotNull() {
+ addCriterion("code is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeEqualTo(String value) {
+ addCriterion("code =", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotEqualTo(String value) {
+ addCriterion("code <>", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThan(String value) {
+ addCriterion("code >", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeGreaterThanOrEqualTo(String value) {
+ addCriterion("code >=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThan(String value) {
+ addCriterion("code <", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLessThanOrEqualTo(String value) {
+ addCriterion("code <=", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeLike(String value) {
+ addCriterion("code like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotLike(String value) {
+ addCriterion("code not like", value, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeIn(List<String> values) {
+ addCriterion("code in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotIn(List<String> values) {
+ addCriterion("code not in", values, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeBetween(String value1, String value2) {
+ addCriterion("code between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andCodeNotBetween(String value1, String value2) {
+ addCriterion("code not between", value1, value2, "code");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List<String> values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List<String> values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeIsNull() {
+ addCriterion("diamondtype is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeIsNotNull() {
+ addCriterion("diamondtype is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeEqualTo(Integer value) {
+ addCriterion("diamondtype =", value, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeNotEqualTo(Integer value) {
+ addCriterion("diamondtype <>", value, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeGreaterThan(Integer value) {
+ addCriterion("diamondtype >", value, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("diamondtype >=", value, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeLessThan(Integer value) {
+ addCriterion("diamondtype <", value, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeLessThanOrEqualTo(Integer value) {
+ addCriterion("diamondtype <=", value, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeIn(List<Integer> values) {
+ addCriterion("diamondtype in", values, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeNotIn(List<Integer> values) {
+ addCriterion("diamondtype not in", values, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeBetween(Integer value1, Integer value2) {
+ addCriterion("diamondtype between", value1, value2, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiamondtypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("diamondtype not between", value1, value2, "diamondtype");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNull() {
+ addCriterion("type is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIsNotNull() {
+ addCriterion("type is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeEqualTo(Integer value) {
+ addCriterion("type =", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotEqualTo(Integer value) {
+ addCriterion("type <>", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThan(Integer value) {
+ addCriterion("type >", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
+ addCriterion("type >=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThan(Integer value) {
+ addCriterion("type <", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeLessThanOrEqualTo(Integer value) {
+ addCriterion("type <=", value, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeIn(List<Integer> values) {
+ addCriterion("type in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotIn(List<Integer> values) {
+ addCriterion("type not in", values, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeBetween(Integer value1, Integer value2) {
+ addCriterion("type between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andTypeNotBetween(Integer value1, Integer value2) {
+ addCriterion("type not between", value1, value2, "type");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNull() {
+ addCriterion("discountrate is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIsNotNull() {
+ addCriterion("discountrate is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateEqualTo(BigDecimal value) {
+ addCriterion("discountrate =", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotEqualTo(BigDecimal value) {
+ addCriterion("discountrate <>", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThan(BigDecimal value) {
+ addCriterion("discountrate >", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate >=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThan(BigDecimal value) {
+ addCriterion("discountrate <", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("discountrate <=", value, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateIn(List<BigDecimal> values) {
+ addCriterion("discountrate in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotIn(List<BigDecimal> values) {
+ addCriterion("discountrate not in", values, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andDiscountrateNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("discountrate not between", value1, value2, "discountrate");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardIsNull() {
+ addCriterion("idcard is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardIsNotNull() {
+ addCriterion("idcard is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardEqualTo(String value) {
+ addCriterion("idcard =", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardNotEqualTo(String value) {
+ addCriterion("idcard <>", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardGreaterThan(String value) {
+ addCriterion("idcard >", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardGreaterThanOrEqualTo(String value) {
+ addCriterion("idcard >=", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardLessThan(String value) {
+ addCriterion("idcard <", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardLessThanOrEqualTo(String value) {
+ addCriterion("idcard <=", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardLike(String value) {
+ addCriterion("idcard like", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardNotLike(String value) {
+ addCriterion("idcard not like", value, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardIn(List<String> values) {
+ addCriterion("idcard in", values, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardNotIn(List<String> values) {
+ addCriterion("idcard not in", values, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardBetween(String value1, String value2) {
+ addCriterion("idcard between", value1, value2, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdcardNotBetween(String value1, String value2) {
+ addCriterion("idcard not between", value1, value2, "idcard");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderIsNull() {
+ addCriterion("gender is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderIsNotNull() {
+ addCriterion("gender is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderEqualTo(Boolean value) {
+ addCriterion("gender =", value, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderNotEqualTo(Boolean value) {
+ addCriterion("gender <>", value, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderGreaterThan(Boolean value) {
+ addCriterion("gender >", value, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("gender >=", value, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderLessThan(Boolean value) {
+ addCriterion("gender <", value, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderLessThanOrEqualTo(Boolean value) {
+ addCriterion("gender <=", value, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderIn(List<Boolean> values) {
+ addCriterion("gender in", values, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderNotIn(List<Boolean> values) {
+ addCriterion("gender not in", values, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderBetween(Boolean value1, Boolean value2) {
+ addCriterion("gender between", value1, value2, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andGenderNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("gender not between", value1, value2, "gender");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayIsNull() {
+ addCriterion("birthday is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayIsNotNull() {
+ addCriterion("birthday is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayEqualTo(Date value) {
+ addCriterion("birthday =", value, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayNotEqualTo(Date value) {
+ addCriterion("birthday <>", value, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayGreaterThan(Date value) {
+ addCriterion("birthday >", value, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayGreaterThanOrEqualTo(Date value) {
+ addCriterion("birthday >=", value, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayLessThan(Date value) {
+ addCriterion("birthday <", value, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayLessThanOrEqualTo(Date value) {
+ addCriterion("birthday <=", value, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayIn(List<Date> values) {
+ addCriterion("birthday in", values, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayNotIn(List<Date> values) {
+ addCriterion("birthday not in", values, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayBetween(Date value1, Date value2) {
+ addCriterion("birthday between", value1, value2, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andBirthdayNotBetween(Date value1, Date value2) {
+ addCriterion("birthday not between", value1, value2, "birthday");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidIsNull() {
+ addCriterion("openid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidIsNotNull() {
+ addCriterion("openid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidEqualTo(String value) {
+ addCriterion("openid =", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidNotEqualTo(String value) {
+ addCriterion("openid <>", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidGreaterThan(String value) {
+ addCriterion("openid >", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidGreaterThanOrEqualTo(String value) {
+ addCriterion("openid >=", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidLessThan(String value) {
+ addCriterion("openid <", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidLessThanOrEqualTo(String value) {
+ addCriterion("openid <=", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidLike(String value) {
+ addCriterion("openid like", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidNotLike(String value) {
+ addCriterion("openid not like", value, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidIn(List<String> values) {
+ addCriterion("openid in", values, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidNotIn(List<String> values) {
+ addCriterion("openid not in", values, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidBetween(String value1, String value2) {
+ addCriterion("openid between", value1, value2, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOpenidNotBetween(String value1, String value2) {
+ addCriterion("openid not between", value1, value2, "openid");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameIsNull() {
+ addCriterion("nickname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameIsNotNull() {
+ addCriterion("nickname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameEqualTo(String value) {
+ addCriterion("nickname =", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameNotEqualTo(String value) {
+ addCriterion("nickname <>", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameGreaterThan(String value) {
+ addCriterion("nickname >", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameGreaterThanOrEqualTo(String value) {
+ addCriterion("nickname >=", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameLessThan(String value) {
+ addCriterion("nickname <", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameLessThanOrEqualTo(String value) {
+ addCriterion("nickname <=", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameLike(String value) {
+ addCriterion("nickname like", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameNotLike(String value) {
+ addCriterion("nickname not like", value, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameIn(List<String> values) {
+ addCriterion("nickname in", values, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameNotIn(List<String> values) {
+ addCriterion("nickname not in", values, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameBetween(String value1, String value2) {
+ addCriterion("nickname between", value1, value2, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andNicknameNotBetween(String value1, String value2) {
+ addCriterion("nickname not between", value1, value2, "nickname");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageIsNull() {
+ addCriterion("language is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageIsNotNull() {
+ addCriterion("language is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageEqualTo(String value) {
+ addCriterion("language =", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageNotEqualTo(String value) {
+ addCriterion("language <>", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageGreaterThan(String value) {
+ addCriterion("language >", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageGreaterThanOrEqualTo(String value) {
+ addCriterion("language >=", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageLessThan(String value) {
+ addCriterion("language <", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageLessThanOrEqualTo(String value) {
+ addCriterion("language <=", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageLike(String value) {
+ addCriterion("language like", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageNotLike(String value) {
+ addCriterion("language not like", value, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageIn(List<String> values) {
+ addCriterion("language in", values, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageNotIn(List<String> values) {
+ addCriterion("language not in", values, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageBetween(String value1, String value2) {
+ addCriterion("language between", value1, value2, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andLanguageNotBetween(String value1, String value2) {
+ addCriterion("language not between", value1, value2, "language");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityIsNull() {
+ addCriterion("city is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityIsNotNull() {
+ addCriterion("city is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityEqualTo(String value) {
+ addCriterion("city =", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotEqualTo(String value) {
+ addCriterion("city <>", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityGreaterThan(String value) {
+ addCriterion("city >", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityGreaterThanOrEqualTo(String value) {
+ addCriterion("city >=", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityLessThan(String value) {
+ addCriterion("city <", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityLessThanOrEqualTo(String value) {
+ addCriterion("city <=", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityLike(String value) {
+ addCriterion("city like", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotLike(String value) {
+ addCriterion("city not like", value, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityIn(List<String> values) {
+ addCriterion("city in", values, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotIn(List<String> values) {
+ addCriterion("city not in", values, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityBetween(String value1, String value2) {
+ addCriterion("city between", value1, value2, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andCityNotBetween(String value1, String value2) {
+ addCriterion("city not between", value1, value2, "city");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceIsNull() {
+ addCriterion("province is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceIsNotNull() {
+ addCriterion("province is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceEqualTo(String value) {
+ addCriterion("province =", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotEqualTo(String value) {
+ addCriterion("province <>", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceGreaterThan(String value) {
+ addCriterion("province >", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceGreaterThanOrEqualTo(String value) {
+ addCriterion("province >=", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceLessThan(String value) {
+ addCriterion("province <", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceLessThanOrEqualTo(String value) {
+ addCriterion("province <=", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceLike(String value) {
+ addCriterion("province like", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotLike(String value) {
+ addCriterion("province not like", value, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceIn(List<String> values) {
+ addCriterion("province in", values, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotIn(List<String> values) {
+ addCriterion("province not in", values, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceBetween(String value1, String value2) {
+ addCriterion("province between", value1, value2, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andProvinceNotBetween(String value1, String value2) {
+ addCriterion("province not between", value1, value2, "province");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryIsNull() {
+ addCriterion("country is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryIsNotNull() {
+ addCriterion("country is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryEqualTo(String value) {
+ addCriterion("country =", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotEqualTo(String value) {
+ addCriterion("country <>", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryGreaterThan(String value) {
+ addCriterion("country >", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryGreaterThanOrEqualTo(String value) {
+ addCriterion("country >=", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryLessThan(String value) {
+ addCriterion("country <", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryLessThanOrEqualTo(String value) {
+ addCriterion("country <=", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryLike(String value) {
+ addCriterion("country like", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotLike(String value) {
+ addCriterion("country not like", value, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryIn(List<String> values) {
+ addCriterion("country in", values, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotIn(List<String> values) {
+ addCriterion("country not in", values, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryBetween(String value1, String value2) {
+ addCriterion("country between", value1, value2, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andCountryNotBetween(String value1, String value2) {
+ addCriterion("country not between", value1, value2, "country");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlIsNull() {
+ addCriterion("avatarurl is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlIsNotNull() {
+ addCriterion("avatarurl is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlEqualTo(String value) {
+ addCriterion("avatarurl =", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlNotEqualTo(String value) {
+ addCriterion("avatarurl <>", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlGreaterThan(String value) {
+ addCriterion("avatarurl >", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlGreaterThanOrEqualTo(String value) {
+ addCriterion("avatarurl >=", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlLessThan(String value) {
+ addCriterion("avatarurl <", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlLessThanOrEqualTo(String value) {
+ addCriterion("avatarurl <=", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlLike(String value) {
+ addCriterion("avatarurl like", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlNotLike(String value) {
+ addCriterion("avatarurl not like", value, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlIn(List<String> values) {
+ addCriterion("avatarurl in", values, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlNotIn(List<String> values) {
+ addCriterion("avatarurl not in", values, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlBetween(String value1, String value2) {
+ addCriterion("avatarurl between", value1, value2, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andAvatarurlNotBetween(String value1, String value2) {
+ addCriterion("avatarurl not between", value1, value2, "avatarurl");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneIsNull() {
+ addCriterion("cellphone is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneIsNotNull() {
+ addCriterion("cellphone is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneEqualTo(String value) {
+ addCriterion("cellphone =", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneNotEqualTo(String value) {
+ addCriterion("cellphone <>", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneGreaterThan(String value) {
+ addCriterion("cellphone >", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneGreaterThanOrEqualTo(String value) {
+ addCriterion("cellphone >=", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneLessThan(String value) {
+ addCriterion("cellphone <", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneLessThanOrEqualTo(String value) {
+ addCriterion("cellphone <=", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneLike(String value) {
+ addCriterion("cellphone like", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneNotLike(String value) {
+ addCriterion("cellphone not like", value, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneIn(List<String> values) {
+ addCriterion("cellphone in", values, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneNotIn(List<String> values) {
+ addCriterion("cellphone not in", values, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneBetween(String value1, String value2) {
+ addCriterion("cellphone between", value1, value2, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andCellphoneNotBetween(String value1, String value2) {
+ addCriterion("cellphone not between", value1, value2, "cellphone");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenIsNull() {
+ addCriterion("token is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenIsNotNull() {
+ addCriterion("token is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenEqualTo(String value) {
+ addCriterion("token =", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenNotEqualTo(String value) {
+ addCriterion("token <>", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenGreaterThan(String value) {
+ addCriterion("token >", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenGreaterThanOrEqualTo(String value) {
+ addCriterion("token >=", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenLessThan(String value) {
+ addCriterion("token <", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenLessThanOrEqualTo(String value) {
+ addCriterion("token <=", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenLike(String value) {
+ addCriterion("token like", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenNotLike(String value) {
+ addCriterion("token not like", value, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenIn(List<String> values) {
+ addCriterion("token in", values, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenNotIn(List<String> values) {
+ addCriterion("token not in", values, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenBetween(String value1, String value2) {
+ addCriterion("token between", value1, value2, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andTokenNotBetween(String value1, String value2) {
+ addCriterion("token not between", value1, value2, "token");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordIsNull() {
+ addCriterion("password is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordIsNotNull() {
+ addCriterion("password is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordEqualTo(String value) {
+ addCriterion("password =", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordNotEqualTo(String value) {
+ addCriterion("password <>", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordGreaterThan(String value) {
+ addCriterion("password >", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordGreaterThanOrEqualTo(String value) {
+ addCriterion("password >=", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordLessThan(String value) {
+ addCriterion("password <", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordLessThanOrEqualTo(String value) {
+ addCriterion("password <=", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordLike(String value) {
+ addCriterion("password like", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordNotLike(String value) {
+ addCriterion("password not like", value, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordIn(List<String> values) {
+ addCriterion("password in", values, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordNotIn(List<String> values) {
+ addCriterion("password not in", values, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordBetween(String value1, String value2) {
+ addCriterion("password between", value1, value2, "password");
+ return (Criteria) this;
+ }
+
+ public Criteria andPasswordNotBetween(String value1, String value2) {
+ addCriterion("password not between", value1, value2, "password");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganization.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganization.java
new file mode 100644
index 0000000..5f93c58
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganization.java
@@ -0,0 +1,245 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.Date;
+
+public class VIPMasterOrganization {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ private String classid;
+
+ private String classname;
+
+ private String classcode;
+
+ private Integer updatecount;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+
+ public String getClassid() {
+ return classid;
+ }
+
+ public void setClassid(String classid) {
+ this.classid = classid == null ? null : classid.trim();
+ }
+
+ public String getClassname() {
+ return classname;
+ }
+
+ public void setClassname(String classname) {
+ this.classname = classname == null ? null : classname.trim();
+ }
+
+ public String getClasscode() {
+ return classcode;
+ }
+
+ public void setClasscode(String classcode) {
+ this.classcode = classcode == null ? null : classcode.trim();
+ }
+
+ public Integer getUpdatecount() {
+ return updatecount;
+ }
+
+ public void setUpdatecount(Integer updatecount) {
+ this.updatecount = updatecount;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganizationExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganizationExample.java
new file mode 100644
index 0000000..04c9a50
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterOrganizationExample.java
@@ -0,0 +1,1943 @@
+package com.farriver.bwf.data.master.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class VIPMasterOrganizationExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public VIPMasterOrganizationExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterOrganizationExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterOrganizationExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_organization
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterOrganizationExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNull() {
+ addCriterion("masterid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNotNull() {
+ addCriterion("masterid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridEqualTo(String value) {
+ addCriterion("masterid =", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotEqualTo(String value) {
+ addCriterion("masterid <>", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThan(String value) {
+ addCriterion("masterid >", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThanOrEqualTo(String value) {
+ addCriterion("masterid >=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThan(String value) {
+ addCriterion("masterid <", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThanOrEqualTo(String value) {
+ addCriterion("masterid <=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLike(String value) {
+ addCriterion("masterid like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotLike(String value) {
+ addCriterion("masterid not like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIn(List<String> values) {
+ addCriterion("masterid in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotIn(List<String> values) {
+ addCriterion("masterid not in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridBetween(String value1, String value2) {
+ addCriterion("masterid between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotBetween(String value1, String value2) {
+ addCriterion("masterid not between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNull() {
+ addCriterion("mastercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNotNull() {
+ addCriterion("mastercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeEqualTo(String value) {
+ addCriterion("mastercode =", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotEqualTo(String value) {
+ addCriterion("mastercode <>", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThan(String value) {
+ addCriterion("mastercode >", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("mastercode >=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThan(String value) {
+ addCriterion("mastercode <", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThanOrEqualTo(String value) {
+ addCriterion("mastercode <=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLike(String value) {
+ addCriterion("mastercode like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotLike(String value) {
+ addCriterion("mastercode not like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIn(List<String> values) {
+ addCriterion("mastercode in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotIn(List<String> values) {
+ addCriterion("mastercode not in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeBetween(String value1, String value2) {
+ addCriterion("mastercode between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotBetween(String value1, String value2) {
+ addCriterion("mastercode not between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNull() {
+ addCriterion("mastername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNotNull() {
+ addCriterion("mastername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameEqualTo(String value) {
+ addCriterion("mastername =", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotEqualTo(String value) {
+ addCriterion("mastername <>", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThan(String value) {
+ addCriterion("mastername >", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThanOrEqualTo(String value) {
+ addCriterion("mastername >=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThan(String value) {
+ addCriterion("mastername <", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThanOrEqualTo(String value) {
+ addCriterion("mastername <=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLike(String value) {
+ addCriterion("mastername like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotLike(String value) {
+ addCriterion("mastername not like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIn(List<String> values) {
+ addCriterion("mastername in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotIn(List<String> values) {
+ addCriterion("mastername not in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameBetween(String value1, String value2) {
+ addCriterion("mastername between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotBetween(String value1, String value2) {
+ addCriterion("mastername not between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNull() {
+ addCriterion("organizationid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIsNotNull() {
+ addCriterion("organizationid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidEqualTo(String value) {
+ addCriterion("organizationid =", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotEqualTo(String value) {
+ addCriterion("organizationid <>", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThan(String value) {
+ addCriterion("organizationid >", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationid >=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThan(String value) {
+ addCriterion("organizationid <", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLessThanOrEqualTo(String value) {
+ addCriterion("organizationid <=", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidLike(String value) {
+ addCriterion("organizationid like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotLike(String value) {
+ addCriterion("organizationid not like", value, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidIn(List<String> values) {
+ addCriterion("organizationid in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotIn(List<String> values) {
+ addCriterion("organizationid not in", values, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidBetween(String value1, String value2) {
+ addCriterion("organizationid between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationidNotBetween(String value1, String value2) {
+ addCriterion("organizationid not between", value1, value2, "organizationid");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNull() {
+ addCriterion("organizationname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIsNotNull() {
+ addCriterion("organizationname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameEqualTo(String value) {
+ addCriterion("organizationname =", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotEqualTo(String value) {
+ addCriterion("organizationname <>", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThan(String value) {
+ addCriterion("organizationname >", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationname >=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThan(String value) {
+ addCriterion("organizationname <", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLessThanOrEqualTo(String value) {
+ addCriterion("organizationname <=", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameLike(String value) {
+ addCriterion("organizationname like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotLike(String value) {
+ addCriterion("organizationname not like", value, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameIn(List<String> values) {
+ addCriterion("organizationname in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotIn(List<String> values) {
+ addCriterion("organizationname not in", values, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameBetween(String value1, String value2) {
+ addCriterion("organizationname between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationnameNotBetween(String value1, String value2) {
+ addCriterion("organizationname not between", value1, value2, "organizationname");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNull() {
+ addCriterion("organizationcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIsNotNull() {
+ addCriterion("organizationcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeEqualTo(String value) {
+ addCriterion("organizationcode =", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotEqualTo(String value) {
+ addCriterion("organizationcode <>", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThan(String value) {
+ addCriterion("organizationcode >", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("organizationcode >=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThan(String value) {
+ addCriterion("organizationcode <", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLessThanOrEqualTo(String value) {
+ addCriterion("organizationcode <=", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeLike(String value) {
+ addCriterion("organizationcode like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotLike(String value) {
+ addCriterion("organizationcode not like", value, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeIn(List<String> values) {
+ addCriterion("organizationcode in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotIn(List<String> values) {
+ addCriterion("organizationcode not in", values, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeBetween(String value1, String value2) {
+ addCriterion("organizationcode between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andOrganizationcodeNotBetween(String value1, String value2) {
+ addCriterion("organizationcode not between", value1, value2, "organizationcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNull() {
+ addCriterion("departmentid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIsNotNull() {
+ addCriterion("departmentid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidEqualTo(String value) {
+ addCriterion("departmentid =", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotEqualTo(String value) {
+ addCriterion("departmentid <>", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThan(String value) {
+ addCriterion("departmentid >", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentid >=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThan(String value) {
+ addCriterion("departmentid <", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLessThanOrEqualTo(String value) {
+ addCriterion("departmentid <=", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidLike(String value) {
+ addCriterion("departmentid like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotLike(String value) {
+ addCriterion("departmentid not like", value, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidIn(List<String> values) {
+ addCriterion("departmentid in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotIn(List<String> values) {
+ addCriterion("departmentid not in", values, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidBetween(String value1, String value2) {
+ addCriterion("departmentid between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentidNotBetween(String value1, String value2) {
+ addCriterion("departmentid not between", value1, value2, "departmentid");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNull() {
+ addCriterion("departmentname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIsNotNull() {
+ addCriterion("departmentname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameEqualTo(String value) {
+ addCriterion("departmentname =", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotEqualTo(String value) {
+ addCriterion("departmentname <>", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThan(String value) {
+ addCriterion("departmentname >", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentname >=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThan(String value) {
+ addCriterion("departmentname <", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLessThanOrEqualTo(String value) {
+ addCriterion("departmentname <=", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameLike(String value) {
+ addCriterion("departmentname like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotLike(String value) {
+ addCriterion("departmentname not like", value, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameIn(List<String> values) {
+ addCriterion("departmentname in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotIn(List<String> values) {
+ addCriterion("departmentname not in", values, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameBetween(String value1, String value2) {
+ addCriterion("departmentname between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentnameNotBetween(String value1, String value2) {
+ addCriterion("departmentname not between", value1, value2, "departmentname");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNull() {
+ addCriterion("departmentcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIsNotNull() {
+ addCriterion("departmentcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeEqualTo(String value) {
+ addCriterion("departmentcode =", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotEqualTo(String value) {
+ addCriterion("departmentcode <>", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThan(String value) {
+ addCriterion("departmentcode >", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("departmentcode >=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThan(String value) {
+ addCriterion("departmentcode <", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLessThanOrEqualTo(String value) {
+ addCriterion("departmentcode <=", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeLike(String value) {
+ addCriterion("departmentcode like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotLike(String value) {
+ addCriterion("departmentcode not like", value, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeIn(List<String> values) {
+ addCriterion("departmentcode in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotIn(List<String> values) {
+ addCriterion("departmentcode not in", values, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeBetween(String value1, String value2) {
+ addCriterion("departmentcode between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andDepartmentcodeNotBetween(String value1, String value2) {
+ addCriterion("departmentcode not between", value1, value2, "departmentcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIsNull() {
+ addCriterion("majorid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIsNotNull() {
+ addCriterion("majorid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridEqualTo(String value) {
+ addCriterion("majorid =", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotEqualTo(String value) {
+ addCriterion("majorid <>", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridGreaterThan(String value) {
+ addCriterion("majorid >", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridGreaterThanOrEqualTo(String value) {
+ addCriterion("majorid >=", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLessThan(String value) {
+ addCriterion("majorid <", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLessThanOrEqualTo(String value) {
+ addCriterion("majorid <=", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridLike(String value) {
+ addCriterion("majorid like", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotLike(String value) {
+ addCriterion("majorid not like", value, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridIn(List<String> values) {
+ addCriterion("majorid in", values, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotIn(List<String> values) {
+ addCriterion("majorid not in", values, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridBetween(String value1, String value2) {
+ addCriterion("majorid between", value1, value2, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajoridNotBetween(String value1, String value2) {
+ addCriterion("majorid not between", value1, value2, "majorid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIsNull() {
+ addCriterion("majorname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIsNotNull() {
+ addCriterion("majorname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameEqualTo(String value) {
+ addCriterion("majorname =", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotEqualTo(String value) {
+ addCriterion("majorname <>", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameGreaterThan(String value) {
+ addCriterion("majorname >", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameGreaterThanOrEqualTo(String value) {
+ addCriterion("majorname >=", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLessThan(String value) {
+ addCriterion("majorname <", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLessThanOrEqualTo(String value) {
+ addCriterion("majorname <=", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameLike(String value) {
+ addCriterion("majorname like", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotLike(String value) {
+ addCriterion("majorname not like", value, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameIn(List<String> values) {
+ addCriterion("majorname in", values, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotIn(List<String> values) {
+ addCriterion("majorname not in", values, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameBetween(String value1, String value2) {
+ addCriterion("majorname between", value1, value2, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajornameNotBetween(String value1, String value2) {
+ addCriterion("majorname not between", value1, value2, "majorname");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIsNull() {
+ addCriterion("majorcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIsNotNull() {
+ addCriterion("majorcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeEqualTo(String value) {
+ addCriterion("majorcode =", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotEqualTo(String value) {
+ addCriterion("majorcode <>", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeGreaterThan(String value) {
+ addCriterion("majorcode >", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeGreaterThanOrEqualTo(String value) {
+ addCriterion("majorcode >=", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLessThan(String value) {
+ addCriterion("majorcode <", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLessThanOrEqualTo(String value) {
+ addCriterion("majorcode <=", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeLike(String value) {
+ addCriterion("majorcode like", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotLike(String value) {
+ addCriterion("majorcode not like", value, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeIn(List<String> values) {
+ addCriterion("majorcode in", values, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotIn(List<String> values) {
+ addCriterion("majorcode not in", values, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeBetween(String value1, String value2) {
+ addCriterion("majorcode between", value1, value2, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMajorcodeNotBetween(String value1, String value2) {
+ addCriterion("majorcode not between", value1, value2, "majorcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIsNull() {
+ addCriterion("gradeid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIsNotNull() {
+ addCriterion("gradeid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidEqualTo(String value) {
+ addCriterion("gradeid =", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotEqualTo(String value) {
+ addCriterion("gradeid <>", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidGreaterThan(String value) {
+ addCriterion("gradeid >", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidGreaterThanOrEqualTo(String value) {
+ addCriterion("gradeid >=", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLessThan(String value) {
+ addCriterion("gradeid <", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLessThanOrEqualTo(String value) {
+ addCriterion("gradeid <=", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidLike(String value) {
+ addCriterion("gradeid like", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotLike(String value) {
+ addCriterion("gradeid not like", value, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidIn(List<String> values) {
+ addCriterion("gradeid in", values, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotIn(List<String> values) {
+ addCriterion("gradeid not in", values, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidBetween(String value1, String value2) {
+ addCriterion("gradeid between", value1, value2, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradeidNotBetween(String value1, String value2) {
+ addCriterion("gradeid not between", value1, value2, "gradeid");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIsNull() {
+ addCriterion("gradename is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIsNotNull() {
+ addCriterion("gradename is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameEqualTo(String value) {
+ addCriterion("gradename =", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotEqualTo(String value) {
+ addCriterion("gradename <>", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameGreaterThan(String value) {
+ addCriterion("gradename >", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameGreaterThanOrEqualTo(String value) {
+ addCriterion("gradename >=", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLessThan(String value) {
+ addCriterion("gradename <", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLessThanOrEqualTo(String value) {
+ addCriterion("gradename <=", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameLike(String value) {
+ addCriterion("gradename like", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotLike(String value) {
+ addCriterion("gradename not like", value, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameIn(List<String> values) {
+ addCriterion("gradename in", values, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotIn(List<String> values) {
+ addCriterion("gradename not in", values, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameBetween(String value1, String value2) {
+ addCriterion("gradename between", value1, value2, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradenameNotBetween(String value1, String value2) {
+ addCriterion("gradename not between", value1, value2, "gradename");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIsNull() {
+ addCriterion("gradecode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIsNotNull() {
+ addCriterion("gradecode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeEqualTo(String value) {
+ addCriterion("gradecode =", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotEqualTo(String value) {
+ addCriterion("gradecode <>", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeGreaterThan(String value) {
+ addCriterion("gradecode >", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeGreaterThanOrEqualTo(String value) {
+ addCriterion("gradecode >=", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLessThan(String value) {
+ addCriterion("gradecode <", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLessThanOrEqualTo(String value) {
+ addCriterion("gradecode <=", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeLike(String value) {
+ addCriterion("gradecode like", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotLike(String value) {
+ addCriterion("gradecode not like", value, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeIn(List<String> values) {
+ addCriterion("gradecode in", values, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotIn(List<String> values) {
+ addCriterion("gradecode not in", values, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeBetween(String value1, String value2) {
+ addCriterion("gradecode between", value1, value2, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andGradecodeNotBetween(String value1, String value2) {
+ addCriterion("gradecode not between", value1, value2, "gradecode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidIsNull() {
+ addCriterion("classid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidIsNotNull() {
+ addCriterion("classid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidEqualTo(String value) {
+ addCriterion("classid =", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidNotEqualTo(String value) {
+ addCriterion("classid <>", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidGreaterThan(String value) {
+ addCriterion("classid >", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidGreaterThanOrEqualTo(String value) {
+ addCriterion("classid >=", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidLessThan(String value) {
+ addCriterion("classid <", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidLessThanOrEqualTo(String value) {
+ addCriterion("classid <=", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidLike(String value) {
+ addCriterion("classid like", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidNotLike(String value) {
+ addCriterion("classid not like", value, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidIn(List<String> values) {
+ addCriterion("classid in", values, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidNotIn(List<String> values) {
+ addCriterion("classid not in", values, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidBetween(String value1, String value2) {
+ addCriterion("classid between", value1, value2, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassidNotBetween(String value1, String value2) {
+ addCriterion("classid not between", value1, value2, "classid");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameIsNull() {
+ addCriterion("classname is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameIsNotNull() {
+ addCriterion("classname is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameEqualTo(String value) {
+ addCriterion("classname =", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameNotEqualTo(String value) {
+ addCriterion("classname <>", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameGreaterThan(String value) {
+ addCriterion("classname >", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameGreaterThanOrEqualTo(String value) {
+ addCriterion("classname >=", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameLessThan(String value) {
+ addCriterion("classname <", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameLessThanOrEqualTo(String value) {
+ addCriterion("classname <=", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameLike(String value) {
+ addCriterion("classname like", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameNotLike(String value) {
+ addCriterion("classname not like", value, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameIn(List<String> values) {
+ addCriterion("classname in", values, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameNotIn(List<String> values) {
+ addCriterion("classname not in", values, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameBetween(String value1, String value2) {
+ addCriterion("classname between", value1, value2, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClassnameNotBetween(String value1, String value2) {
+ addCriterion("classname not between", value1, value2, "classname");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeIsNull() {
+ addCriterion("classcode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeIsNotNull() {
+ addCriterion("classcode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeEqualTo(String value) {
+ addCriterion("classcode =", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeNotEqualTo(String value) {
+ addCriterion("classcode <>", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeGreaterThan(String value) {
+ addCriterion("classcode >", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeGreaterThanOrEqualTo(String value) {
+ addCriterion("classcode >=", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeLessThan(String value) {
+ addCriterion("classcode <", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeLessThanOrEqualTo(String value) {
+ addCriterion("classcode <=", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeLike(String value) {
+ addCriterion("classcode like", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeNotLike(String value) {
+ addCriterion("classcode not like", value, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeIn(List<String> values) {
+ addCriterion("classcode in", values, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeNotIn(List<String> values) {
+ addCriterion("classcode not in", values, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeBetween(String value1, String value2) {
+ addCriterion("classcode between", value1, value2, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andClasscodeNotBetween(String value1, String value2) {
+ addCriterion("classcode not between", value1, value2, "classcode");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountIsNull() {
+ addCriterion("updatecount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountIsNotNull() {
+ addCriterion("updatecount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountEqualTo(Integer value) {
+ addCriterion("updatecount =", value, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountNotEqualTo(Integer value) {
+ addCriterion("updatecount <>", value, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountGreaterThan(Integer value) {
+ addCriterion("updatecount >", value, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountGreaterThanOrEqualTo(Integer value) {
+ addCriterion("updatecount >=", value, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountLessThan(Integer value) {
+ addCriterion("updatecount <", value, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountLessThanOrEqualTo(Integer value) {
+ addCriterion("updatecount <=", value, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountIn(List<Integer> values) {
+ addCriterion("updatecount in", values, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountNotIn(List<Integer> values) {
+ addCriterion("updatecount not in", values, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountBetween(Integer value1, Integer value2) {
+ addCriterion("updatecount between", value1, value2, "updatecount");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatecountNotBetween(Integer value1, Integer value2) {
+ addCriterion("updatecount not between", value1, value2, "updatecount");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelation.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelation.java
new file mode 100644
index 0000000..cc2013a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelation.java
@@ -0,0 +1,146 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterPaperRelation {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private String paperid;
+
+ private String papercode;
+
+ private String papername;
+
+ private Date buyedtime;
+
+ private BigDecimal amount;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public String getPaperid() {
+ return paperid;
+ }
+
+ public void setPaperid(String paperid) {
+ this.paperid = paperid == null ? null : paperid.trim();
+ }
+
+ public String getPapercode() {
+ return papercode;
+ }
+
+ public void setPapercode(String papercode) {
+ this.papercode = papercode == null ? null : papercode.trim();
+ }
+
+ public String getPapername() {
+ return papername;
+ }
+
+ public void setPapername(String papername) {
+ this.papername = papername == null ? null : papername.trim();
+ }
+
+ public Date getBuyedtime() {
+ return buyedtime;
+ }
+
+ public void setBuyedtime(Date buyedtime) {
+ this.buyedtime = buyedtime;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelationExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelationExample.java
new file mode 100644
index 0000000..b4e72e8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterPaperRelationExample.java
@@ -0,0 +1,1224 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class VIPMasterPaperRelationExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public VIPMasterPaperRelationExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterPaperRelationExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterPaperRelationExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_paper_relation
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterPaperRelationExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNull() {
+ addCriterion("masterid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNotNull() {
+ addCriterion("masterid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridEqualTo(String value) {
+ addCriterion("masterid =", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotEqualTo(String value) {
+ addCriterion("masterid <>", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThan(String value) {
+ addCriterion("masterid >", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThanOrEqualTo(String value) {
+ addCriterion("masterid >=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThan(String value) {
+ addCriterion("masterid <", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThanOrEqualTo(String value) {
+ addCriterion("masterid <=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLike(String value) {
+ addCriterion("masterid like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotLike(String value) {
+ addCriterion("masterid not like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIn(List<String> values) {
+ addCriterion("masterid in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotIn(List<String> values) {
+ addCriterion("masterid not in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridBetween(String value1, String value2) {
+ addCriterion("masterid between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotBetween(String value1, String value2) {
+ addCriterion("masterid not between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNull() {
+ addCriterion("mastercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNotNull() {
+ addCriterion("mastercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeEqualTo(String value) {
+ addCriterion("mastercode =", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotEqualTo(String value) {
+ addCriterion("mastercode <>", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThan(String value) {
+ addCriterion("mastercode >", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("mastercode >=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThan(String value) {
+ addCriterion("mastercode <", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThanOrEqualTo(String value) {
+ addCriterion("mastercode <=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLike(String value) {
+ addCriterion("mastercode like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotLike(String value) {
+ addCriterion("mastercode not like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIn(List<String> values) {
+ addCriterion("mastercode in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotIn(List<String> values) {
+ addCriterion("mastercode not in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeBetween(String value1, String value2) {
+ addCriterion("mastercode between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotBetween(String value1, String value2) {
+ addCriterion("mastercode not between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNull() {
+ addCriterion("mastername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNotNull() {
+ addCriterion("mastername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameEqualTo(String value) {
+ addCriterion("mastername =", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotEqualTo(String value) {
+ addCriterion("mastername <>", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThan(String value) {
+ addCriterion("mastername >", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThanOrEqualTo(String value) {
+ addCriterion("mastername >=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThan(String value) {
+ addCriterion("mastername <", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThanOrEqualTo(String value) {
+ addCriterion("mastername <=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLike(String value) {
+ addCriterion("mastername like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotLike(String value) {
+ addCriterion("mastername not like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIn(List<String> values) {
+ addCriterion("mastername in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotIn(List<String> values) {
+ addCriterion("mastername not in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameBetween(String value1, String value2) {
+ addCriterion("mastername between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotBetween(String value1, String value2) {
+ addCriterion("mastername not between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidIsNull() {
+ addCriterion("paperid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidIsNotNull() {
+ addCriterion("paperid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidEqualTo(String value) {
+ addCriterion("paperid =", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotEqualTo(String value) {
+ addCriterion("paperid <>", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidGreaterThan(String value) {
+ addCriterion("paperid >", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidGreaterThanOrEqualTo(String value) {
+ addCriterion("paperid >=", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidLessThan(String value) {
+ addCriterion("paperid <", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidLessThanOrEqualTo(String value) {
+ addCriterion("paperid <=", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidLike(String value) {
+ addCriterion("paperid like", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotLike(String value) {
+ addCriterion("paperid not like", value, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidIn(List<String> values) {
+ addCriterion("paperid in", values, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotIn(List<String> values) {
+ addCriterion("paperid not in", values, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidBetween(String value1, String value2) {
+ addCriterion("paperid between", value1, value2, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPaperidNotBetween(String value1, String value2) {
+ addCriterion("paperid not between", value1, value2, "paperid");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeIsNull() {
+ addCriterion("papercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeIsNotNull() {
+ addCriterion("papercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeEqualTo(String value) {
+ addCriterion("papercode =", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotEqualTo(String value) {
+ addCriterion("papercode <>", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeGreaterThan(String value) {
+ addCriterion("papercode >", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("papercode >=", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeLessThan(String value) {
+ addCriterion("papercode <", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeLessThanOrEqualTo(String value) {
+ addCriterion("papercode <=", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeLike(String value) {
+ addCriterion("papercode like", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotLike(String value) {
+ addCriterion("papercode not like", value, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeIn(List<String> values) {
+ addCriterion("papercode in", values, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotIn(List<String> values) {
+ addCriterion("papercode not in", values, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeBetween(String value1, String value2) {
+ addCriterion("papercode between", value1, value2, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapercodeNotBetween(String value1, String value2) {
+ addCriterion("papercode not between", value1, value2, "papercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameIsNull() {
+ addCriterion("papername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameIsNotNull() {
+ addCriterion("papername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameEqualTo(String value) {
+ addCriterion("papername =", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotEqualTo(String value) {
+ addCriterion("papername <>", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameGreaterThan(String value) {
+ addCriterion("papername >", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameGreaterThanOrEqualTo(String value) {
+ addCriterion("papername >=", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameLessThan(String value) {
+ addCriterion("papername <", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameLessThanOrEqualTo(String value) {
+ addCriterion("papername <=", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameLike(String value) {
+ addCriterion("papername like", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotLike(String value) {
+ addCriterion("papername not like", value, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameIn(List<String> values) {
+ addCriterion("papername in", values, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotIn(List<String> values) {
+ addCriterion("papername not in", values, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameBetween(String value1, String value2) {
+ addCriterion("papername between", value1, value2, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andPapernameNotBetween(String value1, String value2) {
+ addCriterion("papername not between", value1, value2, "papername");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeIsNull() {
+ addCriterion("buyedtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeIsNotNull() {
+ addCriterion("buyedtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeEqualTo(Date value) {
+ addCriterion("buyedtime =", value, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeNotEqualTo(Date value) {
+ addCriterion("buyedtime <>", value, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeGreaterThan(Date value) {
+ addCriterion("buyedtime >", value, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("buyedtime >=", value, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeLessThan(Date value) {
+ addCriterion("buyedtime <", value, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeLessThanOrEqualTo(Date value) {
+ addCriterion("buyedtime <=", value, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeIn(List<Date> values) {
+ addCriterion("buyedtime in", values, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeNotIn(List<Date> values) {
+ addCriterion("buyedtime not in", values, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeBetween(Date value1, Date value2) {
+ addCriterion("buyedtime between", value1, value2, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andBuyedtimeNotBetween(Date value1, Date value2) {
+ addCriterion("buyedtime not between", value1, value2, "buyedtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNull() {
+ addCriterion("amount is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIsNotNull() {
+ addCriterion("amount is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountEqualTo(BigDecimal value) {
+ addCriterion("amount =", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotEqualTo(BigDecimal value) {
+ addCriterion("amount <>", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThan(BigDecimal value) {
+ addCriterion("amount >", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount >=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThan(BigDecimal value) {
+ addCriterion("amount <", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("amount <=", value, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountIn(List<BigDecimal> values) {
+ addCriterion("amount in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotIn(List<BigDecimal> values) {
+ addCriterion("amount not in", values, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andAmountNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("amount not between", value1, value2, "amount");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWallet.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWallet.java
new file mode 100644
index 0000000..c082946
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWallet.java
@@ -0,0 +1,106 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterWallet {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private BigDecimal balance;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public BigDecimal getBalance() {
+ return balance;
+ }
+
+ public void setBalance(BigDecimal balance) {
+ this.balance = balance;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWalletExample.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWalletExample.java
new file mode 100644
index 0000000..834eda0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/java/com/farriver/bwf/data/master/model/VIPMasterWalletExample.java
@@ -0,0 +1,954 @@
+package com.farriver.bwf.data.master.model;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class VIPMasterWalletExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List<Criteria> oredCriteria;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer offset;
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的属性(请勿删除).
+ * This field corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ protected Integer rows;
+
+ public VIPMasterWalletExample() {
+ oredCriteria = new ArrayList<Criteria>();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List<Criteria> getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ rows = null;
+ offset = null;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setOffset(Integer offset) {
+ this.offset = offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getOffset() {
+ return offset;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public void setRows(Integer rows) {
+ this.rows = rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public Integer getRows() {
+ return rows;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterWalletExample limit(Integer rows) {
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterWalletExample limit(Integer offset, Integer rows) {
+ this.offset = offset;
+ this.rows = rows;
+ return this;
+ }
+
+ /**
+ * 这是Mybatis Generator拓展插件生成的方法(请勿删除).
+ * This method corresponds to the database table fr_bwf..vip_master_wallet
+ *
+ * @mbg.generated
+ * @author hewei
+ */
+ public VIPMasterWalletExample page(Integer page, Integer pageSize) {
+ this.offset = page * pageSize;
+ this.rows = pageSize;
+ return this;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List<Criterion> criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList<Criterion>();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List<Criterion> getAllCriteria() {
+ return criteria;
+ }
+
+ public List<Criterion> getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(String value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(String value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(String value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(String value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(String value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(String value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLike(String value) {
+ addCriterion("id like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotLike(String value) {
+ addCriterion("id not like", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List<String> values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List<String> values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(String value1, String value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(String value1, String value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNull() {
+ addCriterion("isdeleted is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIsNotNull() {
+ addCriterion("isdeleted is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedEqualTo(Boolean value) {
+ addCriterion("isdeleted =", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotEqualTo(Boolean value) {
+ addCriterion("isdeleted <>", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThan(Boolean value) {
+ addCriterion("isdeleted >", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedGreaterThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted >=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThan(Boolean value) {
+ addCriterion("isdeleted <", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedLessThanOrEqualTo(Boolean value) {
+ addCriterion("isdeleted <=", value, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedIn(List<Boolean> values) {
+ addCriterion("isdeleted in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotIn(List<Boolean> values) {
+ addCriterion("isdeleted not in", values, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andIsdeletedNotBetween(Boolean value1, Boolean value2) {
+ addCriterion("isdeleted not between", value1, value2, "isdeleted");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNull() {
+ addCriterion("remark is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIsNotNull() {
+ addCriterion("remark is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkEqualTo(String value) {
+ addCriterion("remark =", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotEqualTo(String value) {
+ addCriterion("remark <>", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThan(String value) {
+ addCriterion("remark >", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+ addCriterion("remark >=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThan(String value) {
+ addCriterion("remark <", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLessThanOrEqualTo(String value) {
+ addCriterion("remark <=", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkLike(String value) {
+ addCriterion("remark like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotLike(String value) {
+ addCriterion("remark not like", value, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkIn(List<String> values) {
+ addCriterion("remark in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotIn(List<String> values) {
+ addCriterion("remark not in", values, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkBetween(String value1, String value2) {
+ addCriterion("remark between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andRemarkNotBetween(String value1, String value2) {
+ addCriterion("remark not between", value1, value2, "remark");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNull() {
+ addCriterion("createtime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIsNotNull() {
+ addCriterion("createtime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeEqualTo(Date value) {
+ addCriterion("createtime =", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotEqualTo(Date value) {
+ addCriterion("createtime <>", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThan(Date value) {
+ addCriterion("createtime >", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("createtime >=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThan(Date value) {
+ addCriterion("createtime <", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("createtime <=", value, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeIn(List<Date> values) {
+ addCriterion("createtime in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotIn(List<Date> values) {
+ addCriterion("createtime not in", values, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeBetween(Date value1, Date value2) {
+ addCriterion("createtime between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andCreatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("createtime not between", value1, value2, "createtime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNull() {
+ addCriterion("updatetime is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIsNotNull() {
+ addCriterion("updatetime is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeEqualTo(Date value) {
+ addCriterion("updatetime =", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotEqualTo(Date value) {
+ addCriterion("updatetime <>", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThan(Date value) {
+ addCriterion("updatetime >", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) {
+ addCriterion("updatetime >=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThan(Date value) {
+ addCriterion("updatetime <", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeLessThanOrEqualTo(Date value) {
+ addCriterion("updatetime <=", value, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeIn(List<Date> values) {
+ addCriterion("updatetime in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotIn(List<Date> values) {
+ addCriterion("updatetime not in", values, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeBetween(Date value1, Date value2) {
+ addCriterion("updatetime between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpdatetimeNotBetween(Date value1, Date value2) {
+ addCriterion("updatetime not between", value1, value2, "updatetime");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNull() {
+ addCriterion("masterid is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIsNotNull() {
+ addCriterion("masterid is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridEqualTo(String value) {
+ addCriterion("masterid =", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotEqualTo(String value) {
+ addCriterion("masterid <>", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThan(String value) {
+ addCriterion("masterid >", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridGreaterThanOrEqualTo(String value) {
+ addCriterion("masterid >=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThan(String value) {
+ addCriterion("masterid <", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLessThanOrEqualTo(String value) {
+ addCriterion("masterid <=", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridLike(String value) {
+ addCriterion("masterid like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotLike(String value) {
+ addCriterion("masterid not like", value, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridIn(List<String> values) {
+ addCriterion("masterid in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotIn(List<String> values) {
+ addCriterion("masterid not in", values, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridBetween(String value1, String value2) {
+ addCriterion("masterid between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasteridNotBetween(String value1, String value2) {
+ addCriterion("masterid not between", value1, value2, "masterid");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNull() {
+ addCriterion("mastercode is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIsNotNull() {
+ addCriterion("mastercode is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeEqualTo(String value) {
+ addCriterion("mastercode =", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotEqualTo(String value) {
+ addCriterion("mastercode <>", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThan(String value) {
+ addCriterion("mastercode >", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeGreaterThanOrEqualTo(String value) {
+ addCriterion("mastercode >=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThan(String value) {
+ addCriterion("mastercode <", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLessThanOrEqualTo(String value) {
+ addCriterion("mastercode <=", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeLike(String value) {
+ addCriterion("mastercode like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotLike(String value) {
+ addCriterion("mastercode not like", value, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeIn(List<String> values) {
+ addCriterion("mastercode in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotIn(List<String> values) {
+ addCriterion("mastercode not in", values, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeBetween(String value1, String value2) {
+ addCriterion("mastercode between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMastercodeNotBetween(String value1, String value2) {
+ addCriterion("mastercode not between", value1, value2, "mastercode");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNull() {
+ addCriterion("mastername is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIsNotNull() {
+ addCriterion("mastername is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameEqualTo(String value) {
+ addCriterion("mastername =", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotEqualTo(String value) {
+ addCriterion("mastername <>", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThan(String value) {
+ addCriterion("mastername >", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameGreaterThanOrEqualTo(String value) {
+ addCriterion("mastername >=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThan(String value) {
+ addCriterion("mastername <", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLessThanOrEqualTo(String value) {
+ addCriterion("mastername <=", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameLike(String value) {
+ addCriterion("mastername like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotLike(String value) {
+ addCriterion("mastername not like", value, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameIn(List<String> values) {
+ addCriterion("mastername in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotIn(List<String> values) {
+ addCriterion("mastername not in", values, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameBetween(String value1, String value2) {
+ addCriterion("mastername between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andMasternameNotBetween(String value1, String value2) {
+ addCriterion("mastername not between", value1, value2, "mastername");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceIsNull() {
+ addCriterion("balance is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceIsNotNull() {
+ addCriterion("balance is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceEqualTo(BigDecimal value) {
+ addCriterion("balance =", value, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceNotEqualTo(BigDecimal value) {
+ addCriterion("balance <>", value, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceGreaterThan(BigDecimal value) {
+ addCriterion("balance >", value, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceGreaterThanOrEqualTo(BigDecimal value) {
+ addCriterion("balance >=", value, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceLessThan(BigDecimal value) {
+ addCriterion("balance <", value, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceLessThanOrEqualTo(BigDecimal value) {
+ addCriterion("balance <=", value, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceIn(List<BigDecimal> values) {
+ addCriterion("balance in", values, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceNotIn(List<BigDecimal> values) {
+ addCriterion("balance not in", values, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("balance between", value1, value2, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andBalanceNotBetween(BigDecimal value1, BigDecimal value2) {
+ addCriterion("balance not between", value1, value2, "balance");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(Integer value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(Integer value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(Integer value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(Integer value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(Integer value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List<Integer> values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List<Integer> values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(Integer value1, Integer value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(Integer value1, Integer value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List<?>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/resources/generatorConfig.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/resources/generatorConfig.xml
new file mode 100644
index 0000000..c466e6b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/main/resources/generatorConfig.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE generatorConfiguration
+ PUBLIC " -//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
+ "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
+<generatorConfiguration>
+ <context id="my" targetRuntime="MyBatis3">
+ <plugin type="com.itfsw.mybatis.generator.plugins.LimitPlugin"/>
+
+ <commentGenerator>
+ <property name="suppressDate" value="false"/>
+ <property name="suppressAllComments" value="true"/>
+ </commentGenerator>
+ <!--itfsw.LimitPlugin 必须用这个com.mysql.jdbc.Driver-->
+ <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://39.98.182.30:3306/fr_bwf"
+ userId="root" password="abcd,.1234">
+ <property name="nullCatalogMeansCurrent" value="true"/>
+ </jdbcConnection>
+
+ <javaModelGenerator targetPackage="com.farriver.bwf.data.master.model" targetProject="src/main/java">
+ <property name="enableSubPackages" value="true"/>
+ <property name="trimStrings" value="true"/>
+ </javaModelGenerator>
+
+ <sqlMapGenerator targetPackage="com.farriver.bwf.data.master.mapper" targetProject="src/main/java">
+ <property name="enableSubPackages" value="true"/>
+ </sqlMapGenerator>
+
+ <javaClientGenerator targetPackage="com.farriver.bwf.data.master.mapper" targetProject="src/main/java"
+ type="XMLMAPPER">
+ <property name="enableSubPackages" value="true"/>
+ </javaClientGenerator>
+
+ <!-- 需要生成的实体类对应的表名,多个实体类复制多份该配置即可 -->
+ <table tableName="question_paper_question_master_relation" domainObjectName="QuestionPaperQuestionMasterRelation"
+ enableCountByExample="true" enableUpdateByExample="true"
+ enableDeleteByExample="true" enableSelectByExample="true"
+ selectByExampleQueryId="true"/>
+ </context>
+</generatorConfiguration>
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/test/java/com/farriver/bwf/ApplicationTests.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/test/java/com/farriver/bwf/ApplicationTests.java
new file mode 100644
index 0000000..2325623
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.master/src/test/java/com/farriver/bwf/ApplicationTests.java
@@ -0,0 +1,13 @@
+package com.farriver.bwf;
+
+import org.junit.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/pom.xml b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/pom.xml
new file mode 100644
index 0000000..c2a88da
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <groupId>com.farriver.bwf.data.transferobject</groupId>
+ <artifactId>transferobject</artifactId>
+ <version>${revision}</version>
+ <parent>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <dependencies>
+ <dependency>
+ <groupId>com.farriver.bwf.data.master</groupId>
+ <artifactId>master</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.common</groupId>
+ <artifactId>common</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogCommentStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogCommentStatusOptions.java
new file mode 100644
index 0000000..c59b46c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogCommentStatusOptions.java
@@ -0,0 +1,10 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum BlogCommentStatusOptions {
+ DRAFT,
+ REVIEWING,
+ PUBLISHED,
+ LOCKED,
+ REMOVED,
+ CANCELED
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogStatusOptions.java
new file mode 100644
index 0000000..df65b8b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/BlogStatusOptions.java
@@ -0,0 +1,10 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum BlogStatusOptions {
+ DRAFT,
+ REVIEWING,
+ PUBLISHED,
+ LOCKED,
+ REMOVED,
+ CANCELED
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/CustomerStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/CustomerStatusOptions.java
new file mode 100644
index 0000000..2c0ffe4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/CustomerStatusOptions.java
@@ -0,0 +1,6 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum CustomerStatusOptions {
+ Enabled,
+ Disabled,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectBiddingRecordStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectBiddingRecordStatusOptions.java
new file mode 100644
index 0000000..706f6d7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectBiddingRecordStatusOptions.java
@@ -0,0 +1,12 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum FRProjectBiddingRecordStatusOptions {
+ Defined,
+ Delivered,
+ Received,
+ Rejected,
+ Paid,
+ Commented,
+ Completed,
+ Canceled
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectScheduleStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectScheduleStatusOptions.java
new file mode 100644
index 0000000..8774e97
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectScheduleStatusOptions.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum FRProjectScheduleStatusOptions {
+ Pending,
+ Active,
+ Completed,
+ Delayed,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectStatusOptions.java
new file mode 100644
index 0000000..a6aec34
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/FRProjectStatusOptions.java
@@ -0,0 +1,21 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum FRProjectStatusOptions {
+ Defined,
+ Published,
+ Reviewing,
+ Rejected,
+ Bidding,
+ SuccessBid,
+ FailedBid,
+ MidPendingToPay,
+ Active,
+ Delayed,
+ Accepted,
+ FinalPendingToPay,
+ Billing,
+ Commented,
+ Completed,
+ Canceled,
+ Expired,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/MDStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/MDStatusOptions.java
new file mode 100644
index 0000000..26333f9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/MDStatusOptions.java
@@ -0,0 +1,6 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum MDStatusOptions {
+ Enabled,
+ Disabled,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/NotificationStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/NotificationStatusOptions.java
new file mode 100644
index 0000000..fe41fdb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/NotificationStatusOptions.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum NotificationStatusOptions {
+ Defined,
+ Unpublished,
+ Published,
+ Expired,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderProductStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderProductStatusOptions.java
new file mode 100644
index 0000000..167b9c1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderProductStatusOptions.java
@@ -0,0 +1,9 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum OrderProductStatusOptions {
+ Defined,
+ Delivered,
+ Received,
+ Rejected,
+ Bought,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderStatusOptions.java
new file mode 100644
index 0000000..c0df42c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderStatusOptions.java
@@ -0,0 +1,12 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum OrderStatusOptions {
+ Defined,
+ Delivered,
+ Received,
+ Rejected,
+ Paid,
+ Commented,
+ Completed,
+ Canceled
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderTypeOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderTypeOptions.java
new file mode 100644
index 0000000..1532948
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/OrderTypeOptions.java
@@ -0,0 +1,7 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum OrderTypeOptions {
+ RECHARGE,
+ PAPER,
+ MALL,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/PaymentMethodOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/PaymentMethodOptions.java
new file mode 100644
index 0000000..097361d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/PaymentMethodOptions.java
@@ -0,0 +1,21 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum PaymentMethodOptions {
+ AccountBalancePay,
+ AliPay,
+ WeChatPay,
+ BankPay,
+}
+
+//银行汇款
+// Telegraphic Transfer (T/T):电汇,即由买方通过银行向卖方的银行账户付款。
+// Letter of Credit (L/C):信用证,即由买方向卖方的银行开出的保证付款的文件。
+// Bill of Exchange:汇票,即由卖方开出,要求买方在规定的期限内支付货款的票据。
+// Bank Draft:银行汇票,即由银行出具的一个付款人向受益人的书面要求付款的文件。
+// Remittance:汇款,一般指跨境汇款,包括电汇、汇票等。
+
+//现金支付
+// Cash:现金,即纸币或硬币等形式的实体货币。
+// Banknote:纸币,由国家或地区发行的具有法定货币地位的纸制品。
+// Coin:硬币,一种小型、通常是圆形的实体货币,由铜、锌、镍和钢等材料制成。
+// Counterfeit Money:假币,指伪造的与真币相似的货币。
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/QuestionPaperTypeOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/QuestionPaperTypeOptions.java
new file mode 100644
index 0000000..a18da30
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/QuestionPaperTypeOptions.java
@@ -0,0 +1,7 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum QuestionPaperTypeOptions {
+ FREE,
+ VIP_FREE,
+ CHARGE,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/SystemNotificationStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/SystemNotificationStatusOptions.java
new file mode 100644
index 0000000..8213f5a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/SystemNotificationStatusOptions.java
@@ -0,0 +1,8 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum SystemNotificationStatusOptions {
+ Defined,
+ Unpublished,
+ Published,
+ Expired,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/UserStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/UserStatusOptions.java
new file mode 100644
index 0000000..430bb3e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/UserStatusOptions.java
@@ -0,0 +1,7 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum UserStatusOptions {
+ VALID,
+ LOCKED,
+ EXPIRED,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/VIPMasterPaperRelationStatusOptions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/VIPMasterPaperRelationStatusOptions.java
new file mode 100644
index 0000000..9871480
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/options/VIPMasterPaperRelationStatusOptions.java
@@ -0,0 +1,7 @@
+package com.farriver.bwf.data.transferobject.options;
+
+public enum VIPMasterPaperRelationStatusOptions {
+ VALID,
+ LOCKED,
+ EXPIRED,
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/IQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/IQueryObject.java
new file mode 100644
index 0000000..3be8b98
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/IQueryObject.java
@@ -0,0 +1,4 @@
+package com.farriver.bwf.data.transferobject.queryobject;
+
+public interface IQueryObject {
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/QueryObjectBase.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/QueryObjectBase.java
new file mode 100644
index 0000000..ab643fa
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/QueryObjectBase.java
@@ -0,0 +1,326 @@
+package com.farriver.bwf.data.transferobject.queryobject;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+public abstract class QueryObjectBase implements IQueryObject {
+ private Integer pageIndex = 1;
+ private Integer pageSize = 10000;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date startDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date endDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date scheduledeliverytimeFromDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date scheduledeliverytimeToDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date schedulestartedtimeFromDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date schedulestartedtimeToDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date schedulefinishedtimeFromDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date schedulefinishedtimeToDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date signdateFromDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date signdateToDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date startdateFromDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date startdateToDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date enddateFromDateTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date enddateToDateTime;
+
+ private String filter;
+
+ private List<String> ids;
+
+ private List<String> notinids;
+
+ public List<String> getNotinids() {
+ return notinids;
+ }
+
+ public void setNotinids(List<String> notinids) {
+ this.notinids = notinids;
+ }
+
+ private List<String> codes;
+
+ private String uniquecode;
+
+ private String uniquename;
+
+ private String uniqueemail;
+
+ private String uniqueaccount;
+
+ private String uniquecellphone;
+
+ private String createdby;
+
+ private String cancelledby;
+
+ public Date getSigndateFromDateTime() {
+ return signdateFromDateTime;
+ }
+
+ public void setSigndateFromDateTime(Date signdateFromDateTime) {
+ this.signdateFromDateTime = signdateFromDateTime;
+ }
+
+ public Date getSigndateToDateTime() {
+ return signdateToDateTime;
+ }
+
+ public void setSigndateToDateTime(Date signdateToDateTime) {
+ this.signdateToDateTime = signdateToDateTime;
+ }
+
+ public Date getStartdateFromDateTime() {
+ return startdateFromDateTime;
+ }
+
+ public void setStartdateFromDateTime(Date startdateFromDateTime) {
+ this.startdateFromDateTime = startdateFromDateTime;
+ }
+
+ public Date getStartdateToDateTime() {
+ return startdateToDateTime;
+ }
+
+ public void setStartdateToDateTime(Date startdateToDateTime) {
+ this.startdateToDateTime = startdateToDateTime;
+ }
+
+ public Date getEnddateFromDateTime() {
+ return enddateFromDateTime;
+ }
+
+ public void setEnddateFromDateTime(Date enddateFromDateTime) {
+ this.enddateFromDateTime = enddateFromDateTime;
+ }
+
+ public Date getEnddateToDateTime() {
+ return enddateToDateTime;
+ }
+
+ public void setEnddateToDateTime(Date enddateToDateTime) {
+ this.enddateToDateTime = enddateToDateTime;
+ }
+
+ public String getCreatedby() {
+ return createdby;
+ }
+
+ public void setCreatedby(String createdby) {
+ this.createdby = createdby;
+ }
+
+ public String getCancelledby() {
+ return cancelledby;
+ }
+
+ public void setCancelledby(String cancelledby) {
+ this.cancelledby = cancelledby;
+ }
+
+ public Date getScheduledeliverytimeFromDateTime() {
+ return scheduledeliverytimeFromDateTime;
+ }
+
+ public void setScheduledeliverytimeFromDateTime(Date scheduledeliverytimeFromDateTime) {
+ this.scheduledeliverytimeFromDateTime = scheduledeliverytimeFromDateTime;
+ }
+
+ public Date getScheduledeliverytimeToDateTime() {
+ return scheduledeliverytimeToDateTime;
+ }
+
+ public void setScheduledeliverytimeToDateTime(Date scheduledeliverytimeToDateTime) {
+ this.scheduledeliverytimeToDateTime = scheduledeliverytimeToDateTime;
+ }
+
+ public Date getSchedulestartedtimeFromDateTime() {
+ return schedulestartedtimeFromDateTime;
+ }
+
+ public void setSchedulestartedtimeFromDateTime(Date schedulestartedtimeFromDateTime) {
+ this.schedulestartedtimeFromDateTime = schedulestartedtimeFromDateTime;
+ }
+
+ public Date getSchedulestartedtimeToDateTime() {
+ return schedulestartedtimeToDateTime;
+ }
+
+ public void setSchedulestartedtimeToDateTime(Date schedulestartedtimeToDateTime) {
+ this.schedulestartedtimeToDateTime = schedulestartedtimeToDateTime;
+ }
+
+ public Date getSchedulefinishedtimeFromDateTime() {
+ return schedulefinishedtimeFromDateTime;
+ }
+
+ public void setSchedulefinishedtimeFromDateTime(Date schedulefinishedtimeFromDateTime) {
+ this.schedulefinishedtimeFromDateTime = schedulefinishedtimeFromDateTime;
+ }
+
+ public Date getSchedulefinishedtimeToDateTime() {
+ return schedulefinishedtimeToDateTime;
+ }
+
+ public void setSchedulefinishedtimeToDateTime(Date schedulefinishedtimeToDateTime) {
+ this.schedulefinishedtimeToDateTime = schedulefinishedtimeToDateTime;
+ }
+
+ public String getUniqueemail() {
+ return uniqueemail;
+ }
+
+ public void setUniqueemail(String uniqueemail) {
+ this.uniqueemail = uniqueemail;
+ }
+
+ public String getUniqueaccount() {
+ return uniqueaccount;
+ }
+
+ public void setUniqueaccount(String uniqueaccount) {
+ this.uniqueaccount = uniqueaccount;
+ }
+
+ public String getUniquecellphone() {
+ return uniquecellphone;
+ }
+
+ public void setUniquecellphone(String uniquecellphone) {
+ this.uniquecellphone = uniquecellphone;
+ }
+
+ public String getUniquecode() {
+ return uniquecode;
+ }
+
+ public void setUniquecode(String uniquecode) {
+ this.uniquecode = uniquecode;
+ }
+
+ public String getUniquename() {
+ return uniquename;
+ }
+
+ public void setUniquename(String uniquename) {
+ this.uniquename = uniquename;
+ }
+
+ public List<String> getCodes() {
+ return codes;
+ }
+
+ public void setCodes(List<String> codes) {
+ this.codes = codes;
+ }
+
+ public List<String> getIds() {
+ return ids;
+ }
+
+ public void setIds(List<String> ids) {
+ this.ids = ids;
+ }
+
+ private Integer permissionLevel = 0;
+
+ private List<Integer> statuslist;
+
+ public List<Integer> getStatuslist() {
+ return statuslist;
+ }
+
+ public void setStatuslist(List<Integer> statuslist) {
+ this.statuslist = statuslist;
+ }
+
+ public Integer getPermissionLevel() {
+ return permissionLevel;
+ }
+
+ public void setPermissionLevel(Integer permissionLevel) {
+ this.permissionLevel = permissionLevel;
+ }
+
+ public String getFilter() {
+ return filter;
+ }
+
+ public void setFilter(String filter) {
+ this.filter = filter;
+ }
+
+ public Integer getPageIndex() {
+ return pageIndex;
+ }
+
+ public void setPageIndex(Integer pageIndex) {
+ this.pageIndex = pageIndex;
+ }
+
+ public Integer getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ public Date getStartDateTime() {
+ return startDateTime;
+ }
+
+ public void setStartDateTime(Date startDateTime) {
+ this.startDateTime = startDateTime;
+ }
+
+ public Date getEndDateTime() {
+ return endDateTime;
+ }
+
+ public void setEndDateTime(Date endDateTime) {
+ this.endDateTime = endDateTime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalCategoryQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalCategoryQueryObject.java
new file mode 100644
index 0000000..7f23036
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalCategoryQueryObject.java
@@ -0,0 +1,97 @@
+package com.farriver.bwf.data.transferobject.queryobject.approval;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ApprovalCategoryQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordHistoryQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordHistoryQueryObject.java
new file mode 100644
index 0000000..fc4b775
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordHistoryQueryObject.java
@@ -0,0 +1,137 @@
+package com.farriver.bwf.data.transferobject.queryobject.approval;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ApprovalRecordHistoryQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String no;
+
+ private Integer status;
+
+ private String templatecode;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private String title;
+
+ private String description;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getTemplatecode() {
+ return templatecode;
+ }
+
+ public void setTemplatecode(String templatecode) {
+ this.templatecode = templatecode == null ? null : templatecode.trim();
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordQueryObject.java
new file mode 100644
index 0000000..e1b4658
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalRecordQueryObject.java
@@ -0,0 +1,137 @@
+package com.farriver.bwf.data.transferobject.queryobject.approval;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ApprovalRecordQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String no;
+
+ private Integer status;
+
+ private String templatecode;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private String title;
+
+ private String description;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getTemplatecode() {
+ return templatecode;
+ }
+
+ public void setTemplatecode(String templatecode) {
+ this.templatecode = templatecode == null ? null : templatecode.trim();
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalTemplateQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalTemplateQueryObject.java
new file mode 100644
index 0000000..7154349
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/approval/ApprovalTemplateQueryObject.java
@@ -0,0 +1,147 @@
+package com.farriver.bwf.data.transferobject.queryobject.approval;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ApprovalTemplateQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String code;
+
+ private String name;
+
+ private String category;
+
+ private String icon;
+
+ private Boolean isallowall;
+
+ private Boolean ispromoterautoapprove;
+
+ private Boolean isapprovalopinionrequired;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+
+ public Boolean getIsallowall() {
+ return isallowall;
+ }
+
+ public void setIsallowall(Boolean isallowall) {
+ this.isallowall = isallowall;
+ }
+
+ public Boolean getIspromoterautoapprove() {
+ return ispromoterautoapprove;
+ }
+
+ public void setIspromoterautoapprove(Boolean ispromoterautoapprove) {
+ this.ispromoterautoapprove = ispromoterautoapprove;
+ }
+
+ public Boolean getIsapprovalopinionrequired() {
+ return isapprovalopinionrequired;
+ }
+
+ public void setIsapprovalopinionrequired(Boolean isapprovalopinionrequired) {
+ this.isapprovalopinionrequired = isapprovalopinionrequired;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchApprovalQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchApprovalQueryObject.java
new file mode 100644
index 0000000..9d9a9b9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchApprovalQueryObject.java
@@ -0,0 +1,213 @@
+package com.farriver.bwf.data.transferobject.queryobject.dispatch;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class DispatchApprovalQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String code;
+
+ private String title;
+
+ private Integer status;
+
+ private String source;
+
+ private String sourcedepartment;
+
+ private String target;
+
+ private String targetdepartment;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date startdatetime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date enddatetime;
+
+ private String uid;
+
+ private Integer type;
+
+ private String linkto;
+
+ private Integer priority;
+
+ private String[] roleids;
+
+ public String[] getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(String[] roleids) {
+ this.roleids = roleids;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source == null ? null : source.trim();
+ }
+
+ public String getSourcedepartment() {
+ return sourcedepartment;
+ }
+
+ public void setSourcedepartment(String sourcedepartment) {
+ this.sourcedepartment = sourcedepartment == null ? null : sourcedepartment.trim();
+ }
+
+ public String getTarget() {
+ return target;
+ }
+
+ public void setTarget(String target) {
+ this.target = target == null ? null : target.trim();
+ }
+
+ public String getTargetdepartment() {
+ return targetdepartment;
+ }
+
+ public void setTargetdepartment(String targetdepartment) {
+ this.targetdepartment = targetdepartment == null ? null : targetdepartment.trim();
+ }
+
+ public Date getStartdatetime() {
+ return startdatetime;
+ }
+
+ public void setStartdatetime(Date startdatetime) {
+ this.startdatetime = startdatetime;
+ }
+
+ public Date getEnddatetime() {
+ return enddatetime;
+ }
+
+ public void setEnddatetime(Date enddatetime) {
+ this.enddatetime = enddatetime;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getLinkto() {
+ return linkto;
+ }
+
+ public void setLinkto(String linkto) {
+ this.linkto = linkto == null ? null : linkto.trim();
+ }
+
+ public Integer getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Integer priority) {
+ this.priority = priority;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchNotificationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchNotificationQueryObject.java
new file mode 100644
index 0000000..0c5a3a3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchNotificationQueryObject.java
@@ -0,0 +1,221 @@
+package com.farriver.bwf.data.transferobject.queryobject.dispatch;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class DispatchNotificationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String title;
+
+ private String department;
+
+ private String category;
+
+ private Integer nlevel;
+
+ private String keywords;
+
+ private String actionby;
+
+ private Integer status;
+
+ private String publisher;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date publishdatetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String uid;
+
+ private Integer type;
+
+ private String linkto;
+
+ private Integer priority;
+
+ private String context;
+
+ private String[] roleids;
+
+ public String[] getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(String[] roleids) {
+ this.roleids = roleids;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department == null ? null : department.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getNlevel() {
+ return nlevel;
+ }
+
+ public void setNlevel(Integer nlevel) {
+ this.nlevel = nlevel;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords == null ? null : keywords.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getPublisher() {
+ return publisher;
+ }
+
+ public void setPublisher(String publisher) {
+ this.publisher = publisher == null ? null : publisher.trim();
+ }
+
+ public Date getPublishdatetime() {
+ return publishdatetime;
+ }
+
+ public void setPublishdatetime(Date publishdatetime) {
+ this.publishdatetime = publishdatetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getLinkto() {
+ return linkto;
+ }
+
+ public void setLinkto(String linkto) {
+ this.linkto = linkto == null ? null : linkto.trim();
+ }
+
+ public Integer getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Integer priority) {
+ this.priority = priority;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setContext(String context) {
+ this.context = context == null ? null : context.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchTaskQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchTaskQueryObject.java
new file mode 100644
index 0000000..cf244ac
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/dispatch/DispatchTaskQueryObject.java
@@ -0,0 +1,223 @@
+package com.farriver.bwf.data.transferobject.queryobject.dispatch;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class DispatchTaskQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String code;
+
+ private String title;
+
+ private Integer status;
+
+ private String source;
+
+ private String sourcedepartment;
+
+ private String target;
+
+ private String targetdepartment;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date startdatetime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date enddatetime;
+
+ private String uid;
+
+ private Integer type;
+
+ private String linkto;
+
+ private Integer priority;
+
+ private String detail;
+
+ private String[] roleids;
+
+ public String[] getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(String[] roleids) {
+ this.roleids = roleids;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source == null ? null : source.trim();
+ }
+
+ public String getSourcedepartment() {
+ return sourcedepartment;
+ }
+
+ public void setSourcedepartment(String sourcedepartment) {
+ this.sourcedepartment = sourcedepartment == null ? null : sourcedepartment.trim();
+ }
+
+ public String getTarget() {
+ return target;
+ }
+
+ public void setTarget(String target) {
+ this.target = target == null ? null : target.trim();
+ }
+
+ public String getTargetdepartment() {
+ return targetdepartment;
+ }
+
+ public void setTargetdepartment(String targetdepartment) {
+ this.targetdepartment = targetdepartment == null ? null : targetdepartment.trim();
+ }
+
+ public Date getStartdatetime() {
+ return startdatetime;
+ }
+
+ public void setStartdatetime(Date startdatetime) {
+ this.startdatetime = startdatetime;
+ }
+
+ public Date getEnddatetime() {
+ return enddatetime;
+ }
+
+ public void setEnddatetime(Date enddatetime) {
+ this.enddatetime = enddatetime;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getLinkto() {
+ return linkto;
+ }
+
+ public void setLinkto(String linkto) {
+ this.linkto = linkto == null ? null : linkto.trim();
+ }
+
+ public Integer getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Integer priority) {
+ this.priority = priority;
+ }
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail == null ? null : detail.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionQueryObject.java
new file mode 100644
index 0000000..39b742d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionQueryObject.java
@@ -0,0 +1,147 @@
+package com.farriver.bwf.data.transferobject.queryobject.om;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OMOrganizationPositionQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String title;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String description;
+
+ private Integer experienceyears;
+
+ private String salaryrange;
+
+ private Integer status;
+
+ private String requirements;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public Integer getExperienceyears() {
+ return experienceyears;
+ }
+
+ public void setExperienceyears(Integer experienceyears) {
+ this.experienceyears = experienceyears;
+ }
+
+ public String getSalaryrange() {
+ return salaryrange;
+ }
+
+ public void setSalaryrange(String salaryrange) {
+ this.salaryrange = salaryrange == null ? null : salaryrange.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRequirements() {
+ return requirements;
+ }
+
+ public void setRequirements(String requirements) {
+ this.requirements = requirements == null ? null : requirements.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionRoleRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionRoleRelationQueryObject.java
new file mode 100644
index 0000000..f09f49d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationPositionRoleRelationQueryObject.java
@@ -0,0 +1,139 @@
+package com.farriver.bwf.data.transferobject.queryobject.om;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+import java.util.List;
+
+public class OMOrganizationPositionRoleRelationQueryObject extends QueryObjectBase {
+
+ private List<String> roleids;
+
+ private List<String> positionids;
+
+ public List<String> getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(List<String> roleids) {
+ this.roleids = roleids;
+ }
+
+ public List<String> getPositionids() {
+ return positionids;
+ }
+
+ public void setPositionids(List<String> positionids) {
+ this.positionids = positionids;
+ }
+
+ private String id;
+
+ private String positionid;
+
+ private String positioncode;
+
+ private String positionname;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getPositionid() {
+ return positionid;
+ }
+
+ public void setPositionid(String positionid) {
+ this.positionid = positionid == null ? null : positionid.trim();
+ }
+
+ public String getPositioncode() {
+ return positioncode;
+ }
+
+ public void setPositioncode(String positioncode) {
+ this.positioncode = positioncode == null ? null : positioncode.trim();
+ }
+
+ public String getPositionname() {
+ return positionname;
+ }
+
+ public void setPositionname(String positionname) {
+ this.positionname = positionname == null ? null : positionname.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationQueryObject.java
new file mode 100644
index 0000000..8bacf81
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/om/OMOrganizationQueryObject.java
@@ -0,0 +1,197 @@
+package com.farriver.bwf.data.transferobject.queryobject.om;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OMOrganizationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Boolean enabled;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode;
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveProductQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveProductQueryObject.java
new file mode 100644
index 0000000..269ea08
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveProductQueryObject.java
@@ -0,0 +1,248 @@
+package com.farriver.bwf.data.transferobject.queryobject.order;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderActiveProductQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String rejectreason;
+
+ private String rejectcomment;
+
+ private Date rejecttime;
+
+ private String payer;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discount;
+
+ private String payee;
+
+ private String orderid;
+
+ private String orderno;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getRejectreason() {
+ return rejectreason;
+ }
+
+ public void setRejectreason(String rejectreason) {
+ this.rejectreason = rejectreason == null ? null : rejectreason.trim();
+ }
+
+ public String getRejectcomment() {
+ return rejectcomment;
+ }
+
+ public void setRejectcomment(String rejectcomment) {
+ this.rejectcomment = rejectcomment == null ? null : rejectcomment.trim();
+ }
+
+ public Date getRejecttime() {
+ return rejecttime;
+ }
+
+ public void setRejecttime(Date rejecttime) {
+ this.rejecttime = rejecttime;
+ }
+
+ public String getPayer() {
+ return payer;
+ }
+
+ public void setPayer(String payer) {
+ this.payer = payer == null ? null : payer.trim();
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public String getPayee() {
+ return payee;
+ }
+
+ public void setPayee(String payee) {
+ this.payee = payee == null ? null : payee.trim();
+ }
+
+ public String getOrderid() {
+ return orderid;
+ }
+
+ public void setOrderid(String orderid) {
+ this.orderid = orderid == null ? null : orderid.trim();
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveQueryObject.java
new file mode 100644
index 0000000..6e8bb88
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderActiveQueryObject.java
@@ -0,0 +1,408 @@
+package com.farriver.bwf.data.transferobject.queryobject.order;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderActiveQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String no;
+
+ private BigDecimal totalmoney;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discountmoney;
+
+ private Integer status;
+
+ private Date ordertime;
+
+ private Date paytime;
+
+ private Date sendtime;
+
+ private Date receivetime;
+
+ private Date commenttime;
+
+ private Date completetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String sendername;
+
+ private String sendercode;
+
+ private Integer sendercontactno;
+
+ private String targetaddress;
+
+ private String deliveryaddress;
+
+ private String optimalcoupon;
+
+ private String logisticscompany;
+
+ private String logisticsno;
+
+ private String transportmode;
+
+ private Integer boxcount;
+
+ private BigDecimal boxweight;
+
+ private BigDecimal freight;
+
+ private String commentcontent;
+
+ private Integer commentlevel;
+
+ private String receiverid;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ private Integer paymentmethod;
+
+ private Integer type;
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public Integer getPaymentmethod() {
+ return paymentmethod;
+ }
+
+ public void setPaymentmethod(Integer paymentmethod) {
+ this.paymentmethod = paymentmethod;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public BigDecimal getTotalmoney() {
+ return totalmoney;
+ }
+
+ public void setTotalmoney(BigDecimal totalmoney) {
+ this.totalmoney = totalmoney;
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscountmoney() {
+ return discountmoney;
+ }
+
+ public void setDiscountmoney(BigDecimal discountmoney) {
+ this.discountmoney = discountmoney;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Date getOrdertime() {
+ return ordertime;
+ }
+
+ public void setOrdertime(Date ordertime) {
+ this.ordertime = ordertime;
+ }
+
+ public Date getPaytime() {
+ return paytime;
+ }
+
+ public void setPaytime(Date paytime) {
+ this.paytime = paytime;
+ }
+
+ public Date getSendtime() {
+ return sendtime;
+ }
+
+ public void setSendtime(Date sendtime) {
+ this.sendtime = sendtime;
+ }
+
+ public Date getReceivetime() {
+ return receivetime;
+ }
+
+ public void setReceivetime(Date receivetime) {
+ this.receivetime = receivetime;
+ }
+
+ public Date getCommenttime() {
+ return commenttime;
+ }
+
+ public void setCommenttime(Date commenttime) {
+ this.commenttime = commenttime;
+ }
+
+ public Date getCompletetime() {
+ return completetime;
+ }
+
+ public void setCompletetime(Date completetime) {
+ this.completetime = completetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getSendername() {
+ return sendername;
+ }
+
+ public void setSendername(String sendername) {
+ this.sendername = sendername == null ? null : sendername.trim();
+ }
+
+ public String getSendercode() {
+ return sendercode;
+ }
+
+ public void setSendercode(String sendercode) {
+ this.sendercode = sendercode == null ? null : sendercode.trim();
+ }
+
+ public Integer getSendercontactno() {
+ return sendercontactno;
+ }
+
+ public void setSendercontactno(Integer sendercontactno) {
+ this.sendercontactno = sendercontactno;
+ }
+
+ public String getTargetaddress() {
+ return targetaddress;
+ }
+
+ public void setTargetaddress(String targetaddress) {
+ this.targetaddress = targetaddress == null ? null : targetaddress.trim();
+ }
+
+ public String getDeliveryaddress() {
+ return deliveryaddress;
+ }
+
+ public void setDeliveryaddress(String deliveryaddress) {
+ this.deliveryaddress = deliveryaddress == null ? null : deliveryaddress.trim();
+ }
+
+ public String getOptimalcoupon() {
+ return optimalcoupon;
+ }
+
+ public void setOptimalcoupon(String optimalcoupon) {
+ this.optimalcoupon = optimalcoupon == null ? null : optimalcoupon.trim();
+ }
+
+ public String getLogisticscompany() {
+ return logisticscompany;
+ }
+
+ public void setLogisticscompany(String logisticscompany) {
+ this.logisticscompany = logisticscompany == null ? null : logisticscompany.trim();
+ }
+
+ public String getLogisticsno() {
+ return logisticsno;
+ }
+
+ public void setLogisticsno(String logisticsno) {
+ this.logisticsno = logisticsno == null ? null : logisticsno.trim();
+ }
+
+ public String getTransportmode() {
+ return transportmode;
+ }
+
+ public void setTransportmode(String transportmode) {
+ this.transportmode = transportmode == null ? null : transportmode.trim();
+ }
+
+ public Integer getBoxcount() {
+ return boxcount;
+ }
+
+ public void setBoxcount(Integer boxcount) {
+ this.boxcount = boxcount;
+ }
+
+ public BigDecimal getBoxweight() {
+ return boxweight;
+ }
+
+ public void setBoxweight(BigDecimal boxweight) {
+ this.boxweight = boxweight;
+ }
+
+ public BigDecimal getFreight() {
+ return freight;
+ }
+
+ public void setFreight(BigDecimal freight) {
+ this.freight = freight;
+ }
+
+ public String getCommentcontent() {
+ return commentcontent;
+ }
+
+ public void setCommentcontent(String commentcontent) {
+ this.commentcontent = commentcontent == null ? null : commentcontent.trim();
+ }
+
+ public Integer getCommentlevel() {
+ return commentlevel;
+ }
+
+ public void setCommentlevel(Integer commentlevel) {
+ this.commentlevel = commentlevel;
+ }
+
+ public String getReceiverid() {
+ return receiverid;
+ }
+
+ public void setReceiverid(String receiverid) {
+ this.receiverid = receiverid == null ? null : receiverid.trim();
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryProductQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryProductQueryObject.java
new file mode 100644
index 0000000..5503eae
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryProductQueryObject.java
@@ -0,0 +1,248 @@
+package com.farriver.bwf.data.transferobject.queryobject.order;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderHistoryProductQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String rejectreason;
+
+ private String rejectcomment;
+
+ private Date rejecttime;
+
+ private String payer;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discount;
+
+ private String payee;
+
+ private String orderno;
+
+ private String orderid;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getRejectreason() {
+ return rejectreason;
+ }
+
+ public void setRejectreason(String rejectreason) {
+ this.rejectreason = rejectreason == null ? null : rejectreason.trim();
+ }
+
+ public String getRejectcomment() {
+ return rejectcomment;
+ }
+
+ public void setRejectcomment(String rejectcomment) {
+ this.rejectcomment = rejectcomment == null ? null : rejectcomment.trim();
+ }
+
+ public Date getRejecttime() {
+ return rejecttime;
+ }
+
+ public void setRejecttime(Date rejecttime) {
+ this.rejecttime = rejecttime;
+ }
+
+ public String getPayer() {
+ return payer;
+ }
+
+ public void setPayer(String payer) {
+ this.payer = payer == null ? null : payer.trim();
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public String getPayee() {
+ return payee;
+ }
+
+ public void setPayee(String payee) {
+ this.payee = payee == null ? null : payee.trim();
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getOrderid() {
+ return orderid;
+ }
+
+ public void setOrderid(String orderid) {
+ this.orderid = orderid == null ? null : orderid.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryQueryObject.java
new file mode 100644
index 0000000..26943c3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderHistoryQueryObject.java
@@ -0,0 +1,408 @@
+package com.farriver.bwf.data.transferobject.queryobject.order;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderHistoryQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String no;
+
+ private BigDecimal totalmoney;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discountmoney;
+
+ private Integer status;
+
+ private Date ordertime;
+
+ private Date paytime;
+
+ private Date sendtime;
+
+ private Date receivetime;
+
+ private Date commenttime;
+
+ private Date completetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String sendername;
+
+ private String sendercode;
+
+ private Integer sendercontactno;
+
+ private String targetaddress;
+
+ private String deliveryaddress;
+
+ private String optimalcoupon;
+
+ private String logisticscompany;
+
+ private String logisticsno;
+
+ private String transportmode;
+
+ private Integer boxcount;
+
+ private BigDecimal boxweight;
+
+ private BigDecimal freight;
+
+ private String commentcontent;
+
+ private Integer commentlevel;
+
+ private String receiverid;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ private Integer paymentmethod;
+
+ private Integer type;
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public Integer getPaymentmethod() {
+ return paymentmethod;
+ }
+
+ public void setPaymentmethod(Integer paymentmethod) {
+ this.paymentmethod = paymentmethod;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public BigDecimal getTotalmoney() {
+ return totalmoney;
+ }
+
+ public void setTotalmoney(BigDecimal totalmoney) {
+ this.totalmoney = totalmoney;
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscountmoney() {
+ return discountmoney;
+ }
+
+ public void setDiscountmoney(BigDecimal discountmoney) {
+ this.discountmoney = discountmoney;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Date getOrdertime() {
+ return ordertime;
+ }
+
+ public void setOrdertime(Date ordertime) {
+ this.ordertime = ordertime;
+ }
+
+ public Date getPaytime() {
+ return paytime;
+ }
+
+ public void setPaytime(Date paytime) {
+ this.paytime = paytime;
+ }
+
+ public Date getSendtime() {
+ return sendtime;
+ }
+
+ public void setSendtime(Date sendtime) {
+ this.sendtime = sendtime;
+ }
+
+ public Date getReceivetime() {
+ return receivetime;
+ }
+
+ public void setReceivetime(Date receivetime) {
+ this.receivetime = receivetime;
+ }
+
+ public Date getCommenttime() {
+ return commenttime;
+ }
+
+ public void setCommenttime(Date commenttime) {
+ this.commenttime = commenttime;
+ }
+
+ public Date getCompletetime() {
+ return completetime;
+ }
+
+ public void setCompletetime(Date completetime) {
+ this.completetime = completetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getSendername() {
+ return sendername;
+ }
+
+ public void setSendername(String sendername) {
+ this.sendername = sendername == null ? null : sendername.trim();
+ }
+
+ public String getSendercode() {
+ return sendercode;
+ }
+
+ public void setSendercode(String sendercode) {
+ this.sendercode = sendercode == null ? null : sendercode.trim();
+ }
+
+ public Integer getSendercontactno() {
+ return sendercontactno;
+ }
+
+ public void setSendercontactno(Integer sendercontactno) {
+ this.sendercontactno = sendercontactno;
+ }
+
+ public String getTargetaddress() {
+ return targetaddress;
+ }
+
+ public void setTargetaddress(String targetaddress) {
+ this.targetaddress = targetaddress == null ? null : targetaddress.trim();
+ }
+
+ public String getDeliveryaddress() {
+ return deliveryaddress;
+ }
+
+ public void setDeliveryaddress(String deliveryaddress) {
+ this.deliveryaddress = deliveryaddress == null ? null : deliveryaddress.trim();
+ }
+
+ public String getOptimalcoupon() {
+ return optimalcoupon;
+ }
+
+ public void setOptimalcoupon(String optimalcoupon) {
+ this.optimalcoupon = optimalcoupon == null ? null : optimalcoupon.trim();
+ }
+
+ public String getLogisticscompany() {
+ return logisticscompany;
+ }
+
+ public void setLogisticscompany(String logisticscompany) {
+ this.logisticscompany = logisticscompany == null ? null : logisticscompany.trim();
+ }
+
+ public String getLogisticsno() {
+ return logisticsno;
+ }
+
+ public void setLogisticsno(String logisticsno) {
+ this.logisticsno = logisticsno == null ? null : logisticsno.trim();
+ }
+
+ public String getTransportmode() {
+ return transportmode;
+ }
+
+ public void setTransportmode(String transportmode) {
+ this.transportmode = transportmode == null ? null : transportmode.trim();
+ }
+
+ public Integer getBoxcount() {
+ return boxcount;
+ }
+
+ public void setBoxcount(Integer boxcount) {
+ this.boxcount = boxcount;
+ }
+
+ public BigDecimal getBoxweight() {
+ return boxweight;
+ }
+
+ public void setBoxweight(BigDecimal boxweight) {
+ this.boxweight = boxweight;
+ }
+
+ public BigDecimal getFreight() {
+ return freight;
+ }
+
+ public void setFreight(BigDecimal freight) {
+ this.freight = freight;
+ }
+
+ public String getCommentcontent() {
+ return commentcontent;
+ }
+
+ public void setCommentcontent(String commentcontent) {
+ this.commentcontent = commentcontent == null ? null : commentcontent.trim();
+ }
+
+ public Integer getCommentlevel() {
+ return commentlevel;
+ }
+
+ public void setCommentlevel(Integer commentlevel) {
+ this.commentlevel = commentlevel;
+ }
+
+ public String getReceiverid() {
+ return receiverid;
+ }
+
+ public void setReceiverid(String receiverid) {
+ this.receiverid = receiverid == null ? null : receiverid.trim();
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderReceiverQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderReceiverQueryObject.java
new file mode 100644
index 0000000..292bf9f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/order/OrderReceiverQueryObject.java
@@ -0,0 +1,157 @@
+package com.farriver.bwf.data.transferobject.queryobject.order;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OrderReceiverQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String userid;
+
+ private String code;
+
+ private String name;
+
+ private String contactno;
+
+ private String country;
+
+ private String province;
+
+ private String city;
+
+ private String region;
+
+ private String receiveaddress;
+
+ private String isoftenused;
+
+ private Boolean isdeleted;
+
+ private Date updatetime;
+
+ private Date createtime;
+
+ private String remark;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid == null ? null : userid.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getContactno() {
+ return contactno;
+ }
+
+ public void setContactno(String contactno) {
+ this.contactno = contactno == null ? null : contactno.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getRegion() {
+ return region;
+ }
+
+ public void setRegion(String region) {
+ this.region = region == null ? null : region.trim();
+ }
+
+ public String getReceiveaddress() {
+ return receiveaddress;
+ }
+
+ public void setReceiveaddress(String receiveaddress) {
+ this.receiveaddress = receiveaddress == null ? null : receiveaddress.trim();
+ }
+
+ public String getIsoftenused() {
+ return isoftenused;
+ }
+
+ public void setIsoftenused(String isoftenused) {
+ this.isoftenused = isoftenused == null ? null : isoftenused.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationClassQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationClassQueryObject.java
new file mode 100644
index 0000000..2851822
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationClassQueryObject.java
@@ -0,0 +1,297 @@
+package com.farriver.bwf.data.transferobject.queryobject.organization;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OrganizationClassQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationDepartmentQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationDepartmentQueryObject.java
new file mode 100644
index 0000000..76569b5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationDepartmentQueryObject.java
@@ -0,0 +1,207 @@
+package com.farriver.bwf.data.transferobject.queryobject.organization;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OrganizationDepartmentQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationGradeQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationGradeQueryObject.java
new file mode 100644
index 0000000..f8b5085
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationGradeQueryObject.java
@@ -0,0 +1,267 @@
+package com.farriver.bwf.data.transferobject.queryobject.organization;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OrganizationGradeQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMajorQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMajorQueryObject.java
new file mode 100644
index 0000000..7f1e27f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMajorQueryObject.java
@@ -0,0 +1,157 @@
+package com.farriver.bwf.data.transferobject.queryobject.organization;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OrganizationMajorQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMasterQueryObject.java
new file mode 100644
index 0000000..4d831f8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/organization/OrganizationMasterQueryObject.java
@@ -0,0 +1,177 @@
+package com.farriver.bwf.data.transferobject.queryobject.organization;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OrganizationMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeOrganizationPositionRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeOrganizationPositionRelationQueryObject.java
new file mode 100644
index 0000000..ba6158d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeOrganizationPositionRelationQueryObject.java
@@ -0,0 +1,139 @@
+package com.farriver.bwf.data.transferobject.queryobject.pa;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+import java.util.List;
+
+public class PAEmployeeOrganizationPositionRelationQueryObject extends QueryObjectBase {
+
+ private List<String> employeeids;
+
+ private List<String> positionids;
+
+ public List<String> getEmployeeids() {
+ return employeeids;
+ }
+
+ public void setEmployeeids(List<String> employeeids) {
+ this.employeeids = employeeids;
+ }
+
+ public List<String> getPositionids() {
+ return positionids;
+ }
+
+ public void setPositionids(List<String> positionids) {
+ this.positionids = positionids;
+ }
+
+ private String id;
+
+ private String employeeid;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String positionid;
+
+ private String positioncode;
+
+ private String positionname;
+
+ private String employeecode;
+
+ private String employeename;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getEmployeeid() {
+ return employeeid;
+ }
+
+ public void setEmployeeid(String employeeid) {
+ this.employeeid = employeeid == null ? null : employeeid.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getPositionid() {
+ return positionid;
+ }
+
+ public void setPositionid(String positionid) {
+ this.positionid = positionid == null ? null : positionid.trim();
+ }
+
+ public String getPositioncode() {
+ return positioncode;
+ }
+
+ public void setPositioncode(String positioncode) {
+ this.positioncode = positioncode == null ? null : positioncode.trim();
+ }
+
+ public String getPositionname() {
+ return positionname;
+ }
+
+ public void setPositionname(String positionname) {
+ this.positionname = positionname == null ? null : positionname.trim();
+ }
+
+ public String getEmployeecode() {
+ return employeecode;
+ }
+
+ public void setEmployeecode(String employeecode) {
+ this.employeecode = employeecode == null ? null : employeecode.trim();
+ }
+
+ public String getEmployeename() {
+ return employeename;
+ }
+
+ public void setEmployeename(String employeename) {
+ this.employeename = employeename == null ? null : employeename.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeQueryObject.java
new file mode 100644
index 0000000..8399440
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAEmployeeQueryObject.java
@@ -0,0 +1,337 @@
+package com.farriver.bwf.data.transferobject.queryobject.pa;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class PAEmployeeQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private String email;
+
+ private String account;
+
+ private String password;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private String computerlevel;
+
+ private String englishlevel;
+
+ private String driverlicensetype;
+
+ private String householdtype;
+
+ private String homeaddress;
+
+ private String residenceaddress;
+
+ private String fertilitystatus;
+
+ private String maritalstatus;
+
+ private String politics;
+
+ private String nation;
+
+ private String nativeplace;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String titleid;
+
+ private String titlecode;
+
+ private String titlename;
+
+ public String getTitleid() {
+ return titleid;
+ }
+
+ public void setTitleid(String titleid) {
+ this.titleid = titleid;
+ }
+
+ public String getTitlecode() {
+ return titlecode;
+ }
+
+ public void setTitlecode(String titlecode) {
+ this.titlecode = titlecode;
+ }
+
+ public String getTitlename() {
+ return titlename;
+ }
+
+ public void setTitlename(String titlename) {
+ this.titlename = titlename;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public String getComputerlevel() {
+ return computerlevel;
+ }
+
+ public void setComputerlevel(String computerlevel) {
+ this.computerlevel = computerlevel == null ? null : computerlevel.trim();
+ }
+
+ public String getEnglishlevel() {
+ return englishlevel;
+ }
+
+ public void setEnglishlevel(String englishlevel) {
+ this.englishlevel = englishlevel == null ? null : englishlevel.trim();
+ }
+
+ public String getDriverlicensetype() {
+ return driverlicensetype;
+ }
+
+ public void setDriverlicensetype(String driverlicensetype) {
+ this.driverlicensetype = driverlicensetype == null ? null : driverlicensetype.trim();
+ }
+
+ public String getHouseholdtype() {
+ return householdtype;
+ }
+
+ public void setHouseholdtype(String householdtype) {
+ this.householdtype = householdtype == null ? null : householdtype.trim();
+ }
+
+ public String getHomeaddress() {
+ return homeaddress;
+ }
+
+ public void setHomeaddress(String homeaddress) {
+ this.homeaddress = homeaddress == null ? null : homeaddress.trim();
+ }
+
+ public String getResidenceaddress() {
+ return residenceaddress;
+ }
+
+ public void setResidenceaddress(String residenceaddress) {
+ this.residenceaddress = residenceaddress == null ? null : residenceaddress.trim();
+ }
+
+ public String getFertilitystatus() {
+ return fertilitystatus;
+ }
+
+ public void setFertilitystatus(String fertilitystatus) {
+ this.fertilitystatus = fertilitystatus == null ? null : fertilitystatus.trim();
+ }
+
+ public String getMaritalstatus() {
+ return maritalstatus;
+ }
+
+ public void setMaritalstatus(String maritalstatus) {
+ this.maritalstatus = maritalstatus == null ? null : maritalstatus.trim();
+ }
+
+ public String getPolitics() {
+ return politics;
+ }
+
+ public void setPolitics(String politics) {
+ this.politics = politics == null ? null : politics.trim();
+ }
+
+ public String getNation() {
+ return nation;
+ }
+
+ public void setNation(String nation) {
+ this.nation = nation == null ? null : nation.trim();
+ }
+
+ public String getNativeplace() {
+ return nativeplace;
+ }
+
+ public void setNativeplace(String nativeplace) {
+ this.nativeplace = nativeplace == null ? null : nativeplace.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAProfessionalTitleQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAProfessionalTitleQueryObject.java
new file mode 100644
index 0000000..a39d267
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/pa/PAProfessionalTitleQueryObject.java
@@ -0,0 +1,157 @@
+package com.farriver.bwf.data.transferobject.queryobject.pa;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class PAProfessionalTitleQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String description;
+
+ private String parentid;
+
+ private Integer level;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String parentcode;
+
+ private String parentname;
+
+ private String category;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeKeyQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeKeyQueryObject.java
new file mode 100644
index 0000000..f9b09fb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeKeyQueryObject.java
@@ -0,0 +1,67 @@
+package com.farriver.bwf.data.transferobject.queryobject.product;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ProductAttributeKeyQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeValueQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeValueQueryObject.java
new file mode 100644
index 0000000..b180769
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductAttributeValueQueryObject.java
@@ -0,0 +1,107 @@
+package com.farriver.bwf.data.transferobject.queryobject.product;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ProductAttributeValueQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String value;
+
+ private String attributeId;
+
+ private String attributeName;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value == null ? null : value.trim();
+ }
+
+ public String getAttributeId() {
+ return attributeId;
+ }
+
+ public void setAttributeId(String attributeId) {
+ this.attributeId = attributeId == null ? null : attributeId.trim();
+ }
+
+ public String getAttributeName() {
+ return attributeName;
+ }
+
+ public void setAttributeName(String attributeName) {
+ this.attributeName = attributeName == null ? null : attributeName.trim();
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductBrandQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductBrandQueryObject.java
new file mode 100644
index 0000000..8616c11
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductBrandQueryObject.java
@@ -0,0 +1,127 @@
+package com.farriver.bwf.data.transferobject.queryobject.product;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ProductBrandQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String status;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String website;
+
+ private String logoimage;
+
+ private Date foundedYear;
+
+ private String countryoforigin;
+
+ private String description;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status == null ? null : status.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getWebsite() {
+ return website;
+ }
+
+ public void setWebsite(String website) {
+ this.website = website == null ? null : website.trim();
+ }
+
+ public String getLogoimage() {
+ return logoimage;
+ }
+
+ public void setLogoimage(String logoimage) {
+ this.logoimage = logoimage == null ? null : logoimage.trim();
+ }
+
+ public Date getFoundedYear() {
+ return foundedYear;
+ }
+
+ public void setFoundedYear(Date foundedYear) {
+ this.foundedYear = foundedYear;
+ }
+
+ public String getCountryoforigin() {
+ return countryoforigin;
+ }
+
+ public void setCountryoforigin(String countryoforigin) {
+ this.countryoforigin = countryoforigin == null ? null : countryoforigin.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductCategoryQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductCategoryQueryObject.java
new file mode 100644
index 0000000..2ed9572
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductCategoryQueryObject.java
@@ -0,0 +1,87 @@
+package com.farriver.bwf.data.transferobject.queryobject.product;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ProductCategoryQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer productcount = 6;
+
+ public Integer getProductcount() {
+ return productcount;
+ }
+
+ public void setProductcount(Integer productcount) {
+ this.productcount = productcount;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductMasterQueryObject.java
new file mode 100644
index 0000000..0a9b082
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductMasterQueryObject.java
@@ -0,0 +1,258 @@
+package com.farriver.bwf.data.transferobject.queryobject.product;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+import java.util.List;
+
+public class ProductMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String status;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String formation;
+
+ private String buyprice;
+
+ private String sellprice;
+
+ private String provider;
+
+ private String discount;
+
+ private String keyword;
+
+ private String count;
+
+ private String image;
+
+ private String size;
+
+ private String color;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private String brandid;
+
+ private String brandname;
+
+ private String brandcode;
+
+ private String model;
+
+ private String specifications;
+
+ private List<String> categoryids;
+
+ public List<String> getCategoryids() {
+ return categoryids;
+ }
+
+ public void setCategoryids(List<String> categoryids) {
+ this.categoryids = categoryids;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status == null ? null : status.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getFormation() {
+ return formation;
+ }
+
+ public void setFormation(String formation) {
+ this.formation = formation == null ? null : formation.trim();
+ }
+
+ public String getBuyprice() {
+ return buyprice;
+ }
+
+ public void setBuyprice(String buyprice) {
+ this.buyprice = buyprice == null ? null : buyprice.trim();
+ }
+
+ public String getSellprice() {
+ return sellprice;
+ }
+
+ public void setSellprice(String sellprice) {
+ this.sellprice = sellprice == null ? null : sellprice.trim();
+ }
+
+ public String getProvider() {
+ return provider;
+ }
+
+ public void setProvider(String provider) {
+ this.provider = provider == null ? null : provider.trim();
+ }
+
+ public String getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(String discount) {
+ this.discount = discount == null ? null : discount.trim();
+ }
+
+ public String getKeyword() {
+ return keyword;
+ }
+
+ public void setKeyword(String keyword) {
+ this.keyword = keyword == null ? null : keyword.trim();
+ }
+
+ public String getCount() {
+ return count;
+ }
+
+ public void setCount(String count) {
+ this.count = count == null ? null : count.trim();
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public String getBrandid() {
+ return brandid;
+ }
+
+ public void setBrandid(String brandid) {
+ this.brandid = brandid == null ? null : brandid.trim();
+ }
+
+ public String getBrandname() {
+ return brandname;
+ }
+
+ public void setBrandname(String brandname) {
+ this.brandname = brandname == null ? null : brandname.trim();
+ }
+
+ public String getBrandcode() {
+ return brandcode;
+ }
+
+ public void setBrandcode(String brandcode) {
+ this.brandcode = brandcode == null ? null : brandcode.trim();
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model == null ? null : model.trim();
+ }
+
+ public String getSpecifications() {
+ return specifications;
+ }
+
+ public void setSpecifications(String specifications) {
+ this.specifications = specifications == null ? null : specifications.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierProductRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierProductRelationQueryObject.java
new file mode 100644
index 0000000..4eded5f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierProductRelationQueryObject.java
@@ -0,0 +1,127 @@
+package com.farriver.bwf.data.transferobject.queryobject.product;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ProductSupplierProductRelationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String supplierid;
+
+ private String suppliername;
+
+ private String suppliercode;
+
+ private String productid;
+
+ private String productname;
+
+ private String productcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getSupplierid() {
+ return supplierid;
+ }
+
+ public void setSupplierid(String supplierid) {
+ this.supplierid = supplierid == null ? null : supplierid.trim();
+ }
+
+ public String getSuppliername() {
+ return suppliername;
+ }
+
+ public void setSuppliername(String suppliername) {
+ this.suppliername = suppliername == null ? null : suppliername.trim();
+ }
+
+ public String getSuppliercode() {
+ return suppliercode;
+ }
+
+ public void setSuppliercode(String suppliercode) {
+ this.suppliercode = suppliercode == null ? null : suppliercode.trim();
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierQueryObject.java
new file mode 100644
index 0000000..833f6e1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/product/ProductSupplierQueryObject.java
@@ -0,0 +1,258 @@
+package com.farriver.bwf.data.transferobject.queryobject.product;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ProductSupplierQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String status;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String logo;
+
+ private String contactor;
+
+ private String contactortitle;
+
+ private String telphone;
+
+ private String cellphone;
+
+ private String website;
+
+ private String email;
+
+ private String fax;
+
+ private String tax;
+
+ private String companyaddress;
+
+ private String registrationaddress;
+
+ private String businessscope;
+
+ private String bankname;
+
+ private String bankaccount;
+
+ private String creditrating;
+
+ private BigDecimal registrationcapital;
+
+ private Date establishmentdate;
+
+ private String description;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status == null ? null : status.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getLogo() {
+ return logo;
+ }
+
+ public void setLogo(String logo) {
+ this.logo = logo == null ? null : logo.trim();
+ }
+
+ public String getContactor() {
+ return contactor;
+ }
+
+ public void setContactor(String contactor) {
+ this.contactor = contactor == null ? null : contactor.trim();
+ }
+
+ public String getContactortitle() {
+ return contactortitle;
+ }
+
+ public void setContactortitle(String contactortitle) {
+ this.contactortitle = contactortitle == null ? null : contactortitle.trim();
+ }
+
+ public String getTelphone() {
+ return telphone;
+ }
+
+ public void setTelphone(String telphone) {
+ this.telphone = telphone == null ? null : telphone.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getWebsite() {
+ return website;
+ }
+
+ public void setWebsite(String website) {
+ this.website = website == null ? null : website.trim();
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getTax() {
+ return tax;
+ }
+
+ public void setTax(String tax) {
+ this.tax = tax == null ? null : tax.trim();
+ }
+
+ public String getCompanyaddress() {
+ return companyaddress;
+ }
+
+ public void setCompanyaddress(String companyaddress) {
+ this.companyaddress = companyaddress == null ? null : companyaddress.trim();
+ }
+
+ public String getRegistrationaddress() {
+ return registrationaddress;
+ }
+
+ public void setRegistrationaddress(String registrationaddress) {
+ this.registrationaddress = registrationaddress == null ? null : registrationaddress.trim();
+ }
+
+ public String getBusinessscope() {
+ return businessscope;
+ }
+
+ public void setBusinessscope(String businessscope) {
+ this.businessscope = businessscope == null ? null : businessscope.trim();
+ }
+
+ public String getBankname() {
+ return bankname;
+ }
+
+ public void setBankname(String bankname) {
+ this.bankname = bankname == null ? null : bankname.trim();
+ }
+
+ public String getBankaccount() {
+ return bankaccount;
+ }
+
+ public void setBankaccount(String bankaccount) {
+ this.bankaccount = bankaccount == null ? null : bankaccount.trim();
+ }
+
+ public String getCreditrating() {
+ return creditrating;
+ }
+
+ public void setCreditrating(String creditrating) {
+ this.creditrating = creditrating == null ? null : creditrating.trim();
+ }
+
+ public BigDecimal getRegistrationcapital() {
+ return registrationcapital;
+ }
+
+ public void setRegistrationcapital(BigDecimal registrationcapital) {
+ this.registrationcapital = registrationcapital;
+ }
+
+ public Date getEstablishmentdate() {
+ return establishmentdate;
+ }
+
+ public void setEstablishmentdate(Date establishmentdate) {
+ this.establishmentdate = establishmentdate;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionCategoryQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionCategoryQueryObject.java
new file mode 100644
index 0000000..4494058
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionCategoryQueryObject.java
@@ -0,0 +1,87 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionCategoryQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterAnswerQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterAnswerQueryObject.java
new file mode 100644
index 0000000..09bf027
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterAnswerQueryObject.java
@@ -0,0 +1,87 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionMasterAnswerQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String qkey;
+
+ private Integer sequenceno;
+
+ private String qvalue;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getQkey() {
+ return qkey;
+ }
+
+ public void setQkey(String qkey) {
+ this.qkey = qkey == null ? null : qkey.trim();
+ }
+
+ public Integer getSequenceno() {
+ return sequenceno;
+ }
+
+ public void setSequenceno(Integer sequenceno) {
+ this.sequenceno = sequenceno;
+ }
+
+ public String getQvalue() {
+ return qvalue;
+ }
+
+ public void setQvalue(String qvalue) {
+ this.qvalue = qvalue == null ? null : qvalue.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterOptionQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterOptionQueryObject.java
new file mode 100644
index 0000000..4902a0d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterOptionQueryObject.java
@@ -0,0 +1,87 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionMasterOptionQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String qkey;
+
+ private Integer sequenceno;
+
+ private String qvalue;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getQkey() {
+ return qkey;
+ }
+
+ public void setQkey(String qkey) {
+ this.qkey = qkey == null ? null : qkey.trim();
+ }
+
+ public Integer getSequenceno() {
+ return sequenceno;
+ }
+
+ public void setSequenceno(Integer sequenceno) {
+ this.sequenceno = sequenceno;
+ }
+
+ public String getQvalue() {
+ return qvalue;
+ }
+
+ public void setQvalue(String qvalue) {
+ this.qvalue = qvalue == null ? null : qvalue.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterQueryObject.java
new file mode 100644
index 0000000..647d293
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionMasterQueryObject.java
@@ -0,0 +1,188 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class QuestionMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private Integer level;
+
+ private BigDecimal score;
+
+ private String knowledgepointid;
+
+ private String knowledgepointname;
+
+ private String knowledgepointcode;
+
+ public String getKnowledgepointid() {
+ return knowledgepointid;
+ }
+
+ public void setKnowledgepointid(String knowledgepointid) {
+ this.knowledgepointid = knowledgepointid;
+ }
+
+ public String getKnowledgepointname() {
+ return knowledgepointname;
+ }
+
+ public void setKnowledgepointname(String knowledgepointname) {
+ this.knowledgepointname = knowledgepointname;
+ }
+
+ public String getKnowledgepointcode() {
+ return knowledgepointcode;
+ }
+
+ public void setKnowledgepointcode(String knowledgepointcode) {
+ this.knowledgepointcode = knowledgepointcode;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public BigDecimal getScore() {
+ return score;
+ }
+
+ public void setScore(BigDecimal score) {
+ this.score = score;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperCategoryQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperCategoryQueryObject.java
new file mode 100644
index 0000000..c5ac1f9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperCategoryQueryObject.java
@@ -0,0 +1,87 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionPaperCategoryQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQueryObject.java
new file mode 100644
index 0000000..401f0ad
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQueryObject.java
@@ -0,0 +1,158 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class QuestionPaperQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private BigDecimal price;
+
+ private Integer type;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQuestionMasterRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQuestionMasterRelationQueryObject.java
new file mode 100644
index 0000000..f65045a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionPaperQuestionMasterRelationQueryObject.java
@@ -0,0 +1,167 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionPaperQuestionMasterRelationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String questionid;
+
+ private String questionname;
+
+ private String questioncode;
+
+ private String paperid;
+
+ private String papername;
+
+ private String papercode;
+
+ private String quetioncategory;
+
+ private String subjectid;
+
+ private String subjectcode;
+
+ private String subjectname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getQuestionid() {
+ return questionid;
+ }
+
+ public void setQuestionid(String questionid) {
+ this.questionid = questionid == null ? null : questionid.trim();
+ }
+
+ public String getQuestionname() {
+ return questionname;
+ }
+
+ public void setQuestionname(String questionname) {
+ this.questionname = questionname == null ? null : questionname.trim();
+ }
+
+ public String getQuestioncode() {
+ return questioncode;
+ }
+
+ public void setQuestioncode(String questioncode) {
+ this.questioncode = questioncode == null ? null : questioncode.trim();
+ }
+
+ public String getPaperid() {
+ return paperid;
+ }
+
+ public void setPaperid(String paperid) {
+ this.paperid = paperid == null ? null : paperid.trim();
+ }
+
+ public String getPapername() {
+ return papername;
+ }
+
+ public void setPapername(String papername) {
+ this.papername = papername == null ? null : papername.trim();
+ }
+
+ public String getPapercode() {
+ return papercode;
+ }
+
+ public void setPapercode(String papercode) {
+ this.papercode = papercode == null ? null : papercode.trim();
+ }
+
+ public String getQuetioncategory() {
+ return quetioncategory;
+ }
+
+ public void setQuetioncategory(String quetioncategory) {
+ this.quetioncategory = quetioncategory == null ? null : quetioncategory.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectGradeRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectGradeRelationQueryObject.java
new file mode 100644
index 0000000..a237985
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectGradeRelationQueryObject.java
@@ -0,0 +1,127 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionSubjectGradeRelationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectKnowledgePointQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectKnowledgePointQueryObject.java
new file mode 100644
index 0000000..b7a8dab
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectKnowledgePointQueryObject.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionSubjectKnowledgePointQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectQueryObject.java
new file mode 100644
index 0000000..6e8dfcc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/question/QuestionSubjectQueryObject.java
@@ -0,0 +1,87 @@
+package com.farriver.bwf.data.transferobject.queryobject.question;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class QuestionSubjectQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterQueryObject.java
new file mode 100644
index 0000000..7830e4d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterQueryObject.java
@@ -0,0 +1,147 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class AccountMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private String email;
+
+ private String cellphone;
+
+ private String password;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterRoleRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterRoleRelationQueryObject.java
new file mode 100644
index 0000000..6889f8c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/AccountMasterRoleRelationQueryObject.java
@@ -0,0 +1,139 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+import java.util.List;
+
+public class AccountMasterRoleRelationQueryObject extends QueryObjectBase {
+
+ private List<String> accountids;
+
+ private List<String> roleids;
+
+ public List<String> getAccountids() {
+ return accountids;
+ }
+
+ public void setAccountids(List<String> accountids) {
+ this.accountids = accountids;
+ }
+
+ public List<String> getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(List<String> roleids) {
+ this.roleids = roleids;
+ }
+
+ private String id;
+
+ private String accountid;
+
+ private String accountcode;
+
+ private String accountname;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getAccountid() {
+ return accountid;
+ }
+
+ public void setAccountid(String accountid) {
+ this.accountid = accountid == null ? null : accountid.trim();
+ }
+
+ public String getAccountcode() {
+ return accountcode;
+ }
+
+ public void setAccountcode(String accountcode) {
+ this.accountcode = accountcode == null ? null : accountcode.trim();
+ }
+
+ public String getAccountname() {
+ return accountname;
+ }
+
+ public void setAccountname(String accountname) {
+ this.accountname = accountname == null ? null : accountname.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/ApplicationMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/ApplicationMasterQueryObject.java
new file mode 100644
index 0000000..b8a9e98
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/ApplicationMasterQueryObject.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class ApplicationMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String url;
+
+ private String location;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location == null ? null : location.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/OnlineUserQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/OnlineUserQueryObject.java
new file mode 100644
index 0000000..b6a7edf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/OnlineUserQueryObject.java
@@ -0,0 +1,227 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class OnlineUserQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private Integer age;
+
+ private String email;
+
+ private Boolean enabled;
+
+ private String account;
+
+ private String password;
+
+ private String departmentid;
+
+ private String username;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionGroupQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionGroupQueryObject.java
new file mode 100644
index 0000000..7c04f9f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionGroupQueryObject.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class PermissionGroupQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterGroupRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterGroupRelationQueryObject.java
new file mode 100644
index 0000000..dc3e52c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterGroupRelationQueryObject.java
@@ -0,0 +1,139 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+import java.util.List;
+
+public class PermissionMasterGroupRelationQueryObject extends QueryObjectBase {
+
+ private List<String> permissionids;
+
+ private List<String> groupids;
+
+ public List<String> getGroupids() {
+ return groupids;
+ }
+
+ public void setGroupids(List<String> groupids) {
+ this.groupids = groupids;
+ }
+
+ public List<String> getPermissionids() {
+ return permissionids;
+ }
+
+ public void setPermissionids(List<String> permissionids) {
+ this.permissionids = permissionids;
+ }
+
+ private String id;
+
+ private String permissionid;
+
+ private String permissioncode;
+
+ private String permissionname;
+
+ private String groupid;
+
+ private String groupcode;
+
+ private String groupname;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getPermissionid() {
+ return permissionid;
+ }
+
+ public void setPermissionid(String permissionid) {
+ this.permissionid = permissionid == null ? null : permissionid.trim();
+ }
+
+ public String getPermissioncode() {
+ return permissioncode;
+ }
+
+ public void setPermissioncode(String permissioncode) {
+ this.permissioncode = permissioncode == null ? null : permissioncode.trim();
+ }
+
+ public String getPermissionname() {
+ return permissionname;
+ }
+
+ public void setPermissionname(String permissionname) {
+ this.permissionname = permissionname == null ? null : permissionname.trim();
+ }
+
+ public String getGroupid() {
+ return groupid;
+ }
+
+ public void setGroupid(String groupid) {
+ this.groupid = groupid == null ? null : groupid.trim();
+ }
+
+ public String getGroupcode() {
+ return groupcode;
+ }
+
+ public void setGroupcode(String groupcode) {
+ this.groupcode = groupcode == null ? null : groupcode.trim();
+ }
+
+ public String getGroupname() {
+ return groupname;
+ }
+
+ public void setGroupname(String groupname) {
+ this.groupname = groupname == null ? null : groupname.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterQueryObject.java
new file mode 100644
index 0000000..11d2eab
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionMasterQueryObject.java
@@ -0,0 +1,147 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class PermissionMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String url;
+
+ private String applicationcode;
+
+ private Integer level;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getApplicationcode() {
+ return applicationcode;
+ }
+
+ public void setApplicationcode(String applicationcode) {
+ this.applicationcode = applicationcode == null ? null : applicationcode.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionQueryObject.java
new file mode 100644
index 0000000..c350b6f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/PermissionQueryObject.java
@@ -0,0 +1,136 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class PermissionQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String url;
+
+ private String applicationcode;
+
+ private Integer level;
+
+ private String parentid;
+
+ private String parentname;
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname;
+ }
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getApplicationcode() {
+ return applicationcode;
+ }
+
+ public void setApplicationcode(String applicationcode) {
+ this.applicationcode = applicationcode == null ? null : applicationcode.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterPermissionGroupRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterPermissionGroupRelationQueryObject.java
new file mode 100644
index 0000000..4e5c9ae
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterPermissionGroupRelationQueryObject.java
@@ -0,0 +1,139 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+import java.util.List;
+
+public class RoleMasterPermissionGroupRelationQueryObject extends QueryObjectBase {
+
+ private List<String> roleids;
+
+ private List<String> groupids;
+
+ public List<String> getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(List<String> roleids) {
+ this.roleids = roleids;
+ }
+
+ public List<String> getGroupids() {
+ return groupids;
+ }
+
+ public void setGroupids(List<String> groupids) {
+ this.groupids = groupids;
+ }
+
+ private String id;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private String groupid;
+
+ private String groupcode;
+
+ private String groupname;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public String getGroupid() {
+ return groupid;
+ }
+
+ public void setGroupid(String groupid) {
+ this.groupid = groupid == null ? null : groupid.trim();
+ }
+
+ public String getGroupcode() {
+ return groupcode;
+ }
+
+ public void setGroupcode(String groupcode) {
+ this.groupcode = groupcode == null ? null : groupcode.trim();
+ }
+
+ public String getGroupname() {
+ return groupname;
+ }
+
+ public void setGroupname(String groupname) {
+ this.groupname = groupname == null ? null : groupname.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterQueryObject.java
new file mode 100644
index 0000000..1e3a948
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleMasterQueryObject.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class RoleMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleQueryObject.java
new file mode 100644
index 0000000..20c63c4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/RoleQueryObject.java
@@ -0,0 +1,77 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class RoleQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterQueryObject.java
new file mode 100644
index 0000000..7580a90
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterQueryObject.java
@@ -0,0 +1,267 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class UserMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private Integer age;
+
+ private Date birthday;
+
+ private String email;
+
+ private String account;
+
+ private String password;
+
+ private String departmentid;
+
+ private String username;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterRoleRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterRoleRelationQueryObject.java
new file mode 100644
index 0000000..d7a4e6d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserMasterRoleRelationQueryObject.java
@@ -0,0 +1,139 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+import java.util.List;
+
+public class UserMasterRoleRelationQueryObject extends QueryObjectBase {
+
+ private List<String> userids;
+
+ private List<String> roleids;
+
+ public List<String> getUserids() {
+ return userids;
+ }
+
+ public void setUserids(List<String> userids) {
+ this.userids = userids;
+ }
+
+ public List<String> getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(List<String> roleids) {
+ this.roleids = roleids;
+ }
+
+ private String id;
+
+ private String userid;
+
+ private String usercode;
+
+ private String username;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid == null ? null : userid.trim();
+ }
+
+ public String getUsercode() {
+ return usercode;
+ }
+
+ public void setUsercode(String usercode) {
+ this.usercode = usercode == null ? null : usercode.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserQueryObject.java
new file mode 100644
index 0000000..9c78972
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserQueryObject.java
@@ -0,0 +1,257 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class UserQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String idcard;
+
+ private Integer age;
+
+ private Date birthday;
+
+ private String email;
+
+ private Boolean enabled;
+
+ private String account;
+
+ private String password;
+
+ private String departmentid;
+
+ private String username;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private Integer gender;
+
+ private Integer status;
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public void setGender(Integer gender) {
+ this.gender = gender;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserRoleViewQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserRoleViewQueryObject.java
new file mode 100644
index 0000000..c7c58ac
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserRoleViewQueryObject.java
@@ -0,0 +1,83 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+public class UserRoleViewQueryObject {
+ private String userbasicid;
+
+ private String userbasicname;
+
+ private String username;
+
+ private String password;
+
+ private String roleid;
+
+ private String rolename;
+
+ private Integer roletype;
+
+ private String roleremark;
+
+ public String getUserbasicid() {
+ return userbasicid;
+ }
+
+ public void setUserbasicid(String userbasicid) {
+ this.userbasicid = userbasicid == null ? null : userbasicid.trim();
+ }
+
+ public String getUserbasicname() {
+ return userbasicname;
+ }
+
+ public void setUserbasicname(String userbasicname) {
+ this.userbasicname = userbasicname == null ? null : userbasicname.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Integer getRoletype() {
+ return roletype;
+ }
+
+ public void setRoletype(Integer roletype) {
+ this.roletype = roletype;
+ }
+
+ public String getRoleremark() {
+ return roleremark;
+ }
+
+ public void setRoleremark(String roleremark) {
+ this.roleremark = roleremark == null ? null : roleremark.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserWeChatQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserWeChatQueryObject.java
new file mode 100644
index 0000000..ea71a0e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/security/UserWeChatQueryObject.java
@@ -0,0 +1,105 @@
+package com.farriver.bwf.data.transferobject.queryobject.security;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+public class UserWeChatQueryObject extends QueryObjectBase {
+ private String openid;
+
+ private String nickname;
+
+ private Integer gender;
+
+ private String language;
+
+ private String city;
+
+ private String province;
+
+ private String country;
+
+ private String avatarurl;
+
+ private String cellphone;
+
+ private String token;
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid == null ? null : openid.trim();
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname == null ? null : nickname.trim();
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public void setGender(Integer gender) {
+ this.gender = gender;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language == null ? null : language.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getAvatarurl() {
+ return avatarurl;
+ }
+
+ public void setAvatarurl(String avatarurl) {
+ this.avatarurl = avatarurl == null ? null : avatarurl.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token == null ? null : token.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartProductQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartProductQueryObject.java
new file mode 100644
index 0000000..476066f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartProductQueryObject.java
@@ -0,0 +1,178 @@
+package com.farriver.bwf.data.transferobject.queryobject.shopping;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ShoppingCartProductQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String cartcode;
+
+ private String cartid;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getCartcode() {
+ return cartcode;
+ }
+
+ public void setCartcode(String cartcode) {
+ this.cartcode = cartcode;
+ }
+
+ public String getCartid() {
+ return cartid;
+ }
+
+ public void setCartid(String cartid) {
+ this.cartid = cartid;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartQueryObject.java
new file mode 100644
index 0000000..8bc76e5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/shopping/ShoppingCartQueryObject.java
@@ -0,0 +1,138 @@
+package com.farriver.bwf.data.transferobject.queryobject.shopping;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ShoppingCartQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String code;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/DashboardDataQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/DashboardDataQueryObject.java
new file mode 100644
index 0000000..92f0270
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/DashboardDataQueryObject.java
@@ -0,0 +1,16 @@
+package com.farriver.bwf.data.transferobject.queryobject.statistics;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+public class DashboardDataQueryObject extends QueryObjectBase {
+
+ private int year;
+
+ public int getYear() {
+ return year;
+ }
+
+ public void setYear(int year) {
+ this.year = year;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/StatisticsDashboardDataQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/StatisticsDashboardDataQueryObject.java
new file mode 100644
index 0000000..3cf4b78
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/statistics/StatisticsDashboardDataQueryObject.java
@@ -0,0 +1,16 @@
+package com.farriver.bwf.data.transferobject.queryobject.statistics;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+public class StatisticsDashboardDataQueryObject extends QueryObjectBase {
+
+ private int year;
+
+ public int getYear() {
+ return year;
+ }
+
+ public void setYear(int year) {
+ this.year = year;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemAuditTrailQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemAuditTrailQueryObject.java
new file mode 100644
index 0000000..4a7572a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemAuditTrailQueryObject.java
@@ -0,0 +1,137 @@
+package com.farriver.bwf.data.transferobject.queryobject.system;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class SystemAuditTrailQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String message;
+
+ private String actionby;
+
+ private String actiontype;
+
+ private String actionip;
+
+ private Date actiontime;
+
+ private String module;
+
+ private String beforetarget;
+
+ private String aftertarget;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message == null ? null : message.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getActiontype() {
+ return actiontype;
+ }
+
+ public void setActiontype(String actiontype) {
+ this.actiontype = actiontype == null ? null : actiontype.trim();
+ }
+
+ public String getActionip() {
+ return actionip;
+ }
+
+ public void setActionip(String actionip) {
+ this.actionip = actionip == null ? null : actionip.trim();
+ }
+
+ public Date getActiontime() {
+ return actiontime;
+ }
+
+ public void setActiontime(Date actiontime) {
+ this.actiontime = actiontime;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module == null ? null : module.trim();
+ }
+
+ public String getBeforetarget() {
+ return beforetarget;
+ }
+
+ public void setBeforetarget(String beforetarget) {
+ this.beforetarget = beforetarget == null ? null : beforetarget.trim();
+ }
+
+ public String getAftertarget() {
+ return aftertarget;
+ }
+
+ public void setAftertarget(String aftertarget) {
+ this.aftertarget = aftertarget == null ? null : aftertarget.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemConfigQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemConfigQueryObject.java
new file mode 100644
index 0000000..134affe
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemConfigQueryObject.java
@@ -0,0 +1,97 @@
+package com.farriver.bwf.data.transferobject.queryobject.system;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class SystemConfigQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String key;
+
+ private String value;
+
+ private String level;
+
+ private String category;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key == null ? null : key.trim();
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value == null ? null : value.trim();
+ }
+
+ public String getLevel() {
+ return level;
+ }
+
+ public void setLevel(String level) {
+ this.level = level == null ? null : level.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemLogQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemLogQueryObject.java
new file mode 100644
index 0000000..34b691c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemLogQueryObject.java
@@ -0,0 +1,62 @@
+package com.farriver.bwf.data.transferobject.queryobject.system;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class SystemLogQueryObject extends QueryObjectBase {
+ private String Source;
+ private String Module;
+ private String LogType;
+ private String Message;
+ private Object Details;
+ private Date TimeStamp;
+
+ public String getSource() {
+ return Source;
+ }
+
+ public void setSource(String source) {
+ Source = source;
+ }
+
+ public String getModule() {
+ return Module;
+ }
+
+ public void setModule(String module) {
+ Module = module;
+ }
+
+ public String getLogType() {
+ return LogType;
+ }
+
+ public void setLogType(String logType) {
+ LogType = logType;
+ }
+
+ public String getMessage() {
+ return Message;
+ }
+
+ public void setMessage(String message) {
+ Message = message;
+ }
+
+ public Object getDetails() {
+ return Details;
+ }
+
+ public void setDetails(Object details) {
+ Details = details;
+ }
+
+ public Date getTimeStamp() {
+ return TimeStamp;
+ }
+
+ public void setTimeStamp(Date timeStamp) {
+ TimeStamp = timeStamp;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMailLogQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMailLogQueryObject.java
new file mode 100644
index 0000000..bc34ed1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMailLogQueryObject.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.queryobject.system;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class SystemMailLogQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String uid;
+
+ private Integer status;
+
+ private String routekey;
+
+ private String exchange;
+
+ private Integer count;
+
+ private Date trytime;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String username;
+
+ private String account;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRoutekey() {
+ return routekey;
+ }
+
+ public void setRoutekey(String routekey) {
+ this.routekey = routekey == null ? null : routekey.trim();
+ }
+
+ public String getExchange() {
+ return exchange;
+ }
+
+ public void setExchange(String exchange) {
+ this.exchange = exchange == null ? null : exchange.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public Date getTrytime() {
+ return trytime;
+ }
+
+ public void setTrytime(Date trytime) {
+ this.trytime = trytime;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMenuQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMenuQueryObject.java
new file mode 100644
index 0000000..5824983
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemMenuQueryObject.java
@@ -0,0 +1,167 @@
+package com.farriver.bwf.data.transferobject.queryobject.system;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class SystemMenuQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String parentid;
+
+ private String code;
+
+ private String name;
+
+ private String url;
+
+ private String path;
+
+ private String component;
+
+ private Integer type;
+
+ private String icon;
+
+ private Boolean keepalive;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode;
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path == null ? null : path.trim();
+ }
+
+ public String getComponent() {
+ return component;
+ }
+
+ public void setComponent(String component) {
+ this.component = component == null ? null : component.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+
+ public Boolean getKeepalive() {
+ return keepalive;
+ }
+
+ public void setKeepalive(Boolean keepalive) {
+ this.keepalive = keepalive;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemNotificationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemNotificationQueryObject.java
new file mode 100644
index 0000000..006b073
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/system/SystemNotificationQueryObject.java
@@ -0,0 +1,157 @@
+package com.farriver.bwf.data.transferobject.queryobject.system;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class SystemNotificationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private String title;
+
+ private String department;
+
+ private String category;
+
+ private Integer nlevel;
+
+ private String keywords;
+
+ private String actionby;
+
+ private Integer status;
+
+ private String publisher;
+
+ private Date publishdatetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String context;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department == null ? null : department.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getNlevel() {
+ return nlevel;
+ }
+
+ public void setNlevel(Integer nlevel) {
+ this.nlevel = nlevel;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords == null ? null : keywords.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getPublisher() {
+ return publisher;
+ }
+
+ public void setPublisher(String publisher) {
+ this.publisher = publisher == null ? null : publisher.trim();
+ }
+
+ public Date getPublishdatetime() {
+ return publishdatetime;
+ }
+
+ public void setPublishdatetime(Date publishdatetime) {
+ this.publishdatetime = publishdatetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setContext(String context) {
+ this.context = context == null ? null : context.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponActiveQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponActiveQueryObject.java
new file mode 100644
index 0000000..594900b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponActiveQueryObject.java
@@ -0,0 +1,218 @@
+package com.farriver.bwf.data.transferobject.queryobject.vip;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPCouponActiveQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private Integer type;
+
+ private String activityname;
+
+ private String code;
+
+ private String distributioncondition;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal discountrate;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date issuingtime;
+
+ private Date usagetime;
+
+ private String orderno;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getActivityname() {
+ return activityname;
+ }
+
+ public void setActivityname(String activityname) {
+ this.activityname = activityname == null ? null : activityname.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getDistributioncondition() {
+ return distributioncondition;
+ }
+
+ public void setDistributioncondition(String distributioncondition) {
+ this.distributioncondition = distributioncondition == null ? null : distributioncondition.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getIssuingtime() {
+ return issuingtime;
+ }
+
+ public void setIssuingtime(Date issuingtime) {
+ this.issuingtime = issuingtime;
+ }
+
+ public Date getUsagetime() {
+ return usagetime;
+ }
+
+ public void setUsagetime(Date usagetime) {
+ this.usagetime = usagetime;
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponHistoryQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponHistoryQueryObject.java
new file mode 100644
index 0000000..49764d6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPCouponHistoryQueryObject.java
@@ -0,0 +1,218 @@
+package com.farriver.bwf.data.transferobject.queryobject.vip;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPCouponHistoryQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private Integer type;
+
+ private String activityname;
+
+ private String code;
+
+ private String distributioncondition;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal discountrate;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date issuingtime;
+
+ private Date usagetime;
+
+ private String orderno;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getActivityname() {
+ return activityname;
+ }
+
+ public void setActivityname(String activityname) {
+ this.activityname = activityname == null ? null : activityname.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getDistributioncondition() {
+ return distributioncondition;
+ }
+
+ public void setDistributioncondition(String distributioncondition) {
+ this.distributioncondition = distributioncondition == null ? null : distributioncondition.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getIssuingtime() {
+ return issuingtime;
+ }
+
+ public void setIssuingtime(Date issuingtime) {
+ this.issuingtime = issuingtime;
+ }
+
+ public Date getUsagetime() {
+ return usagetime;
+ }
+
+ public void setUsagetime(Date usagetime) {
+ this.usagetime = usagetime;
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPDepositActivityQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPDepositActivityQueryObject.java
new file mode 100644
index 0000000..162cc79
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPDepositActivityQueryObject.java
@@ -0,0 +1,128 @@
+package com.farriver.bwf.data.transferobject.queryobject.vip;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPDepositActivityQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String description;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal present;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getPresent() {
+ return present;
+ }
+
+ public void setPresent(BigDecimal present) {
+ this.present = present;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterOrganizationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterOrganizationQueryObject.java
new file mode 100644
index 0000000..edd3ba3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterOrganizationQueryObject.java
@@ -0,0 +1,247 @@
+package com.farriver.bwf.data.transferobject.queryobject.vip;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.util.Date;
+
+public class VIPMasterOrganizationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ private String classid;
+
+ private String classname;
+
+ private String classcode;
+
+ private Integer updatecount;
+
+ public Integer getUpdatecount() {
+ return updatecount;
+ }
+
+ public void setUpdatecount(Integer updatecount) {
+ this.updatecount = updatecount;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+
+ public String getClassid() {
+ return classid;
+ }
+
+ public void setClassid(String classid) {
+ this.classid = classid == null ? null : classid.trim();
+ }
+
+ public String getClassname() {
+ return classname;
+ }
+
+ public void setClassname(String classname) {
+ this.classname = classname == null ? null : classname.trim();
+ }
+
+ public String getClasscode() {
+ return classcode;
+ }
+
+ public void setClasscode(String classcode) {
+ this.classcode = classcode == null ? null : classcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterPaperRelationQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterPaperRelationQueryObject.java
new file mode 100644
index 0000000..cc7d23c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterPaperRelationQueryObject.java
@@ -0,0 +1,148 @@
+package com.farriver.bwf.data.transferobject.queryobject.vip;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterPaperRelationQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private String paperid;
+
+ private String papercode;
+
+ private String papername;
+
+ private Date buyedtime;
+
+ private BigDecimal amount;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public String getPaperid() {
+ return paperid;
+ }
+
+ public void setPaperid(String paperid) {
+ this.paperid = paperid == null ? null : paperid.trim();
+ }
+
+ public String getPapercode() {
+ return papercode;
+ }
+
+ public void setPapercode(String papercode) {
+ this.papercode = papercode == null ? null : papercode.trim();
+ }
+
+ public String getPapername() {
+ return papername;
+ }
+
+ public void setPapername(String papername) {
+ this.papername = papername == null ? null : papername.trim();
+ }
+
+ public Date getBuyedtime() {
+ return buyedtime;
+ }
+
+ public void setBuyedtime(Date buyedtime) {
+ this.buyedtime = buyedtime;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterQueryObject.java
new file mode 100644
index 0000000..e874316
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterQueryObject.java
@@ -0,0 +1,238 @@
+package com.farriver.bwf.data.transferobject.queryobject.vip;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private Integer diamondtype;
+
+ private Integer type;
+
+ private BigDecimal discountrate;
+
+ private String idcard;
+
+ private Boolean gender;
+
+ private Date birthday;
+
+ private String openid;
+
+ private String nickname;
+
+ private String language;
+
+ private String city;
+
+ private String province;
+
+ private String country;
+
+ private String avatarurl;
+
+ private String cellphone;
+
+ private String token;
+
+ private String password;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getDiamondtype() {
+ return diamondtype;
+ }
+
+ public void setDiamondtype(Integer diamondtype) {
+ this.diamondtype = diamondtype;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid == null ? null : openid.trim();
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname == null ? null : nickname.trim();
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language == null ? null : language.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getAvatarurl() {
+ return avatarurl;
+ }
+
+ public void setAvatarurl(String avatarurl) {
+ this.avatarurl = avatarurl == null ? null : avatarurl.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token == null ? null : token.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterWalletQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterWalletQueryObject.java
new file mode 100644
index 0000000..191ef04
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/queryobject/vip/VIPMasterWalletQueryObject.java
@@ -0,0 +1,108 @@
+package com.farriver.bwf.data.transferobject.queryobject.vip;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterWalletQueryObject extends QueryObjectBase {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private BigDecimal balance;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public BigDecimal getBalance() {
+ return balance;
+ }
+
+ public void setBalance(BigDecimal balance) {
+ this.balance = balance;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/AuthBean.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/AuthBean.java
new file mode 100644
index 0000000..bf61a8f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/AuthBean.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.data.transferobject.viewmodel;
+public class AuthBean {
+ private String username;
+ private String password;
+ private String verifycode;
+ private String cellphone;
+ private String randomcode;
+ private String email;
+ private String account;
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account;
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone;
+ }
+
+ public String getRandomcode() {
+ return randomcode;
+ }
+
+ public void setRandomcode(String randomcode) {
+ this.randomcode = randomcode;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getVerifycode() {
+ return verifycode;
+ }
+
+ public void setVerifycode(String verifycode) {
+ this.verifycode = verifycode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/FRLog.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/FRLog.java
new file mode 100644
index 0000000..3e12b0c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/FRLog.java
@@ -0,0 +1,70 @@
+package com.farriver.bwf.data.transferobject.viewmodel;
+
+import java.util.Date;
+
+public class FRLog {
+ private String id;
+ private String source;
+ private String module;
+ private String logtype;
+ private String message;
+ private Object details;
+ private Date actiontime;
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getLogtype() {
+ return logtype;
+ }
+
+ public void setLogtype(String logtype) {
+ this.logtype = logtype;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Object getDetails() {
+ return details;
+ }
+
+ public void setDetails(Object details) {
+ this.details = details;
+ }
+
+ public Date getActiontime() {
+ return actiontime;
+ }
+
+ public void setActiontime(Date actiontime) {
+ this.actiontime = actiontime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/KeyValue.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/KeyValue.java
new file mode 100644
index 0000000..5fd1899
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/KeyValue.java
@@ -0,0 +1,27 @@
+package com.farriver.bwf.data.transferobject.viewmodel;
+
+public class KeyValue {
+ public String key;
+ public Object value;
+
+ public KeyValue(String _key, Object _value) {
+ this.key = _key;
+ this.value = _value;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalCategoryViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalCategoryViewModel.java
new file mode 100644
index 0000000..75463bf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalCategoryViewModel.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.viewmodel.approval;
+
+import java.util.Date;
+import java.util.List;
+
+public class ApprovalCategoryViewModel {
+
+ private ApprovalCategoryViewModel parent;
+
+ private List<ApprovalCategoryViewModel> children;
+
+ public ApprovalCategoryViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(ApprovalCategoryViewModel parent) {
+ this.parent = parent;
+ }
+
+ public List<ApprovalCategoryViewModel> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<ApprovalCategoryViewModel> children) {
+ this.children = children;
+ }
+
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordHistoryViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordHistoryViewModel.java
new file mode 100644
index 0000000..4307995
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordHistoryViewModel.java
@@ -0,0 +1,165 @@
+package com.farriver.bwf.data.transferobject.viewmodel.approval;
+
+import java.util.Date;
+
+public class ApprovalRecordHistoryViewModel {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String no;
+
+ private Integer status;
+
+ private String templatecode;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private String formdata;
+
+ private String approvalopiniondata;
+
+ private String flowdata;
+
+ private String title;
+
+ private String description;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getFlowdata() {
+ return flowdata;
+ }
+
+ public void setFlowdata(String flowdata) {
+ this.flowdata = flowdata;
+ }
+
+ public String getFormdata() {
+ return formdata;
+ }
+
+ public void setFormdata(String formdata) {
+ this.formdata = formdata == null ? null : formdata.trim();
+ }
+
+ public String getApprovalopiniondata() {
+ return approvalopiniondata;
+ }
+
+ public void setApprovalopiniondata(String approvalopiniondata) {
+ this.approvalopiniondata = approvalopiniondata == null ? null : approvalopiniondata.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getTemplatecode() {
+ return templatecode;
+ }
+
+ public void setTemplatecode(String templatecode) {
+ this.templatecode = templatecode == null ? null : templatecode.trim();
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordViewModel.java
new file mode 100644
index 0000000..7a6e84b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalRecordViewModel.java
@@ -0,0 +1,165 @@
+package com.farriver.bwf.data.transferobject.viewmodel.approval;
+
+import java.util.Date;
+
+public class ApprovalRecordViewModel {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String no;
+
+ private Integer status;
+
+ private String templatecode;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private String formdata;
+
+ private String approvalopiniondata;
+
+ private String flowdata;
+
+ private String title;
+
+ private String description;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getFlowdata() {
+ return flowdata;
+ }
+
+ public void setFlowdata(String flowdata) {
+ this.flowdata = flowdata;
+ }
+
+ public String getFormdata() {
+ return formdata;
+ }
+
+ public void setFormdata(String formdata) {
+ this.formdata = formdata == null ? null : formdata.trim();
+ }
+
+ public String getApprovalopiniondata() {
+ return approvalopiniondata;
+ }
+
+ public void setApprovalopiniondata(String approvalopiniondata) {
+ this.approvalopiniondata = approvalopiniondata == null ? null : approvalopiniondata.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getTemplatecode() {
+ return templatecode;
+ }
+
+ public void setTemplatecode(String templatecode) {
+ this.templatecode = templatecode == null ? null : templatecode.trim();
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalTemplateViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalTemplateViewModel.java
new file mode 100644
index 0000000..d3e69a1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/approval/ApprovalTemplateViewModel.java
@@ -0,0 +1,215 @@
+package com.farriver.bwf.data.transferobject.viewmodel.approval;
+
+import java.util.Date;
+
+public class ApprovalTemplateViewModel {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String code;
+
+ private String name;
+
+ private String category;
+
+ private String icon;
+
+ private Boolean isallowall;
+
+ private Boolean ispromoterautoapprove;
+
+ private Boolean isapprovalopinionrequired;
+
+ private Integer status;
+
+ private String[] roleids;
+
+ private String description;
+
+ private String formcontext;
+
+ private String flowcontext;
+
+ private String flowcontextforprocess;
+
+ private String callbackcontext;
+
+ private String approvalopinionnote;
+
+ public String getFlowcontextforprocess() {
+ return flowcontextforprocess;
+ }
+
+ public void setFlowcontextforprocess(String flowcontextforprocess) {
+ this.flowcontextforprocess = flowcontextforprocess;
+ }
+
+ public String getApprovalopinionnote() {
+ return approvalopinionnote;
+ }
+
+ public void setApprovalopinionnote(String approvalopinionnote) {
+ this.approvalopinionnote = approvalopinionnote;
+ }
+
+ public String[] getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(String[] roleids) {
+ this.roleids = roleids;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public String getFormcontext() {
+ return formcontext;
+ }
+
+ public void setFormcontext(String formcontext) {
+ this.formcontext = formcontext == null ? null : formcontext.trim();
+ }
+
+ public String getFlowcontext() {
+ return flowcontext;
+ }
+
+ public void setFlowcontext(String flowcontext) {
+ this.flowcontext = flowcontext == null ? null : flowcontext.trim();
+ }
+
+ public String getCallbackcontext() {
+ return callbackcontext;
+ }
+
+ public void setCallbackcontext(String callbackcontext) {
+ this.callbackcontext = callbackcontext == null ? null : callbackcontext.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+
+ public Boolean getIsallowall() {
+ return isallowall;
+ }
+
+ public void setIsallowall(Boolean isallowall) {
+ this.isallowall = isallowall;
+ }
+
+ public Boolean getIspromoterautoapprove() {
+ return ispromoterautoapprove;
+ }
+
+ public void setIspromoterautoapprove(Boolean ispromoterautoapprove) {
+ this.ispromoterautoapprove = ispromoterautoapprove;
+ }
+
+ public Boolean getIsapprovalopinionrequired() {
+ return isapprovalopinionrequired;
+ }
+
+ public void setIsapprovalopinionrequired(Boolean isapprovalopinionrequired) {
+ this.isapprovalopinionrequired = isapprovalopinionrequired;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/Alert.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/Alert.java
new file mode 100644
index 0000000..c4df49d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/Alert.java
@@ -0,0 +1,31 @@
+package com.farriver.bwf.data.transferobject.viewmodel.common;
+
+public class Alert {
+ private String level;
+ private int code;
+ private String message;
+
+ public String getLevel() {
+ return level;
+ }
+
+ public void setLevel(String level) {
+ this.level = level;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/AuthBean.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/AuthBean.java
new file mode 100644
index 0000000..2b4d2bc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/AuthBean.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.data.transferobject.viewmodel.common;
+public class AuthBean {
+ private String username;
+ private String password;
+ private String verifycode;
+ private String cellphone;
+ private String randomcode;
+ private String email;
+ private String account;
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account;
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone;
+ }
+
+ public String getRandomcode() {
+ return randomcode;
+ }
+
+ public void setRandomcode(String randomcode) {
+ this.randomcode = randomcode;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getVerifycode() {
+ return verifycode;
+ }
+
+ public void setVerifycode(String verifycode) {
+ this.verifycode = verifycode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/ExportBOLViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/ExportBOLViewModel.java
new file mode 100644
index 0000000..f72ee7f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/ExportBOLViewModel.java
@@ -0,0 +1,25 @@
+package com.farriver.bwf.data.transferobject.viewmodel.common;
+
+import com.farriver.bwf.data.transferobject.viewmodel.template.DocumentExportTemplateViewModel;
+
+public class ExportBOLViewModel {
+ private String masterid;
+
+ private DocumentExportTemplateViewModel template;
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid;
+ }
+
+ public DocumentExportTemplateViewModel getTemplate() {
+ return template;
+ }
+
+ public void setTemplate(DocumentExportTemplateViewModel template) {
+ this.template = template;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/OperationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/OperationViewModel.java
new file mode 100644
index 0000000..0f80def
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/OperationViewModel.java
@@ -0,0 +1,50 @@
+package com.farriver.bwf.data.transferobject.viewmodel.common;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class OperationViewModel {
+ private String masterid;
+
+ private String comment;
+
+ private String actionby;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date actiondate;
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby;
+ }
+
+ public Date getActiondate() {
+ return actiondate;
+ }
+
+ public void setActiondate(Date actiondate) {
+ this.actiondate = actiondate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/StatusOperationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/StatusOperationViewModel.java
new file mode 100644
index 0000000..e51d864
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/common/StatusOperationViewModel.java
@@ -0,0 +1,50 @@
+package com.farriver.bwf.data.transferobject.viewmodel.common;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class StatusOperationViewModel {
+ private String masterid;
+
+ private Boolean bool_status;
+
+ private Integer int_status;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date actiondate;
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid;
+ }
+
+ public Boolean getBool_status() {
+ return bool_status;
+ }
+
+ public void setBool_status(Boolean bool_status) {
+ this.bool_status = bool_status;
+ }
+
+ public Integer getInt_status() {
+ return int_status;
+ }
+
+ public void setInt_status(Integer int_status) {
+ this.int_status = int_status;
+ }
+
+ public Date getActiondate() {
+ return actiondate;
+ }
+
+ public void setActiondate(Date actiondate) {
+ this.actiondate = actiondate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchApprovalViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchApprovalViewModel.java
new file mode 100644
index 0000000..61875c4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchApprovalViewModel.java
@@ -0,0 +1,252 @@
+package com.farriver.bwf.data.transferobject.viewmodel.dispatch;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class DispatchApprovalViewModel {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String code;
+
+ private String title;
+
+ private Integer status;
+
+ private String source;
+
+ private String sourcedepartment;
+
+ private String target;
+
+ private String targetdepartment;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date startdatetime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date enddatetime;
+
+ private String uid;
+
+ private Integer type;
+
+ private String linkto;
+
+ private Integer priority;
+
+ private String roleids;
+
+ private String context;
+
+ private String description;
+
+ private String detail;
+
+ private String recordid;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setContext(String context) {
+ this.context = context;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source == null ? null : source.trim();
+ }
+
+ public String getSourcedepartment() {
+ return sourcedepartment;
+ }
+
+ public void setSourcedepartment(String sourcedepartment) {
+ this.sourcedepartment = sourcedepartment == null ? null : sourcedepartment.trim();
+ }
+
+ public String getTarget() {
+ return target;
+ }
+
+ public void setTarget(String target) {
+ this.target = target == null ? null : target.trim();
+ }
+
+ public String getTargetdepartment() {
+ return targetdepartment;
+ }
+
+ public void setTargetdepartment(String targetdepartment) {
+ this.targetdepartment = targetdepartment == null ? null : targetdepartment.trim();
+ }
+
+ public Date getStartdatetime() {
+ return startdatetime;
+ }
+
+ public void setStartdatetime(Date startdatetime) {
+ this.startdatetime = startdatetime;
+ }
+
+ public Date getEnddatetime() {
+ return enddatetime;
+ }
+
+ public void setEnddatetime(Date enddatetime) {
+ this.enddatetime = enddatetime;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getLinkto() {
+ return linkto;
+ }
+
+ public void setLinkto(String linkto) {
+ this.linkto = linkto == null ? null : linkto.trim();
+ }
+
+ public Integer getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Integer priority) {
+ this.priority = priority;
+ }
+
+ public String getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(String roleids) {
+ this.roleids = roleids == null ? null : roleids.trim();
+ }
+
+ public String getRecordid() {
+ return recordid;
+ }
+
+ public void setRecordid(String recordid) {
+ this.recordid = recordid;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchNotificationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchNotificationViewModel.java
new file mode 100644
index 0000000..ebfe0d7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchNotificationViewModel.java
@@ -0,0 +1,230 @@
+package com.farriver.bwf.data.transferobject.viewmodel.dispatch;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class DispatchNotificationViewModel {
+ private String id;
+
+ private String code;
+
+ private String title;
+
+ private String department;
+
+ private String category;
+
+ private Integer nlevel;
+
+ private String keywords;
+
+ private String actionby;
+
+ private Integer status;
+
+ private String publisher;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date publishdatetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String uid;
+
+ private Integer type;
+
+ private String linkto;
+
+ private Integer priority;
+
+ private String context;
+
+ private String roleids;
+
+ private String description;
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(String roleids) {
+ this.roleids = roleids;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department == null ? null : department.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getNlevel() {
+ return nlevel;
+ }
+
+ public void setNlevel(Integer nlevel) {
+ this.nlevel = nlevel;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords == null ? null : keywords.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getPublisher() {
+ return publisher;
+ }
+
+ public void setPublisher(String publisher) {
+ this.publisher = publisher == null ? null : publisher.trim();
+ }
+
+ public Date getPublishdatetime() {
+ return publishdatetime;
+ }
+
+ public void setPublishdatetime(Date publishdatetime) {
+ this.publishdatetime = publishdatetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getLinkto() {
+ return linkto;
+ }
+
+ public void setLinkto(String linkto) {
+ this.linkto = linkto == null ? null : linkto.trim();
+ }
+
+ public Integer getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Integer priority) {
+ this.priority = priority;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setContext(String context) {
+ this.context = context == null ? null : context.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchTaskViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchTaskViewModel.java
new file mode 100644
index 0000000..1b951cb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/dispatch/DispatchTaskViewModel.java
@@ -0,0 +1,232 @@
+package com.farriver.bwf.data.transferobject.viewmodel.dispatch;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+public class DispatchTaskViewModel {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String actionby;
+
+ private String remark;
+
+ private String code;
+
+ private String title;
+
+ private Integer status;
+
+ private String source;
+
+ private String sourcedepartment;
+
+ private String target;
+
+ private String targetdepartment;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date startdatetime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+ private Date enddatetime;
+
+ private String uid;
+
+ private Integer type;
+
+ private String linkto;
+
+ private Integer priority;
+
+ private String detail;
+
+ private String roleids;
+
+ private String description;
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getRoleids() {
+ return roleids;
+ }
+
+ public void setRoleids(String roleids) {
+ this.roleids = roleids;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source == null ? null : source.trim();
+ }
+
+ public String getSourcedepartment() {
+ return sourcedepartment;
+ }
+
+ public void setSourcedepartment(String sourcedepartment) {
+ this.sourcedepartment = sourcedepartment == null ? null : sourcedepartment.trim();
+ }
+
+ public String getTarget() {
+ return target;
+ }
+
+ public void setTarget(String target) {
+ this.target = target == null ? null : target.trim();
+ }
+
+ public String getTargetdepartment() {
+ return targetdepartment;
+ }
+
+ public void setTargetdepartment(String targetdepartment) {
+ this.targetdepartment = targetdepartment == null ? null : targetdepartment.trim();
+ }
+
+ public Date getStartdatetime() {
+ return startdatetime;
+ }
+
+ public void setStartdatetime(Date startdatetime) {
+ this.startdatetime = startdatetime;
+ }
+
+ public Date getEnddatetime() {
+ return enddatetime;
+ }
+
+ public void setEnddatetime(Date enddatetime) {
+ this.enddatetime = enddatetime;
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getLinkto() {
+ return linkto;
+ }
+
+ public void setLinkto(String linkto) {
+ this.linkto = linkto == null ? null : linkto.trim();
+ }
+
+ public Integer getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Integer priority) {
+ this.priority = priority;
+ }
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail == null ? null : detail.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionRoleRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionRoleRelationViewModel.java
new file mode 100644
index 0000000..535928d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionRoleRelationViewModel.java
@@ -0,0 +1,116 @@
+package com.farriver.bwf.data.transferobject.viewmodel.om;
+
+import java.util.Date;
+
+public class OMOrganizationPositionRoleRelationViewModel {
+
+ private String id;
+
+ private String positionid;
+
+ private String positioncode;
+
+ private String positionname;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getPositionid() {
+ return positionid;
+ }
+
+ public void setPositionid(String positionid) {
+ this.positionid = positionid == null ? null : positionid.trim();
+ }
+
+ public String getPositioncode() {
+ return positioncode;
+ }
+
+ public void setPositioncode(String positioncode) {
+ this.positioncode = positioncode == null ? null : positioncode.trim();
+ }
+
+ public String getPositionname() {
+ return positionname;
+ }
+
+ public void setPositionname(String positionname) {
+ this.positionname = positionname == null ? null : positionname.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionViewModel.java
new file mode 100644
index 0000000..21af4c5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionViewModel.java
@@ -0,0 +1,166 @@
+package com.farriver.bwf.data.transferobject.viewmodel.om;
+
+import java.util.Date;
+
+public class OMOrganizationPositionViewModel {
+
+ private String organizationStructure;
+
+ public String getOrganizationStructure() {
+ return organizationStructure;
+ }
+
+ public void setOrganizationStructure(String organizationStructure) {
+ this.organizationStructure = organizationStructure;
+ }
+
+ private OMOrganizationViewModel organization;
+
+ public OMOrganizationViewModel getOrganization() {
+ return organization;
+ }
+
+ public void setOrganization(OMOrganizationViewModel organization) {
+ this.organization = organization;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String title;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String description;
+
+ private Integer experienceyears;
+
+ private String salaryrange;
+
+ private Integer status;
+
+ private String requirements;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public Integer getExperienceyears() {
+ return experienceyears;
+ }
+
+ public void setExperienceyears(Integer experienceyears) {
+ this.experienceyears = experienceyears;
+ }
+
+ public String getSalaryrange() {
+ return salaryrange;
+ }
+
+ public void setSalaryrange(String salaryrange) {
+ this.salaryrange = salaryrange == null ? null : salaryrange.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRequirements() {
+ return requirements;
+ }
+
+ public void setRequirements(String requirements) {
+ this.requirements = requirements == null ? null : requirements.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionWriteViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionWriteViewModel.java
new file mode 100644
index 0000000..efec763
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationPositionWriteViewModel.java
@@ -0,0 +1,158 @@
+package com.farriver.bwf.data.transferobject.viewmodel.om;
+
+import com.farriver.bwf.data.transferobject.viewmodel.security.RoleMasterWriteViewModel;
+
+import java.util.Date;
+import java.util.List;
+
+public class OMOrganizationPositionWriteViewModel {
+ private List<RoleMasterWriteViewModel> roles;
+
+ public List<RoleMasterWriteViewModel> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<RoleMasterWriteViewModel> roles) {
+ this.roles = roles;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String title;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String description;
+
+ private Integer experienceyears;
+
+ private String salaryrange;
+
+ private Integer status;
+
+ private String requirements;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public Integer getExperienceyears() {
+ return experienceyears;
+ }
+
+ public void setExperienceyears(Integer experienceyears) {
+ this.experienceyears = experienceyears;
+ }
+
+ public String getSalaryrange() {
+ return salaryrange;
+ }
+
+ public void setSalaryrange(String salaryrange) {
+ this.salaryrange = salaryrange == null ? null : salaryrange.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRequirements() {
+ return requirements;
+ }
+
+ public void setRequirements(String requirements) {
+ this.requirements = requirements == null ? null : requirements.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationViewModel.java
new file mode 100644
index 0000000..389ce4e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationViewModel.java
@@ -0,0 +1,229 @@
+package com.farriver.bwf.data.transferobject.viewmodel.om;
+
+import com.farriver.bwf.common.utilities.TreeBuilderNode;
+
+import java.util.Date;
+import java.util.List;
+
+public class OMOrganizationViewModel implements TreeBuilderNode {
+
+ private String organizationStructure;
+
+ public String getOrganizationStructure() {
+ return organizationStructure;
+ }
+
+ public void setOrganizationStructure(String organizationStructure) {
+ this.organizationStructure = organizationStructure;
+ }
+
+ private List<TreeBuilderNode> children;
+
+ public List<TreeBuilderNode> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<TreeBuilderNode> children) {
+ this.children = children;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode;
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname;
+ }
+
+ private OMOrganizationViewModel parent;
+
+ public OMOrganizationViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(OMOrganizationViewModel parent) {
+ this.parent = parent;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Boolean enabled;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationWriteViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationWriteViewModel.java
new file mode 100644
index 0000000..ccac9e4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/om/OMOrganizationWriteViewModel.java
@@ -0,0 +1,196 @@
+package com.farriver.bwf.data.transferobject.viewmodel.om;
+
+import java.util.Date;
+
+public class OMOrganizationWriteViewModel {
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Boolean enabled;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode;
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveProductViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveProductViewModel.java
new file mode 100644
index 0000000..974494c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveProductViewModel.java
@@ -0,0 +1,247 @@
+package com.farriver.bwf.data.transferobject.viewmodel.order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderActiveProductViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String rejectreason;
+
+ private String rejectcomment;
+
+ private Date rejecttime;
+
+ private String payer;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discount;
+
+ private String payee;
+
+ private String orderid;
+
+ private String orderno;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getRejectreason() {
+ return rejectreason;
+ }
+
+ public void setRejectreason(String rejectreason) {
+ this.rejectreason = rejectreason == null ? null : rejectreason.trim();
+ }
+
+ public String getRejectcomment() {
+ return rejectcomment;
+ }
+
+ public void setRejectcomment(String rejectcomment) {
+ this.rejectcomment = rejectcomment == null ? null : rejectcomment.trim();
+ }
+
+ public Date getRejecttime() {
+ return rejecttime;
+ }
+
+ public void setRejecttime(Date rejecttime) {
+ this.rejecttime = rejecttime;
+ }
+
+ public String getPayer() {
+ return payer;
+ }
+
+ public void setPayer(String payer) {
+ this.payer = payer == null ? null : payer.trim();
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public String getPayee() {
+ return payee;
+ }
+
+ public void setPayee(String payee) {
+ this.payee = payee == null ? null : payee.trim();
+ }
+
+ public String getOrderid() {
+ return orderid;
+ }
+
+ public void setOrderid(String orderid) {
+ this.orderid = orderid == null ? null : orderid.trim();
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveViewModel.java
new file mode 100644
index 0000000..d228503
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderActiveViewModel.java
@@ -0,0 +1,418 @@
+package com.farriver.bwf.data.transferobject.viewmodel.order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public class OrderActiveViewModel implements Serializable {
+ private List<OrderActiveProductViewModel> products;
+
+ public List<OrderActiveProductViewModel> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<OrderActiveProductViewModel> products) {
+ this.products = products;
+ }
+
+ private String id;
+
+ private String no;
+
+ private BigDecimal totalmoney;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discountmoney;
+
+ private Integer status;
+
+ private Date ordertime;
+
+ private Date paytime;
+
+ private Date sendtime;
+
+ private Date receivetime;
+
+ private Date commenttime;
+
+ private Date completetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String sendername;
+
+ private String sendercode;
+
+ private Integer sendercontactno;
+
+ private String targetaddress;
+
+ private String deliveryaddress;
+
+ private String optimalcoupon;
+
+ private String logisticscompany;
+
+ private String logisticsno;
+
+ private String transportmode;
+
+ private Integer boxcount;
+
+ private BigDecimal boxweight;
+
+ private BigDecimal freight;
+
+ private String commentcontent;
+
+ private Integer commentlevel;
+
+ private String receiverid;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ private Integer paymentmethod;
+
+ private Integer type;
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public Integer getPaymentmethod() {
+ return paymentmethod;
+ }
+
+ public void setPaymentmethod(Integer paymentmethod) {
+ this.paymentmethod = paymentmethod;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public BigDecimal getTotalmoney() {
+ return totalmoney;
+ }
+
+ public void setTotalmoney(BigDecimal totalmoney) {
+ this.totalmoney = totalmoney;
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscountmoney() {
+ return discountmoney;
+ }
+
+ public void setDiscountmoney(BigDecimal discountmoney) {
+ this.discountmoney = discountmoney;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Date getOrdertime() {
+ return ordertime;
+ }
+
+ public void setOrdertime(Date ordertime) {
+ this.ordertime = ordertime;
+ }
+
+ public Date getPaytime() {
+ return paytime;
+ }
+
+ public void setPaytime(Date paytime) {
+ this.paytime = paytime;
+ }
+
+ public Date getSendtime() {
+ return sendtime;
+ }
+
+ public void setSendtime(Date sendtime) {
+ this.sendtime = sendtime;
+ }
+
+ public Date getReceivetime() {
+ return receivetime;
+ }
+
+ public void setReceivetime(Date receivetime) {
+ this.receivetime = receivetime;
+ }
+
+ public Date getCommenttime() {
+ return commenttime;
+ }
+
+ public void setCommenttime(Date commenttime) {
+ this.commenttime = commenttime;
+ }
+
+ public Date getCompletetime() {
+ return completetime;
+ }
+
+ public void setCompletetime(Date completetime) {
+ this.completetime = completetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getSendername() {
+ return sendername;
+ }
+
+ public void setSendername(String sendername) {
+ this.sendername = sendername == null ? null : sendername.trim();
+ }
+
+ public String getSendercode() {
+ return sendercode;
+ }
+
+ public void setSendercode(String sendercode) {
+ this.sendercode = sendercode == null ? null : sendercode.trim();
+ }
+
+ public Integer getSendercontactno() {
+ return sendercontactno;
+ }
+
+ public void setSendercontactno(Integer sendercontactno) {
+ this.sendercontactno = sendercontactno;
+ }
+
+ public String getTargetaddress() {
+ return targetaddress;
+ }
+
+ public void setTargetaddress(String targetaddress) {
+ this.targetaddress = targetaddress == null ? null : targetaddress.trim();
+ }
+
+ public String getDeliveryaddress() {
+ return deliveryaddress;
+ }
+
+ public void setDeliveryaddress(String deliveryaddress) {
+ this.deliveryaddress = deliveryaddress == null ? null : deliveryaddress.trim();
+ }
+
+ public String getOptimalcoupon() {
+ return optimalcoupon;
+ }
+
+ public void setOptimalcoupon(String optimalcoupon) {
+ this.optimalcoupon = optimalcoupon == null ? null : optimalcoupon.trim();
+ }
+
+ public String getLogisticscompany() {
+ return logisticscompany;
+ }
+
+ public void setLogisticscompany(String logisticscompany) {
+ this.logisticscompany = logisticscompany == null ? null : logisticscompany.trim();
+ }
+
+ public String getLogisticsno() {
+ return logisticsno;
+ }
+
+ public void setLogisticsno(String logisticsno) {
+ this.logisticsno = logisticsno == null ? null : logisticsno.trim();
+ }
+
+ public String getTransportmode() {
+ return transportmode;
+ }
+
+ public void setTransportmode(String transportmode) {
+ this.transportmode = transportmode == null ? null : transportmode.trim();
+ }
+
+ public Integer getBoxcount() {
+ return boxcount;
+ }
+
+ public void setBoxcount(Integer boxcount) {
+ this.boxcount = boxcount;
+ }
+
+ public BigDecimal getBoxweight() {
+ return boxweight;
+ }
+
+ public void setBoxweight(BigDecimal boxweight) {
+ this.boxweight = boxweight;
+ }
+
+ public BigDecimal getFreight() {
+ return freight;
+ }
+
+ public void setFreight(BigDecimal freight) {
+ this.freight = freight;
+ }
+
+ public String getCommentcontent() {
+ return commentcontent;
+ }
+
+ public void setCommentcontent(String commentcontent) {
+ this.commentcontent = commentcontent == null ? null : commentcontent.trim();
+ }
+
+ public Integer getCommentlevel() {
+ return commentlevel;
+ }
+
+ public void setCommentlevel(Integer commentlevel) {
+ this.commentlevel = commentlevel;
+ }
+
+ public String getReceiverid() {
+ return receiverid;
+ }
+
+ public void setReceiverid(String receiverid) {
+ this.receiverid = receiverid == null ? null : receiverid.trim();
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryProductViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryProductViewModel.java
new file mode 100644
index 0000000..6ddfd97
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryProductViewModel.java
@@ -0,0 +1,247 @@
+package com.farriver.bwf.data.transferobject.viewmodel.order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class OrderHistoryProductViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String rejectreason;
+
+ private String rejectcomment;
+
+ private Date rejecttime;
+
+ private String payer;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discount;
+
+ private String payee;
+
+ private String orderno;
+
+ private String orderid;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getRejectreason() {
+ return rejectreason;
+ }
+
+ public void setRejectreason(String rejectreason) {
+ this.rejectreason = rejectreason == null ? null : rejectreason.trim();
+ }
+
+ public String getRejectcomment() {
+ return rejectcomment;
+ }
+
+ public void setRejectcomment(String rejectcomment) {
+ this.rejectcomment = rejectcomment == null ? null : rejectcomment.trim();
+ }
+
+ public Date getRejecttime() {
+ return rejecttime;
+ }
+
+ public void setRejecttime(Date rejecttime) {
+ this.rejecttime = rejecttime;
+ }
+
+ public String getPayer() {
+ return payer;
+ }
+
+ public void setPayer(String payer) {
+ this.payer = payer == null ? null : payer.trim();
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public String getPayee() {
+ return payee;
+ }
+
+ public void setPayee(String payee) {
+ this.payee = payee == null ? null : payee.trim();
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getOrderid() {
+ return orderid;
+ }
+
+ public void setOrderid(String orderid) {
+ this.orderid = orderid == null ? null : orderid.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryViewModel.java
new file mode 100644
index 0000000..89c546b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderHistoryViewModel.java
@@ -0,0 +1,418 @@
+package com.farriver.bwf.data.transferobject.viewmodel.order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public class OrderHistoryViewModel implements Serializable {
+ private List<OrderHistoryProductViewModel> products;
+
+ public List<OrderHistoryProductViewModel> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<OrderHistoryProductViewModel> products) {
+ this.products = products;
+ }
+
+ private String id;
+
+ private String no;
+
+ private BigDecimal totalmoney;
+
+ private BigDecimal payedmoney;
+
+ private BigDecimal discountmoney;
+
+ private Integer status;
+
+ private Date ordertime;
+
+ private Date paytime;
+
+ private Date sendtime;
+
+ private Date receivetime;
+
+ private Date commenttime;
+
+ private Date completetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String sendername;
+
+ private String sendercode;
+
+ private Integer sendercontactno;
+
+ private String targetaddress;
+
+ private String deliveryaddress;
+
+ private String optimalcoupon;
+
+ private String logisticscompany;
+
+ private String logisticsno;
+
+ private String transportmode;
+
+ private Integer boxcount;
+
+ private BigDecimal boxweight;
+
+ private BigDecimal freight;
+
+ private String commentcontent;
+
+ private Integer commentlevel;
+
+ private String receiverid;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ private Integer paymentmethod;
+
+ private Integer type;
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public Integer getPaymentmethod() {
+ return paymentmethod;
+ }
+
+ public void setPaymentmethod(Integer paymentmethod) {
+ this.paymentmethod = paymentmethod;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getNo() {
+ return no;
+ }
+
+ public void setNo(String no) {
+ this.no = no == null ? null : no.trim();
+ }
+
+ public BigDecimal getTotalmoney() {
+ return totalmoney;
+ }
+
+ public void setTotalmoney(BigDecimal totalmoney) {
+ this.totalmoney = totalmoney;
+ }
+
+ public BigDecimal getPayedmoney() {
+ return payedmoney;
+ }
+
+ public void setPayedmoney(BigDecimal payedmoney) {
+ this.payedmoney = payedmoney;
+ }
+
+ public BigDecimal getDiscountmoney() {
+ return discountmoney;
+ }
+
+ public void setDiscountmoney(BigDecimal discountmoney) {
+ this.discountmoney = discountmoney;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Date getOrdertime() {
+ return ordertime;
+ }
+
+ public void setOrdertime(Date ordertime) {
+ this.ordertime = ordertime;
+ }
+
+ public Date getPaytime() {
+ return paytime;
+ }
+
+ public void setPaytime(Date paytime) {
+ this.paytime = paytime;
+ }
+
+ public Date getSendtime() {
+ return sendtime;
+ }
+
+ public void setSendtime(Date sendtime) {
+ this.sendtime = sendtime;
+ }
+
+ public Date getReceivetime() {
+ return receivetime;
+ }
+
+ public void setReceivetime(Date receivetime) {
+ this.receivetime = receivetime;
+ }
+
+ public Date getCommenttime() {
+ return commenttime;
+ }
+
+ public void setCommenttime(Date commenttime) {
+ this.commenttime = commenttime;
+ }
+
+ public Date getCompletetime() {
+ return completetime;
+ }
+
+ public void setCompletetime(Date completetime) {
+ this.completetime = completetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getSendername() {
+ return sendername;
+ }
+
+ public void setSendername(String sendername) {
+ this.sendername = sendername == null ? null : sendername.trim();
+ }
+
+ public String getSendercode() {
+ return sendercode;
+ }
+
+ public void setSendercode(String sendercode) {
+ this.sendercode = sendercode == null ? null : sendercode.trim();
+ }
+
+ public Integer getSendercontactno() {
+ return sendercontactno;
+ }
+
+ public void setSendercontactno(Integer sendercontactno) {
+ this.sendercontactno = sendercontactno;
+ }
+
+ public String getTargetaddress() {
+ return targetaddress;
+ }
+
+ public void setTargetaddress(String targetaddress) {
+ this.targetaddress = targetaddress == null ? null : targetaddress.trim();
+ }
+
+ public String getDeliveryaddress() {
+ return deliveryaddress;
+ }
+
+ public void setDeliveryaddress(String deliveryaddress) {
+ this.deliveryaddress = deliveryaddress == null ? null : deliveryaddress.trim();
+ }
+
+ public String getOptimalcoupon() {
+ return optimalcoupon;
+ }
+
+ public void setOptimalcoupon(String optimalcoupon) {
+ this.optimalcoupon = optimalcoupon == null ? null : optimalcoupon.trim();
+ }
+
+ public String getLogisticscompany() {
+ return logisticscompany;
+ }
+
+ public void setLogisticscompany(String logisticscompany) {
+ this.logisticscompany = logisticscompany == null ? null : logisticscompany.trim();
+ }
+
+ public String getLogisticsno() {
+ return logisticsno;
+ }
+
+ public void setLogisticsno(String logisticsno) {
+ this.logisticsno = logisticsno == null ? null : logisticsno.trim();
+ }
+
+ public String getTransportmode() {
+ return transportmode;
+ }
+
+ public void setTransportmode(String transportmode) {
+ this.transportmode = transportmode == null ? null : transportmode.trim();
+ }
+
+ public Integer getBoxcount() {
+ return boxcount;
+ }
+
+ public void setBoxcount(Integer boxcount) {
+ this.boxcount = boxcount;
+ }
+
+ public BigDecimal getBoxweight() {
+ return boxweight;
+ }
+
+ public void setBoxweight(BigDecimal boxweight) {
+ this.boxweight = boxweight;
+ }
+
+ public BigDecimal getFreight() {
+ return freight;
+ }
+
+ public void setFreight(BigDecimal freight) {
+ this.freight = freight;
+ }
+
+ public String getCommentcontent() {
+ return commentcontent;
+ }
+
+ public void setCommentcontent(String commentcontent) {
+ this.commentcontent = commentcontent == null ? null : commentcontent.trim();
+ }
+
+ public Integer getCommentlevel() {
+ return commentlevel;
+ }
+
+ public void setCommentlevel(Integer commentlevel) {
+ this.commentlevel = commentlevel;
+ }
+
+ public String getReceiverid() {
+ return receiverid;
+ }
+
+ public void setReceiverid(String receiverid) {
+ this.receiverid = receiverid == null ? null : receiverid.trim();
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderReceiverViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderReceiverViewModel.java
new file mode 100644
index 0000000..e410402
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/order/OrderReceiverViewModel.java
@@ -0,0 +1,156 @@
+package com.farriver.bwf.data.transferobject.viewmodel.order;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class OrderReceiverViewModel implements Serializable {
+ private String id;
+
+ private String userid;
+
+ private String code;
+
+ private String name;
+
+ private String contactno;
+
+ private String country;
+
+ private String province;
+
+ private String city;
+
+ private String region;
+
+ private String receiveaddress;
+
+ private String isoftenused;
+
+ private Boolean isdeleted;
+
+ private Date updatetime;
+
+ private Date createtime;
+
+ private String remark;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid == null ? null : userid.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getContactno() {
+ return contactno;
+ }
+
+ public void setContactno(String contactno) {
+ this.contactno = contactno == null ? null : contactno.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getRegion() {
+ return region;
+ }
+
+ public void setRegion(String region) {
+ this.region = region == null ? null : region.trim();
+ }
+
+ public String getReceiveaddress() {
+ return receiveaddress;
+ }
+
+ public void setReceiveaddress(String receiveaddress) {
+ this.receiveaddress = receiveaddress == null ? null : receiveaddress.trim();
+ }
+
+ public String getIsoftenused() {
+ return isoftenused;
+ }
+
+ public void setIsoftenused(String isoftenused) {
+ this.isoftenused = isoftenused == null ? null : isoftenused.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationClassViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationClassViewModel.java
new file mode 100644
index 0000000..fe23134
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationClassViewModel.java
@@ -0,0 +1,296 @@
+package com.farriver.bwf.data.transferobject.viewmodel.organization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class OrganizationClassViewModel implements Serializable {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationDepartmentViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationDepartmentViewModel.java
new file mode 100644
index 0000000..036f228
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationDepartmentViewModel.java
@@ -0,0 +1,206 @@
+package com.farriver.bwf.data.transferobject.viewmodel.organization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class OrganizationDepartmentViewModel implements Serializable {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationGradeViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationGradeViewModel.java
new file mode 100644
index 0000000..3d707ab
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationGradeViewModel.java
@@ -0,0 +1,266 @@
+package com.farriver.bwf.data.transferobject.viewmodel.organization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class OrganizationGradeViewModel implements Serializable {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMajorViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMajorViewModel.java
new file mode 100644
index 0000000..2aedb7f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMajorViewModel.java
@@ -0,0 +1,156 @@
+package com.farriver.bwf.data.transferobject.viewmodel.organization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class OrganizationMajorViewModel implements Serializable {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMasterViewModel.java
new file mode 100644
index 0000000..dc9ea7b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/organization/OrganizationMasterViewModel.java
@@ -0,0 +1,176 @@
+package com.farriver.bwf.data.transferobject.viewmodel.organization;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class OrganizationMasterViewModel implements Serializable {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String outerphone;
+
+ private String innerphone;
+
+ private String supervisor;
+
+ private String supervisorassistant;
+
+ private String fax;
+
+ private String zipcode;
+
+ private String address;
+
+ private String parentid;
+
+ private Integer status;
+
+ private Integer deplevel;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getOuterphone() {
+ return outerphone;
+ }
+
+ public void setOuterphone(String outerphone) {
+ this.outerphone = outerphone == null ? null : outerphone.trim();
+ }
+
+ public String getInnerphone() {
+ return innerphone;
+ }
+
+ public void setInnerphone(String innerphone) {
+ this.innerphone = innerphone == null ? null : innerphone.trim();
+ }
+
+ public String getSupervisor() {
+ return supervisor;
+ }
+
+ public void setSupervisor(String supervisor) {
+ this.supervisor = supervisor == null ? null : supervisor.trim();
+ }
+
+ public String getSupervisorassistant() {
+ return supervisorassistant;
+ }
+
+ public void setSupervisorassistant(String supervisorassistant) {
+ this.supervisorassistant = supervisorassistant == null ? null : supervisorassistant.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode == null ? null : zipcode.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getDeplevel() {
+ return deplevel;
+ }
+
+ public void setDeplevel(Integer deplevel) {
+ this.deplevel = deplevel;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeOrganizationPositionRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeOrganizationPositionRelationViewModel.java
new file mode 100644
index 0000000..a1082b1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeOrganizationPositionRelationViewModel.java
@@ -0,0 +1,115 @@
+package com.farriver.bwf.data.transferobject.viewmodel.pa;
+
+import java.util.Date;
+
+public class PAEmployeeOrganizationPositionRelationViewModel {
+ private String id;
+
+ private String employeeid;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String positionid;
+
+ private String positioncode;
+
+ private String positionname;
+
+ private String employeecode;
+
+ private String employeename;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getEmployeeid() {
+ return employeeid;
+ }
+
+ public void setEmployeeid(String employeeid) {
+ this.employeeid = employeeid == null ? null : employeeid.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getPositionid() {
+ return positionid;
+ }
+
+ public void setPositionid(String positionid) {
+ this.positionid = positionid == null ? null : positionid.trim();
+ }
+
+ public String getPositioncode() {
+ return positioncode;
+ }
+
+ public void setPositioncode(String positioncode) {
+ this.positioncode = positioncode == null ? null : positioncode.trim();
+ }
+
+ public String getPositionname() {
+ return positionname;
+ }
+
+ public void setPositionname(String positionname) {
+ this.positionname = positionname == null ? null : positionname.trim();
+ }
+
+ public String getEmployeecode() {
+ return employeecode;
+ }
+
+ public void setEmployeecode(String employeecode) {
+ this.employeecode = employeecode == null ? null : employeecode.trim();
+ }
+
+ public String getEmployeename() {
+ return employeename;
+ }
+
+ public void setEmployeename(String employeename) {
+ this.employeename = employeename == null ? null : employeename.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeViewModel.java
new file mode 100644
index 0000000..c4d82c5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAEmployeeViewModel.java
@@ -0,0 +1,349 @@
+package com.farriver.bwf.data.transferobject.viewmodel.pa;
+
+import com.farriver.bwf.data.transferobject.viewmodel.om.OMOrganizationPositionViewModel;
+
+import java.util.Date;
+import java.util.List;
+
+public class PAEmployeeViewModel {
+
+ private List<OMOrganizationPositionViewModel> positions;
+
+ public List<OMOrganizationPositionViewModel> getPositions() {
+ return positions;
+ }
+
+ public void setPositions(List<OMOrganizationPositionViewModel> positions) {
+ this.positions = positions;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private String email;
+
+ private String account;
+
+ private String password;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private String computerlevel;
+
+ private String englishlevel;
+
+ private String driverlicensetype;
+
+ private String householdtype;
+
+ private String homeaddress;
+
+ private String residenceaddress;
+
+ private String fertilitystatus;
+
+ private String maritalstatus;
+
+ private String politics;
+
+ private String nation;
+
+ private String nativeplace;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String titleid;
+
+ private String titlecode;
+
+ private String titlename;
+
+ public String getTitleid() {
+ return titleid;
+ }
+
+ public void setTitleid(String titleid) {
+ this.titleid = titleid;
+ }
+
+ public String getTitlecode() {
+ return titlecode;
+ }
+
+ public void setTitlecode(String titlecode) {
+ this.titlecode = titlecode;
+ }
+
+ public String getTitlename() {
+ return titlename;
+ }
+
+ public void setTitlename(String titlename) {
+ this.titlename = titlename;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public String getComputerlevel() {
+ return computerlevel;
+ }
+
+ public void setComputerlevel(String computerlevel) {
+ this.computerlevel = computerlevel == null ? null : computerlevel.trim();
+ }
+
+ public String getEnglishlevel() {
+ return englishlevel;
+ }
+
+ public void setEnglishlevel(String englishlevel) {
+ this.englishlevel = englishlevel == null ? null : englishlevel.trim();
+ }
+
+ public String getDriverlicensetype() {
+ return driverlicensetype;
+ }
+
+ public void setDriverlicensetype(String driverlicensetype) {
+ this.driverlicensetype = driverlicensetype == null ? null : driverlicensetype.trim();
+ }
+
+ public String getHouseholdtype() {
+ return householdtype;
+ }
+
+ public void setHouseholdtype(String householdtype) {
+ this.householdtype = householdtype == null ? null : householdtype.trim();
+ }
+
+ public String getHomeaddress() {
+ return homeaddress;
+ }
+
+ public void setHomeaddress(String homeaddress) {
+ this.homeaddress = homeaddress == null ? null : homeaddress.trim();
+ }
+
+ public String getResidenceaddress() {
+ return residenceaddress;
+ }
+
+ public void setResidenceaddress(String residenceaddress) {
+ this.residenceaddress = residenceaddress == null ? null : residenceaddress.trim();
+ }
+
+ public String getFertilitystatus() {
+ return fertilitystatus;
+ }
+
+ public void setFertilitystatus(String fertilitystatus) {
+ this.fertilitystatus = fertilitystatus == null ? null : fertilitystatus.trim();
+ }
+
+ public String getMaritalstatus() {
+ return maritalstatus;
+ }
+
+ public void setMaritalstatus(String maritalstatus) {
+ this.maritalstatus = maritalstatus == null ? null : maritalstatus.trim();
+ }
+
+ public String getPolitics() {
+ return politics;
+ }
+
+ public void setPolitics(String politics) {
+ this.politics = politics == null ? null : politics.trim();
+ }
+
+ public String getNation() {
+ return nation;
+ }
+
+ public void setNation(String nation) {
+ this.nation = nation == null ? null : nation.trim();
+ }
+
+ public String getNativeplace() {
+ return nativeplace;
+ }
+
+ public void setNativeplace(String nativeplace) {
+ this.nativeplace = nativeplace == null ? null : nativeplace.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleGroupViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleGroupViewModel.java
new file mode 100644
index 0000000..efea934
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleGroupViewModel.java
@@ -0,0 +1,26 @@
+package com.farriver.bwf.data.transferobject.viewmodel.pa;
+
+import java.util.List;
+
+public class PAProfessionalTitleGroupViewModel {
+
+ private String name;
+
+ private List<PAProfessionalTitleViewModel> children;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List<PAProfessionalTitleViewModel> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<PAProfessionalTitleViewModel> children) {
+ this.children = children;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleViewModel.java
new file mode 100644
index 0000000..1361ea1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleViewModel.java
@@ -0,0 +1,179 @@
+package com.farriver.bwf.data.transferobject.viewmodel.pa;
+
+import com.farriver.bwf.common.utilities.TreeBuilderNode;
+
+import java.util.Date;
+import java.util.List;
+
+public class PAProfessionalTitleViewModel implements TreeBuilderNode {
+
+ private List<TreeBuilderNode> children;
+
+ public List<TreeBuilderNode> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<TreeBuilderNode> children) {
+ this.children = children;
+ }
+
+ private PAProfessionalTitleViewModel parent;
+
+ public PAProfessionalTitleViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(PAProfessionalTitleViewModel parent) {
+ this.parent = parent;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String description;
+
+ private String parentid;
+
+ private Integer level;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String parentcode;
+
+ private String parentname;
+
+ private String category;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleWriteViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleWriteViewModel.java
new file mode 100644
index 0000000..ef3daa8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/pa/PAProfessionalTitleWriteViewModel.java
@@ -0,0 +1,156 @@
+package com.farriver.bwf.data.transferobject.viewmodel.pa;
+
+import java.util.Date;
+
+public class PAProfessionalTitleWriteViewModel {
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String description;
+
+ private String parentid;
+
+ private Integer level;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String parentcode;
+
+ private String parentname;
+
+ private String category;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeKeyViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeKeyViewModel.java
new file mode 100644
index 0000000..b808d34
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeKeyViewModel.java
@@ -0,0 +1,77 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+public class ProductAttributeKeyViewModel implements Serializable {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private List<ProductAttributeValueViewModel> values;
+
+ public List<ProductAttributeValueViewModel> getValues() {
+ return values;
+ }
+
+ public void setValues(List<ProductAttributeValueViewModel> values) {
+ this.values = values;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeValueViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeValueViewModel.java
new file mode 100644
index 0000000..a722b3a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductAttributeValueViewModel.java
@@ -0,0 +1,106 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ProductAttributeValueViewModel implements Serializable {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String value;
+
+ private String attributeId;
+
+ private String attributeName;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value == null ? null : value.trim();
+ }
+
+ public String getAttributeId() {
+ return attributeId;
+ }
+
+ public void setAttributeId(String attributeId) {
+ this.attributeId = attributeId == null ? null : attributeId.trim();
+ }
+
+ public String getAttributeName() {
+ return attributeName;
+ }
+
+ public void setAttributeName(String attributeName) {
+ this.attributeName = attributeName == null ? null : attributeName.trim();
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductBrandViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductBrandViewModel.java
new file mode 100644
index 0000000..917590d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductBrandViewModel.java
@@ -0,0 +1,131 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ProductBrandViewModel implements Serializable {
+ private String id;
+
+ private Integer status;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String website;
+
+ private String logoimage;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date foundedyear;
+
+ private String countryoforigin;
+
+ private String description;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getWebsite() {
+ return website;
+ }
+
+ public void setWebsite(String website) {
+ this.website = website == null ? null : website.trim();
+ }
+
+ public String getLogoimage() {
+ return logoimage;
+ }
+
+ public void setLogoimage(String logoimage) {
+ this.logoimage = logoimage == null ? null : logoimage.trim();
+ }
+
+ public Date getFoundedyear() {
+ return foundedyear;
+ }
+
+ public void setFoundedyear(Date foundedyear) {
+ this.foundedyear = foundedyear;
+ }
+
+ public String getCountryoforigin() {
+ return countryoforigin;
+ }
+
+ public void setCountryoforigin(String countryoforigin) {
+ this.countryoforigin = countryoforigin == null ? null : countryoforigin.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductCategoryViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductCategoryViewModel.java
new file mode 100644
index 0000000..f454a53
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductCategoryViewModel.java
@@ -0,0 +1,107 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+public class ProductCategoryViewModel implements Serializable {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private ProductCategoryViewModel parent;
+
+ private List<ProductCategoryViewModel> children;
+
+ private List<ProductMasterViewModel> products;
+
+ public List<ProductMasterViewModel> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<ProductMasterViewModel> products) {
+ this.products = products;
+ }
+
+ public ProductCategoryViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(ProductCategoryViewModel parent) {
+ this.parent = parent;
+ }
+
+ public List<ProductCategoryViewModel> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<ProductCategoryViewModel> children) {
+ this.children = children;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductMasterViewModel.java
new file mode 100644
index 0000000..082b300
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductMasterViewModel.java
@@ -0,0 +1,257 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+public class ProductMasterViewModel implements Serializable {
+ private String id;
+
+ private Integer status;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String formation;
+
+ private String buyprice;
+
+ private String sellprice;
+
+ private String provider;
+
+ private String discount;
+
+ private String keyword;
+
+ private String count;
+
+ private String image;
+
+ private String size;
+
+ private String color;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private String brandid;
+
+ private String brandname;
+
+ private String brandcode;
+
+ private String model;
+
+ private String specifications;
+
+ private List<ProductAttributeKeyViewModel> keys;
+
+ public List<ProductAttributeKeyViewModel> getKeys() {
+ return keys;
+ }
+
+ public void setKeys(List<ProductAttributeKeyViewModel> keys) {
+ this.keys = keys;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getFormation() {
+ return formation;
+ }
+
+ public void setFormation(String formation) {
+ this.formation = formation == null ? null : formation.trim();
+ }
+
+ public String getBuyprice() {
+ return buyprice;
+ }
+
+ public void setBuyprice(String buyprice) {
+ this.buyprice = buyprice == null ? null : buyprice.trim();
+ }
+
+ public String getSellprice() {
+ return sellprice;
+ }
+
+ public void setSellprice(String sellprice) {
+ this.sellprice = sellprice == null ? null : sellprice.trim();
+ }
+
+ public String getProvider() {
+ return provider;
+ }
+
+ public void setProvider(String provider) {
+ this.provider = provider == null ? null : provider.trim();
+ }
+
+ public String getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(String discount) {
+ this.discount = discount == null ? null : discount.trim();
+ }
+
+ public String getKeyword() {
+ return keyword;
+ }
+
+ public void setKeyword(String keyword) {
+ this.keyword = keyword == null ? null : keyword.trim();
+ }
+
+ public String getCount() {
+ return count;
+ }
+
+ public void setCount(String count) {
+ this.count = count == null ? null : count.trim();
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public String getBrandid() {
+ return brandid;
+ }
+
+ public void setBrandid(String brandid) {
+ this.brandid = brandid == null ? null : brandid.trim();
+ }
+
+ public String getBrandname() {
+ return brandname;
+ }
+
+ public void setBrandname(String brandname) {
+ this.brandname = brandname == null ? null : brandname.trim();
+ }
+
+ public String getBrandcode() {
+ return brandcode;
+ }
+
+ public void setBrandcode(String brandcode) {
+ this.brandcode = brandcode == null ? null : brandcode.trim();
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model == null ? null : model.trim();
+ }
+
+ public String getSpecifications() {
+ return specifications;
+ }
+
+ public void setSpecifications(String specifications) {
+ this.specifications = specifications == null ? null : specifications.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductRelationViewModel.java
new file mode 100644
index 0000000..7a32c3e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductRelationViewModel.java
@@ -0,0 +1,126 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ProductSupplierProductRelationViewModel implements Serializable {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String supplierid;
+
+ private String suppliername;
+
+ private String suppliercode;
+
+ private String productid;
+
+ private String productname;
+
+ private String productcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getSupplierid() {
+ return supplierid;
+ }
+
+ public void setSupplierid(String supplierid) {
+ this.supplierid = supplierid == null ? null : supplierid.trim();
+ }
+
+ public String getSuppliername() {
+ return suppliername;
+ }
+
+ public void setSuppliername(String suppliername) {
+ this.suppliername = suppliername == null ? null : suppliername.trim();
+ }
+
+ public String getSuppliercode() {
+ return suppliercode;
+ }
+
+ public void setSuppliercode(String suppliercode) {
+ this.suppliercode = suppliercode == null ? null : suppliercode.trim();
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductsViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductsViewModel.java
new file mode 100644
index 0000000..a486c6f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierProductsViewModel.java
@@ -0,0 +1,26 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class ProductSupplierProductsViewModel implements Serializable {
+ private ProductSupplierViewModel supplier;
+
+ private List<ProductMasterViewModel> products;
+
+ public ProductSupplierViewModel getSupplier() {
+ return supplier;
+ }
+
+ public void setSupplier(ProductSupplierViewModel supplier) {
+ this.supplier = supplier;
+ }
+
+ public List<ProductMasterViewModel> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<ProductMasterViewModel> products) {
+ this.products = products;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierViewModel.java
new file mode 100644
index 0000000..c0ef939
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/product/ProductSupplierViewModel.java
@@ -0,0 +1,257 @@
+package com.farriver.bwf.data.transferobject.viewmodel.product;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ProductSupplierViewModel implements Serializable {
+ private String id;
+
+ private Integer status;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String logo;
+
+ private String contactor;
+
+ private String contactortitle;
+
+ private String telphone;
+
+ private String cellphone;
+
+ private String website;
+
+ private String email;
+
+ private String fax;
+
+ private String tax;
+
+ private String companyaddress;
+
+ private String registrationaddress;
+
+ private String businessscope;
+
+ private String bankname;
+
+ private String bankaccount;
+
+ private String creditrating;
+
+ private BigDecimal registrationcapital;
+
+ private Date establishmentdate;
+
+ private String description;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getLogo() {
+ return logo;
+ }
+
+ public void setLogo(String logo) {
+ this.logo = logo == null ? null : logo.trim();
+ }
+
+ public String getContactor() {
+ return contactor;
+ }
+
+ public void setContactor(String contactor) {
+ this.contactor = contactor == null ? null : contactor.trim();
+ }
+
+ public String getContactortitle() {
+ return contactortitle;
+ }
+
+ public void setContactortitle(String contactortitle) {
+ this.contactortitle = contactortitle == null ? null : contactortitle.trim();
+ }
+
+ public String getTelphone() {
+ return telphone;
+ }
+
+ public void setTelphone(String telphone) {
+ this.telphone = telphone == null ? null : telphone.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getWebsite() {
+ return website;
+ }
+
+ public void setWebsite(String website) {
+ this.website = website == null ? null : website.trim();
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax == null ? null : fax.trim();
+ }
+
+ public String getTax() {
+ return tax;
+ }
+
+ public void setTax(String tax) {
+ this.tax = tax == null ? null : tax.trim();
+ }
+
+ public String getCompanyaddress() {
+ return companyaddress;
+ }
+
+ public void setCompanyaddress(String companyaddress) {
+ this.companyaddress = companyaddress == null ? null : companyaddress.trim();
+ }
+
+ public String getRegistrationaddress() {
+ return registrationaddress;
+ }
+
+ public void setRegistrationaddress(String registrationaddress) {
+ this.registrationaddress = registrationaddress == null ? null : registrationaddress.trim();
+ }
+
+ public String getBusinessscope() {
+ return businessscope;
+ }
+
+ public void setBusinessscope(String businessscope) {
+ this.businessscope = businessscope == null ? null : businessscope.trim();
+ }
+
+ public String getBankname() {
+ return bankname;
+ }
+
+ public void setBankname(String bankname) {
+ this.bankname = bankname == null ? null : bankname.trim();
+ }
+
+ public String getBankaccount() {
+ return bankaccount;
+ }
+
+ public void setBankaccount(String bankaccount) {
+ this.bankaccount = bankaccount == null ? null : bankaccount.trim();
+ }
+
+ public String getCreditrating() {
+ return creditrating;
+ }
+
+ public void setCreditrating(String creditrating) {
+ this.creditrating = creditrating == null ? null : creditrating.trim();
+ }
+
+ public BigDecimal getRegistrationcapital() {
+ return registrationcapital;
+ }
+
+ public void setRegistrationcapital(BigDecimal registrationcapital) {
+ this.registrationcapital = registrationcapital;
+ }
+
+ public Date getEstablishmentdate() {
+ return establishmentdate;
+ }
+
+ public void setEstablishmentdate(Date establishmentdate) {
+ this.establishmentdate = establishmentdate;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionCategoryViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionCategoryViewModel.java
new file mode 100644
index 0000000..1039962
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionCategoryViewModel.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionCategoryViewModel implements Serializable {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+
+ private QuestionCategoryViewModel parent;
+
+ private List<QuestionCategoryViewModel> children;
+
+ public QuestionCategoryViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(QuestionCategoryViewModel parent) {
+ this.parent = parent;
+ }
+
+ public List<QuestionCategoryViewModel> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<QuestionCategoryViewModel> children) {
+ this.children = children;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionGradeSubjectsViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionGradeSubjectsViewModel.java
new file mode 100644
index 0000000..5300563
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionGradeSubjectsViewModel.java
@@ -0,0 +1,28 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationGradeViewModel;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class QuestionGradeSubjectsViewModel implements Serializable {
+ private OrganizationGradeViewModel grade;
+
+ private List<QuestionSubjectViewModel> subjects;
+
+ public OrganizationGradeViewModel getGrade() {
+ return grade;
+ }
+
+ public void setGrade(OrganizationGradeViewModel grade) {
+ this.grade = grade;
+ }
+
+ public List<QuestionSubjectViewModel> getSubjects() {
+ return subjects;
+ }
+
+ public void setSubjects(List<QuestionSubjectViewModel> subjects) {
+ this.subjects = subjects;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterAnswerViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterAnswerViewModel.java
new file mode 100644
index 0000000..d71eea1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterAnswerViewModel.java
@@ -0,0 +1,86 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class QuestionMasterAnswerViewModel implements Serializable {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String qkey;
+
+ private Integer sequenceno;
+
+ private String qvalue;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getQkey() {
+ return qkey;
+ }
+
+ public void setQkey(String qkey) {
+ this.qkey = qkey == null ? null : qkey.trim();
+ }
+
+ public Integer getSequenceno() {
+ return sequenceno;
+ }
+
+ public void setSequenceno(Integer sequenceno) {
+ this.sequenceno = sequenceno;
+ }
+
+ public String getQvalue() {
+ return qvalue;
+ }
+
+ public void setQvalue(String qvalue) {
+ this.qvalue = qvalue == null ? null : qvalue.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterOptionViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterOptionViewModel.java
new file mode 100644
index 0000000..ef48f4c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterOptionViewModel.java
@@ -0,0 +1,86 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class QuestionMasterOptionViewModel implements Serializable {
+ private String id;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String qkey;
+
+ private Integer sequenceno;
+
+ private String qvalue;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getQkey() {
+ return qkey;
+ }
+
+ public void setQkey(String qkey) {
+ this.qkey = qkey == null ? null : qkey.trim();
+ }
+
+ public Integer getSequenceno() {
+ return sequenceno;
+ }
+
+ public void setSequenceno(Integer sequenceno) {
+ this.sequenceno = sequenceno;
+ }
+
+ public String getQvalue() {
+ return qvalue;
+ }
+
+ public void setQvalue(String qvalue) {
+ this.qvalue = qvalue == null ? null : qvalue.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterViewModel.java
new file mode 100644
index 0000000..10674fe
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionMasterViewModel.java
@@ -0,0 +1,248 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionMasterViewModel implements Serializable {
+
+ private List<QuestionMasterAnswerViewModel> answers;
+ private List<QuestionMasterOptionViewModel> options;
+
+ public List<QuestionMasterAnswerViewModel> getAnswers() {
+ return answers;
+ }
+
+ public void setAnswers(List<QuestionMasterAnswerViewModel> answers) {
+ this.answers = answers;
+ }
+
+ public List<QuestionMasterOptionViewModel> getOptions() {
+ return options;
+ }
+
+ public void setOptions(List<QuestionMasterOptionViewModel> options) {
+ this.options = options;
+ }
+
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private Integer level;
+
+ private BigDecimal score;
+
+ private String stem;
+
+ private String answer;
+
+ private String casebody;
+
+ private String analysis;
+
+ private String knowledgepointid;
+
+ private String knowledgepointname;
+
+ private String knowledgepointcode;
+
+ public String getKnowledgepointid() {
+ return knowledgepointid;
+ }
+
+ public void setKnowledgepointid(String knowledgepointid) {
+ this.knowledgepointid = knowledgepointid;
+ }
+
+ public String getKnowledgepointname() {
+ return knowledgepointname;
+ }
+
+ public void setKnowledgepointname(String knowledgepointname) {
+ this.knowledgepointname = knowledgepointname;
+ }
+
+ public String getKnowledgepointcode() {
+ return knowledgepointcode;
+ }
+
+ public void setKnowledgepointcode(String knowledgepointcode) {
+ this.knowledgepointcode = knowledgepointcode;
+ }
+
+ public String getCasebody() {
+ return casebody;
+ }
+
+ public void setCasebody(String casebody) {
+ this.casebody = casebody;
+ }
+
+ public String getAnalysis() {
+ return analysis;
+ }
+
+ public void setAnalysis(String analysis) {
+ this.analysis = analysis;
+ }
+
+ public String getStem() {
+ return stem;
+ }
+
+ public void setStem(String stem) {
+ this.stem = stem == null ? null : stem.trim();
+ }
+
+ public String getAnswer() {
+ return answer;
+ }
+
+ public void setAnswer(String answer) {
+ this.answer = answer == null ? null : answer.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public BigDecimal getScore() {
+ return score;
+ }
+
+ public void setScore(BigDecimal score) {
+ this.score = score;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperCategoryViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperCategoryViewModel.java
new file mode 100644
index 0000000..1fcc8cb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperCategoryViewModel.java
@@ -0,0 +1,117 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionPaperCategoryViewModel implements Serializable {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String icon;
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+
+ private QuestionPaperCategoryViewModel parent;
+
+ private List<QuestionPaperCategoryViewModel> children;
+
+ public QuestionPaperCategoryViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(QuestionPaperCategoryViewModel parent) {
+ this.parent = parent;
+ }
+
+ public List<QuestionPaperCategoryViewModel> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<QuestionPaperCategoryViewModel> children) {
+ this.children = children;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionMasterRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionMasterRelationViewModel.java
new file mode 100644
index 0000000..8eb5203
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionMasterRelationViewModel.java
@@ -0,0 +1,166 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class QuestionPaperQuestionMasterRelationViewModel implements Serializable {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String questionid;
+
+ private String questionname;
+
+ private String questioncode;
+
+ private String paperid;
+
+ private String papername;
+
+ private String papercode;
+
+ private String quetioncategory;
+
+ private String subjectid;
+
+ private String subjectcode;
+
+ private String subjectname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getQuestionid() {
+ return questionid;
+ }
+
+ public void setQuestionid(String questionid) {
+ this.questionid = questionid == null ? null : questionid.trim();
+ }
+
+ public String getQuestionname() {
+ return questionname;
+ }
+
+ public void setQuestionname(String questionname) {
+ this.questionname = questionname == null ? null : questionname.trim();
+ }
+
+ public String getQuestioncode() {
+ return questioncode;
+ }
+
+ public void setQuestioncode(String questioncode) {
+ this.questioncode = questioncode == null ? null : questioncode.trim();
+ }
+
+ public String getPaperid() {
+ return paperid;
+ }
+
+ public void setPaperid(String paperid) {
+ this.paperid = paperid == null ? null : paperid.trim();
+ }
+
+ public String getPapername() {
+ return papername;
+ }
+
+ public void setPapername(String papername) {
+ this.papername = papername == null ? null : papername.trim();
+ }
+
+ public String getPapercode() {
+ return papercode;
+ }
+
+ public void setPapercode(String papercode) {
+ this.papercode = papercode == null ? null : papercode.trim();
+ }
+
+ public String getQuetioncategory() {
+ return quetioncategory;
+ }
+
+ public void setQuetioncategory(String quetioncategory) {
+ this.quetioncategory = quetioncategory == null ? null : quetioncategory.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionsViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionsViewModel.java
new file mode 100644
index 0000000..4e2b6ca
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperQuestionsViewModel.java
@@ -0,0 +1,36 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class QuestionPaperQuestionsViewModel implements Serializable {
+ private QuestionPaperViewModel paper;
+
+ private QuestionSubjectViewModel subject;
+
+ private List<QuestionMasterViewModel> questions;
+
+ public QuestionSubjectViewModel getSubject() {
+ return subject;
+ }
+
+ public void setSubject(QuestionSubjectViewModel subject) {
+ this.subject = subject;
+ }
+
+ public QuestionPaperViewModel getPaper() {
+ return paper;
+ }
+
+ public void setPaper(QuestionPaperViewModel paper) {
+ this.paper = paper;
+ }
+
+ public List<QuestionMasterViewModel> getQuestions() {
+ return questions;
+ }
+
+ public void setQuestions(List<QuestionMasterViewModel> questions) {
+ this.questions = questions;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperViewModel.java
new file mode 100644
index 0000000..1f0c479
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionPaperViewModel.java
@@ -0,0 +1,168 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class QuestionPaperViewModel implements Serializable {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ private String categoryid;
+
+ private String categoryname;
+
+ private BigDecimal price;
+
+ private Integer type;
+
+ private String coverimage;
+
+ public String getCoverimage() {
+ return coverimage;
+ }
+
+ public void setCoverimage(String coverimage) {
+ this.coverimage = coverimage;
+ }
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+
+ public String getCategoryid() {
+ return categoryid;
+ }
+
+ public void setCategoryid(String categoryid) {
+ this.categoryid = categoryid == null ? null : categoryid.trim();
+ }
+
+ public String getCategoryname() {
+ return categoryname;
+ }
+
+ public void setCategoryname(String categoryname) {
+ this.categoryname = categoryname == null ? null : categoryname.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectGradeRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectGradeRelationViewModel.java
new file mode 100644
index 0000000..3f0347a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectGradeRelationViewModel.java
@@ -0,0 +1,126 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class QuestionSubjectGradeRelationViewModel implements Serializable {
+ private String id;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String actionby;
+
+ private Boolean isdeleted;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectKnowledgePointViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectKnowledgePointViewModel.java
new file mode 100644
index 0000000..5bce0ca
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectKnowledgePointViewModel.java
@@ -0,0 +1,137 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+public class QuestionSubjectKnowledgePointViewModel implements Serializable {
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private String subjectid;
+
+ private String subjectname;
+
+ private String subjectcode;
+
+ private QuestionSubjectKnowledgePointViewModel parent;
+
+ private List<QuestionSubjectKnowledgePointViewModel> children;
+
+ public QuestionSubjectKnowledgePointViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(QuestionSubjectKnowledgePointViewModel parent) {
+ this.parent = parent;
+ }
+
+ public List<QuestionSubjectKnowledgePointViewModel> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<QuestionSubjectKnowledgePointViewModel> children) {
+ this.children = children;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSubjectid() {
+ return subjectid;
+ }
+
+ public void setSubjectid(String subjectid) {
+ this.subjectid = subjectid == null ? null : subjectid.trim();
+ }
+
+ public String getSubjectname() {
+ return subjectname;
+ }
+
+ public void setSubjectname(String subjectname) {
+ this.subjectname = subjectname == null ? null : subjectname.trim();
+ }
+
+ public String getSubjectcode() {
+ return subjectcode;
+ }
+
+ public void setSubjectcode(String subjectcode) {
+ this.subjectcode = subjectcode == null ? null : subjectcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectViewModel.java
new file mode 100644
index 0000000..237c4e7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/question/QuestionSubjectViewModel.java
@@ -0,0 +1,116 @@
+package com.farriver.bwf.data.transferobject.viewmodel.question;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class QuestionSubjectViewModel implements Serializable {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid;
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename;
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterRoleRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterRoleRelationViewModel.java
new file mode 100644
index 0000000..054d0f3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterRoleRelationViewModel.java
@@ -0,0 +1,116 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class AccountMasterRoleRelationViewModel {
+
+ private String id;
+
+ private String accountid;
+
+ private String accountcode;
+
+ private String accountname;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getAccountid() {
+ return accountid;
+ }
+
+ public void setAccountid(String accountid) {
+ this.accountid = accountid == null ? null : accountid.trim();
+ }
+
+ public String getAccountcode() {
+ return accountcode;
+ }
+
+ public void setAccountcode(String accountcode) {
+ this.accountcode = accountcode == null ? null : accountcode.trim();
+ }
+
+ public String getAccountname() {
+ return accountname;
+ }
+
+ public void setAccountname(String accountname) {
+ this.accountname = accountname == null ? null : accountname.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterViewModel.java
new file mode 100644
index 0000000..706d57f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/AccountMasterViewModel.java
@@ -0,0 +1,223 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import com.farriver.bwf.data.transferobject.viewmodel.om.OMOrganizationPositionViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.om.OMOrganizationViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.pa.PAEmployeeViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.pa.PAProfessionalTitleViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMenuViewModel;
+
+import java.util.Date;
+import java.util.List;
+
+public class AccountMasterViewModel {
+
+ private OMOrganizationViewModel organization;
+
+ private OMOrganizationPositionViewModel position;
+
+ private PAProfessionalTitleViewModel job;
+
+ private PAEmployeeViewModel employee;
+
+ public OMOrganizationViewModel getOrganization() {
+ return organization;
+ }
+
+ public void setOrganization(OMOrganizationViewModel organization) {
+ this.organization = organization;
+ }
+
+ public OMOrganizationPositionViewModel getPosition() {
+ return position;
+ }
+
+ public void setPosition(OMOrganizationPositionViewModel position) {
+ this.position = position;
+ }
+
+ public PAProfessionalTitleViewModel getJob() {
+ return job;
+ }
+
+ public void setJob(PAProfessionalTitleViewModel job) {
+ this.job = job;
+ }
+
+ public PAEmployeeViewModel getEmployee() {
+ return employee;
+ }
+
+ public void setEmployee(PAEmployeeViewModel employee) {
+ this.employee = employee;
+ }
+
+ private List<PermissionMasterViewModel> permissions;
+
+ private List<RoleMasterViewModel> roles;
+
+ private List<SystemMenuViewModel> menus;
+
+ public List<PermissionMasterViewModel> getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(List<PermissionMasterViewModel> permissions) {
+ this.permissions = permissions;
+ }
+
+ public List<SystemMenuViewModel> getMenus() {
+ return menus;
+ }
+
+ public void setMenus(List<SystemMenuViewModel> menus) {
+ this.menus = menus;
+ }
+
+ public List<RoleMasterViewModel> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<RoleMasterViewModel> roles) {
+ this.roles = roles;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private String email;
+
+ private String cellphone;
+
+ private String password;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/ApplicationMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/ApplicationMasterViewModel.java
new file mode 100644
index 0000000..df724d6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/ApplicationMasterViewModel.java
@@ -0,0 +1,115 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class ApplicationMasterViewModel {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String url;
+
+ private String location;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String icon;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location == null ? null : location.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon == null ? null : icon.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/OnlineUserViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/OnlineUserViewModel.java
new file mode 100644
index 0000000..1aaaa60
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/OnlineUserViewModel.java
@@ -0,0 +1,245 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class OnlineUserViewModel {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private Integer age;
+
+ private String email;
+
+ private String account;
+
+ private String password;
+
+ private String departmentid;
+
+ private String username;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PasswordViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PasswordViewModel.java
new file mode 100644
index 0000000..dd3f15b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PasswordViewModel.java
@@ -0,0 +1,77 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class PasswordViewModel {
+ private String accountid;
+ private String originalpassword;
+ private String newpassword;
+ private String confirmpassword;
+ private String randomcode;
+ private String cellphone;
+ private String email;
+ private String code;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getAccountid() {
+ return accountid;
+ }
+
+ public void setAccountid(String accountid) {
+ this.accountid = accountid;
+ }
+
+ public String getOriginalpassword() {
+ return originalpassword;
+ }
+
+ public void setOriginalpassword(String originalpassword) {
+ this.originalpassword = originalpassword;
+ }
+
+ public String getNewpassword() {
+ return newpassword;
+ }
+
+ public void setNewpassword(String newpassword) {
+ this.newpassword = newpassword;
+ }
+
+ public String getConfirmpassword() {
+ return confirmpassword;
+ }
+
+ public void setConfirmpassword(String confirmpassword) {
+ this.confirmpassword = confirmpassword;
+ }
+
+ public String getRandomcode() {
+ return randomcode;
+ }
+
+ public void setRandomcode(String randomcode) {
+ this.randomcode = randomcode;
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone;
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Permission.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Permission.java
new file mode 100644
index 0000000..6625a2d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Permission.java
@@ -0,0 +1,105 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class Permission {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String url;
+
+ private String systemcode;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getSystemcode() {
+ return systemcode;
+ }
+
+ public void setSystemcode(String systemcode) {
+ this.systemcode = systemcode == null ? null : systemcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroup.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroup.java
new file mode 100644
index 0000000..e7f429e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroup.java
@@ -0,0 +1,85 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class PermissionGroup {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String parentid;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupViewModel.java
new file mode 100644
index 0000000..3a56283
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupViewModel.java
@@ -0,0 +1,149 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import com.farriver.bwf.common.utilities.TreeBuilderNode;
+
+import java.util.Date;
+import java.util.List;
+
+public class PermissionGroupViewModel implements TreeBuilderNode {
+
+ private List<PermissionMasterWriteViewModel> permissions;
+
+ public List<PermissionMasterWriteViewModel> getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(List<PermissionMasterWriteViewModel> permissions) {
+ this.permissions = permissions;
+ }
+
+ private List<TreeBuilderNode> children;
+
+ public List<TreeBuilderNode> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<TreeBuilderNode> children) {
+ this.children = children;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ private PermissionGroupViewModel parent;
+
+ public PermissionGroupViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(PermissionGroupViewModel parent) {
+ this.parent = parent;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWithPermissions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWithPermissions.java
new file mode 100644
index 0000000..7572392
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWithPermissions.java
@@ -0,0 +1,15 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.List;
+
+public class PermissionGroupWithPermissions extends PermissionGroup {
+ private List<Permission> permissions;
+
+ public List<Permission> getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(List<Permission> permissions) {
+ this.permissions = permissions;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWriteViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWriteViewModel.java
new file mode 100644
index 0000000..b988fc0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionGroupWriteViewModel.java
@@ -0,0 +1,127 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+import java.util.List;
+
+public class PermissionGroupWriteViewModel {
+
+ private List<PermissionMasterWriteViewModel> permissions;
+
+ public List<PermissionMasterWriteViewModel> getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(List<PermissionMasterWriteViewModel> permissions) {
+ this.permissions = permissions;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterGroupRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterGroupRelationViewModel.java
new file mode 100644
index 0000000..3deaf4c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterGroupRelationViewModel.java
@@ -0,0 +1,115 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class PermissionMasterGroupRelationViewModel {
+ private String id;
+
+ private String permissionid;
+
+ private String permissioncode;
+
+ private String permissionname;
+
+ private String groupid;
+
+ private String groupcode;
+
+ private String groupname;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getPermissionid() {
+ return permissionid;
+ }
+
+ public void setPermissionid(String permissionid) {
+ this.permissionid = permissionid == null ? null : permissionid.trim();
+ }
+
+ public String getPermissioncode() {
+ return permissioncode;
+ }
+
+ public void setPermissioncode(String permissioncode) {
+ this.permissioncode = permissioncode == null ? null : permissioncode.trim();
+ }
+
+ public String getPermissionname() {
+ return permissionname;
+ }
+
+ public void setPermissionname(String permissionname) {
+ this.permissionname = permissionname == null ? null : permissionname.trim();
+ }
+
+ public String getGroupid() {
+ return groupid;
+ }
+
+ public void setGroupid(String groupid) {
+ this.groupid = groupid == null ? null : groupid.trim();
+ }
+
+ public String getGroupcode() {
+ return groupcode;
+ }
+
+ public void setGroupcode(String groupcode) {
+ this.groupcode = groupcode == null ? null : groupcode.trim();
+ }
+
+ public String getGroupname() {
+ return groupname;
+ }
+
+ public void setGroupname(String groupname) {
+ this.groupname = groupname == null ? null : groupname.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterViewModel.java
new file mode 100644
index 0000000..042b9f3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterViewModel.java
@@ -0,0 +1,169 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import com.farriver.bwf.common.utilities.TreeBuilderNode;
+
+import java.util.Date;
+import java.util.List;
+
+public class PermissionMasterViewModel implements TreeBuilderNode {
+
+ private List<TreeBuilderNode> children;
+
+ public List<TreeBuilderNode> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<TreeBuilderNode> children) {
+ this.children = children;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ private PermissionMasterViewModel parent;
+
+ public PermissionMasterViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(PermissionMasterViewModel parent) {
+ this.parent = parent;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String url;
+
+ private String applicationcode;
+
+ private Integer level;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getApplicationcode() {
+ return applicationcode;
+ }
+
+ public void setApplicationcode(String applicationcode) {
+ this.applicationcode = applicationcode == null ? null : applicationcode.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterWriteViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterWriteViewModel.java
new file mode 100644
index 0000000..5e27db2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionMasterWriteViewModel.java
@@ -0,0 +1,146 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class PermissionMasterWriteViewModel {
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String url;
+
+ private String applicationcode;
+
+ private Integer level;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+
+ public String getApplicationcode() {
+ return applicationcode;
+ }
+
+ public void setApplicationcode(String applicationcode) {
+ this.applicationcode = applicationcode == null ? null : applicationcode.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionPermissionGroup.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionPermissionGroup.java
new file mode 100644
index 0000000..e881772
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionPermissionGroup.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class PermissionPermissionGroup {
+ private String id;
+
+ private String permissionid;
+
+ private String permissiongroupid;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getPermissionid() {
+ return permissionid;
+ }
+
+ public void setPermissionid(String permissionid) {
+ this.permissionid = permissionid == null ? null : permissionid.trim();
+ }
+
+ public String getPermissiongroupid() {
+ return permissiongroupid;
+ }
+
+ public void setPermissiongroupid(String permissiongroupid) {
+ this.permissiongroupid = permissiongroupid == null ? null : permissiongroupid.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionViewModel.java
new file mode 100644
index 0000000..01901f9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/PermissionViewModel.java
@@ -0,0 +1,125 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class PermissionViewModel {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String url;
+
+ private String applicationcode;
+
+ private Integer level;
+
+ private String parentid;
+
+ public String getApplicationcode() {
+ return applicationcode;
+ }
+
+ public void setApplicationcode(String applicationcode) {
+ this.applicationcode = applicationcode;
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url == null ? null : url.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Role.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Role.java
new file mode 100644
index 0000000..b185753
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/Role.java
@@ -0,0 +1,85 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class Role {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private String parentid;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterPermissionGroupRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterPermissionGroupRelationViewModel.java
new file mode 100644
index 0000000..fe51012
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterPermissionGroupRelationViewModel.java
@@ -0,0 +1,116 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class RoleMasterPermissionGroupRelationViewModel {
+
+ private String id;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private String groupid;
+
+ private String groupcode;
+
+ private String groupname;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public String getGroupid() {
+ return groupid;
+ }
+
+ public void setGroupid(String groupid) {
+ this.groupid = groupid == null ? null : groupid.trim();
+ }
+
+ public String getGroupcode() {
+ return groupcode;
+ }
+
+ public void setGroupcode(String groupcode) {
+ this.groupcode = groupcode == null ? null : groupcode.trim();
+ }
+
+ public String getGroupname() {
+ return groupname;
+ }
+
+ public void setGroupname(String groupname) {
+ this.groupname = groupname == null ? null : groupname.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterViewModel.java
new file mode 100644
index 0000000..83cc7fb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterViewModel.java
@@ -0,0 +1,149 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import com.farriver.bwf.common.utilities.TreeBuilderNode;
+
+import java.util.Date;
+import java.util.List;
+
+public class RoleMasterViewModel implements TreeBuilderNode {
+
+ private List<PermissionGroupWriteViewModel> permissionGroups;
+
+ public List<PermissionGroupWriteViewModel> getPermissionGroups() {
+ return permissionGroups;
+ }
+
+ public void setPermissionGroups(List<PermissionGroupWriteViewModel> permissionGroups) {
+ this.permissionGroups = permissionGroups;
+ }
+
+ private List<TreeBuilderNode> children;
+
+ public List<TreeBuilderNode> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<TreeBuilderNode> children) {
+ this.children = children;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ private RoleMasterViewModel parent;
+
+ public RoleMasterViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(RoleMasterViewModel parent) {
+ this.parent = parent;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterWriteViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterWriteViewModel.java
new file mode 100644
index 0000000..faa13ec
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleMasterWriteViewModel.java
@@ -0,0 +1,127 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+import java.util.List;
+
+public class RoleMasterWriteViewModel {
+
+ private List<PermissionGroupWriteViewModel> permissionGroups;
+
+ public List<PermissionGroupWriteViewModel> getPermissionGroups() {
+ return permissionGroups;
+ }
+
+ public void setPermissionGroups(List<PermissionGroupWriteViewModel> permissionGroups) {
+ this.permissionGroups = permissionGroups;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ private String parentid;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode == null ? null : parentcode.trim();
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname == null ? null : parentname.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionGroup.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionGroup.java
new file mode 100644
index 0000000..2893c7f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionGroup.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class RolePermissionGroup {
+ private String id;
+
+ private String roleid;
+
+ private String permissiongroupid;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getPermissiongroupid() {
+ return permissiongroupid;
+ }
+
+ public void setPermissiongroupid(String permissiongroupid) {
+ this.permissiongroupid = permissiongroupid == null ? null : permissiongroupid.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionRoleView.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionRoleView.java
new file mode 100644
index 0000000..4986270
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RolePermissionRoleView.java
@@ -0,0 +1,73 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class RolePermissionRoleView {
+ private String permissionId;
+
+ private String permissionName;
+
+ private String authatomid;
+
+ private String permissiongroupId;
+
+ private String permissiongroupName;
+
+ private String roleId;
+
+ private String roleName;
+
+ public String getPermissionId() {
+ return permissionId;
+ }
+
+ public void setPermissionId(String permissionId) {
+ this.permissionId = permissionId == null ? null : permissionId.trim();
+ }
+
+ public String getPermissionName() {
+ return permissionName;
+ }
+
+ public void setPermissionName(String permissionName) {
+ this.permissionName = permissionName == null ? null : permissionName.trim();
+ }
+
+ public String getAuthatomid() {
+ return authatomid;
+ }
+
+ public void setAuthatomid(String authatomid) {
+ this.authatomid = authatomid == null ? null : authatomid.trim();
+ }
+
+ public String getPermissiongroupId() {
+ return permissiongroupId;
+ }
+
+ public void setPermissiongroupId(String permissiongroupId) {
+ this.permissiongroupId = permissiongroupId == null ? null : permissiongroupId.trim();
+ }
+
+ public String getPermissiongroupName() {
+ return permissiongroupName;
+ }
+
+ public void setPermissiongroupName(String permissiongroupName) {
+ this.permissiongroupName = permissiongroupName == null ? null : permissiongroupName.trim();
+ }
+
+ public String getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(String roleId) {
+ this.roleId = roleId == null ? null : roleId.trim();
+ }
+
+ public String getRoleName() {
+ return roleName;
+ }
+
+ public void setRoleName(String roleName) {
+ this.roleName = roleName == null ? null : roleName.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleViewModel.java
new file mode 100644
index 0000000..06995ba
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleViewModel.java
@@ -0,0 +1,86 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+import java.util.List;
+
+public class RoleViewModel {
+ private String id;
+
+ private String name;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private List<PermissionGroupViewModel> permissionGroups;
+
+ public List<PermissionGroupViewModel> getPermissionGroups() {
+ return permissionGroups;
+ }
+
+ public void setPermissionGroups(List<PermissionGroupViewModel> permissionGroups) {
+ this.permissionGroups = permissionGroups;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissionGroups.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissionGroups.java
new file mode 100644
index 0000000..d1e5656
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissionGroups.java
@@ -0,0 +1,16 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.List;
+
+public class RoleWithPermissionGroups extends Role {
+ public List<PermissionGroup> getPermissionGroups() {
+ return permissionGroups;
+ }
+
+ public void setPermissionGroups(List<PermissionGroup> permissionGroups) {
+ this.permissionGroups = permissionGroups;
+ }
+
+ private List<PermissionGroup> permissionGroups;
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissions.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissions.java
new file mode 100644
index 0000000..12cec8a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/RoleWithPermissions.java
@@ -0,0 +1,15 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.List;
+
+public class RoleWithPermissions extends Role {
+ public List<Permission> getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(List<Permission> permissions) {
+ this.permissions = permissions;
+ }
+
+ private List<Permission> permissions;
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasic.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasic.java
new file mode 100644
index 0000000..e78a016
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasic.java
@@ -0,0 +1,245 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class UserBasic {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private Integer age;
+
+ private String email;
+
+ private String account;
+
+ private String password;
+
+ private String departmentid;
+
+ private String username;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasicWithRoles.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasicWithRoles.java
new file mode 100644
index 0000000..741a11b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserBasicWithRoles.java
@@ -0,0 +1,15 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.List;
+
+public class UserBasicWithRoles extends UserBasic {
+ private List<Role> roles;
+
+ public List<Role> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<Role> roles) {
+ this.roles = roles;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserInfo.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserInfo.java
new file mode 100644
index 0000000..3330741
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserInfo.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class UserInfo {
+ private String id;
+
+ private String userbasicid;
+
+ private String idcard;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUserbasicid() {
+ return userbasicid;
+ }
+
+ public void setUserbasicid(String userbasicid) {
+ this.userbasicid = userbasicid == null ? null : userbasicid.trim();
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterRoleRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterRoleRelationViewModel.java
new file mode 100644
index 0000000..8d6627d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterRoleRelationViewModel.java
@@ -0,0 +1,116 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class UserMasterRoleRelationViewModel {
+
+ private String id;
+
+ private String userid;
+
+ private String usercode;
+
+ private String username;
+
+ private String roleid;
+
+ private String rolecode;
+
+ private String rolename;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid == null ? null : userid.trim();
+ }
+
+ public String getUsercode() {
+ return usercode;
+ }
+
+ public void setUsercode(String usercode) {
+ this.usercode = usercode == null ? null : usercode.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolecode() {
+ return rolecode;
+ }
+
+ public void setRolecode(String rolecode) {
+ this.rolecode = rolecode == null ? null : rolecode.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterViewModel.java
new file mode 100644
index 0000000..56eb4a9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserMasterViewModel.java
@@ -0,0 +1,299 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMenuViewModel;
+
+import java.util.Date;
+import java.util.List;
+
+public class UserMasterViewModel {
+
+ private List<PermissionMasterViewModel> permissions;
+
+ private List<RoleMasterViewModel> roles;
+
+ private List<SystemMenuViewModel> menus;
+
+ public List<PermissionMasterViewModel> getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(List<PermissionMasterViewModel> permissions) {
+ this.permissions = permissions;
+ }
+
+ public List<SystemMenuViewModel> getMenus() {
+ return menus;
+ }
+
+ public void setMenus(List<SystemMenuViewModel> menus) {
+ this.menus = menus;
+ }
+
+ public List<RoleMasterViewModel> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<RoleMasterViewModel> roles) {
+ this.roles = roles;
+ }
+
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Integer status;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private Integer age;
+
+ private Date birthday;
+
+ private String email;
+
+ private String account;
+
+ private String password;
+
+ private String departmentid;
+
+ private String username;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date updatetime;
+
+ private Integer type;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRole.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRole.java
new file mode 100644
index 0000000..a0b4c17
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRole.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import java.util.Date;
+
+public class UserRole {
+ private String id;
+
+ private String userbasicid;
+
+ private String roleid;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUserbasicid() {
+ return userbasicid;
+ }
+
+ public void setUserbasicid(String userbasicid) {
+ this.userbasicid = userbasicid == null ? null : userbasicid.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleView.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleView.java
new file mode 100644
index 0000000..ce27449
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleView.java
@@ -0,0 +1,73 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class UserRoleView {
+ private String userbasicid;
+
+ private String userbasicname;
+
+ private String username;
+
+ private String password;
+
+ private String roleid;
+
+ private String rolename;
+
+ private String roleremark;
+
+ public String getUserbasicid() {
+ return userbasicid;
+ }
+
+ public void setUserbasicid(String userbasicid) {
+ this.userbasicid = userbasicid == null ? null : userbasicid.trim();
+ }
+
+ public String getUserbasicname() {
+ return userbasicname;
+ }
+
+ public void setUserbasicname(String userbasicname) {
+ this.userbasicname = userbasicname == null ? null : userbasicname.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public String getRoleremark() {
+ return roleremark;
+ }
+
+ public void setRoleremark(String roleremark) {
+ this.roleremark = roleremark == null ? null : roleremark.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleViewViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleViewViewModel.java
new file mode 100644
index 0000000..056d79a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserRoleViewViewModel.java
@@ -0,0 +1,83 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class UserRoleViewViewModel {
+ private String userbasicid;
+
+ private String userbasicname;
+
+ private String username;
+
+ private String password;
+
+ private String roleid;
+
+ private String rolename;
+
+ private Integer roletype;
+
+ private String roleremark;
+
+ public String getUserbasicid() {
+ return userbasicid;
+ }
+
+ public void setUserbasicid(String userbasicid) {
+ this.userbasicid = userbasicid == null ? null : userbasicid.trim();
+ }
+
+ public String getUserbasicname() {
+ return userbasicname;
+ }
+
+ public void setUserbasicname(String userbasicname) {
+ this.userbasicname = userbasicname == null ? null : userbasicname.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public Integer getRoletype() {
+ return roletype;
+ }
+
+ public void setRoletype(Integer roletype) {
+ this.roletype = roletype;
+ }
+
+ public String getRoleremark() {
+ return roleremark;
+ }
+
+ public void setRoleremark(String roleremark) {
+ this.roleremark = roleremark == null ? null : roleremark.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserViewModel.java
new file mode 100644
index 0000000..d89041d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserViewModel.java
@@ -0,0 +1,288 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMenuViewModel;
+
+import java.util.Date;
+import java.util.List;
+
+public class UserViewModel {
+ private String id;
+
+ private String code;
+
+ private String name;
+
+ private Boolean gender;
+
+ private String idcard;
+
+ private Integer age;
+
+ private Date birthday;
+
+ private String email;
+
+ private Integer status;
+
+ private String account;
+
+ private String password;
+
+ private String departmentid;
+
+ private String username;
+
+ private String firstname;
+
+ private String lastname;
+
+ private String cellphone;
+
+ private String telephone;
+
+ private String address;
+
+ private String userface;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Integer type;
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ private List<RoleViewModel> roles;
+
+ public List<SystemMenuViewModel> getMenus() {
+ return menus;
+ }
+
+ public void setMenus(List<SystemMenuViewModel> menus) {
+ this.menus = menus;
+ }
+
+ private List<SystemMenuViewModel> menus;
+
+ public List<RoleViewModel> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<RoleViewModel> roles) {
+ this.roles = roles;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email == null ? null : email.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getFirstname() {
+ return firstname;
+ }
+
+ public void setFirstname(String firstname) {
+ this.firstname = firstname == null ? null : firstname.trim();
+ }
+
+ public String getLastname() {
+ return lastname;
+ }
+
+ public void setLastname(String lastname) {
+ this.lastname = lastname == null ? null : lastname.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone == null ? null : telephone.trim();
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address == null ? null : address.trim();
+ }
+
+ public String getUserface() {
+ return userface;
+ }
+
+ public void setUserface(String userface) {
+ this.userface = userface == null ? null : userface.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserWeChatViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserWeChatViewModel.java
new file mode 100644
index 0000000..ca489ad
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/UserWeChatViewModel.java
@@ -0,0 +1,103 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class UserWeChatViewModel {
+ private String openid;
+
+ private String nickname;
+
+ private Integer gender;
+
+ private String language;
+
+ private String city;
+
+ private String province;
+
+ private String country;
+
+ private String avatarurl;
+
+ private String cellphone;
+
+ private String token;
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid == null ? null : openid.trim();
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname == null ? null : nickname.trim();
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public void setGender(Integer gender) {
+ this.gender = gender;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language == null ? null : language.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getAvatarurl() {
+ return avatarurl;
+ }
+
+ public void setAvatarurl(String avatarurl) {
+ this.avatarurl = avatarurl == null ? null : avatarurl.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token == null ? null : token.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermission.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermission.java
new file mode 100644
index 0000000..07711fb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermission.java
@@ -0,0 +1,133 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class View_RolePermission {
+ private String roleId;
+
+ private String roleName;
+
+ private String roleCode;
+
+ private String roleParentid;
+
+ private String permissiongroupId;
+
+ private String permissiongroupName;
+
+ private String permissiongroupCode;
+
+ private String permissionId;
+
+ private String permissionName;
+
+ private String permissionCode;
+
+ private Integer permissionType;
+
+ private String permissionUrl;
+
+ private String systemcode;
+
+ public String getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(String roleId) {
+ this.roleId = roleId == null ? null : roleId.trim();
+ }
+
+ public String getRoleName() {
+ return roleName;
+ }
+
+ public void setRoleName(String roleName) {
+ this.roleName = roleName == null ? null : roleName.trim();
+ }
+
+ public String getRoleCode() {
+ return roleCode;
+ }
+
+ public void setRoleCode(String roleCode) {
+ this.roleCode = roleCode == null ? null : roleCode.trim();
+ }
+
+ public String getRoleParentid() {
+ return roleParentid;
+ }
+
+ public void setRoleParentid(String roleParentid) {
+ this.roleParentid = roleParentid == null ? null : roleParentid.trim();
+ }
+
+ public String getPermissiongroupId() {
+ return permissiongroupId;
+ }
+
+ public void setPermissiongroupId(String permissiongroupId) {
+ this.permissiongroupId = permissiongroupId == null ? null : permissiongroupId.trim();
+ }
+
+ public String getPermissiongroupName() {
+ return permissiongroupName;
+ }
+
+ public void setPermissiongroupName(String permissiongroupName) {
+ this.permissiongroupName = permissiongroupName == null ? null : permissiongroupName.trim();
+ }
+
+ public String getPermissiongroupCode() {
+ return permissiongroupCode;
+ }
+
+ public void setPermissiongroupCode(String permissiongroupCode) {
+ this.permissiongroupCode = permissiongroupCode == null ? null : permissiongroupCode.trim();
+ }
+
+ public String getPermissionId() {
+ return permissionId;
+ }
+
+ public void setPermissionId(String permissionId) {
+ this.permissionId = permissionId == null ? null : permissionId.trim();
+ }
+
+ public String getPermissionName() {
+ return permissionName;
+ }
+
+ public void setPermissionName(String permissionName) {
+ this.permissionName = permissionName == null ? null : permissionName.trim();
+ }
+
+ public String getPermissionCode() {
+ return permissionCode;
+ }
+
+ public void setPermissionCode(String permissionCode) {
+ this.permissionCode = permissionCode == null ? null : permissionCode.trim();
+ }
+
+ public Integer getPermissionType() {
+ return permissionType;
+ }
+
+ public void setPermissionType(Integer permissionType) {
+ this.permissionType = permissionType;
+ }
+
+ public String getPermissionUrl() {
+ return permissionUrl;
+ }
+
+ public void setPermissionUrl(String permissionUrl) {
+ this.permissionUrl = permissionUrl == null ? null : permissionUrl.trim();
+ }
+
+ public String getSystemcode() {
+ return systemcode;
+ }
+
+ public void setSystemcode(String systemcode) {
+ this.systemcode = systemcode == null ? null : systemcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermissionRole.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermissionRole.java
new file mode 100644
index 0000000..649581a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_RolePermissionRole.java
@@ -0,0 +1,73 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class View_RolePermissionRole {
+ private String permissionId;
+
+ private String permissionName;
+
+ private String authatomid;
+
+ private String permissiongroupId;
+
+ private String permissiongroupName;
+
+ private String roleId;
+
+ private String roleName;
+
+ public String getPermissionId() {
+ return permissionId;
+ }
+
+ public void setPermissionId(String permissionId) {
+ this.permissionId = permissionId == null ? null : permissionId.trim();
+ }
+
+ public String getPermissionName() {
+ return permissionName;
+ }
+
+ public void setPermissionName(String permissionName) {
+ this.permissionName = permissionName == null ? null : permissionName.trim();
+ }
+
+ public String getAuthatomid() {
+ return authatomid;
+ }
+
+ public void setAuthatomid(String authatomid) {
+ this.authatomid = authatomid == null ? null : authatomid.trim();
+ }
+
+ public String getPermissiongroupId() {
+ return permissiongroupId;
+ }
+
+ public void setPermissiongroupId(String permissiongroupId) {
+ this.permissiongroupId = permissiongroupId == null ? null : permissiongroupId.trim();
+ }
+
+ public String getPermissiongroupName() {
+ return permissiongroupName;
+ }
+
+ public void setPermissiongroupName(String permissiongroupName) {
+ this.permissiongroupName = permissiongroupName == null ? null : permissiongroupName.trim();
+ }
+
+ public String getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(String roleId) {
+ this.roleId = roleId == null ? null : roleId.trim();
+ }
+
+ public String getRoleName() {
+ return roleName;
+ }
+
+ public void setRoleName(String roleName) {
+ this.roleName = roleName == null ? null : roleName.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_UserRole.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_UserRole.java
new file mode 100644
index 0000000..3797a9a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/security/View_UserRole.java
@@ -0,0 +1,73 @@
+package com.farriver.bwf.data.transferobject.viewmodel.security;
+
+public class View_UserRole {
+ private String userbasicid;
+
+ private String userbasicname;
+
+ private String username;
+
+ private String password;
+
+ private String roleid;
+
+ private String rolename;
+
+ private String roleremark;
+
+ public String getUserbasicid() {
+ return userbasicid;
+ }
+
+ public void setUserbasicid(String userbasicid) {
+ this.userbasicid = userbasicid == null ? null : userbasicid.trim();
+ }
+
+ public String getUserbasicname() {
+ return userbasicname;
+ }
+
+ public void setUserbasicname(String userbasicname) {
+ this.userbasicname = userbasicname == null ? null : userbasicname.trim();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+
+ public String getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(String roleid) {
+ this.roleid = roleid == null ? null : roleid.trim();
+ }
+
+ public String getRolename() {
+ return rolename;
+ }
+
+ public void setRolename(String rolename) {
+ this.rolename = rolename == null ? null : rolename.trim();
+ }
+
+ public String getRoleremark() {
+ return roleremark;
+ }
+
+ public void setRoleremark(String roleremark) {
+ this.roleremark = roleremark == null ? null : roleremark.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartProductViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartProductViewModel.java
new file mode 100644
index 0000000..87dc0a7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartProductViewModel.java
@@ -0,0 +1,187 @@
+package com.farriver.bwf.data.transferobject.viewmodel.shopping;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ShoppingCartProductViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String productid;
+
+ private String productcode;
+
+ private String productname;
+
+ private Integer status;
+
+ private String color;
+
+ private String size;
+
+ private Integer count;
+
+ private String image;
+
+ private BigDecimal price;
+
+ private BigDecimal saleprice;
+
+ private String cartcode;
+
+ private String cartid;
+
+ private String vipuserid;
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getProductid() {
+ return productid;
+ }
+
+ public void setProductid(String productid) {
+ this.productid = productid == null ? null : productid.trim();
+ }
+
+ public String getProductcode() {
+ return productcode;
+ }
+
+ public void setProductcode(String productcode) {
+ this.productcode = productcode == null ? null : productcode.trim();
+ }
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname == null ? null : productname.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color == null ? null : color.trim();
+ }
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size == null ? null : size.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image == null ? null : image.trim();
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public BigDecimal getSaleprice() {
+ return saleprice;
+ }
+
+ public void setSaleprice(BigDecimal saleprice) {
+ this.saleprice = saleprice;
+ }
+
+ public String getCartcode() {
+ return cartcode;
+ }
+
+ public void setCartcode(String cartcode) {
+ this.cartcode = cartcode;
+ }
+
+ public String getCartid() {
+ return cartid;
+ }
+
+ public void setCartid(String cartid) {
+ this.cartid = cartid;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartViewModel.java
new file mode 100644
index 0000000..444fcbb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/shopping/ShoppingCartViewModel.java
@@ -0,0 +1,148 @@
+package com.farriver.bwf.data.transferobject.viewmodel.shopping;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public class ShoppingCartViewModel implements Serializable {
+ private List<ShoppingCartProductViewModel> products;
+
+ public List<ShoppingCartProductViewModel> getProducts() {
+ return products;
+ }
+
+ public void setProducts(List<ShoppingCartProductViewModel> products) {
+ this.products = products;
+ }
+
+ private String id;
+
+ private String code;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String vipuserid;
+
+ private String vipname;
+
+ private String vipphone;
+
+ private Integer vipdiamondtype;
+
+ private Integer viptype;
+
+ private String vippicture;
+
+ private BigDecimal vipcarddiscountrate;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getVipuserid() {
+ return vipuserid;
+ }
+
+ public void setVipuserid(String vipuserid) {
+ this.vipuserid = vipuserid == null ? null : vipuserid.trim();
+ }
+
+ public String getVipname() {
+ return vipname;
+ }
+
+ public void setVipname(String vipname) {
+ this.vipname = vipname == null ? null : vipname.trim();
+ }
+
+ public String getVipphone() {
+ return vipphone;
+ }
+
+ public void setVipphone(String vipphone) {
+ this.vipphone = vipphone == null ? null : vipphone.trim();
+ }
+
+ public Integer getVipdiamondtype() {
+ return vipdiamondtype;
+ }
+
+ public void setVipdiamondtype(Integer vipdiamondtype) {
+ this.vipdiamondtype = vipdiamondtype;
+ }
+
+ public Integer getViptype() {
+ return viptype;
+ }
+
+ public void setViptype(Integer viptype) {
+ this.viptype = viptype;
+ }
+
+ public String getVippicture() {
+ return vippicture;
+ }
+
+ public void setVippicture(String vippicture) {
+ this.vippicture = vippicture == null ? null : vippicture.trim();
+ }
+
+ public BigDecimal getVipcarddiscountrate() {
+ return vipcarddiscountrate;
+ }
+
+ public void setVipcarddiscountrate(BigDecimal vipcarddiscountrate) {
+ this.vipcarddiscountrate = vipcarddiscountrate;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/statistics/DashboardDataViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/statistics/DashboardDataViewModel.java
new file mode 100644
index 0000000..785c2b5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/statistics/DashboardDataViewModel.java
@@ -0,0 +1,34 @@
+package com.farriver.bwf.data.transferobject.viewmodel.statistics;
+
+public class DashboardDataViewModel {
+
+ private int departmentcount;
+
+ private int applicationcount;
+
+ private int employeecount;
+
+ public int getDepartmentcount() {
+ return departmentcount;
+ }
+
+ public void setDepartmentcount(int departmentcount) {
+ this.departmentcount = departmentcount;
+ }
+
+ public int getApplicationcount() {
+ return applicationcount;
+ }
+
+ public void setApplicationcount(int applicationcount) {
+ this.applicationcount = applicationcount;
+ }
+
+ public int getEmployeecount() {
+ return employeecount;
+ }
+
+ public void setEmployeecount(int employeecount) {
+ this.employeecount = employeecount;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemAuditTrailViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemAuditTrailViewModel.java
new file mode 100644
index 0000000..cfdfdde
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemAuditTrailViewModel.java
@@ -0,0 +1,135 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import java.util.Date;
+
+public class SystemAuditTrailViewModel {
+ private String id;
+
+ private String message;
+
+ private String actionby;
+
+ private String actiontype;
+
+ private String actionip;
+
+ private Date actiontime;
+
+ private String module;
+
+ private String beforetarget;
+
+ private String aftertarget;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message == null ? null : message.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public String getActiontype() {
+ return actiontype;
+ }
+
+ public void setActiontype(String actiontype) {
+ this.actiontype = actiontype == null ? null : actiontype.trim();
+ }
+
+ public String getActionip() {
+ return actionip;
+ }
+
+ public void setActionip(String actionip) {
+ this.actionip = actionip == null ? null : actionip.trim();
+ }
+
+ public Date getActiontime() {
+ return actiontime;
+ }
+
+ public void setActiontime(Date actiontime) {
+ this.actiontime = actiontime;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module == null ? null : module.trim();
+ }
+
+ public String getBeforetarget() {
+ return beforetarget;
+ }
+
+ public void setBeforetarget(String beforetarget) {
+ this.beforetarget = beforetarget == null ? null : beforetarget.trim();
+ }
+
+ public String getAftertarget() {
+ return aftertarget;
+ }
+
+ public void setAftertarget(String aftertarget) {
+ this.aftertarget = aftertarget == null ? null : aftertarget.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemConfigViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemConfigViewModel.java
new file mode 100644
index 0000000..dd56393
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemConfigViewModel.java
@@ -0,0 +1,95 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import java.util.Date;
+
+public class SystemConfigViewModel {
+ private String id;
+
+ private String key;
+
+ private String value;
+
+ private String level;
+
+ private String category;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key == null ? null : key.trim();
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value == null ? null : value.trim();
+ }
+
+ public String getLevel() {
+ return level;
+ }
+
+ public void setLevel(String level) {
+ this.level = level == null ? null : level.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemLogViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemLogViewModel.java
new file mode 100644
index 0000000..f658ebc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemLogViewModel.java
@@ -0,0 +1,70 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import java.util.Date;
+
+public class SystemLogViewModel {
+ private String id;
+ private String source;
+ private String module;
+ private String logtype;
+ private String message;
+ private Object details;
+ private Date actiontime;
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getLogtype() {
+ return logtype;
+ }
+
+ public void setLogtype(String logtype) {
+ this.logtype = logtype;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Object getDetails() {
+ return details;
+ }
+
+ public void setDetails(Object details) {
+ this.details = details;
+ }
+
+ public Date getActiontime() {
+ return actiontime;
+ }
+
+ public void setActiontime(Date actiontime) {
+ this.actiontime = actiontime;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMailLogViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMailLogViewModel.java
new file mode 100644
index 0000000..1db41ec
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMailLogViewModel.java
@@ -0,0 +1,115 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import java.util.Date;
+
+public class SystemMailLogViewModel {
+ private String id;
+
+ private String uid;
+
+ private Integer status;
+
+ private String routekey;
+
+ private String exchange;
+
+ private Integer count;
+
+ private Date trytime;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String username;
+
+ private String account;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid == null ? null : uid.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getRoutekey() {
+ return routekey;
+ }
+
+ public void setRoutekey(String routekey) {
+ this.routekey = routekey == null ? null : routekey.trim();
+ }
+
+ public String getExchange() {
+ return exchange;
+ }
+
+ public void setExchange(String exchange) {
+ this.exchange = exchange == null ? null : exchange.trim();
+ }
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public void setCount(Integer count) {
+ this.count = count;
+ }
+
+ public Date getTrytime() {
+ return trytime;
+ }
+
+ public void setTrytime(Date trytime) {
+ this.trytime = trytime;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username == null ? null : username.trim();
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public void setAccount(String account) {
+ this.account = account == null ? null : account.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuViewModel.java
new file mode 100644
index 0000000..984e250
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuViewModel.java
@@ -0,0 +1,209 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import com.farriver.bwf.common.utilities.TreeBuilderNode;
+
+import java.util.Date;
+import java.util.List;
+
+public class SystemMenuViewModel implements TreeBuilderNode {
+
+ private List<TreeBuilderNode> children;
+
+ public List<TreeBuilderNode> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<TreeBuilderNode> children) {
+ this.children = children;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ private SystemMenuViewModel parent;
+
+ public SystemMenuViewModel getParent() {
+ return parent;
+ }
+
+ public void setParent(SystemMenuViewModel parent) {
+ this.parent = parent;
+ }
+
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private String code;
+
+ private String url;
+
+ private String path;
+
+ private String component;
+
+ private Integer type;
+
+ private String icon;
+
+ private Boolean keepalive;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String languagekey;
+
+ private Integer level;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode;
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname;
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getComponent() {
+ return component;
+ }
+
+ public void setComponent(String component) {
+ this.component = component;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+
+ public Boolean getKeepalive() {
+ return keepalive;
+ }
+
+ public void setKeepalive(Boolean keepalive) {
+ this.keepalive = keepalive;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getLanguagekey() {
+ return languagekey;
+ }
+
+ public void setLanguagekey(String languagekey) {
+ this.languagekey = languagekey == null ? null : languagekey.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuWriteViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuWriteViewModel.java
new file mode 100644
index 0000000..9aa85e0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemMenuWriteViewModel.java
@@ -0,0 +1,176 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import java.util.Date;
+
+public class SystemMenuWriteViewModel {
+
+ private String id;
+
+ private String parentid;
+
+ private String name;
+
+ private String url;
+
+ private String path;
+
+ private String component;
+
+ private Integer type;
+
+ private String icon;
+
+ private Boolean keepalive;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String languagekey;
+
+ private Integer level;
+
+ private String parentcode;
+
+ private String parentname;
+
+ public String getParentcode() {
+ return parentcode;
+ }
+
+ public void setParentcode(String parentcode) {
+ this.parentcode = parentcode;
+ }
+
+ public String getParentname() {
+ return parentname;
+ }
+
+ public void setParentname(String parentname) {
+ this.parentname = parentname;
+ }
+
+ public String getParentid() {
+ return parentid;
+ }
+
+ public void setParentid(String parentid) {
+ this.parentid = parentid == null ? null : parentid.trim();
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getComponent() {
+ return component;
+ }
+
+ public void setComponent(String component) {
+ this.component = component;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+
+ public Boolean getKeepalive() {
+ return keepalive;
+ }
+
+ public void setKeepalive(Boolean keepalive) {
+ this.keepalive = keepalive;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getLanguagekey() {
+ return languagekey;
+ }
+
+ public void setLanguagekey(String languagekey) {
+ this.languagekey = languagekey == null ? null : languagekey.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemNotificationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemNotificationViewModel.java
new file mode 100644
index 0000000..cb2a08c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SystemNotificationViewModel.java
@@ -0,0 +1,155 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import java.util.Date;
+
+public class SystemNotificationViewModel {
+ private String id;
+
+ private String title;
+
+ private String department;
+
+ private String category;
+
+ private Integer nlevel;
+
+ private String keywords;
+
+ private String actionby;
+
+ private Integer status;
+
+ private String publisher;
+
+ private Date publishdatetime;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String context;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title == null ? null : title.trim();
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department == null ? null : department.trim();
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category == null ? null : category.trim();
+ }
+
+ public Integer getNlevel() {
+ return nlevel;
+ }
+
+ public void setNlevel(Integer nlevel) {
+ this.nlevel = nlevel;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords == null ? null : keywords.trim();
+ }
+
+ public String getActionby() {
+ return actionby;
+ }
+
+ public void setActionby(String actionby) {
+ this.actionby = actionby == null ? null : actionby.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getPublisher() {
+ return publisher;
+ }
+
+ public void setPublisher(String publisher) {
+ this.publisher = publisher == null ? null : publisher.trim();
+ }
+
+ public Date getPublishdatetime() {
+ return publishdatetime;
+ }
+
+ public void setPublishdatetime(Date publishdatetime) {
+ this.publishdatetime = publishdatetime;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setContext(String context) {
+ this.context = context == null ? null : context.trim();
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SytemLog.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SytemLog.java
new file mode 100644
index 0000000..468ceed
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/system/SytemLog.java
@@ -0,0 +1,70 @@
+package com.farriver.bwf.data.transferobject.viewmodel.system;
+
+import java.util.Date;
+
+public class SytemLog {
+ private String id;
+ private String source;
+ private String module;
+ private String logtype;
+ private String message;
+ private Object details;
+ private Date actiontime;
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getLogtype() {
+ return logtype;
+ }
+
+ public void setLogtype(String logtype) {
+ this.logtype = logtype;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Object getDetails() {
+ return details;
+ }
+
+ public void setDetails(Object details) {
+ this.details = details;
+ }
+
+ public Date getActiontime() {
+ return actiontime;
+ }
+
+ public void setActiontime(Date actiontime) {
+ this.actiontime = actiontime;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponActiveViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponActiveViewModel.java
new file mode 100644
index 0000000..3bcf5d9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponActiveViewModel.java
@@ -0,0 +1,217 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPCouponActiveViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private Integer type;
+
+ private String activityname;
+
+ private String code;
+
+ private String distributioncondition;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal discountrate;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date issuingtime;
+
+ private Date usagetime;
+
+ private String orderno;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getActivityname() {
+ return activityname;
+ }
+
+ public void setActivityname(String activityname) {
+ this.activityname = activityname == null ? null : activityname.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getDistributioncondition() {
+ return distributioncondition;
+ }
+
+ public void setDistributioncondition(String distributioncondition) {
+ this.distributioncondition = distributioncondition == null ? null : distributioncondition.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getIssuingtime() {
+ return issuingtime;
+ }
+
+ public void setIssuingtime(Date issuingtime) {
+ this.issuingtime = issuingtime;
+ }
+
+ public Date getUsagetime() {
+ return usagetime;
+ }
+
+ public void setUsagetime(Date usagetime) {
+ this.usagetime = usagetime;
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponHistoryViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponHistoryViewModel.java
new file mode 100644
index 0000000..f62ceb3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPCouponHistoryViewModel.java
@@ -0,0 +1,217 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPCouponHistoryViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private Integer status;
+
+ private Integer type;
+
+ private String activityname;
+
+ private String code;
+
+ private String distributioncondition;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal discountrate;
+
+ private Date validdatefrom;
+
+ private Date validdateto;
+
+ private Date issuingtime;
+
+ private Date usagetime;
+
+ private String orderno;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getActivityname() {
+ return activityname;
+ }
+
+ public void setActivityname(String activityname) {
+ this.activityname = activityname == null ? null : activityname.trim();
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getDistributioncondition() {
+ return distributioncondition;
+ }
+
+ public void setDistributioncondition(String distributioncondition) {
+ this.distributioncondition = distributioncondition == null ? null : distributioncondition.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public Date getValiddatefrom() {
+ return validdatefrom;
+ }
+
+ public void setValiddatefrom(Date validdatefrom) {
+ this.validdatefrom = validdatefrom;
+ }
+
+ public Date getValiddateto() {
+ return validdateto;
+ }
+
+ public void setValiddateto(Date validdateto) {
+ this.validdateto = validdateto;
+ }
+
+ public Date getIssuingtime() {
+ return issuingtime;
+ }
+
+ public void setIssuingtime(Date issuingtime) {
+ this.issuingtime = issuingtime;
+ }
+
+ public Date getUsagetime() {
+ return usagetime;
+ }
+
+ public void setUsagetime(Date usagetime) {
+ this.usagetime = usagetime;
+ }
+
+ public String getOrderno() {
+ return orderno;
+ }
+
+ public void setOrderno(String orderno) {
+ this.orderno = orderno == null ? null : orderno.trim();
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPDepositActivityViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPDepositActivityViewModel.java
new file mode 100644
index 0000000..4eb5a84
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPDepositActivityViewModel.java
@@ -0,0 +1,137 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPDepositActivityViewModel implements Serializable {
+ private String id;
+
+ private Integer status;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private String description;
+
+ private BigDecimal amount;
+
+ private BigDecimal discount;
+
+ private BigDecimal discountrate;
+
+ private BigDecimal present;
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code == null ? null : code.trim();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description == null ? null : description.trim();
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public BigDecimal getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(BigDecimal discount) {
+ this.discount = discount;
+ }
+
+ public BigDecimal getPresent() {
+ return present;
+ }
+
+ public void setPresent(BigDecimal present) {
+ this.present = present;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterOrganizationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterOrganizationViewModel.java
new file mode 100644
index 0000000..6e28ac8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterOrganizationViewModel.java
@@ -0,0 +1,246 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class VIPMasterOrganizationViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private String organizationid;
+
+ private String organizationname;
+
+ private String organizationcode;
+
+ private String departmentid;
+
+ private String departmentname;
+
+ private String departmentcode;
+
+ private String majorid;
+
+ private String majorname;
+
+ private String majorcode;
+
+ private String gradeid;
+
+ private String gradename;
+
+ private String gradecode;
+
+ private String classid;
+
+ private String classname;
+
+ private String classcode;
+
+ private Integer updatecount;
+
+ public Integer getUpdatecount() {
+ return updatecount;
+ }
+
+ public void setUpdatecount(Integer updatecount) {
+ this.updatecount = updatecount;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public String getOrganizationid() {
+ return organizationid;
+ }
+
+ public void setOrganizationid(String organizationid) {
+ this.organizationid = organizationid == null ? null : organizationid.trim();
+ }
+
+ public String getOrganizationname() {
+ return organizationname;
+ }
+
+ public void setOrganizationname(String organizationname) {
+ this.organizationname = organizationname == null ? null : organizationname.trim();
+ }
+
+ public String getOrganizationcode() {
+ return organizationcode;
+ }
+
+ public void setOrganizationcode(String organizationcode) {
+ this.organizationcode = organizationcode == null ? null : organizationcode.trim();
+ }
+
+ public String getDepartmentid() {
+ return departmentid;
+ }
+
+ public void setDepartmentid(String departmentid) {
+ this.departmentid = departmentid == null ? null : departmentid.trim();
+ }
+
+ public String getDepartmentname() {
+ return departmentname;
+ }
+
+ public void setDepartmentname(String departmentname) {
+ this.departmentname = departmentname == null ? null : departmentname.trim();
+ }
+
+ public String getDepartmentcode() {
+ return departmentcode;
+ }
+
+ public void setDepartmentcode(String departmentcode) {
+ this.departmentcode = departmentcode == null ? null : departmentcode.trim();
+ }
+
+ public String getMajorid() {
+ return majorid;
+ }
+
+ public void setMajorid(String majorid) {
+ this.majorid = majorid == null ? null : majorid.trim();
+ }
+
+ public String getMajorname() {
+ return majorname;
+ }
+
+ public void setMajorname(String majorname) {
+ this.majorname = majorname == null ? null : majorname.trim();
+ }
+
+ public String getMajorcode() {
+ return majorcode;
+ }
+
+ public void setMajorcode(String majorcode) {
+ this.majorcode = majorcode == null ? null : majorcode.trim();
+ }
+
+ public String getGradeid() {
+ return gradeid;
+ }
+
+ public void setGradeid(String gradeid) {
+ this.gradeid = gradeid == null ? null : gradeid.trim();
+ }
+
+ public String getGradename() {
+ return gradename;
+ }
+
+ public void setGradename(String gradename) {
+ this.gradename = gradename == null ? null : gradename.trim();
+ }
+
+ public String getGradecode() {
+ return gradecode;
+ }
+
+ public void setGradecode(String gradecode) {
+ this.gradecode = gradecode == null ? null : gradecode.trim();
+ }
+
+ public String getClassid() {
+ return classid;
+ }
+
+ public void setClassid(String classid) {
+ this.classid = classid == null ? null : classid.trim();
+ }
+
+ public String getClassname() {
+ return classname;
+ }
+
+ public void setClassname(String classname) {
+ this.classname = classname == null ? null : classname.trim();
+ }
+
+ public String getClasscode() {
+ return classcode;
+ }
+
+ public void setClasscode(String classcode) {
+ this.classcode = classcode == null ? null : classcode.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterPaperRelationViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterPaperRelationViewModel.java
new file mode 100644
index 0000000..dfda680
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterPaperRelationViewModel.java
@@ -0,0 +1,147 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterPaperRelationViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private String paperid;
+
+ private String papercode;
+
+ private String papername;
+
+ private Date buyedtime;
+
+ private BigDecimal amount;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public String getPaperid() {
+ return paperid;
+ }
+
+ public void setPaperid(String paperid) {
+ this.paperid = paperid == null ? null : paperid.trim();
+ }
+
+ public String getPapercode() {
+ return papercode;
+ }
+
+ public void setPapercode(String papercode) {
+ this.papercode = papercode == null ? null : papercode.trim();
+ }
+
+ public String getPapername() {
+ return papername;
+ }
+
+ public void setPapername(String papername) {
+ this.papername = papername == null ? null : papername.trim();
+ }
+
+ public Date getBuyedtime() {
+ return buyedtime;
+ }
+
+ public void setBuyedtime(Date buyedtime) {
+ this.buyedtime = buyedtime;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterViewModel.java
new file mode 100644
index 0000000..ae3f622
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterViewModel.java
@@ -0,0 +1,237 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String code;
+
+ private String name;
+
+ private Integer diamondtype;
+
+ private Integer type;
+
+ private BigDecimal discountrate;
+
+ private String idcard;
+
+ private Boolean gender;
+
+ private Date birthday;
+
+ private String openid;
+
+ private String nickname;
+
+ private String language;
+
+ private String city;
+
+ private String province;
+
+ private String country;
+
+ private String avatarurl;
+
+ private String cellphone;
+
+ private String token;
+
+ private String password;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getDiamondtype() {
+ return diamondtype;
+ }
+
+ public void setDiamondtype(Integer diamondtype) {
+ this.diamondtype = diamondtype;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid == null ? null : openid.trim();
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname == null ? null : nickname.trim();
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language == null ? null : language.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getAvatarurl() {
+ return avatarurl;
+ }
+
+ public void setAvatarurl(String avatarurl) {
+ this.avatarurl = avatarurl == null ? null : avatarurl.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token == null ? null : token.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletChargeViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletChargeViewModel.java
new file mode 100644
index 0000000..6ec99a1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletChargeViewModel.java
@@ -0,0 +1,27 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+public class VIPMasterWalletChargeViewModel implements Serializable {
+
+ private String masterid;
+
+ private BigDecimal amount;
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletRechargeViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletRechargeViewModel.java
new file mode 100644
index 0000000..3fe301f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletRechargeViewModel.java
@@ -0,0 +1,27 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+public class VIPMasterWalletRechargeViewModel implements Serializable {
+
+ private String masterid;
+
+ private BigDecimal amount;
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletViewModel.java
new file mode 100644
index 0000000..de42c5d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/viewmodel/vip/VIPMasterWalletViewModel.java
@@ -0,0 +1,107 @@
+package com.farriver.bwf.data.transferobject.viewmodel.vip;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class VIPMasterWalletViewModel implements Serializable {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String masterid;
+
+ private String mastercode;
+
+ private String mastername;
+
+ private BigDecimal balance;
+
+ private Integer status;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getMasterid() {
+ return masterid;
+ }
+
+ public void setMasterid(String masterid) {
+ this.masterid = masterid == null ? null : masterid.trim();
+ }
+
+ public String getMastercode() {
+ return mastercode;
+ }
+
+ public void setMastercode(String mastercode) {
+ this.mastercode = mastercode == null ? null : mastercode.trim();
+ }
+
+ public String getMastername() {
+ return mastername;
+ }
+
+ public void setMastername(String mastername) {
+ this.mastername = mastername == null ? null : mastername.trim();
+ }
+
+ public BigDecimal getBalance() {
+ return balance;
+ }
+
+ public void setBalance(BigDecimal balance) {
+ this.balance = balance;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatTokenModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatTokenModel.java
new file mode 100644
index 0000000..dd337eb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatTokenModel.java
@@ -0,0 +1,40 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class EnterpriseWeChatTokenModel {
+ private String errcode;
+ private String errmsg;
+ private String access_token;
+ private String expires_in;
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+
+ public String getAccess_token() {
+ return access_token;
+ }
+
+ public void setAccess_token(String access_token) {
+ this.access_token = access_token;
+ }
+
+ public String getExpires_in() {
+ return expires_in;
+ }
+
+ public void setExpires_in(String expires_in) {
+ this.expires_in = expires_in;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserIdModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserIdModel.java
new file mode 100644
index 0000000..b882189
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserIdModel.java
@@ -0,0 +1,43 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class EnterpriseWeChatUserIdModel {
+ private String errcode;
+ private String errmsg;
+ private String UserId;
+ private String DeviceId;
+ //private String OpenId;
+ //private String external_userid;
+
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+
+ public String getUserId() {
+ return UserId;
+ }
+
+ public void setUserId(String userId) {
+ UserId = userId;
+ }
+
+ public String getDeviceId() {
+ return DeviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ DeviceId = deviceId;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserInfoModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserInfoModel.java
new file mode 100644
index 0000000..b439786
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/EnterpriseWeChatUserInfoModel.java
@@ -0,0 +1,234 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class EnterpriseWeChatUserInfoModel {
+ private String errcode;
+ private String errmsg;
+ private String userid;
+ private String name;
+ private int[] department;
+ private String position;
+ private String mobile;
+ private String gender;
+ private String email;
+ private String avatar;
+ private String status;
+ private String isleader;
+ public Extattr extattr;
+
+ //private String english_name ;
+
+ private String telephone;
+ public int enable;
+ public int hide_mobile;
+ public int[] order;
+
+ public ExternalProfile external_profile;
+
+ public int main_department;
+ private String qr_code;
+ private String alias;
+ public int[] is_leader_in_dept;
+ private String address;
+ private String thumb_avatar;
+ private String[] direct_leader;
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+
+ public String getUserid() {
+ return userid;
+ }
+
+ public void setUserid(String userid) {
+ this.userid = userid;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int[] getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(int[] department) {
+ this.department = department;
+ }
+
+ public String getPosition() {
+ return position;
+ }
+
+ public void setPosition(String position) {
+ this.position = position;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getAvatar() {
+ return avatar;
+ }
+
+ public void setAvatar(String avatar) {
+ this.avatar = avatar;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getIsleader() {
+ return isleader;
+ }
+
+ public void setIsleader(String isleader) {
+ this.isleader = isleader;
+ }
+
+ public Extattr getExtattr() {
+ return extattr;
+ }
+
+ public void setExtattr(Extattr extattr) {
+ this.extattr = extattr;
+ }
+
+ public String getTelephone() {
+ return telephone;
+ }
+
+ public void setTelephone(String telephone) {
+ this.telephone = telephone;
+ }
+
+ public int getEnable() {
+ return enable;
+ }
+
+ public void setEnable(int enable) {
+ this.enable = enable;
+ }
+
+ public int getHide_mobile() {
+ return hide_mobile;
+ }
+
+ public void setHide_mobile(int hide_mobile) {
+ this.hide_mobile = hide_mobile;
+ }
+
+ public int[] getOrder() {
+ return order;
+ }
+
+ public void setOrder(int[] order) {
+ this.order = order;
+ }
+
+ public ExternalProfile getExternal_profile() {
+ return external_profile;
+ }
+
+ public void setExternal_profile(ExternalProfile external_profile) {
+ this.external_profile = external_profile;
+ }
+
+ public int getMain_department() {
+ return main_department;
+ }
+
+ public void setMain_department(int main_department) {
+ this.main_department = main_department;
+ }
+
+ public String getQr_code() {
+ return qr_code;
+ }
+
+ public void setQr_code(String qr_code) {
+ this.qr_code = qr_code;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public int[] getIs_leader_in_dept() {
+ return is_leader_in_dept;
+ }
+
+ public void setIs_leader_in_dept(int[] is_leader_in_dept) {
+ this.is_leader_in_dept = is_leader_in_dept;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getThumb_avatar() {
+ return thumb_avatar;
+ }
+
+ public void setThumb_avatar(String thumb_avatar) {
+ this.thumb_avatar = thumb_avatar;
+ }
+
+ public String[] getDirect_leader() {
+ return direct_leader;
+ }
+
+ public void setDirect_leader(String[] direct_leader) {
+ this.direct_leader = direct_leader;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/Extattr.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/Extattr.java
new file mode 100644
index 0000000..bd5a77e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/Extattr.java
@@ -0,0 +1,14 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+
+public class Extattr {
+ private Object[] attrs;
+
+ public Object[] getAttrs() {
+ return attrs;
+ }
+
+ public void setAttrs(Object[] attrs) {
+ this.attrs = attrs;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/ExternalProfile.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/ExternalProfile.java
new file mode 100644
index 0000000..b628611
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/ExternalProfile.java
@@ -0,0 +1,25 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class ExternalProfile {
+ private Object[] external_attr;
+ private String external_corp_name;
+
+ //private WechatChannels wechat_channels;
+
+
+ public Object[] getExternal_attr() {
+ return external_attr;
+ }
+
+ public void setExternal_attr(Object[] external_attr) {
+ this.external_attr = external_attr;
+ }
+
+ public String getExternal_corp_name() {
+ return external_corp_name;
+ }
+
+ public void setExternal_corp_name(String external_corp_name) {
+ this.external_corp_name = external_corp_name;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAccessToken.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAccessToken.java
new file mode 100644
index 0000000..9467d00
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAccessToken.java
@@ -0,0 +1,49 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class GongZhongHaoAccessToken {
+ private String access_token;
+ private String expires_in;
+ private String refresh_token;
+ private String openid;
+ private String scope;
+
+ public String getAccess_token() {
+ return access_token;
+ }
+
+ public void setAccess_token(String access_token) {
+ this.access_token = access_token;
+ }
+
+ public String getExpires_in() {
+ return expires_in;
+ }
+
+ public void setExpires_in(String expires_in) {
+ this.expires_in = expires_in;
+ }
+
+ public String getRefresh_token() {
+ return refresh_token;
+ }
+
+ public void setRefresh_token(String refresh_token) {
+ this.refresh_token = refresh_token;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ public void setScope(String scope) {
+ this.scope = scope;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAppAccessToken.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAppAccessToken.java
new file mode 100644
index 0000000..6a73e3e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaoAppAccessToken.java
@@ -0,0 +1,22 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class GongZhongHaoAppAccessToken {
+ private String access_token;
+ private String expires_in;
+
+ public String getAccess_token() {
+ return access_token;
+ }
+
+ public void setAccess_token(String access_token) {
+ this.access_token = access_token;
+ }
+
+ public String getExpires_in() {
+ return expires_in;
+ }
+
+ public void setExpires_in(String expires_in) {
+ this.expires_in = expires_in;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaojsapi_ticket.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaojsapi_ticket.java
new file mode 100644
index 0000000..63a4b2b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/GongZhongHaojsapi_ticket.java
@@ -0,0 +1,40 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class GongZhongHaojsapi_ticket {
+ private String errcode;
+ private String errmsg;
+ private String ticket;
+ private String expires_in;
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+
+ public String getTicket() {
+ return ticket;
+ }
+
+ public void setTicket(String ticket) {
+ this.ticket = ticket;
+ }
+
+ public String getExpires_in() {
+ return expires_in;
+ }
+
+ public void setExpires_in(String expires_in) {
+ this.expires_in = expires_in;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/JsapiTicket.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/JsapiTicket.java
new file mode 100644
index 0000000..fdadf33
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/JsapiTicket.java
@@ -0,0 +1,41 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+
+public class JsapiTicket {
+ private String errcode;
+ private String errmsg;
+ private String ticket;
+ private int expires_in;
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+
+ public String getTicket() {
+ return ticket;
+ }
+
+ public void setTicket(String ticket) {
+ this.ticket = ticket;
+ }
+
+ public int getExpires_in() {
+ return expires_in;
+ }
+
+ public void setExpires_in(int expires_in) {
+ this.expires_in = expires_in;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramAccessToken.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramAccessToken.java
new file mode 100644
index 0000000..e428e8d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramAccessToken.java
@@ -0,0 +1,40 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class MiniProgramAccessToken {
+ private String access_token;
+ private String expires_in;
+ private String errcode;
+ private String errmsg;
+
+ public String getAccess_token() {
+ return access_token;
+ }
+
+ public void setAccess_token(String access_token) {
+ this.access_token = access_token;
+ }
+
+ public String getExpires_in() {
+ return expires_in;
+ }
+
+ public void setExpires_in(String expires_in) {
+ this.expires_in = expires_in;
+ }
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramJSCode2Session.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramJSCode2Session.java
new file mode 100644
index 0000000..85252af
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramJSCode2Session.java
@@ -0,0 +1,49 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class MiniProgramJSCode2Session {
+ private String session_key;
+ private String openid;
+ private String unionid;
+ private String errcode;
+ private String errmsg;
+
+ public String getUnionid() {
+ return unionid;
+ }
+
+ public void setUnionid(String unionid) {
+ this.unionid = unionid;
+ }
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+
+ public String getSession_key() {
+ return session_key;
+ }
+
+ public void setSession_key(String session_key) {
+ this.session_key = session_key;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumber.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumber.java
new file mode 100644
index 0000000..1e72a8a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumber.java
@@ -0,0 +1,40 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class MiniProgramUserPhoneNumber {
+ private String phoneNumber;
+ private String purePhoneNumber;
+ private String countryCode;
+ private String watermark;
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getPurePhoneNumber() {
+ return purePhoneNumber;
+ }
+
+ public void setPurePhoneNumber(String purePhoneNumber) {
+ this.purePhoneNumber = purePhoneNumber;
+ }
+
+ public String getCountryCode() {
+ return countryCode;
+ }
+
+ public void setCountryCode(String countryCode) {
+ this.countryCode = countryCode;
+ }
+
+ public String getWatermark() {
+ return watermark;
+ }
+
+ public void setWatermark(String watermark) {
+ this.watermark = watermark;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberCode.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberCode.java
new file mode 100644
index 0000000..ccaee19
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberCode.java
@@ -0,0 +1,13 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class MiniProgramUserPhoneNumberCode {
+ private String code;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberParam.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberParam.java
new file mode 100644
index 0000000..c3e37ee
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberParam.java
@@ -0,0 +1,22 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class MiniProgramUserPhoneNumberParam {
+ private String access_token;
+ private String code;
+
+ public String getAccess_token() {
+ return access_token;
+ }
+
+ public void setAccess_token(String access_token) {
+ this.access_token = access_token;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberResult.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberResult.java
new file mode 100644
index 0000000..06efa2e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/MiniProgramUserPhoneNumberResult.java
@@ -0,0 +1,31 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class MiniProgramUserPhoneNumberResult {
+ private MiniProgramUserPhoneNumber phone_info;
+ private String errcode;
+ private String errmsg;
+
+ public MiniProgramUserPhoneNumber getPhone_info() {
+ return phone_info;
+ }
+
+ public void setPhone_info(MiniProgramUserPhoneNumber phone_info) {
+ this.phone_info = phone_info;
+ }
+
+ public String getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(String errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/TransactionsOrderPay.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/TransactionsOrderPay.java
new file mode 100644
index 0000000..b8637ff
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/TransactionsOrderPay.java
@@ -0,0 +1,13 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class TransactionsOrderPay {
+ private String prepay_id;
+
+ public String getPrepay_id() {
+ return prepay_id;
+ }
+
+ public void setPrepay_id(String prepay_id) {
+ this.prepay_id = prepay_id;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigForGZHModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigForGZHModel.java
new file mode 100644
index 0000000..bed9de6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigForGZHModel.java
@@ -0,0 +1,67 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WeChatConfigForGZHModel {
+ private String appId;
+ private String mch_id;
+ private String paykey;
+ private String secret;
+ private String notify_url;
+ private String serialNo;
+ private String privateKey;
+
+ public String getAppId() {
+ return appId;
+ }
+
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+
+ public String getMch_id() {
+ return mch_id;
+ }
+
+ public void setMch_id(String mch_id) {
+ this.mch_id = mch_id;
+ }
+
+ public String getPaykey() {
+ return paykey;
+ }
+
+ public void setPaykey(String paykey) {
+ this.paykey = paykey;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+
+ public String getNotify_url() {
+ return notify_url;
+ }
+
+ public void setNotify_url(String notify_url) {
+ this.notify_url = notify_url;
+ }
+
+ public String getSerialNo() {
+ return serialNo;
+ }
+
+ public void setSerialNo(String serialNo) {
+ this.serialNo = serialNo;
+ }
+
+ public String getPrivateKey() {
+ return privateKey;
+ }
+
+ public void setPrivateKey(String privateKey) {
+ this.privateKey = privateKey;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigModel.java
new file mode 100644
index 0000000..bd27da5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatConfigModel.java
@@ -0,0 +1,76 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WeChatConfigModel {
+ private String appId;
+ private String agentid;
+ private String timestamp;
+ private String nonceStr;
+ private String paySign;
+ private String signature;
+ private String prepay_id;
+ private String signType;
+
+ public String getAppId() {
+ return appId;
+ }
+
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+
+ public String getAgentid() {
+ return agentid;
+ }
+
+ public void setAgentid(String agentid) {
+ this.agentid = agentid;
+ }
+
+ public String getTimestamp() {
+ return timestamp;
+ }
+
+ public void setTimestamp(String timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ public String getNonceStr() {
+ return nonceStr;
+ }
+
+ public void setNonceStr(String nonceStr) {
+ this.nonceStr = nonceStr;
+ }
+
+ public String getPaySign() {
+ return paySign;
+ }
+
+ public void setPaySign(String paySign) {
+ this.paySign = paySign;
+ }
+
+ public String getSignature() {
+ return signature;
+ }
+
+ public void setSignature(String signature) {
+ this.signature = signature;
+ }
+
+ public String getPrepay_id() {
+ return prepay_id;
+ }
+
+ public void setPrepay_id(String prepay_id) {
+ this.prepay_id = prepay_id;
+ }
+
+ public String getSignType() {
+ return signType;
+ }
+
+ public void setSignType(String signType) {
+ this.signType = signType;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatLoginInfo.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatLoginInfo.java
new file mode 100644
index 0000000..ba1888b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatLoginInfo.java
@@ -0,0 +1,67 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WeChatLoginInfo {
+ private String code;
+ private String cellphone;
+ private String randomcode;
+ private String password;
+ private String openid;
+ private String session_key;
+ private WeChatUserInfo userInfo;
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+
+ public String getSession_key() {
+ return session_key;
+ }
+
+ public void setSession_key(String session_key) {
+ this.session_key = session_key;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone;
+ }
+
+ public String getRandomcode() {
+ return randomcode;
+ }
+
+ public void setRandomcode(String randomcode) {
+ this.randomcode = randomcode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public WeChatUserInfo getUserInfo() {
+ return userInfo;
+ }
+
+ public void setUserInfo(WeChatUserInfo userInfo) {
+ this.userInfo = userInfo;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatPayConfigViewModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatPayConfigViewModel.java
new file mode 100644
index 0000000..a4d779e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatPayConfigViewModel.java
@@ -0,0 +1,49 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WeChatPayConfigViewModel {
+ private String requesturl;
+ private String code;
+ private String orderid;
+ private String totalprice;
+ private String productname;
+
+ public String getProductname() {
+ return productname;
+ }
+
+ public void setProductname(String productname) {
+ this.productname = productname;
+ }
+
+ public String getRequesturl() {
+ return requesturl;
+ }
+
+ public void setRequesturl(String requesturl) {
+ this.requesturl = requesturl;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getOrderid() {
+ return orderid;
+ }
+
+ public void setOrderid(String orderid) {
+ this.orderid = orderid;
+ }
+
+ public String getTotalprice() {
+ return totalprice;
+ }
+
+ public void setTotalprice(String totalprice) {
+ this.totalprice = totalprice;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatQueryObject.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatQueryObject.java
new file mode 100644
index 0000000..843acf1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatQueryObject.java
@@ -0,0 +1,105 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+import com.farriver.bwf.data.transferobject.queryobject.QueryObjectBase;
+
+public class WeChatQueryObject extends QueryObjectBase {
+ private String id;
+ private String openid;
+ private String nickname;
+ private Integer gender;
+ private String language;
+ private String city;
+ private String province;
+ private String country;
+ private String avatarurl;
+ private String cellphone;
+ private String token;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public void setGender(Integer gender) {
+ this.gender = gender;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ public String getAvatarurl() {
+ return avatarurl;
+ }
+
+ public void setAvatarurl(String avatarurl) {
+ this.avatarurl = avatarurl;
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatRawData.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatRawData.java
new file mode 100644
index 0000000..8845852
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatRawData.java
@@ -0,0 +1,67 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WeChatRawData {
+ private String nickName;
+ private Integer gender;
+ private String language;
+ private String city;
+ private String province;
+ private String country;
+ private String avatarUrl;
+
+ public String getNickName() {
+ return nickName;
+ }
+
+ public void setNickName(String nickName) {
+ this.nickName = nickName;
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public void setGender(Integer gender) {
+ this.gender = gender;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ public String getAvatarUrl() {
+ return avatarUrl;
+ }
+
+ public void setAvatarUrl(String avatarUrl) {
+ this.avatarUrl = avatarUrl;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatSession.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatSession.java
new file mode 100644
index 0000000..8e9ee57
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatSession.java
@@ -0,0 +1,22 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WeChatSession {
+ private String session_key;
+ private String openid;
+
+ public String getSession_key() {
+ return session_key;
+ }
+
+ public void setSession_key(String session_key) {
+ this.session_key = session_key;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserInfo.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserInfo.java
new file mode 100644
index 0000000..1f23262
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserInfo.java
@@ -0,0 +1,22 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WeChatUserInfo {
+ private String errMsg;
+ private String rawData;
+
+ public String getErrMsg() {
+ return errMsg;
+ }
+
+ public void setErrMsg(String errMsg) {
+ this.errMsg = errMsg;
+ }
+
+ public String getRawData() {
+ return rawData;
+ }
+
+ public void setRawData(String rawData) {
+ this.rawData = rawData;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserModel.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserModel.java
new file mode 100644
index 0000000..0e36823
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WeChatUserModel.java
@@ -0,0 +1,236 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class WeChatUserModel {
+ private String id;
+
+ private Boolean isdeleted;
+
+ private String remark;
+
+ private Date createtime;
+
+ private Date updatetime;
+
+ private String name;
+
+ private Integer diamondtype;
+
+ private Integer type;
+
+ private BigDecimal discountrate;
+
+ private String idcard;
+
+ private Boolean gender;
+
+ private Date birthday;
+
+ private String openid;
+
+ private String nickname;
+
+ private String language;
+
+ private String city;
+
+ private String province;
+
+ private String country;
+
+ private String avatarurl;
+
+ private String cellphone;
+
+ private String token;
+
+ private String password;
+
+ private String randomcode;
+
+ public String getRandomcode() {
+ return randomcode;
+ }
+
+ public void setRandomcode(String randomcode) {
+ this.randomcode = randomcode;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id == null ? null : id.trim();
+ }
+
+ public Boolean getIsdeleted() {
+ return isdeleted;
+ }
+
+ public void setIsdeleted(Boolean isdeleted) {
+ this.isdeleted = isdeleted;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark == null ? null : remark.trim();
+ }
+
+ public Date getCreatetime() {
+ return createtime;
+ }
+
+ public void setCreatetime(Date createtime) {
+ this.createtime = createtime;
+ }
+
+ public Date getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Date updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getDiamondtype() {
+ return diamondtype;
+ }
+
+ public void setDiamondtype(Integer diamondtype) {
+ this.diamondtype = diamondtype;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public BigDecimal getDiscountrate() {
+ return discountrate;
+ }
+
+ public void setDiscountrate(BigDecimal discountrate) {
+ this.discountrate = discountrate;
+ }
+
+ public String getIdcard() {
+ return idcard;
+ }
+
+ public void setIdcard(String idcard) {
+ this.idcard = idcard == null ? null : idcard.trim();
+ }
+
+ public Boolean getGender() {
+ return gender;
+ }
+
+ public void setGender(Boolean gender) {
+ this.gender = gender;
+ }
+
+ public Date getBirthday() {
+ return birthday;
+ }
+
+ public void setBirthday(Date birthday) {
+ this.birthday = birthday;
+ }
+
+ public String getOpenid() {
+ return openid;
+ }
+
+ public void setOpenid(String openid) {
+ this.openid = openid == null ? null : openid.trim();
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname == null ? null : nickname.trim();
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language == null ? null : language.trim();
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city == null ? null : city.trim();
+ }
+
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province == null ? null : province.trim();
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country == null ? null : country.trim();
+ }
+
+ public String getAvatarurl() {
+ return avatarurl;
+ }
+
+ public void setAvatarurl(String avatarurl) {
+ this.avatarurl = avatarurl == null ? null : avatarurl.trim();
+ }
+
+ public String getCellphone() {
+ return cellphone;
+ }
+
+ public void setCellphone(String cellphone) {
+ this.cellphone = cellphone == null ? null : cellphone.trim();
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token == null ? null : token.trim();
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password == null ? null : password.trim();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WechatChannels.java b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WechatChannels.java
new file mode 100644
index 0000000..3b636e1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.data.transferobject/src/main/java/com/farriver/bwf/data/transferobject/wechat/WechatChannels.java
@@ -0,0 +1,22 @@
+package com.farriver.bwf.data.transferobject.wechat;
+
+public class WechatChannels {
+ private String nickname;
+ private int status;
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/pom.xml b/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/pom.xml
new file mode 100644
index 0000000..2f9fce0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <groupId>com.farriver.bwf.service.extend</groupId>
+ <artifactId>extend</artifactId>
+ <version>${revision}</version>
+ <parent>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <dependencies>
+ <dependency>
+ <groupId>com.farriver.bwf.common</groupId>
+ <artifactId>common</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.data.transferobject</groupId>
+ <artifactId>transferobject</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.data.master</groupId>
+ <artifactId>master</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/ifc/IFCService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/ifc/IFCService.java
new file mode 100644
index 0000000..a6109c9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/ifc/IFCService.java
@@ -0,0 +1,90 @@
+package com.farriver.bwf.service.extend.ifc;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.data.transferobject.queryobject.approval.ApprovalRecordQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.dispatch.DispatchApprovalQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.dispatch.DispatchNotificationQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.dispatch.DispatchTaskQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.approval.ApprovalRecordViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.dispatch.DispatchApprovalViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.dispatch.DispatchNotificationViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.dispatch.DispatchTaskViewModel;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(name = "service-provider-ifc", path = "/ifc/api/client/center")
+public interface IFCService {
+
+ @RequestMapping(value = "/operation/list", method = RequestMethod.GET)
+ ApiData GetOperationList(@RequestParam("uid") String uid);
+
+ @RequestMapping(value = "/dispatch/notification/latest", method = RequestMethod.GET)
+ ApiData GetLatestNotificationList(@RequestParam("uid") String uid);
+
+ @RequestMapping(value = "/dispatch/notification/list", method = RequestMethod.POST)
+ ApiPageData GetNotificationList(@RequestBody DispatchNotificationQueryObject queryObject);
+
+ @RequestMapping(value = "/dispatch/notification/create", method = RequestMethod.POST)
+ ApiData CreateNotification(@RequestBody DispatchNotificationViewModel model);
+
+ @RequestMapping(value = "/dispatch/notification/delete", method = RequestMethod.GET)
+ ApiData DeleteNotification(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/dispatch/notification/update", method = RequestMethod.POST)
+ ApiData UpdateNotification(@RequestBody DispatchNotificationViewModel model);
+
+ @RequestMapping(value = "/dispatch/task/latest", method = RequestMethod.GET)
+ ApiData GetLatestTaskList(@RequestParam("uid") String uid);
+
+ @RequestMapping(value = "/dispatch/task/list", method = RequestMethod.POST)
+ ApiPageData GetTaskList(@RequestBody DispatchTaskQueryObject queryObject);
+
+ @RequestMapping(value = "/dispatch/task/create", method = RequestMethod.POST)
+ ApiData CreateTask(@RequestBody DispatchTaskViewModel model);
+
+ @RequestMapping(value = "/dispatch/task/delete", method = RequestMethod.GET)
+ ApiData DeleteTask(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/dispatch/task/update", method = RequestMethod.POST)
+ ApiData UpdateTask(@RequestBody DispatchTaskViewModel model);
+
+ @RequestMapping(value = "/dispatch/approval/latest", method = RequestMethod.GET)
+ ApiData GetLatestApprovalList(@RequestParam("uid") String uid);
+
+ @RequestMapping(value = "/dispatch/approval/list", method = RequestMethod.POST)
+ ApiPageData GetApprovalList(@RequestBody DispatchApprovalQueryObject queryObject);
+
+ @RequestMapping(value = "/dispatch/approval/create", method = RequestMethod.POST)
+ ApiData CreateApproval(@RequestBody DispatchApprovalViewModel model);
+
+ @RequestMapping(value = "/dispatch/taapprovalsk/delete", method = RequestMethod.GET)
+ ApiData DeleteApproval(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/dispatch/approval/update", method = RequestMethod.POST)
+ ApiData UpdateApproval(@RequestBody DispatchApprovalViewModel model);
+
+ @RequestMapping(value = "/approve/template/detail", method = RequestMethod.GET)
+ ApiData GetApprovalTemplateDetailWithCode(@RequestParam("code") String code);
+
+ @RequestMapping(value = "/approve/record/detail", method = RequestMethod.GET)
+ ApiData GetApprovalRecordDetailWithNo(@RequestParam("no") String no);
+
+ @RequestMapping(value = "/approve/record/list", method = RequestMethod.POST)
+ ApiPageData GetApprovalRecordList(@RequestBody ApprovalRecordQueryObject queryObject);
+
+ @RequestMapping(value = "/approve/record/pass", method = RequestMethod.POST)
+ ApiData PassApprovalRecord(@RequestBody ApprovalRecordViewModel model);
+
+ @RequestMapping(value = "/approve/record/reject", method = RequestMethod.POST)
+ ApiData RejectApprovalRecord(@RequestBody ApprovalRecordViewModel model);
+
+ @RequestMapping(value = "/approve/record/complete", method = RequestMethod.GET)
+ ApiData CompleteApprovalRecord(@RequestParam("no") String no);
+
+ @RequestMapping(value = "/approve/record/cancel", method = RequestMethod.GET)
+ ApiData CancelApprovalRecord(@RequestParam("no") String no);
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/rbac/RBACService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/rbac/RBACService.java
new file mode 100644
index 0000000..2126f63
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service.extend/src/main/java/com/farriver/bwf/service/extend/rbac/RBACService.java
@@ -0,0 +1,201 @@
+package com.farriver.bwf.service.extend.rbac;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.data.transferobject.queryobject.om.OMOrganizationPositionQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.om.OMOrganizationQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.pa.PAEmployeeOrganizationPositionRelationQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.pa.PAEmployeeQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.pa.PAProfessionalTitleQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.security.AccountMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.common.AuthBean;
+import com.farriver.bwf.data.transferobject.viewmodel.om.OMOrganizationPositionWriteViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.om.OMOrganizationWriteViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.pa.PAEmployeeViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.pa.PAProfessionalTitleWriteViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PasswordViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PermissionMasterViewModel;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(name = "service-provider-rbac", path = "/rbac/api/admin")
+public interface RBACService {
+
+ @RequestMapping(value = "/pa/professionaltitle/create", method = RequestMethod.POST)
+ ApiData CreatePAProfessionalTitle(@RequestBody PAProfessionalTitleWriteViewModel model);
+
+ @RequestMapping(value = "/pa/professionaltitle/list", method = RequestMethod.POST)
+ ApiPageData GetPAProfessionalTitleList(@RequestBody PAProfessionalTitleQueryObject queryObject);
+
+ @RequestMapping(value = "/pa/professionaltitle/update", method = RequestMethod.POST)
+ ApiData UpdatePAProfessionalTitle(@RequestBody PAProfessionalTitleWriteViewModel model);
+
+ @RequestMapping(value = "/pa/professionaltitle/delete", method = RequestMethod.GET)
+ ApiData DeletePAProfessionalTitle(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/pa/professionaltitle/category", method = RequestMethod.GET)
+ ApiData PAProfessionalTitleCategory();
+
+ @RequestMapping(value = "/pa/professionaltitle/group", method = RequestMethod.GET)
+ ApiData PAProfessionalTitleGroup();
+
+ @RequestMapping(value = "/pa/professionaltitle/all", method = RequestMethod.GET)
+ ApiPageData GetAllPAProfessionalTitle();
+
+ @RequestMapping(value = "/pa/professionaltitle/tree", method = RequestMethod.GET)
+ ApiData GetPAProfessionalTitleTree();
+
+ @RequestMapping(value = "/pa/employee/create", method = RequestMethod.POST)
+ ApiData CreatePAEmployee(@RequestBody PAEmployeeViewModel model);
+
+ @RequestMapping(value = "/pa/employee/detail", method = RequestMethod.POST)
+ ApiData GetPAEmployeeViewDetail(@RequestBody PAEmployeeQueryObject queryObject);
+
+ @RequestMapping(value = "/pa/employee/createwithpositions", method = RequestMethod.POST)
+ ApiData CreatePAEmployeeWithPositions(@RequestBody PAEmployeeViewModel model);
+
+ @RequestMapping(value = "/pa/employee/list", method = RequestMethod.POST)
+ ApiPageData GetPAEmployeeList(@RequestBody PAEmployeeQueryObject queryObject);
+
+ @RequestMapping(value = "/pa/employee/listbyposition", method = RequestMethod.POST)
+ ApiPageData GetPAEmployeeListByPosition(@RequestBody PAEmployeeOrganizationPositionRelationQueryObject queryObject);
+
+ @RequestMapping(value = "/pa/employee/update", method = RequestMethod.POST)
+ ApiData UpdatePAEmployee(@RequestBody PAEmployeeViewModel model);
+
+ @RequestMapping(value = "/pa/employee/updatewithpositions", method = RequestMethod.POST)
+ ApiData UpdatePAEmployeeWithPositions(@RequestBody PAEmployeeViewModel model);
+
+ @RequestMapping(value = "/pa/employee/updateprofile", method = RequestMethod.POST)
+ ApiData UpdatePAEmployeeProfile(@RequestBody PAEmployeeViewModel model);
+
+ @RequestMapping(value = "/pa/employee/export", method = RequestMethod.POST)
+ ResponseEntity<byte[]> ExportPAEmployeeData(@RequestBody PAEmployeeQueryObject queryObject);
+
+ @RequestMapping(value = "/pa/employee/delete", method = RequestMethod.GET)
+ ApiData DeletePAEmployee(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/pa/employee/positions", method = RequestMethod.GET)
+ ApiData GetEmployeePositionsByEmployeeId(@RequestParam("employeeid") String employeeid);
+
+ @RequestMapping(value = "/pa/employee/positionwithorganization", method = RequestMethod.GET)
+ ApiData GetEmployeePositionWithOrganizationsByEmployeeId(@RequestParam("employeeid") String employeeid);
+
+ @RequestMapping(value = "/pa/employee/title/delete", method = RequestMethod.GET)
+ ApiData DeletePAEmployeeTitle(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/om/organization/create", method = RequestMethod.POST)
+ ApiData CreateOMOrganization(@RequestBody OMOrganizationWriteViewModel model);
+
+ @RequestMapping(value = "/om/organization/list", method = RequestMethod.POST)
+ ApiPageData GetOMOrganizationList(@RequestBody OMOrganizationQueryObject queryObject);
+
+ @RequestMapping(value = "/om/organization/update", method = RequestMethod.POST)
+ ApiData UpdateOMOrganization(@RequestBody OMOrganizationWriteViewModel model);
+
+ @RequestMapping(value = "/om/organization/all", method = RequestMethod.GET)
+ ApiPageData GetAllOMOrganization();
+
+ @RequestMapping(value = "/om/organization/tree", method = RequestMethod.GET)
+ ApiData GetOMOrganizationTree();
+
+ @RequestMapping(value = "/om/organization/delete", method = RequestMethod.GET)
+ ApiData DeleteOMOrganization(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/om/organization/position/create", method = RequestMethod.POST)
+ ApiData CreateOMOrganizationPosition(@RequestBody OMOrganizationPositionWriteViewModel model);
+
+ @RequestMapping(value = "/om/organization/position/createwithroles", method = RequestMethod.POST)
+ ApiData CreateOMOrganizationPositionWithRoles(@RequestBody OMOrganizationPositionWriteViewModel model);
+
+ @RequestMapping(value = "/om/organization/position/list", method = RequestMethod.POST)
+ ApiPageData GetOMOrganizationPositionList(@RequestBody OMOrganizationPositionQueryObject queryObject);
+
+ @RequestMapping(value = "/om/organization/position/update", method = RequestMethod.POST)
+ ApiData UpdateOMOrganizationPosition(@RequestBody OMOrganizationPositionWriteViewModel model);
+
+ @RequestMapping(value = "/om/organization/position/updatewithroles", method = RequestMethod.POST)
+ ApiData UpdateOMOrganizationPositionWithRoles(@RequestBody OMOrganizationPositionWriteViewModel model);
+
+ @RequestMapping(value = "/om/organization/position/delete", method = RequestMethod.GET)
+ ApiData DeleteOMOrganizationPosition(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/security/account/pass", method = RequestMethod.POST)
+ ApiData UpdateAccountPassword(@RequestBody PasswordViewModel model);
+
+ @RequestMapping(value = "/security/application/all", method = RequestMethod.GET)
+ ApiPageData GetAllApplication(@RequestParam("permissionLevel") Integer permissionLevel);
+
+ @RequestMapping(value = "/security/application/accountapps", method = RequestMethod.GET)
+ ApiPageData GetAccountApplications(@RequestParam("accountid") String accountid);
+
+ //role & permission
+ @RequestMapping(value = "/security/role/all", method = RequestMethod.GET)
+ ApiPageData getAllRoles(@RequestParam("permissionLevel") Integer permissionLevel);
+
+ @RequestMapping(value = "/security/role/listbyaccountid", method = RequestMethod.GET)
+ ApiData GetRolesByAccountId(@RequestParam("accountid") String accountid);
+
+ @RequestMapping(value = "/security/role/listbypositionid", method = RequestMethod.GET)
+ ApiData GetRolesByPositionId(@RequestParam("positionid") String positionid);
+
+ @RequestMapping(value = "/security/permission/create", method = RequestMethod.POST)
+ ApiData CreatePermission(@RequestBody PermissionMasterViewModel model);
+
+ @RequestMapping(value = "/security/permission/update", method = RequestMethod.POST)
+ ApiData UpdatePermission(@RequestBody PermissionMasterViewModel model);
+
+ @RequestMapping(value = "/security/permission/uripermission", method = RequestMethod.GET)
+ PermissionMasterViewModel GetUriPermission(@RequestParam("appcode") String appcode, @RequestParam("uri") String uri);
+
+ //login & register
+ @RequestMapping(value = "/oauth/register", method = RequestMethod.POST)
+ ApiData RegisterAccount(@RequestBody AccountMasterViewModel model);
+
+ @RequestMapping(value = "/oauth/resetpasswordbysms", method = RequestMethod.POST)
+ ApiData ResetPasswordSMSCode(@RequestBody PasswordViewModel model);
+
+ @RequestMapping(value = "/oauth/resetpasswordbyemail", method = RequestMethod.POST)
+ ApiData ResetPasswordByEmail(@RequestBody PasswordViewModel model);
+
+ @RequestMapping(value = "/oauth/retrievepasswordbyemail", method = RequestMethod.POST)
+ ApiData RetrievePasswordByEmail(@RequestParam("email") String email, @RequestParam("ticket") String ticket);
+
+ @RequestMapping(value = "/oauth/login", method = RequestMethod.POST)
+ ApiData LoginByAccountPassword(@RequestBody AuthBean authBean);
+
+ @RequestMapping(value = "/oauth/loginBySMSCode", method = RequestMethod.POST)
+ ApiData LoginBySMSCode(@RequestBody AuthBean authBean);
+
+ @RequestMapping(value = "/oauth/logout", method = RequestMethod.GET)
+ ApiData GetLogout(@RequestParam("accountid") String accountid);
+
+ @RequestMapping(value = "/oauth/setverifycode", method = RequestMethod.GET)
+ void SetVerifyCode(@RequestParam("account") String account, @RequestParam("code") String code);
+
+ @RequestMapping(value = "/oauth/sendsmscode", method = RequestMethod.GET)
+ ApiData GetSMSCode(@RequestParam("cellphone") String cellphone);
+
+ @RequestMapping(value = "/oauth/accountroles", method = RequestMethod.POST)
+ ApiData GetAccountRolesByAccountId(@RequestParam("id") String id);
+
+ @RequestMapping(value = "/oauth/rolepermissions", method = RequestMethod.POST)
+ ApiData GetRolePermissions(@RequestParam("applicationcode") String applicationcode);
+
+ @RequestMapping(value = "/oauth/getaccountbycode", method = RequestMethod.GET)
+ ApiData LoadAccountByAccount(@RequestParam("code") String code);
+
+ @RequestMapping(value = "/oauth/accountdetail", method = RequestMethod.POST)
+ ApiData GetAccountDetail(@RequestBody AccountMasterQueryObject queryObject);
+
+ @RequestMapping(value = "/oauth/checkpermission", method = RequestMethod.POST)
+ ApiData CheckPermission(@RequestParam("applicationcode") String applicationcode, @RequestBody AccountMasterViewModel account, @RequestParam("uri") String uri);
+
+ @RequestMapping(value = "/oauth/getaccountwithrolesandpermissions", method = RequestMethod.GET)
+ ApiData GetAccountWithRolesAndPermissions(@RequestParam("accountid") String accountid);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/pom.xml b/04-Development/02-Code/bwf/com.farriver.bwf.service/pom.xml
new file mode 100644
index 0000000..5705164
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <groupId>com.farriver.bwf.service</groupId>
+ <artifactId>service</artifactId>
+ <version>${revision}</version>
+ <parent>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <dependencies>
+ <dependency>
+ <groupId>com.farriver.bwf.common</groupId>
+ <artifactId>common</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.data.transferobject</groupId>
+ <artifactId>transferobject</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.data.master</groupId>
+ <artifactId>master</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.service.extend</groupId>
+ <artifactId>extend</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/ServiceBase.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/ServiceBase.java
new file mode 100644
index 0000000..8be4d22
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/ServiceBase.java
@@ -0,0 +1,23 @@
+package com.farriver.bwf.service;
+
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+public abstract class ServiceBase {
+
+ public String message;
+
+ public AccountMasterViewModel GetSessionAccount() {
+
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ if (requestAttributes != null) {
+ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+ return (AccountMasterViewModel) request.getSession().getAttribute("account");
+ }
+
+ return null;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FastDFSService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FastDFSService.java
new file mode 100644
index 0000000..8e65f7c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FastDFSService.java
@@ -0,0 +1,288 @@
+package com.farriver.bwf.service.common;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.UploadTemplateData;
+import com.farriver.bwf.common.statics.LangConstants;
+import org.csource.common.NameValuePair;
+import org.csource.fastdfs.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Objects;
+import java.util.Properties;
+
+@Service
+public class FastDFSService {
+ private static final Logger logger = LoggerFactory.getLogger(FastDFSService.class);
+
+ @Value("${file.nginx.host}")
+ private String nginxHost;
+
+ @Value("${file.nginx.port}")
+ private String nginxPort;
+
+ @Value("${fdfs.tracker_servers}")
+ private String tracker_servers;
+
+ @Value("${fdfs.connect_timeout_in_seconds}")
+ private String connect_timeout_in_seconds;
+
+ @Value("${fdfs.network_timeout_in_seconds}")
+ private String network_timeout_in_seconds;
+
+ @Value("${fdfs.charset}")
+ private String charset;
+
+ @Value("${fdfs.http_anti_steal_token}")
+ private String http_anti_steal_token;
+
+ @Value("${fdfs.http_secret_key}")
+ private String http_secret_key;
+
+ @Value("${fdfs.http_tracker_http_port}")
+ private String http_tracker_http_port;
+
+ @Value("${fdfs.connection_pool.enabled}")
+ private String connection_pool_enabled;
+
+ @Value("${fdfs.connection_pool.max_count_per_entry}")
+ private String connection_pool_max_count_per_entry;
+
+ @Value("${fdfs.connection_pool.max_idle_time}")
+ private String connection_pool_max_idle_time;
+
+ @Value("${fdfs.connection_pool.max_wait_time_in_ms}")
+ private String connection_pool_max_wait_time_in_ms;
+
+ private final TrackerServer trackerServer = null;
+ private StorageClient1 storageClient = null;
+
+ //让构造函数为 private,这样该类就不会被实例化
+ public FastDFSService getInstance() {
+ try {
+ if (storageClient == null) {
+ Properties props = new Properties();
+ props.setProperty(ClientGlobal.PROP_KEY_TRACKER_SERVERS, tracker_servers);
+ props.setProperty(ClientGlobal.PROP_KEY_CONNECT_TIMEOUT_IN_SECONDS, connect_timeout_in_seconds);
+ props.setProperty(ClientGlobal.PROP_KEY_NETWORK_TIMEOUT_IN_SECONDS, network_timeout_in_seconds);
+ props.setProperty(ClientGlobal.PROP_KEY_CHARSET, charset);
+ props.setProperty(ClientGlobal.PROP_KEY_HTTP_ANTI_STEAL_TOKEN, http_anti_steal_token);
+ props.setProperty(ClientGlobal.PROP_KEY_HTTP_SECRET_KEY, http_secret_key);
+ props.setProperty(ClientGlobal.PROP_KEY_HTTP_TRACKER_HTTP_PORT, http_tracker_http_port);
+ props.setProperty(ClientGlobal.PROP_KEY_CONNECTION_POOL_ENABLED, connection_pool_enabled);
+ props.setProperty(ClientGlobal.PROP_KEY_CONNECTION_POOL_MAX_COUNT_PER_ENTRY, connection_pool_max_count_per_entry);
+ props.setProperty(ClientGlobal.PROP_KEY_CONNECTION_POOL_MAX_IDLE_TIME, connection_pool_max_idle_time);
+ props.setProperty(ClientGlobal.PROP_KEY_CONNECTION_POOL_MAX_WAIT_TIME_IN_MS, connection_pool_max_wait_time_in_ms);
+
+ ClientGlobal.initByProperties(props);
+
+ TrackerClient trackerClient = new TrackerClient();
+ TrackerServer trackerServer = trackerClient.getTrackerServer();
+ StorageServer storageServer = null;
+ storageClient = new StorageClient1(trackerServer, storageServer);
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return this;
+ }
+
+ private String uploadLocalFile(String localFileName, String extName, NameValuePair[] metas) throws Exception {
+ return storageClient.upload_file1(localFileName, extName, metas);
+ }
+
+ private String uploadLocalFile(String localFileName) throws Exception {
+ return uploadLocalFile(localFileName, null, null);
+ }
+
+ private String uploadLocalFile(String localFileName, String extName) throws Exception {
+ return uploadLocalFile(localFileName, extName, null);
+ }
+
+ private String uploadFile(byte[] file, String fileName, long fileSize) throws Exception {
+ NameValuePair[] metas = new NameValuePair[3];
+ metas[0] = new NameValuePair("fileName", fileName);
+ metas[1] = new NameValuePair("fileSize", String.valueOf(fileSize));
+
+ return storageClient.upload_file1(file, fileName, metas);
+ }
+
+ private String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
+ return storageClient.upload_file1(fileContent, extName, metas);
+ }
+
+ private String uploadFile(byte[] fileContent) throws Exception {
+ return uploadFile(fileContent, null, null);
+ }
+
+ private String uploadFile(MultipartFile file) throws Exception {
+ if (file != null && !Objects.requireNonNull(file.getOriginalFilename()).isEmpty()) {
+ String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+ if (!fileSuffix.isEmpty()) {
+ fileSuffix = fileSuffix.replace(".", "");
+ }
+
+ return uploadFile(file.getBytes(), fileSuffix, null);
+ }
+
+ return null;
+ }
+
+ private String uploadFile(File file) throws Exception {
+ if (file != null && !Objects.requireNonNull(file.getName()).isEmpty()) {
+ String fileSuffix = file.getName().substring(file.getName().lastIndexOf("."));
+ if (!fileSuffix.isEmpty()) {
+ fileSuffix = fileSuffix.replace(".", "");
+ }
+
+ var fm = new FileInputStream(file);
+
+ return uploadFile(fm.readAllBytes(), fileSuffix, null);
+ }
+
+ return null;
+ }
+
+ private String uploadFile(byte[] fileContent, String extName) throws Exception {
+ return uploadFile(fileContent, extName, null);
+ }
+
+ //关闭资源
+ private void close() throws Exception {
+ trackerServer.getConnection().close();
+ }
+
+ private InputStream downloadFileStream(String groupName, String remoteFileName) throws Exception {
+ byte[] fileByte = storageClient.download_file(groupName, remoteFileName);
+ return new ByteArrayInputStream(fileByte);
+ }
+
+ private InputStream downloadFileStream(String file_id) throws Exception {
+ byte[] fileByte = storageClient.download_file1(file_id);
+ return new ByteArrayInputStream(fileByte);
+ }
+
+ private byte[] downloadFileBytes(String groupName, String remoteFileName) throws Exception {
+ return storageClient.download_file(groupName, remoteFileName);
+ }
+
+ private byte[] downloadFileBytes(String file_id) throws Exception {
+ return storageClient.download_file1(file_id);
+ }
+
+ private int deleteFile(String group, String fileName) throws Exception {
+ return storageClient.delete_file(group, fileName);
+ }
+
+ private int deleteFile(String file_id) throws Exception {
+ return storageClient.delete_file1(file_id);
+ }
+
+ private FileInfo queryFile(String group, String fileName) throws Exception {
+ return storageClient.query_file_info(group, fileName);
+ }
+
+ private FileInfo queryFile(String file_id) throws Exception {
+ return storageClient.query_file_info1(file_id);
+ }
+
+ private String getAccessBase() {
+ if (nginxHost.toLowerCase().startsWith("https://")) {
+ return String.format("%s", nginxHost);
+ } else {
+ if (nginxPort.isEmpty() || nginxPort.trim().isEmpty() || nginxPort.trim().equals("80")) {
+ return String.format("%s", nginxHost);
+ } else {
+ return String.format("%s:%s", nginxHost, nginxPort);
+ }
+ }
+ }
+
+ public ApiData Upload(MultipartFile file) {
+ String fileUrl = null;
+ try {
+ fileUrl = getInstance().uploadFile(file);
+
+ var linkUrl = String.format("%s/%s", getAccessBase(), fileUrl);
+
+ var data = new UploadTemplateData();
+ data.setLinkurl(linkUrl);
+ data.setRelativepath(fileUrl);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ public ApiData UploadFile(File file) {
+ String fileUrl = null;
+ try {
+ fileUrl = getInstance().uploadFile(file);
+
+ var linkUrl = String.format("%s/%s", getAccessBase(), fileUrl);
+
+ var data = new UploadTemplateData();
+ data.setLinkurl(linkUrl);
+ data.setRelativepath(fileUrl);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ public ResponseEntity<byte[]> Download(String filepath) throws Exception {
+ String[] paths = filepath.split("/");
+ String groupName = null;
+ for (String item : paths) {
+ if (item.indexOf("group") != -1) {
+ groupName = item;
+ break;
+ }
+ }
+ String path = filepath.substring(filepath.indexOf(groupName) + groupName.length() + 1, filepath.length());
+ InputStream input = getInstance().downloadFileStream(groupName, path);
+
+ //根据文件名获取 MIME 类型
+ String fileName = paths[paths.length - 1]; // wKgIZVzZEF2ATP08ABC9j8AnNSs744.jpg
+
+ var headers = new HttpHeaders();
+
+ headers.setContentDispositionFormData("attachment", new String((fileName).getBytes("UTF-8"), "ISO-8859-1"));
+ headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+
+ return new ResponseEntity<byte[]>(input.readAllBytes(), headers, HttpStatus.CREATED);
+ }
+
+ public InputStream DownloadFile(String groupName, String remoteFileName) throws Exception {
+ return getInstance().downloadFileStream(groupName, remoteFileName);
+ }
+
+ public ApiData Delete(String filepath) {
+ try {
+ getInstance().deleteFile(filepath);
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FileService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FileService.java
new file mode 100644
index 0000000..98df656
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/common/FileService.java
@@ -0,0 +1,188 @@
+package com.farriver.bwf.service.common;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.WangEditResponse;
+import com.farriver.bwf.common.model.WangEditResponseData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.FileUtil;
+import com.farriver.bwf.common.utilities.HttpUtil;
+import jakarta.servlet.http.HttpServletRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+@Service
+public class FileService {
+ private static final Logger logger = LoggerFactory.getLogger(FileService.class);
+
+ @Value("${file.upload.path}")
+ public String uploadPath;
+
+ @Value("${file.upload.alias}")
+ public String uploadAlias;
+
+ @Value("${file.nginx.host}")
+ public String nginxHost;
+
+ @Value("${file.nginx.port}")
+ public String nginxPort;
+
+ public String getAccessBase() {
+ if (nginxHost.toLowerCase().startsWith("https://")) {
+ return String.format("%s/%s", nginxHost, uploadAlias);
+ } else {
+ return String.format("%s:%s/%s", nginxHost, nginxPort, uploadAlias);
+ }
+ }
+
+ public String Upload(MultipartFile file, HttpServletRequest request) {
+ String httpaccesspath = null;
+ try {
+ httpaccesspath = getAccessBase() + FileUtil.writeFile(uploadPath, file);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return httpaccesspath;
+ }
+
+ public ApiData UploadDocument(MultipartFile file, HttpServletRequest request) {
+ try {
+ if (file == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String module = HttpUtil.getUrlQueryMap(request).get("module");
+ if (module == null || module.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ var re = FileUtil.writeDocumentFile(module, uploadPath, file);
+ var httpaccesspath = String.format("%s%s", getAccessBase(), re.getRelativepath());
+
+ re.setLinkurl(httpaccesspath);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, re);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ public ApiData UploadImportTemplate(MultipartFile file, HttpServletRequest request) {
+ try {
+ if (file == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String module = HttpUtil.getUrlQueryMap(request).get("module");
+ if (module == null || module.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ var re = FileUtil.writeImportTemplateFile(module, uploadPath, file);
+ var httpaccesspath = String.format("%s%s", getAccessBase(), re.getRelativepath());
+
+ re.setLinkurl(httpaccesspath);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, re);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ public ApiData UploadExportTemplate(MultipartFile file, HttpServletRequest request) {
+ try {
+ if (file == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String module = HttpUtil.getUrlQueryMap(request).get("module");
+ if (module == null || module.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ var re = FileUtil.writeExportTemplateFile(module, uploadPath, file);
+ var httpaccesspath = String.format("%s%s", getAccessBase(), re.getRelativepath());
+
+ re.setLinkurl(httpaccesspath);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, re);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ public ApiData UploadReport(MultipartFile file, HttpServletRequest request) {
+ try {
+ if (file == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String module = HttpUtil.getUrlQueryMap(request).get("module");
+ if (module == null || module.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ var re = FileUtil.writeReportFile(module, uploadPath, file);
+ var httpaccesspath = String.format("%s%s", getAccessBase(), re.getRelativepath());
+
+ re.setLinkurl(httpaccesspath);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, re);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ public ApiData UploadBOL(MultipartFile file, HttpServletRequest request) {
+ try {
+ if (file == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String module = HttpUtil.getUrlQueryMap(request).get("module");
+ if (module == null || module.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ var re = FileUtil.writeBOLFile(module, uploadPath, file);
+ var httpaccesspath = String.format("%s%s", getAccessBase(), re.getRelativepath());
+
+ re.setLinkurl(httpaccesspath);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, re);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ public WangEditResponse WangEditUpload(MultipartFile file, HttpServletRequest request) {
+ String httpaccesspath = null;
+ try {
+ httpaccesspath = getAccessBase() + FileUtil.writeFile(uploadPath, file);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ WangEditResponse res = new WangEditResponse();
+ WangEditResponseData redata = new WangEditResponseData();
+ redata.setUrl(httpaccesspath);
+ res.setData(redata);
+
+ return res;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RabbitConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RabbitConfig.java
new file mode 100644
index 0000000..8e92d14
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RabbitConfig.java
@@ -0,0 +1,59 @@
+package com.farriver.bwf.service.config;
+
+import com.farriver.bwf.common.statics.MailConstants;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.DirectExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RabbitConfig {
+ private static final Logger logger = LoggerFactory.getLogger(RabbitConfig.class);
+
+ @Resource
+ CachingConnectionFactory cachingConnectionFactory;
+
+// @Resource
+// MailSendLogService mailSendLogService;
+
+ @Bean
+ public RabbitTemplate rabbitTemplate() {
+ RabbitTemplate rabbitTemplate = new RabbitTemplate(cachingConnectionFactory);
+ rabbitTemplate.setConfirmCallback((data, ack, cause) -> {
+ String msgId = data.getId();
+ if (ack) {
+ logger.info(msgId + ":消息发送成功");
+
+// mailSendLogService.updateMailSendLogStatus(msgId, MailStatus.SUCCESSFUL);
+ } else {
+ logger.info(msgId + ":消息发送失败");
+ }
+ });
+ rabbitTemplate.setReturnsCallback((data) -> {
+ logger.info("消息发送失败");
+ });
+ return rabbitTemplate;
+ }
+
+ @Bean
+ public Queue mailQueue() {
+ return new Queue(MailConstants.MAIL_QUEUE_NAME, true);
+ }
+
+ @Bean
+ public DirectExchange mailExchange() {
+ return new DirectExchange(MailConstants.MAIL_EXCHANGE_NAME, true, false);
+ }
+
+ @Bean
+ public Binding mailBinding() {
+ return BindingBuilder.bind(mailQueue()).to(mailExchange()).with(MailConstants.MAIL_ROUTING_KEY_NAME);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RedisUtil.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RedisUtil.java
new file mode 100644
index 0000000..456fb7c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RedisUtil.java
@@ -0,0 +1,559 @@
+package com.farriver.bwf.service.config;
+
+import jakarta.annotation.Resource;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class RedisUtil {
+ @Resource
+ RedisTemplate<Object, Object> redisTemplate;
+
+ /**
+ * 指定缓存失效时间
+ *
+ * @param key 键
+ * @param time 时间(秒)
+ * @return
+ */
+ public boolean expire(String key, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.expire(key, time, TimeUnit.SECONDS);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 根据key 获取过期时间
+ *
+ * @param key 键 不能为null
+ * @return 时间(秒) 返回0代表为永久有效
+ */
+ public long getExpire(String key) {
+ return redisTemplate.getExpire(key, TimeUnit.SECONDS);
+ }
+
+ /**
+ * 判断key是否存在
+ *
+ * @param key 键
+ * @return true 存在 false不存在
+ */
+ public boolean hasKey(String key) {
+ try {
+ return redisTemplate.hasKey(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 删除缓存
+ *
+ * @param key 可以传一个值 或多个
+ */
+ @SuppressWarnings("unchecked")
+ public void del(String... key) {
+ if (key != null && key.length > 0) {
+ if (key.length == 1) {
+ redisTemplate.delete(key[0]);
+ } else {
+ redisTemplate.delete(CollectionUtils.arrayToList(key));
+ }
+ }
+ }
+ // ============================String=============================
+
+ /**
+ * 普通缓存获取
+ *
+ * @param key 键
+ * @return 值
+ */
+ public Object get(String key) {
+ return key == null ? null : redisTemplate.opsForValue().get(key);
+ }
+
+ /**
+ * 普通缓存放入
+ *
+ * @param key 键
+ * @param value 值
+ * @return true成功 false失败
+ */
+ public boolean set(String key, Object value) {
+ try {
+ redisTemplate.opsForValue().set(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 普通缓存放入并设置时间
+ *
+ * @param key 键
+ * @param value 值
+ * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
+ * @return true成功 false 失败
+ */
+ public boolean set(String key, Object value, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+ } else {
+ set(key, value);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 递增
+ *
+ * @param key 键
+ * @param delta 要增加几(大于0)
+ * @return
+ */
+ public long incr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("递增因子必须大于0");
+ }
+ return redisTemplate.opsForValue().increment(key, delta);
+ }
+
+ /**
+ * 递减
+ *
+ * @param key 键
+ * @param delta 要减少几(小于0)
+ * @return
+ */
+ public long decr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("递减因子必须大于0");
+ }
+ return redisTemplate.opsForValue().increment(key, -delta);
+ }
+ // ================================Map=================================
+
+ /**
+ * HashGet
+ *
+ * @param key 键 不能为null
+ * @param item 项 不能为null
+ * @return 值
+ */
+ public Object hget(String key, String item) {
+ return redisTemplate.opsForHash().get(key, item);
+ }
+
+ /**
+ * 获取hashKey对应的所有键值
+ *
+ * @param key 键
+ * @return 对应的多个键值
+ */
+ public Map<Object, Object> hmget(String key) {
+ return redisTemplate.opsForHash().entries(key);
+ }
+
+ /**
+ * HashSet
+ *
+ * @param key 键
+ * @param map 对应多个键值
+ * @return true 成功 false 失败
+ */
+ public boolean hmset(String key, Map<String, Object> map) {
+ try {
+ redisTemplate.opsForHash().putAll(key, map);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * HashSet 并设置时间
+ *
+ * @param key 键
+ * @param map 对应多个键值
+ * @param time 时间(秒)
+ * @return true成功 false失败
+ */
+ public boolean hmset(String key, Map<String, Object> map, long time) {
+ try {
+ redisTemplate.opsForHash().putAll(key, map);
+ if (time > 0) {
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 向一张hash表中放入数据,如果不存在将创建
+ *
+ * @param key 键
+ * @param item 项
+ * @param value 值
+ * @return true 成功 false失败
+ */
+ public boolean hset(String key, String item, Object value) {
+ try {
+ redisTemplate.opsForHash().put(key, item, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 向一张hash表中放入数据,如果不存在将创建
+ *
+ * @param key 键
+ * @param item 项
+ * @param value 值
+ * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
+ * @return true 成功 false失败
+ */
+ public boolean hset(String key, String item, Object value, long time) {
+ try {
+ redisTemplate.opsForHash().put(key, item, value);
+ if (time > 0) {
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 删除hash表中的值
+ *
+ * @param key 键 不能为null
+ * @param item 项 可以使多个 不能为null
+ */
+ public void hdel(String key, Object... item) {
+ redisTemplate.opsForHash().delete(key, item);
+ }
+
+ /**
+ * 判断hash表中是否有该项的值
+ *
+ * @param key 键 不能为null
+ * @param item 项 不能为null
+ * @return true 存在 false不存在
+ */
+ public boolean hHasKey(String key, String item) {
+ return redisTemplate.opsForHash().hasKey(key, item);
+ }
+
+ /**
+ * hash递增 如果不存在,就会创建一个 并把新增后的值返回
+ *
+ * @param key 键
+ * @param item 项
+ * @param by 要增加几(大于0)
+ * @return
+ */
+ public double hincr(String key, String item, double by) {
+ return redisTemplate.opsForHash().increment(key, item, by);
+ }
+
+ /**
+ * hash递减
+ *
+ * @param key 键
+ * @param item 项
+ * @param by 要减少记(小于0)
+ * @return
+ */
+ public double hdecr(String key, String item, double by) {
+ return redisTemplate.opsForHash().increment(key, item, -by);
+ }
+ // ============================set============================
+
+ /**
+ * 根据key获取Set中的所有值
+ *
+ * @param key 键
+ * @return
+ */
+ public Set<Object> sGet(String key) {
+ try {
+ return redisTemplate.opsForSet().members(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * 根据value从一个set中查询,是否存在
+ *
+ * @param key 键
+ * @param value 值
+ * @return true 存在 false不存在
+ */
+ public boolean sHasKey(String key, Object value) {
+ try {
+ return redisTemplate.opsForSet().isMember(key, value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将数据放入set缓存
+ *
+ * @param key 键
+ * @param values 值 可以是多个
+ * @return 成功个数
+ */
+ public long sSet(String key, Object... values) {
+ try {
+ return redisTemplate.opsForSet().add(key, values);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 将set数据放入缓存
+ *
+ * @param key 键
+ * @param time 时间(秒)
+ * @param values 值 可以是多个
+ * @return 成功个数
+ */
+ public long sSetAndTime(String key, long time, Object... values) {
+ try {
+ Long count = redisTemplate.opsForSet().add(key, values);
+ if (time > 0)
+ expire(key, time);
+ return count;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 获取set缓存的长度
+ *
+ * @param key 键
+ * @return
+ */
+ public long sGetSetSize(String key) {
+ try {
+ return redisTemplate.opsForSet().size(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 移除值为value的
+ *
+ * @param key 键
+ * @param values 值 可以是多个
+ * @return 移除的个数
+ */
+ public long setRemove(String key, Object... values) {
+ try {
+ Long count = redisTemplate.opsForSet().remove(key, values);
+ return count;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+ // ===============================list=================================
+
+ /**
+ * 获取list缓存的内容
+ *
+ * @param key 键
+ * @param start 开始
+ * @param end 结束 0 到 -1代表所有值
+ * @return
+ */
+ public List<Object> lGet(String key, long start, long end) {
+ try {
+ return redisTemplate.opsForList().range(key, start, end);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * 获取list缓存的长度
+ *
+ * @param key 键
+ * @return
+ */
+ public long lGetListSize(String key) {
+ try {
+ return redisTemplate.opsForList().size(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 通过索引 获取list中的值
+ *
+ * @param key 键
+ * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
+ * @return
+ */
+ public Object lGetIndex(String key, long index) {
+ try {
+ return redisTemplate.opsForList().index(key, index);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * 将list放入缓存
+ *
+ * @param key 键
+ * @param value 值
+ * @return
+ */
+ public boolean lSet(String key, Object value) {
+ try {
+ redisTemplate.opsForList().rightPush(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将list放入缓存
+ *
+ * @param key 键
+ * @param value 值
+ * @param time 时间(秒)
+ * @return
+ */
+ public boolean lSet(String key, Object value, long time) {
+ try {
+ redisTemplate.opsForList().rightPush(key, value);
+ if (time > 0)
+ expire(key, time);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将list放入缓存
+ *
+ * @param key 键
+ * @param value 值
+ * @return
+ */
+ public boolean lSet(String key, List<Object> value) {
+ try {
+ redisTemplate.opsForList().rightPushAll(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将list放入缓存
+ *
+ * @param key 键
+ * @param value 值
+ * @param time 时间(秒)
+ * @return
+ */
+ public boolean lSet(String key, List<Object> value, long time) {
+ try {
+ redisTemplate.opsForList().rightPushAll(key, value);
+ if (time > 0)
+ expire(key, time);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 根据索引修改list中的某条数据
+ *
+ * @param key 键
+ * @param index 索引
+ * @param value 值
+ * @return
+ */
+ public boolean lUpdateIndex(String key, long index, Object value) {
+ try {
+ redisTemplate.opsForList().set(key, index, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 移除N个值为value
+ *
+ * @param key 键
+ * @param count 移除多少个
+ * @param value 值
+ * @return 移除的个数
+ */
+ public long lRemove(String key, long count, Object value) {
+ try {
+ Long remove = redisTemplate.opsForList().remove(key, count, value);
+ return remove;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RestTemplateConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RestTemplateConfig.java
new file mode 100644
index 0000000..1ff903f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/RestTemplateConfig.java
@@ -0,0 +1,27 @@
+package com.farriver.bwf.service.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+ private static final Logger logger = LoggerFactory.getLogger(RestTemplateConfig.class);
+ @Bean
+ public RestTemplate restTemplate(ClientHttpRequestFactory factory){
+ return new RestTemplate(factory);
+ }
+
+ @Bean
+ public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
+ SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
+ factory.setConnectTimeout(15000);
+ factory.setReadTimeout(5000);
+
+ return factory;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/SMSMessageConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/SMSMessageConfig.java
new file mode 100644
index 0000000..e4abad0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/SMSMessageConfig.java
@@ -0,0 +1,153 @@
+package com.farriver.bwf.service.config;
+
+import com.farriver.bwf.common.utilities.HttpUtil;
+import com.tencentcloudapi.common.Credential;
+import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+import com.tencentcloudapi.common.profile.ClientProfile;
+import com.tencentcloudapi.common.profile.HttpProfile;
+import com.tencentcloudapi.sms.v20210111.SmsClient;
+import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
+import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.client.RestTemplate;
+
+public class SMSMessageConfig {
+ private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class);
+
+ @Resource
+ private RestTemplate restTemplate;
+
+// @RequestMapping(value = "/sendsmsTest", method = RequestMethod.GET)
+// public ApiData sendsmsTest() throws IOException {
+// //单发短信API
+// String url = "https://open.ucpaas.com/ol/sms/sendsms";
+// JSONObject jsonObject = new JSONObject();
+// //基础配置,在开发平台认证后获取
+// jsonObject.put("sid","ad024f8****************05d1614");
+// jsonObject.put("token","5ddbf62d4d****************e27402c");
+// jsonObject.put("appid","0ceaca4708****************76ec45f");
+// //模板ID,在开发平台创建模板对应的模板ID
+// jsonObject.put("templateid", "432116");
+// //模板对应的参数,参数之间拼接用逗号作为间隔符
+// jsonObject.put("param", "1315,500");
+// //要发送的手机号
+// jsonObject.put("mobile", "用户的手机号");
+// //用户透传ID,随状态报告返回,可以不填写
+// jsonObject.put("uid","");
+// String json = JSONObject.toJSONString(jsonObject);
+// //使用restTemplate进行访问远程服务
+// HttpHeaders headers = new HttpHeaders();
+// headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
+// HttpEntity<String> httpEntity = new HttpEntity<String>(json, headers);
+// String result = restTemplate.postForObject(url, httpEntity, String.class);
+// return result;
+
+// JSONObject json = new JSONObject();
+
+// json.put("PhoneNumberSet", ["+8618511122266", "+8618511122233"]);
+// json.put("SmsSdkAppId", "1400006666");
+// json.put("SignName", "腾讯云");
+// json.put("TemplateId", "1234");
+// json.put("TemplateParamSet", ["12345"]);
+// json.put("SessionContext", "test");
+//
+// String params = json.toJSONString();
+//
+// String url = "sms.tencentcloudapi.com";
+//
+// CloseableHttpClient httpClient = HttpClients.createDefault();
+//
+// HttpPost httpPost = new HttpPost(url);
+// RequestConfig defaultRequestConfig = RequestConfig
+// .custom()
+// .setSocketTimeout(5000)
+// .setConnectTimeout(5000)
+// .setConnectionRequestTimeout(5000)
+// .build();
+// httpPost.setConfig(defaultRequestConfig);
+// httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
+// httpPost.addHeader("X-TC-Action", "SendSms");
+// httpPost.addHeader("x-forwarded-for", HttpUtil.GetDynamicIP());
+// httpPost.setEntity(new StringEntity(params, "UTF-8"));
+//
+// CloseableHttpResponse response = null;
+//
+// try {
+// response = httpClient.execute(httpPost);
+// StatusLine statusline = response.getStatusLine();
+// logger.info("statusline: " + statusline);
+//
+// int statusCode = statusline.getStatusCode();
+// logger.info("statusCode: " + statusCode);
+//
+// org.apache.http.HttpEntity entity = response.getEntity();
+// String result = EntityUtils.toString(entity, "UTF-8");
+// logger.info("result: " + result);
+//
+// return new ApiData(statusCode, statusline.toString(), result, null);
+// } catch (Exception e) {
+// return ApiData.error(e.getMessage(), e);
+// } finally {
+// if (response != null) response.close();
+// httpClient.close();
+// }
+// }
+
+// @RequestMapping(value = "/sendBatchsmsTest", method = RequestMethod.GET)
+// public String sendBatchsmsTest() {
+// //群发短信API
+// String url = "https://open.ucpaas.com/ol/sms/sendsms_batch";
+// JSONObject jsonObject = new JSONObject();
+// //基础配置,在开发平台认证后获取
+// jsonObject.put("sid", "ad024f8****************05d1614");
+// jsonObject.put("token", "5ddbf62d4d****************e27402c");
+// jsonObject.put("appid", "0ceaca4708****************76ec45f");
+// //模板ID,在开发平台创建模板对应的模板ID
+// jsonObject.put("templateid", "432116");
+// //模板对应的参数,参数之间拼接用逗号作为间隔符
+// jsonObject.put("param", "1315,500");
+// //群发多个手机号之间要用逗号作为间隔符
+// jsonObject.put("mobile", "用户的手机号A,用户的手机号B");
+// //用户透传ID,随状态报告返回,可以不填写
+// jsonObject.put("uid", "");
+// String json = JSONObject.toJSONString(jsonObject);
+// //使用restTemplate进行访问远程服务
+// HttpHeaders headers = new HttpHeaders();
+// headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
+// HttpEntity<String> httpEntity = new HttpEntity<String>(json, headers);
+// String result = restTemplate.postForObject(url, httpEntity, String.class);
+// return result;
+// }
+
+ public static void send() {
+ try{
+ // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
+ // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
+ Credential cred = new Credential("SecretId", "SecretKey");
+ // 实例化一个http选项,可选的,没有特殊需求可以跳过
+ HttpProfile httpProfile = new HttpProfile();
+ httpProfile.setEndpoint("sms.tencentcloudapi.com");
+ // 实例化一个client选项,可选的,没有特殊需求可以跳过
+ ClientProfile clientProfile = new ClientProfile();
+ clientProfile.setHttpProfile(httpProfile);
+ // 实例化要请求产品的client对象,clientProfile是可选的
+ SmsClient client = new SmsClient(cred, "", clientProfile);
+ // 实例化一个请求对象,每个接口都会对应一个request对象
+ SendSmsRequest req = new SendSmsRequest();
+ String[] phoneNumberSet1 = {"18222052509"};
+ req.setPhoneNumberSet(phoneNumberSet1);
+
+ req.setSmsSdkAppId("1400583314");
+ req.setSignName("testsign");
+ req.setTemplateId("腾讯云");
+ // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
+ SendSmsResponse resp = client.SendSms(req);
+ // 输出json格式的字符串回包
+ System.out.println(SendSmsResponse.toJsonString(resp));
+ } catch (TencentCloudSDKException e) {
+ System.out.println(e.toString());
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CacheConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CacheConfig.java
new file mode 100644
index 0000000..cdb88fd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CacheConfig.java
@@ -0,0 +1,102 @@
+package com.farriver.bwf.service.config.cache;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.utilities.FastJson2JsonRedisSerializer;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.CachingConfigurerSupport;
+import org.springframework.cache.interceptor.CacheErrorHandler;
+import org.springframework.cache.interceptor.CacheResolver;
+import org.springframework.cache.interceptor.KeyGenerator;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializationContext;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+
+@Configuration
+public class CacheConfig extends CachingConfigurerSupport {
+ private static final Logger logger = LoggerFactory.getLogger(CacheConfig.class);
+
+ @Resource
+ private RedisConnectionFactory factory;
+
+ @Bean
+ public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate<Object, Object> template = new RedisTemplate<>();
+ template.setConnectionFactory(redisConnectionFactory);
+
+ var serializer = new FastJson2JsonRedisSerializer(Object.class);
+
+ var mapper = new ObjectMapper();
+ mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+ mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+ serializer.setObjectMapper(mapper);
+
+ template.setValueSerializer(serializer);
+ template.setKeySerializer(new StringRedisSerializer());
+ template.afterPropertiesSet();
+ return template;
+ }
+
+ @Override
+ @Bean
+ public KeyGenerator keyGenerator() {
+ return (o, method, objects) -> {
+ String key = JSON.toJSONString(objects)
+ .replace("\"", "")
+ .replace("{", "")
+ .replace("}", "")
+ .replace(",", "")
+ .replace(":", "");
+
+ return key;
+ };
+ }
+
+ @Bean
+ @Override
+ public CacheResolver cacheResolver() {
+ var redisCacheManager = cacheManager();
+ List<CacheManager> list = new ArrayList<>();
+ list.add(redisCacheManager);
+
+ return new CustomCacheResolver(list);
+ }
+
+ @Bean
+ @Override
+ public CacheErrorHandler errorHandler() {
+ return new IgnoreExceptionCacheErrorHandler();
+ }
+
+ @Bean
+ @Override
+ public CacheManager cacheManager() {
+ var redisSerializer = getRedisSerializer();
+ var serializationPair = RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer);
+ var cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
+ .entryTtl(Duration.ofSeconds(300))
+ .serializeValuesWith(serializationPair);
+
+ return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
+ }
+
+ private RedisSerializer<Object> getRedisSerializer() {
+ return new GenericJackson2JsonRedisSerializer();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CustomCacheResolver.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CustomCacheResolver.java
new file mode 100644
index 0000000..8c9b228
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/CustomCacheResolver.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.service.config.cache;
+
+import io.jsonwebtoken.lang.Assert;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.cache.Cache;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.interceptor.CacheOperationInvocationContext;
+import org.springframework.cache.interceptor.CacheResolver;
+import org.springframework.lang.Nullable;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 开发者可以通过自定义CacheResolver实现动态选择CacheManager,
+ * 如下通过代码实现多种缓存机制:
+ * 优先从堆内存读取缓存,堆内存缓存不存在时再从redis读取缓存,
+ * redis缓存不存在时最后从mysql读取数据,并将读取到的数据依次写到redis和堆内存中。
+ */
+public class CustomCacheResolver implements CacheResolver, InitializingBean {
+ private static final Logger logger = LoggerFactory.getLogger(CustomCacheResolver.class);
+
+ @Nullable
+ private List<CacheManager> cacheManagerList;
+
+ public CustomCacheResolver() {
+
+ }
+
+ public CustomCacheResolver(List<CacheManager> cacheManagerList) {
+ this.cacheManagerList = cacheManagerList;
+ }
+
+ public void setCacheManagerList(@Nullable List<CacheManager> cacheManagerList) {
+ this.cacheManagerList = cacheManagerList;
+ }
+
+ public List<CacheManager> getCacheManagerList() {
+ return cacheManagerList;
+ }
+
+ @Override
+ public void afterPropertiesSet() {
+ Assert.notNull(this.cacheManagerList, "CacheManager is required");
+ }
+
+ @Override
+ public Collection<? extends Cache> resolveCaches(CacheOperationInvocationContext<?> cacheOperationInvocationContext) {
+ Collection<String> cacheNames = getCacheNames(cacheOperationInvocationContext);
+ if (cacheNames == null) {
+ return Collections.emptyList();
+ }
+ Collection<Cache> result = new ArrayList<>();
+ for (CacheManager cacheManager : getCacheManagerList()) {
+ for (String cacheName : cacheNames) {
+ Cache cache = cacheManager.getCache(cacheName);
+ if (cache == null) {
+ throw new IllegalArgumentException("Cannot find cache named '" + cacheName + "' for" + cacheOperationInvocationContext.getOperation());
+ }
+
+ result.add(cache);
+ }
+ }
+
+ return result;
+ }
+
+ private Collection<String> getCacheNames(CacheOperationInvocationContext<?> cacheOperationInvocationContext) {
+ return cacheOperationInvocationContext.getOperation().getCacheNames();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/IgnoreExceptionCacheErrorHandler.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/IgnoreExceptionCacheErrorHandler.java
new file mode 100644
index 0000000..d4845af
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/cache/IgnoreExceptionCacheErrorHandler.java
@@ -0,0 +1,33 @@
+package com.farriver.bwf.service.config.cache;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.Cache;
+import org.springframework.cache.interceptor.CacheErrorHandler;
+
+/**
+ * 当缓存读写异常时,忽略异常
+ */
+public class IgnoreExceptionCacheErrorHandler implements CacheErrorHandler {
+ private static final Logger logger = LoggerFactory.getLogger(IgnoreExceptionCacheErrorHandler.class);
+
+ @Override
+ public void handleCacheGetError(RuntimeException e, Cache cache, Object o) {
+ logger.error(e.getMessage(), e);
+ }
+
+ @Override
+ public void handleCachePutError(RuntimeException e, Cache cache, Object o, Object o1) {
+ logger.error(e.getMessage(), e);
+ }
+
+ @Override
+ public void handleCacheEvictError(RuntimeException e, Cache cache, Object o) {
+ logger.error(e.getMessage(), e);
+ }
+
+ @Override
+ public void handleCacheClearError(RuntimeException e, Cache cache) {
+ logger.error(e.getMessage(), e);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DBContextHolder.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DBContextHolder.java
new file mode 100644
index 0000000..6cca709
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DBContextHolder.java
@@ -0,0 +1,51 @@
+package com.farriver.bwf.service.config.database;
+
+import com.farriver.bwf.common.options.DBTypeOption;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class DBContextHolder {
+ private static final Logger logger = LoggerFactory.getLogger(DBContextHolder.class);
+
+ private static final ThreadLocal<DBTypeOption> contextHolder = new ThreadLocal<>();
+
+ private static final AtomicInteger counter = new AtomicInteger(-1);
+
+ public static void set(DBTypeOption dbType) {
+ contextHolder.set(dbType);
+ }
+
+ public static DBTypeOption get() {
+ return contextHolder.get();
+ }
+
+ public static void master() {
+ set(DBTypeOption.MASTER);
+ logger.debug("切换到master主数据库...");
+ }
+
+ public static void slave() {
+ // 轮询
+ int index = counter.getAndIncrement() % 2;
+ if (counter.get() > 9999) {
+ counter.set(-1);
+ }
+
+ switch (index) {
+ case 0:
+ set(DBTypeOption.SLAVE1);
+ logger.debug("切换到slave1读数据库...");
+ break;
+ case 1:
+ set(DBTypeOption.SLAVE2);
+ logger.debug("切换到slave2读数据库...");
+ break;
+ default:
+ set(DBTypeOption.MASTER);
+ logger.debug("切换到master主数据库...");
+ break;
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceAop.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceAop.java
new file mode 100644
index 0000000..a470dac
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceAop.java
@@ -0,0 +1,49 @@
+package com.farriver.bwf.service.config.database;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Aspect
+@Component
+public class DataSourceAop {
+ private final Logger logger = LoggerFactory.getLogger(DataSourceAop.class);
+
+ @Pointcut("!@annotation(com.farriver.bwf.service.config.database.Master) " +
+ "&& execution(public * com.farriver.bwf.service.*..*.select*(..)) " +
+ "|| execution(public * com.farriver.bwf.service.*..*.Select*(..))" +
+ "|| execution(public * com.farriver.bwf.service.*..*.get*(..))" +
+ "|| execution(public * com.farriver.bwf.service.*..*.Get*(..))")
+ public void readPointcut() {
+
+ }
+
+ @Pointcut("@annotation(com.farriver.bwf.service.config.database.Master) " +
+ "|| execution(* com.farriver.bwf.service..*.insert*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.add*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.update*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.edit*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.delete*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.remove*(..))" +
+ "|| execution(* com.farriver.bwf.service..*.Create*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.Update*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.Delete*(..)) " +
+ "|| execution(* com.farriver.bwf.service..*.BatchDelete*(..)) ")
+ public void writePointcut() {
+
+ }
+
+ @Before("readPointcut()")
+ public void read() {
+ DBContextHolder.slave();
+ }
+
+ @Before("writePointcut()")
+ public void write() {
+ DBContextHolder.master();
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceConfig.java
new file mode 100644
index 0000000..21f61e4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/DataSourceConfig.java
@@ -0,0 +1,51 @@
+package com.farriver.bwf.service.config.database;
+
+import com.farriver.bwf.common.options.DBTypeOption;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
+@Configuration
+public class DataSourceConfig {
+
+ @Bean
+ @ConfigurationProperties("spring.datasource.master")
+ public DataSource masterDataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean
+ @ConfigurationProperties("spring.datasource.slave1")
+ public DataSource slave1DataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean
+ @ConfigurationProperties("spring.datasource.slave2")
+ public DataSource slave2DataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean
+ public DataSource routingDataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
+ @Qualifier("slave1DataSource") DataSource slave1DataSource,
+ @Qualifier("slave2DataSource") DataSource slave2DataSource) {
+
+ Map<Object, Object> targetDataSources = new HashMap<>();
+ targetDataSources.put(DBTypeOption.MASTER, masterDataSource);
+ targetDataSources.put(DBTypeOption.SLAVE1, slave1DataSource);
+ targetDataSources.put(DBTypeOption.SLAVE2, slave2DataSource);
+
+ RoutingDataSource routingDataSource = new RoutingDataSource();
+ routingDataSource.setDefaultTargetDataSource(masterDataSource);
+ routingDataSource.setTargetDataSources(targetDataSources);
+
+ return routingDataSource;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/Master.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/Master.java
new file mode 100644
index 0000000..1efa76e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/Master.java
@@ -0,0 +1,5 @@
+package com.farriver.bwf.service.config.database;
+
+public @interface Master {
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/MyBatisConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/MyBatisConfig.java
new file mode 100644
index 0000000..cfe03dd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/MyBatisConfig.java
@@ -0,0 +1,33 @@
+package com.farriver.bwf.service.config.database;
+
+import jakarta.annotation.Resource;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.sql.DataSource;
+
+@EnableTransactionManagement
+@Configuration
+public class MyBatisConfig {
+
+ @Resource(name = "routingDataSource")
+ private DataSource routingDataSource;
+
+ @Bean
+ public SqlSessionFactory sqlSessionFactory() throws Exception {
+ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
+ sqlSessionFactoryBean.setDataSource(routingDataSource);
+ // sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
+ return sqlSessionFactoryBean.getObject();
+ }
+
+ @Bean
+ public PlatformTransactionManager platformTransactionManager() {
+ return new DataSourceTransactionManager(routingDataSource);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/RoutingDataSource.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/RoutingDataSource.java
new file mode 100644
index 0000000..8421619
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/config/database/RoutingDataSource.java
@@ -0,0 +1,17 @@
+package com.farriver.bwf.service.config.database;
+
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+import org.springframework.lang.Nullable;
+
+/*
+Spring boot提供了AbstractRoutingDataSource
+根据用户定义的规则选择当前的数据源,这样我们可以在执行查询之前,设置使用的数据源。
+它的抽象方法 determineCurrentLookupKey() 决定使用哪个数据源。
+ */
+public class RoutingDataSource extends AbstractRoutingDataSource {
+ @Nullable
+ @Override
+ protected Object determineCurrentLookupKey() {
+ return DBContextHolder.get();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveProductService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveProductService.java
new file mode 100644
index 0000000..0198082
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveProductService.java
@@ -0,0 +1,298 @@
+package com.farriver.bwf.service.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrderActiveProductMapper;
+import com.farriver.bwf.data.master.model.OrderActiveProduct;
+import com.farriver.bwf.data.master.model.OrderActiveProductExample;
+import com.farriver.bwf.data.transferobject.options.OrderProductStatusOptions;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderActiveProductQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderActiveProductViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.product.ProductMasterViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import com.farriver.bwf.service.product.ProductService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrderActiveProduct_cache")
+public class OrderActiveProductService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderActiveProductService.class);
+
+ private String message;
+
+ @Resource
+ OrderActiveProductMapper mapper;
+
+ @Resource
+ ProductService productService;
+
+ public Map<MapDataType, Object> GetList(OrderActiveProductQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrderActiveProductExample example = new OrderActiveProductExample();
+ OrderActiveProductExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andProductcodeLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getOrderid() != null && !queryObject.getOrderid().isEmpty()) {
+ criteria.andOrderidEqualTo(queryObject.getOrderid());
+ }
+ if (queryObject.getOrderno() != null && !queryObject.getOrderno().isEmpty()) {
+ criteria.andOrdernoLike("%" + queryObject.getOrderno() + "%");
+ }
+ if (queryObject.getProductid() != null && !queryObject.getProductid().isEmpty()) {
+ criteria.andProductidEqualTo(queryObject.getProductid());
+ }
+ if (queryObject.getProductcode() != null && !queryObject.getProductcode().isEmpty()) {
+ criteria.andProductcodeLike("%" + queryObject.getProductcode() + "%");
+ }
+ if (queryObject.getProductname() != null && !queryObject.getProductname().isEmpty()) {
+ criteria.andProductnameLike("%" + queryObject.getProductname() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrderActiveProduct> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrderActiveProduct GetDetail(OrderActiveProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrderActiveProduct> list = (List<OrderActiveProduct>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrderActiveProductViewModel model) {
+ OrderActiveProduct entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ /*
+ / ShoppingCart has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchCreate(List<OrderActiveProductViewModel> models) {
+ int count = 0;
+ if (models != null && models.size() > 0) {
+ for (OrderActiveProductViewModel model : models) {
+ OrderActiveProduct entity = Check(ActionType.CREATE, model);
+ if (entity != null) {
+ count += mapper.insertSelective(entity);
+ }
+ }
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, count);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrderActiveProductViewModel model) {
+ OrderActiveProduct entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ /*
+ / ShoppingCart has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(OrderActiveProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrderActiveProduct> list = (List<OrderActiveProduct>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrderActiveProductViewModel GetViewDetail(String id) {
+ OrderActiveProductQueryObject queryObject = new OrderActiveProductQueryObject();
+ queryObject.setId(id);
+
+ OrderActiveProduct entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrderActiveProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrderActiveProduct> list = (List<OrderActiveProduct>) map.get(MapDataType.DATA_LIST);
+
+ List<OrderActiveProductViewModel> viewModels = new ArrayList<>();
+ for (OrderActiveProduct entity : list) {
+ OrderActiveProductViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ public static OrderActiveProductViewModel BuildViewModel(OrderActiveProduct entity) {
+ if (entity == null)
+ return null;
+
+ OrderActiveProductViewModel model = new OrderActiveProductViewModel();
+
+ model.setId(entity.getId());
+
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setProductid(entity.getProductid());
+ model.setProductcode(entity.getProductcode());
+ model.setProductname(entity.getProductname());
+ model.setStatus(entity.getStatus());
+ model.setColor(entity.getColor());
+ model.setSize(entity.getSize());
+ model.setCount(entity.getCount());
+ model.setImage(entity.getImage());
+ model.setPrice(entity.getPrice());
+ model.setSaleprice(entity.getSaleprice());
+ model.setRejectreason(entity.getRejectreason());
+ model.setRejectcomment(entity.getRejectcomment());
+ model.setRejecttime(entity.getRejecttime());
+ model.setPayer(entity.getPayer());
+ model.setPayedmoney(entity.getPayedmoney());
+ model.setDiscount(entity.getDiscount());
+ model.setPayee(entity.getPayee());
+ model.setOrderid(entity.getOrderid());
+ model.setOrderno(entity.getOrderno());
+
+ return model;
+ }
+
+ public OrderActiveProduct Check(ActionType actionType, OrderActiveProductViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+ if (model.getOrderid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+ if (model.getProductid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrderActiveProduct entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrderActiveProduct();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ OrderActiveProductQueryObject queryObject = new OrderActiveProductQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ if (model.getProductid() != null && !model.getProductid().isEmpty()) {
+
+ ApiData apidata = productService.GetProductDetailByMasterId(model.getProductid());
+ if (apidata != null && apidata.getCode() == 200) {
+ ProductMasterViewModel productMasterViewModel = (ProductMasterViewModel) apidata.getData();
+ if (productMasterViewModel != null) {
+ entity.setProductcode(productMasterViewModel.getCode());
+ }
+ }
+ }
+
+ entity.setProductname(model.getProductid());
+ entity.setProductname(model.getProductname());
+ entity.setStatus(OrderProductStatusOptions.Defined.ordinal());
+ entity.setColor(model.getColor());
+ entity.setSize(model.getSize());
+ entity.setCount(model.getCount());
+ entity.setImage(model.getImage());
+ entity.setPrice(model.getPrice());
+ entity.setSaleprice(model.getSaleprice());
+ entity.setRejectreason(model.getRejectreason());
+ entity.setRejectcomment(model.getRejectcomment());
+ entity.setRejecttime(model.getRejecttime());
+ entity.setPayer(model.getPayer());
+ entity.setPayedmoney(model.getPayedmoney());
+ entity.setDiscount(model.getDiscount());
+ entity.setPayee(model.getPayee());
+ entity.setOrderid(model.getOrderid());
+ entity.setOrderno(model.getOrderno());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveService.java
new file mode 100644
index 0000000..b2c39ff
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderActiveService.java
@@ -0,0 +1,812 @@
+package com.farriver.bwf.service.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.entity.OrderActiveExtend;
+import com.farriver.bwf.data.master.mapper.OrderActiveMapper;
+import com.farriver.bwf.data.master.model.OrderActive;
+import com.farriver.bwf.data.master.model.OrderActiveExample;
+import com.farriver.bwf.data.master.model.OrderActiveProduct;
+import com.farriver.bwf.data.transferobject.options.OrderStatusOptions;
+import com.farriver.bwf.data.transferobject.options.PaymentMethodOptions;
+import com.farriver.bwf.data.transferobject.options.VIPMasterPaperRelationStatusOptions;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderActiveProductQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderActiveQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.shopping.ShoppingCartQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderActiveProductViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderActiveViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.shopping.ShoppingCartViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterPaperRelationViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterWalletChargeViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import com.farriver.bwf.service.shopping.ShoppingCartProductService;
+import com.farriver.bwf.service.shopping.ShoppingCartService;
+import com.farriver.bwf.service.vip.VIPMasterPaperRelationService;
+import com.farriver.bwf.service.vip.VIPMasterService;
+import com.farriver.bwf.service.vip.VIPMasterWalletService;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrderActive_cache")
+public class OrderActiveService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderActiveService.class);
+
+ private String message;
+
+ @Resource
+ OrderActiveMapper mapper;
+
+ @Resource
+ OrderActiveProductService orderActiveProductService;
+
+ @Resource
+ ShoppingCartService shoppingCartService;
+
+ @Resource
+ ShoppingCartProductService shoppingCartProductService;
+
+ @Resource
+ VIPMasterService vipMasterService;
+
+ @Resource
+ VIPMasterWalletService vipMasterWalletService;
+
+ @Resource
+ VIPMasterPaperRelationService vipMasterPaperRelationService;
+
+ public Map<MapDataType, Object> GetList(OrderActiveQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrderActiveExample example = new OrderActiveExample();
+ OrderActiveExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNoLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getVipuserid() != null && !queryObject.getVipuserid().isEmpty()) {
+ criteria.andVipuseridEqualTo(queryObject.getVipuserid());
+ }
+ if (queryObject.getNo() != null && !queryObject.getNo().isEmpty()) {
+ criteria.andNoLike("%" + queryObject.getNo() + "%");
+ }
+ if (queryObject.getVipphone() != null && !queryObject.getVipphone().isEmpty()) {
+ criteria.andVipphoneLike("%" + queryObject.getVipphone() + "%");
+ }
+ if (queryObject.getVipname() != null && !queryObject.getVipname().isEmpty()) {
+ criteria.andVipnameLike("%" + queryObject.getVipname() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andOrdertimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ if (queryObject.getType() != null) {
+ criteria.andTypeEqualTo(queryObject.getType());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrderActive> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public Map<MapDataType, Object> GetExtendList(OrderActiveQueryObject queryObject) {
+ if (queryObject == null)
+ ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ OrderActiveExample example = new OrderActiveExample();
+ OrderActiveExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andVipnameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getVipuserid() != null && !queryObject.getVipuserid().isEmpty()) {
+ criteria.andVipuseridEqualTo(queryObject.getVipuserid());
+ }
+ if (queryObject.getNo() != null && !queryObject.getNo().isEmpty()) {
+ criteria.andNoEqualTo(queryObject.getNo());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andOrdertimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ if (queryObject.getType() != null) {
+ criteria.andTypeEqualTo(queryObject.getType());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrderActiveExtend> list = mapper.selectOrderActiveExtendByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrderActive GetDetail(OrderActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrderActive> list = (List<OrderActive>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ public OrderActiveExtend GetExtendDetail(OrderActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetExtendList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrderActiveExtend> list = (List<OrderActiveExtend>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrderActiveViewModel model) {
+ OrderActive entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ mapper.insertSelective(entity);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, entity);
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData CreateWithProducts(OrderActiveViewModel model) {
+ OrderActive entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ entity.setOrdertime(new Date());
+
+ List<OrderActiveProductViewModel> productViewModels = model.getProducts();
+ if (productViewModels != null && productViewModels.size() > 0) {
+ for (OrderActiveProductViewModel productViewModel : productViewModels) {
+ productViewModel.setOrderid(entity.getId());
+ productViewModel.setOrderno(entity.getNo());
+ }
+ }
+
+ ApiData productResult = orderActiveProductService.BatchCreate(model.getProducts());
+ mapper.insertSelective(entity);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, entity);
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrderActiveViewModel model) {
+ OrderActive entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData UpdateWithProducts(OrderActiveViewModel model) {
+ OrderActive entity = Check(ActionType.UPDATE, model);
+
+ //清楚旧产品数据
+ OrderActiveProductQueryObject queryObject = new OrderActiveProductQueryObject();
+ queryObject.setOrderid(model.getId());
+ orderActiveProductService.BatchDelete(queryObject);
+
+ if (entity != null) {
+ List<OrderActiveProductViewModel> productViewModels = model.getProducts();
+ if (productViewModels != null && productViewModels.size() > 0) {
+ for (OrderActiveProductViewModel productViewModel : productViewModels) {
+ productViewModel.setOrderid(entity.getId());
+ productViewModel.setOrderno(entity.getNo());
+ }
+ }
+
+ ApiData productResult = orderActiveProductService.BatchCreate(model.getProducts());
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ public ApiData BatchDelete(OrderActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrderActive> list = (List<OrderActive>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Transactional
+ public ApiData MakeOrder(OrderActiveViewModel model) {
+ ShoppingCartQueryObject queryObject = new ShoppingCartQueryObject();
+ queryObject.setVipuserid(model.getVipuserid());
+
+ if (model.getProducts() == null || model.getProducts().size() <= 0) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ //Remove product from shopping cart
+ ShoppingCartViewModel shoppingCartViewModel = shoppingCartService.GetExtendViewDetail(queryObject);
+ if (shoppingCartViewModel != null) {
+ List<String> productIds = model.getProducts().stream()
+ .map(OrderActiveProductViewModel::getProductid)
+ .collect(Collectors.toList());
+
+ shoppingCartProductService.DeleteByProductID(productIds);
+ }
+
+ return CreateWithProducts(model);
+ }
+
+ public ApiData Delivery(OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getId() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrderActiveViewModel orderActiveViewModel = GetViewDetail(model.getId());
+ if (orderActiveViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ orderActiveViewModel.setStatus(OrderStatusOptions.Delivered.ordinal());
+
+ return Update(orderActiveViewModel);
+ }
+
+ public ApiData Receive(OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getId() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrderActiveViewModel orderActiveViewModel = GetViewDetail(model.getId());
+ if (orderActiveViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ orderActiveViewModel.setStatus(OrderStatusOptions.Received.ordinal());
+
+ return Update(orderActiveViewModel);
+ }
+
+ public ApiData Reject(OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getId() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrderActiveViewModel orderActiveViewModel = GetViewDetail(model.getId());
+ if (orderActiveViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ orderActiveViewModel.setStatus(OrderStatusOptions.Rejected.ordinal());
+
+ return Update(orderActiveViewModel);
+ }
+
+ @Transactional
+ public ApiData Pay(OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getId() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrderActiveViewModel orderActiveViewModel = GetExtendViewDetail(model.getId());
+ if (orderActiveViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ VIPMasterViewModel vipMasterViewModel = vipMasterService.GetViewDetail(model.getVipuserid());
+ if (vipMasterViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ orderActiveViewModel.setStatus(OrderStatusOptions.Paid.ordinal());
+ orderActiveViewModel.setPayedmoney(model.getPayedmoney());
+ orderActiveViewModel.setPaytime(new Date());
+ orderActiveViewModel.setPaymentmethod(model.getPaymentmethod());
+
+ if (PaymentMethodOptions.AccountBalancePay.ordinal() == model.getPaymentmethod()) {
+ VIPMasterWalletChargeViewModel walletChargeViewModel = new VIPMasterWalletChargeViewModel();
+ walletChargeViewModel.setMasterid(orderActiveViewModel.getVipuserid());
+ walletChargeViewModel.setAmount(model.getPayedmoney());
+
+ vipMasterWalletService.Charge(walletChargeViewModel);
+ }
+
+ List<OrderActiveProductViewModel> products = orderActiveViewModel.getProducts();
+ for (OrderActiveProductViewModel product : products) {
+ switch (orderActiveViewModel.getType()) {
+ case 0: //OrderTypeOptions.RECHARGE.ordinal()
+ {
+ break;
+ }
+ case 1: //OrderTypeOptions.PAPER.ordinal()
+ {
+ VIPMasterPaperRelationViewModel paperRelationViewModel = new VIPMasterPaperRelationViewModel();
+ paperRelationViewModel.setAmount(orderActiveViewModel.getPayedmoney());
+ paperRelationViewModel.setBuyedtime(new Date());
+ paperRelationViewModel.setStatus(VIPMasterPaperRelationStatusOptions.VALID.ordinal());
+
+ paperRelationViewModel.setMasterid(vipMasterViewModel.getId());
+ paperRelationViewModel.setMastercode(vipMasterViewModel.getCode());
+ paperRelationViewModel.setMastername(vipMasterViewModel.getName());
+
+ paperRelationViewModel.setPaperid(product.getProductid());
+ paperRelationViewModel.setPapercode(product.getProductcode());
+ paperRelationViewModel.setPapername(product.getProductname());
+
+ vipMasterPaperRelationService.Create(paperRelationViewModel);
+ break;
+ }
+ case 2: //OrderTypeOptions.MALL.ordinal()
+ {
+ break;
+ }
+ }
+ }
+
+
+ return Update(orderActiveViewModel);
+ }
+
+ public ApiData Cancel(OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getId() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrderActiveViewModel orderActiveViewModel = GetViewDetail(model.getId());
+ if (orderActiveViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ orderActiveViewModel.setStatus(OrderStatusOptions.Canceled.ordinal());
+
+ return Update(orderActiveViewModel);
+ }
+
+ public ApiData Comment(OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getId() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrderActiveViewModel orderActiveViewModel = GetViewDetail(model.getId());
+ if (orderActiveViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ orderActiveViewModel.setStatus(OrderStatusOptions.Commented.ordinal());
+ orderActiveViewModel.setCommentcontent(model.getCommentcontent());
+ orderActiveViewModel.setCommentlevel(model.getCommentlevel());
+ orderActiveViewModel.setCommenttime(new Date());
+
+ return Update(orderActiveViewModel);
+ }
+
+ public ApiData Complete(OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getId() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrderActiveViewModel orderActiveViewModel = GetViewDetail(model.getId());
+ if (orderActiveViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ orderActiveViewModel.setStatus(OrderStatusOptions.Completed.ordinal());
+ orderActiveViewModel.setCompletetime(new Date());
+
+ return Update(orderActiveViewModel);
+ }
+
+ public OrderActiveViewModel GetViewDetail(String id) {
+ OrderActiveQueryObject queryObject = new OrderActiveQueryObject();
+ queryObject.setId(id);
+
+ OrderActive entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetViewPageList(OrderActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrderActive> list = (List<OrderActive>) map.get(MapDataType.DATA_LIST);
+
+ List<OrderActiveViewModel> viewModels = new ArrayList<>();
+ for (OrderActive entity : list) {
+ OrderActiveViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public OrderActiveViewModel GetExtendViewDetail(String id) {
+ OrderActiveQueryObject queryObject = new OrderActiveQueryObject();
+ queryObject.setId(id);
+
+ OrderActiveExtend entity = GetExtendDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetExtendViewPageList(OrderActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetExtendList(queryObject);
+ List<OrderActiveExtend> list = (List<OrderActiveExtend>) map.get(MapDataType.DATA_LIST);
+
+ List<OrderActiveViewModel> viewModels = new ArrayList<>();
+ for (OrderActiveExtend entity : list) {
+ OrderActiveViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrderActiveViewModel BuildViewModel(OrderActive entity) {
+ if (entity == null)
+ return null;
+
+ OrderActiveViewModel model = new OrderActiveViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setNo(entity.getNo());
+ model.setTotalmoney(entity.getTotalmoney());
+ model.setPayedmoney(entity.getPayedmoney());
+ model.setPaymentmethod(entity.getPaymentmethod());
+ model.setDiscountmoney(entity.getDiscountmoney());
+ model.setStatus(entity.getStatus());
+ model.setOrdertime(entity.getOrdertime());
+ model.setPaytime(entity.getPaytime());
+ model.setSendtime(entity.getSendtime());
+ model.setReceivetime(entity.getReceivetime());
+ model.setCommenttime(entity.getCommenttime());
+ model.setSendername(entity.getSendername());
+ model.setSendercode(entity.getSendercode());
+ model.setSendercontactno(entity.getSendercontactno());
+ model.setTargetaddress(entity.getTargetaddress());
+ model.setDeliveryaddress(entity.getDeliveryaddress());
+ model.setOptimalcoupon(entity.getOptimalcoupon());
+ model.setLogisticscompany(entity.getLogisticscompany());
+ model.setLogisticsno(entity.getLogisticsno());
+ model.setTransportmode(entity.getTransportmode());
+ model.setBoxcount(entity.getBoxcount());
+ model.setBoxweight(entity.getBoxweight());
+ model.setFreight(entity.getFreight());
+ model.setCommentcontent(entity.getCommentcontent());
+ model.setCommentlevel(entity.getCommentlevel());
+ model.setReceiverid(entity.getReceiverid());
+ model.setVipuserid(entity.getVipuserid());
+ model.setVipphone(entity.getVipphone());
+ model.setVipdiamondtype(entity.getVipdiamondtype());
+ model.setViptype(entity.getViptype());
+ model.setVippicture(entity.getVippicture());
+ model.setVipcarddiscountrate(entity.getVipcarddiscountrate());
+ model.setType(entity.getType());
+
+ return model;
+ }
+
+ private static OrderActiveViewModel BuildViewModel(OrderActiveExtend entity) {
+ if (entity == null)
+ return null;
+
+ OrderActiveViewModel model = new OrderActiveViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setNo(entity.getNo());
+ model.setTotalmoney(entity.getTotalmoney());
+ model.setPayedmoney(entity.getPayedmoney());
+ model.setPaymentmethod(entity.getPaymentmethod());
+ model.setDiscountmoney(entity.getDiscountmoney());
+ model.setStatus(entity.getStatus());
+ model.setOrdertime(entity.getOrdertime());
+ model.setPaytime(entity.getPaytime());
+ model.setSendtime(entity.getSendtime());
+ model.setReceivetime(entity.getReceivetime());
+ model.setCommenttime(entity.getCommenttime());
+ model.setSendername(entity.getSendername());
+ model.setSendercode(entity.getSendercode());
+ model.setSendercontactno(entity.getSendercontactno());
+ model.setTargetaddress(entity.getTargetaddress());
+ model.setDeliveryaddress(entity.getDeliveryaddress());
+ model.setOptimalcoupon(entity.getOptimalcoupon());
+ model.setLogisticscompany(entity.getLogisticscompany());
+ model.setLogisticsno(entity.getLogisticsno());
+ model.setTransportmode(entity.getTransportmode());
+ model.setBoxcount(entity.getBoxcount());
+ model.setBoxweight(entity.getBoxweight());
+ model.setFreight(entity.getFreight());
+ model.setCommentcontent(entity.getCommentcontent());
+ model.setCommentlevel(entity.getCommentlevel());
+ model.setReceiverid(entity.getReceiverid());
+ model.setVipuserid(entity.getVipuserid());
+ model.setVipphone(entity.getVipphone());
+ model.setVipdiamondtype(entity.getVipdiamondtype());
+ model.setViptype(entity.getViptype());
+ model.setVippicture(entity.getVippicture());
+ model.setVipcarddiscountrate(entity.getVipcarddiscountrate());
+ model.setType(entity.getType());
+
+ List<OrderActiveProductViewModel> products = new ArrayList<>();
+ for (OrderActiveProduct product : entity.getProducts()) {
+ OrderActiveProductViewModel productmodel = new OrderActiveProductViewModel();
+
+ productmodel.setId(product.getId());
+ productmodel.setIsdeleted(product.getIsdeleted());
+ productmodel.setRemark(product.getRemark());
+ productmodel.setCreatetime(product.getCreatetime());
+ productmodel.setUpdatetime(product.getUpdatetime());
+
+ productmodel.setProductid(product.getProductid());
+ productmodel.setProductcode(product.getProductcode());
+ productmodel.setProductname(product.getProductname());
+ productmodel.setStatus(product.getStatus());
+ productmodel.setColor(product.getColor());
+ productmodel.setSize(product.getSize());
+ productmodel.setCount(product.getCount());
+ productmodel.setImage(product.getImage());
+ productmodel.setPrice(product.getPrice());
+ productmodel.setSaleprice(product.getSaleprice());
+ productmodel.setRejectreason(product.getRejectreason());
+ productmodel.setRejectcomment(product.getRejectcomment());
+ productmodel.setRejecttime(product.getRejecttime());
+ productmodel.setPayer(product.getPayer());
+ productmodel.setPayedmoney(product.getPayedmoney());
+ productmodel.setDiscount(product.getDiscount());
+ productmodel.setPayee(product.getPayee());
+ productmodel.setOrderid(product.getOrderid());
+ productmodel.setOrderno(product.getOrderno());
+
+ products.add(productmodel);
+ }
+ model.setProducts(products);
+
+ return model;
+ }
+
+ public OrderActive Check(ActionType actionType, OrderActiveViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrderActive entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrderActive();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ entity.setStatus(OrderStatusOptions.Defined.ordinal());
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setNo(newCode);
+ } else {
+ OrderActiveQueryObject queryObject = new OrderActiveQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ entity.setStatus(model.getStatus());
+ }
+
+ entity.setTotalmoney(model.getTotalmoney());
+ entity.setPayedmoney(model.getPayedmoney());
+ entity.setDiscountmoney(model.getDiscountmoney());
+ entity.setOrdertime(model.getOrdertime());
+ entity.setPaytime(model.getPaytime());
+ entity.setPaymentmethod(model.getPaymentmethod());
+ entity.setSendtime(model.getSendtime());
+ entity.setReceivetime(model.getReceivetime());
+ entity.setCommenttime(model.getCommenttime());
+ entity.setSendername(model.getSendername());
+ entity.setSendercode(model.getSendercode());
+ entity.setSendercontactno(model.getSendercontactno());
+ entity.setTargetaddress(model.getTargetaddress());
+ entity.setDeliveryaddress(model.getDeliveryaddress());
+ entity.setOptimalcoupon(model.getOptimalcoupon());
+ entity.setLogisticscompany(model.getLogisticscompany());
+ entity.setLogisticsno(model.getLogisticsno());
+ entity.setTransportmode(model.getTransportmode());
+ entity.setBoxcount(model.getBoxcount());
+ entity.setBoxweight(model.getBoxweight());
+ entity.setFreight(model.getFreight());
+ entity.setCommentcontent(model.getCommentcontent());
+ entity.setCommentlevel(model.getCommentlevel());
+ entity.setReceiverid(model.getReceiverid());
+ entity.setVipuserid(model.getVipuserid());
+ entity.setType(model.getType());
+
+ if (model.getVipuserid() != null) {
+ VIPMasterViewModel vipMasterViewModel = vipMasterService.GetViewDetail(model.getVipuserid());
+ if (vipMasterViewModel != null) {
+ entity.setVipname(vipMasterViewModel.getName());
+ entity.setVipphone(vipMasterViewModel.getCellphone());
+ entity.setVipdiamondtype(vipMasterViewModel.getDiamondtype());
+ entity.setViptype(vipMasterViewModel.getType());
+ entity.setVippicture(vipMasterViewModel.getAvatarurl());
+ entity.setVipcarddiscountrate(vipMasterViewModel.getDiscountrate());
+ }
+ }
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "A";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%09d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ OrderActiveExample example = new OrderActiveExample();
+ example.setOrderByClause("no desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<OrderActive> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ OrderActive entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getNo();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryProductService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryProductService.java
new file mode 100644
index 0000000..126d017
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryProductService.java
@@ -0,0 +1,283 @@
+package com.farriver.bwf.service.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrderHistoryProductMapper;
+import com.farriver.bwf.data.master.model.OrderHistoryProduct;
+import com.farriver.bwf.data.master.model.OrderHistoryProductExample;
+import com.farriver.bwf.data.transferobject.options.OrderProductStatusOptions;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderHistoryProductQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderHistoryProductViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrderHistoryProduct_cache")
+public class OrderHistoryProductService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderHistoryProductService.class);
+
+ private String message;
+
+ @Resource
+ OrderHistoryProductMapper mapper;
+
+ public Map<MapDataType, Object> GetList(OrderHistoryProductQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrderHistoryProductExample example = new OrderHistoryProductExample();
+ OrderHistoryProductExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andProductcodeLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getOrderid() != null && !queryObject.getOrderid().isEmpty()) {
+ criteria.andOrderidEqualTo(queryObject.getOrderid());
+ }
+ if (queryObject.getOrderno() != null && !queryObject.getOrderno().isEmpty()) {
+ criteria.andOrdernoLike("%" + queryObject.getOrderno() + "%");
+ }
+ if (queryObject.getProductid() != null && !queryObject.getProductid().isEmpty()) {
+ criteria.andProductidEqualTo(queryObject.getProductid());
+ }
+ if (queryObject.getProductcode() != null && !queryObject.getProductcode().isEmpty()) {
+ criteria.andProductcodeLike("%" + queryObject.getProductcode() + "%");
+ }
+ if (queryObject.getProductname() != null && !queryObject.getProductname().isEmpty()) {
+ criteria.andProductnameLike("%" + queryObject.getProductname() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrderHistoryProduct> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrderHistoryProduct GetDetail(OrderHistoryProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrderHistoryProduct> list = (List<OrderHistoryProduct>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrderHistoryProductViewModel model) {
+ OrderHistoryProduct entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ /*
+ / ShoppingCart has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchCreate(List<OrderHistoryProductViewModel> models) {
+ int count = 0;
+ if (models != null && models.size() > 0) {
+ for (OrderHistoryProductViewModel model : models) {
+ OrderHistoryProduct entity = Check(ActionType.CREATE, model);
+ if (entity != null) {
+ count += mapper.insertSelective(entity);
+ }
+ }
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, count);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrderHistoryProductViewModel model) {
+ OrderHistoryProduct entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ /*
+ / ShoppingCart has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(OrderHistoryProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrderHistoryProduct> list = (List<OrderHistoryProduct>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrderHistoryProductViewModel GetViewDetail(String id) {
+ OrderHistoryProductQueryObject queryObject = new OrderHistoryProductQueryObject();
+ queryObject.setId(id);
+
+ OrderHistoryProduct entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrderHistoryProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrderHistoryProduct> list = (List<OrderHistoryProduct>) map.get(MapDataType.DATA_LIST);
+
+ List<OrderHistoryProductViewModel> viewModels = new ArrayList<>();
+ for (OrderHistoryProduct entity : list) {
+ OrderHistoryProductViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ public static OrderHistoryProductViewModel BuildViewModel(OrderHistoryProduct entity) {
+ if (entity == null)
+ return null;
+
+ OrderHistoryProductViewModel model = new OrderHistoryProductViewModel();
+
+ model.setId(entity.getId());
+
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setProductid(entity.getProductid());
+ model.setProductcode(entity.getProductcode());
+ model.setProductname(entity.getProductname());
+ model.setStatus(entity.getStatus());
+ model.setColor(entity.getColor());
+ model.setSize(entity.getSize());
+ model.setCount(entity.getCount());
+ model.setImage(entity.getImage());
+ model.setPrice(entity.getPrice());
+ model.setSaleprice(entity.getSaleprice());
+ model.setRejectreason(entity.getRejectreason());
+ model.setRejectcomment(entity.getRejectcomment());
+ model.setRejecttime(entity.getRejecttime());
+ model.setPayer(entity.getPayer());
+ model.setPayedmoney(entity.getPayedmoney());
+ model.setDiscount(entity.getDiscount());
+ model.setPayee(entity.getPayee());
+ model.setOrderid(entity.getOrderid());
+ model.setOrderno(entity.getOrderno());
+
+ return model;
+ }
+
+ public OrderHistoryProduct Check(ActionType actionType, OrderHistoryProductViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+ if (model.getOrderid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+ if (model.getProductid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrderHistoryProduct entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrderHistoryProduct();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ OrderHistoryProductQueryObject queryObject = new OrderHistoryProductQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setProductid(model.getProductid());
+ entity.setProductcode(model.getProductcode());
+ entity.setProductname(model.getProductname());
+ entity.setStatus(OrderProductStatusOptions.Defined.ordinal());
+ entity.setColor(model.getColor());
+ entity.setSize(model.getSize());
+ entity.setCount(model.getCount());
+ entity.setImage(model.getImage());
+ entity.setPrice(model.getPrice());
+ entity.setSaleprice(model.getSaleprice());
+ entity.setRejectreason(model.getRejectreason());
+ entity.setRejectcomment(model.getRejectcomment());
+ entity.setRejecttime(model.getRejecttime());
+ entity.setPayer(model.getPayer());
+ entity.setPayedmoney(model.getPayedmoney());
+ entity.setDiscount(model.getDiscount());
+ entity.setPayee(model.getPayee());
+ entity.setOrderid(model.getOrderid());
+ entity.setOrderno(model.getOrderno());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryService.java
new file mode 100644
index 0000000..2c5ba6f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderHistoryService.java
@@ -0,0 +1,522 @@
+package com.farriver.bwf.service.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.entity.OrderHistoryExtend;
+import com.farriver.bwf.data.master.mapper.OrderHistoryMapper;
+import com.farriver.bwf.data.master.model.OrderHistory;
+import com.farriver.bwf.data.master.model.OrderHistoryExample;
+import com.farriver.bwf.data.master.model.OrderHistoryProduct;
+import com.farriver.bwf.data.transferobject.options.OrderStatusOptions;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderHistoryProductQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderHistoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderHistoryProductViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderHistoryViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrderHistory_cache")
+public class OrderHistoryService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderHistoryService.class);
+
+ private String message;
+
+ @Resource
+ OrderHistoryMapper mapper;
+
+ @Resource
+ OrderHistoryProductService orderHistoryProductService;
+
+ public Map<MapDataType, Object> GetList(OrderHistoryQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrderHistoryExample example = new OrderHistoryExample();
+ OrderHistoryExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNoLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getVipuserid() != null && !queryObject.getVipuserid().isEmpty()) {
+ criteria.andVipuseridEqualTo(queryObject.getVipuserid());
+ }
+ if (queryObject.getNo() != null && !queryObject.getNo().isEmpty()) {
+ criteria.andNoLike("%" + queryObject.getNo() + "%");
+ }
+ if (queryObject.getVipphone() != null && !queryObject.getVipphone().isEmpty()) {
+ criteria.andVipphoneLike("%" + queryObject.getVipphone() + "%");
+ }
+ if (queryObject.getVipname() != null && !queryObject.getVipname().isEmpty()) {
+ criteria.andVipnameLike("%" + queryObject.getVipname() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andOrdertimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ if (queryObject.getType() != null) {
+ criteria.andTypeEqualTo(queryObject.getType());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrderHistory> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public Map<MapDataType, Object> GetExtendList(OrderHistoryQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrderHistoryExample example = new OrderHistoryExample();
+ OrderHistoryExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andVipnameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getVipuserid() != null && !queryObject.getVipuserid().isEmpty()) {
+ criteria.andVipuseridEqualTo(queryObject.getVipuserid());
+ }
+ if (queryObject.getNo() != null && !queryObject.getNo().isEmpty()) {
+ criteria.andNoEqualTo(queryObject.getNo());
+ }
+ if (queryObject.getType() != null) {
+ criteria.andTypeEqualTo(queryObject.getType());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrderHistoryExtend> list = mapper.selectOrderHistoryExtendByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrderHistory GetDetail(OrderHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrderHistory> list = (List<OrderHistory>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ public OrderHistoryExtend GetExtendDetail(OrderHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetExtendList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrderHistoryExtend> list = (List<OrderHistoryExtend>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrderHistoryViewModel model) {
+ OrderHistory entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData CreateWithProducts(OrderHistoryViewModel model) {
+ OrderHistory entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ List<OrderHistoryProductViewModel> productViewModels = model.getProducts();
+ if (productViewModels != null && productViewModels.size() > 0) {
+ for (OrderHistoryProductViewModel productViewModel : productViewModels) {
+ productViewModel.setOrderid(entity.getId());
+ productViewModel.setOrderno(entity.getNo());
+ }
+ }
+
+ ApiData productResult = orderHistoryProductService.BatchCreate(model.getProducts());
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrderHistoryViewModel model) {
+ OrderHistory entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData UpdateWithProducts(OrderHistoryViewModel model) {
+ OrderHistory entity = Check(ActionType.UPDATE, model);
+
+ //清楚旧产品数据
+ OrderHistoryProductQueryObject queryObject = new OrderHistoryProductQueryObject();
+ queryObject.setOrderid(model.getId());
+ orderHistoryProductService.BatchDelete(queryObject);
+
+ if (entity != null) {
+ List<OrderHistoryProductViewModel> productViewModels = model.getProducts();
+ if (productViewModels != null && productViewModels.size() > 0) {
+ for (OrderHistoryProductViewModel productViewModel : productViewModels) {
+ productViewModel.setOrderid(entity.getId());
+ productViewModel.setOrderno(entity.getNo());
+ }
+ }
+
+ ApiData productResult = orderHistoryProductService.BatchCreate(model.getProducts());
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ public ApiData BatchDelete(OrderHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrderHistory> list = (List<OrderHistory>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ public OrderHistoryViewModel GetViewDetail(String id) {
+ OrderHistoryQueryObject queryObject = new OrderHistoryQueryObject();
+ queryObject.setId(id);
+
+ OrderHistory entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetViewPageList(OrderHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrderHistory> list = (List<OrderHistory>) map.get(MapDataType.DATA_LIST);
+
+ List<OrderHistoryViewModel> viewModels = new ArrayList<>();
+ for (OrderHistory entity : list) {
+ OrderHistoryViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public OrderHistoryViewModel GetExtendViewDetail(String id) {
+ OrderHistoryQueryObject queryObject = new OrderHistoryQueryObject();
+ queryObject.setId(id);
+
+ OrderHistoryExtend entity = GetExtendDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetExtendViewPageList(OrderHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetExtendList(queryObject);
+ List<OrderHistoryExtend> list = (List<OrderHistoryExtend>) map.get(MapDataType.DATA_LIST);
+
+ List<OrderHistoryViewModel> viewModels = new ArrayList<>();
+ for (OrderHistoryExtend entity : list) {
+ OrderHistoryViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrderHistoryViewModel BuildViewModel(OrderHistory entity) {
+ if (entity == null)
+ return null;
+
+ OrderHistoryViewModel model = new OrderHistoryViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setNo(entity.getNo());
+ model.setTotalmoney(entity.getTotalmoney());
+ model.setPayedmoney(entity.getPayedmoney());
+ model.setPaymentmethod(entity.getPaymentmethod());
+ model.setDiscountmoney(entity.getDiscountmoney());
+ model.setStatus(entity.getStatus());
+ model.setOrdertime(entity.getOrdertime());
+ model.setPaytime(entity.getPaytime());
+ model.setSendtime(entity.getSendtime());
+ model.setReceivetime(entity.getReceivetime());
+ model.setCommenttime(entity.getCommenttime());
+ model.setSendername(entity.getSendername());
+ model.setSendercode(entity.getSendercode());
+ model.setSendercontactno(entity.getSendercontactno());
+ model.setTargetaddress(entity.getTargetaddress());
+ model.setDeliveryaddress(entity.getDeliveryaddress());
+ model.setOptimalcoupon(entity.getOptimalcoupon());
+ model.setLogisticscompany(entity.getLogisticscompany());
+ model.setLogisticsno(entity.getLogisticsno());
+ model.setTransportmode(entity.getTransportmode());
+ model.setBoxcount(entity.getBoxcount());
+ model.setBoxweight(entity.getBoxweight());
+ model.setFreight(entity.getFreight());
+ model.setCommentcontent(entity.getCommentcontent());
+ model.setCommentlevel(entity.getCommentlevel());
+ model.setReceiverid(entity.getReceiverid());
+ model.setVipuserid(entity.getVipuserid());
+ model.setVipphone(entity.getVipphone());
+ model.setVipdiamondtype(entity.getVipdiamondtype());
+ model.setViptype(entity.getViptype());
+ model.setVippicture(entity.getVippicture());
+ model.setVipcarddiscountrate(entity.getVipcarddiscountrate());
+ model.setType(entity.getType());
+
+ return model;
+ }
+
+ private static OrderHistoryViewModel BuildViewModel(OrderHistoryExtend entity) {
+ if (entity == null)
+ return null;
+
+ OrderHistoryViewModel model = new OrderHistoryViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setNo(entity.getNo());
+ model.setTotalmoney(entity.getTotalmoney());
+ model.setPayedmoney(entity.getPayedmoney());
+ model.setPaymentmethod(entity.getPaymentmethod());
+ model.setDiscountmoney(entity.getDiscountmoney());
+ model.setStatus(entity.getStatus());
+ model.setOrdertime(entity.getOrdertime());
+ model.setPaytime(entity.getPaytime());
+ model.setSendtime(entity.getSendtime());
+ model.setReceivetime(entity.getReceivetime());
+ model.setCommenttime(entity.getCommenttime());
+ model.setSendername(entity.getSendername());
+ model.setSendercode(entity.getSendercode());
+ model.setSendercontactno(entity.getSendercontactno());
+ model.setTargetaddress(entity.getTargetaddress());
+ model.setDeliveryaddress(entity.getDeliveryaddress());
+ model.setOptimalcoupon(entity.getOptimalcoupon());
+ model.setLogisticscompany(entity.getLogisticscompany());
+ model.setLogisticsno(entity.getLogisticsno());
+ model.setTransportmode(entity.getTransportmode());
+ model.setBoxcount(entity.getBoxcount());
+ model.setBoxweight(entity.getBoxweight());
+ model.setFreight(entity.getFreight());
+ model.setCommentcontent(entity.getCommentcontent());
+ model.setCommentlevel(entity.getCommentlevel());
+ model.setReceiverid(entity.getReceiverid());
+ model.setVipuserid(entity.getVipuserid());
+ model.setVipphone(entity.getVipphone());
+ model.setVipdiamondtype(entity.getVipdiamondtype());
+ model.setViptype(entity.getViptype());
+ model.setVippicture(entity.getVippicture());
+ model.setVipcarddiscountrate(entity.getVipcarddiscountrate());
+ model.setType(entity.getType());
+
+ List<OrderHistoryProductViewModel> products = new ArrayList<>();
+ for (OrderHistoryProduct product : entity.getProducts()) {
+ OrderHistoryProductViewModel productmodel = new OrderHistoryProductViewModel();
+
+ productmodel.setId(product.getId());
+ productmodel.setIsdeleted(product.getIsdeleted());
+ productmodel.setRemark(product.getRemark());
+ productmodel.setCreatetime(product.getCreatetime());
+ productmodel.setUpdatetime(product.getUpdatetime());
+
+ productmodel.setProductid(product.getProductid());
+ productmodel.setProductcode(product.getProductcode());
+ productmodel.setProductname(product.getProductname());
+ productmodel.setStatus(product.getStatus());
+ productmodel.setColor(product.getColor());
+ productmodel.setSize(product.getSize());
+ productmodel.setCount(product.getCount());
+ productmodel.setImage(product.getImage());
+ productmodel.setPrice(product.getPrice());
+ productmodel.setSaleprice(product.getSaleprice());
+ productmodel.setRejectreason(product.getRejectreason());
+ productmodel.setRejectcomment(product.getRejectcomment());
+ productmodel.setRejecttime(product.getRejecttime());
+ productmodel.setPayer(product.getPayer());
+ productmodel.setPayedmoney(product.getPayedmoney());
+ productmodel.setDiscount(product.getDiscount());
+ productmodel.setPayee(product.getPayee());
+ productmodel.setOrderid(product.getOrderid());
+ productmodel.setOrderno(product.getOrderno());
+
+ products.add(productmodel);
+ }
+ model.setProducts(products);
+
+ return model;
+ }
+
+ public OrderHistory Check(ActionType actionType, OrderHistoryViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrderHistory entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrderHistory();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ entity.setStatus(OrderStatusOptions.Defined.ordinal());
+ } else {
+ OrderHistoryQueryObject queryObject = new OrderHistoryQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ entity.setStatus(model.getStatus());
+ }
+
+ entity.setNo(model.getNo());
+ entity.setTotalmoney(model.getTotalmoney());
+ entity.setPayedmoney(model.getPayedmoney());
+ entity.setDiscountmoney(model.getDiscountmoney());
+ entity.setOrdertime(model.getOrdertime());
+ entity.setPaytime(model.getPaytime());
+ entity.setPaymentmethod(model.getPaymentmethod());
+ entity.setSendtime(model.getSendtime());
+ entity.setReceivetime(model.getReceivetime());
+ entity.setCommenttime(model.getCommenttime());
+ entity.setSendername(model.getSendername());
+ entity.setSendercode(model.getSendercode());
+ entity.setSendercontactno(model.getSendercontactno());
+ entity.setTargetaddress(model.getTargetaddress());
+ entity.setDeliveryaddress(model.getDeliveryaddress());
+ entity.setOptimalcoupon(model.getOptimalcoupon());
+ entity.setLogisticscompany(model.getLogisticscompany());
+ entity.setLogisticsno(model.getLogisticsno());
+ entity.setTransportmode(model.getTransportmode());
+ entity.setBoxcount(model.getBoxcount());
+ entity.setBoxweight(model.getBoxweight());
+ entity.setFreight(model.getFreight());
+ entity.setCommentcontent(model.getCommentcontent());
+ entity.setCommentlevel(model.getCommentlevel());
+ entity.setReceiverid(model.getReceiverid());
+ entity.setVipuserid(model.getVipuserid());
+ entity.setVipphone(model.getVipphone());
+ entity.setVipdiamondtype(model.getVipdiamondtype());
+ entity.setViptype(model.getViptype());
+ entity.setVippicture(model.getVippicture());
+ entity.setVipcarddiscountrate(model.getVipcarddiscountrate());
+ entity.setType(model.getType());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderReceiverService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderReceiverService.java
new file mode 100644
index 0000000..509c808
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/order/OrderReceiverService.java
@@ -0,0 +1,235 @@
+package com.farriver.bwf.service.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrderReceiverMapper;
+import com.farriver.bwf.data.master.model.OrderReceiver;
+import com.farriver.bwf.data.master.model.OrderReceiverExample;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderReceiverQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderReceiverViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrderReceiver_cache")
+public class OrderReceiverService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderReceiverService.class);
+
+ private String message;
+
+ @Resource
+ OrderReceiverMapper mapper;
+
+ public Map<MapDataType, Object> GetList(OrderReceiverQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrderReceiverExample example = new OrderReceiverExample();
+ OrderReceiverExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getUserid() != null && !queryObject.getUserid().isEmpty()) {
+ criteria.andUseridEqualTo(queryObject.getUserid());
+ }
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrderReceiver> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrderReceiver GetDetail(OrderReceiverQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrderReceiver> list = (List<OrderReceiver>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrderReceiverViewModel model) {
+ OrderReceiver entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrderReceiverViewModel model) {
+ OrderReceiver entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ public ApiData BatchDelete(OrderReceiverQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrderReceiver> list = (List<OrderReceiver>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrderReceiverViewModel GetViewDetail(String id) {
+ OrderReceiverQueryObject queryObject = new OrderReceiverQueryObject();
+ queryObject.setId(id);
+
+ OrderReceiver entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrderReceiverQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrderReceiver> list = (List<OrderReceiver>) map.get(MapDataType.DATA_LIST);
+
+ List<OrderReceiverViewModel> viewModels = new ArrayList<>();
+ for (OrderReceiver entity : list) {
+ OrderReceiverViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrderReceiverViewModel BuildViewModel(OrderReceiver entity) {
+ if (entity == null)
+ return null;
+
+ OrderReceiverViewModel model = new OrderReceiverViewModel();
+
+ model.setId(entity.getId());
+ model.setName(entity.getName());
+ model.setContactno(entity.getContactno());
+ model.setProvince(entity.getProvince());
+ model.setCity(entity.getCity());
+ model.setRegion(entity.getRegion());
+ model.setReceiveaddress(entity.getReceiveaddress());
+ model.setIsoftenused(entity.getIsoftenused());
+ model.setUserid(entity.getUserid());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ return model;
+ }
+
+ public OrderReceiver Check(ActionType actionType, OrderReceiverViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrderReceiver entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrderReceiver();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ entity.setName(model.getName());
+ entity.setUserid(model.getUserid());
+ entity.setContactno(model.getContactno());
+ entity.setProvince(model.getProvince());
+ entity.setCity(model.getCity());
+ entity.setRegion(model.getRegion());
+ entity.setReceiveaddress(model.getReceiveaddress());
+ entity.setIsoftenused(model.getIsoftenused());
+
+
+ } else {
+// OrderReceiverQueryObject queryObject = new OrderReceiverQueryObject();
+// queryObject.setId(model.getId());
+// entity = GetDetail(queryObject);
+// entity.setUpdatetime(new Date());
+ entity = new OrderReceiver();
+ entity.setId(model.getId());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ entity.setName(model.getName());
+ entity.setUserid(model.getUserid());
+ entity.setContactno(model.getContactno());
+ entity.setProvince(model.getProvince());
+ entity.setCity(model.getCity());
+ entity.setRegion(model.getRegion());
+ entity.setReceiveaddress(model.getReceiveaddress());
+ entity.setIsoftenused(model.getIsoftenused());
+
+ }
+
+ entity.setRemark(model.getRemark());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationClassService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationClassService.java
new file mode 100644
index 0000000..cf9c965
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationClassService.java
@@ -0,0 +1,330 @@
+package com.farriver.bwf.service.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrganizationClassMapper;
+import com.farriver.bwf.data.master.model.OrganizationClass;
+import com.farriver.bwf.data.master.model.OrganizationClassExample;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationClassQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationClassViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrganizationClass_cache")
+public class OrganizationClassService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationClassService.class);
+
+ private String message;
+
+ @Resource
+ OrganizationClassMapper mapper;
+
+ public Map<MapDataType, Object> GetList(OrganizationClassQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrganizationClassExample example = new OrganizationClassExample();
+ OrganizationClassExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getGradeid() != null && !queryObject.getGradeid().isEmpty()) {
+ criteria.andGradeidEqualTo(queryObject.getGradeid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ OrganizationClassExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getOrganizationid() != null && !queryObject.getOrganizationid().isEmpty()) {
+ criteria.andOrganizationidEqualTo(queryObject.getOrganizationid());
+ }
+ if (queryObject.getDepartmentid() != null && !queryObject.getDepartmentid().isEmpty()) {
+ criteria.andDepartmentidEqualTo(queryObject.getDepartmentid());
+ }
+ if (queryObject.getMajorid() != null && !queryObject.getMajorid().isEmpty()) {
+ criteria.andMajoridEqualTo(queryObject.getMajorid());
+ }
+ if (queryObject.getGradeid() != null && !queryObject.getGradeid().isEmpty()) {
+ criteria.andGradeidEqualTo(queryObject.getGradeid());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrganizationClass> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrganizationClass GetDetail(OrganizationClassQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrganizationClass> list = (List<OrganizationClass>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrganizationClassViewModel model) {
+ OrganizationClass entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrganizationClassViewModel model) {
+ OrganizationClass entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(OrganizationClassQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrganizationClass> list = (List<OrganizationClass>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrganizationClassViewModel GetViewDetail(String id) {
+ OrganizationClassQueryObject queryObject = new OrganizationClassQueryObject();
+ queryObject.setId(id);
+
+ OrganizationClass entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrganizationClassQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrganizationClass> list = (List<OrganizationClass>) map.get(MapDataType.DATA_LIST);
+
+ List<OrganizationClassViewModel> viewModels = new ArrayList<>();
+ for (OrganizationClass entity : list) {
+ OrganizationClassViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrganizationClassViewModel BuildViewModel(OrganizationClass entity) {
+ if (entity == null)
+ return null;
+
+ OrganizationClassViewModel model = new OrganizationClassViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setOuterphone(entity.getOuterphone());
+ model.setInnerphone(entity.getInnerphone());
+ model.setSupervisor(entity.getSupervisor());
+ model.setSupervisorassistant(entity.getSupervisorassistant());
+ model.setFax(entity.getFax());
+ model.setZipcode(entity.getZipcode());
+ model.setAddress(entity.getAddress());
+ model.setParentid(entity.getParentid());
+ model.setStatus(entity.getStatus());
+ model.setDeplevel(entity.getDeplevel());
+ model.setOrganizationid(entity.getOrganizationid());
+ model.setOrganizationname(entity.getOrganizationname());
+ model.setOrganizationcode(entity.getOrganizationcode());
+ model.setDepartmentid(entity.getDepartmentid());
+ model.setDepartmentname(entity.getDepartmentname());
+ model.setDepartmentcode(entity.getDepartmentcode());
+ model.setMajorid(entity.getMajorid());
+ model.setMajorname(entity.getMajorname());
+ model.setMajorcode(entity.getMajorcode());
+ model.setGradeid(entity.getGradeid());
+ model.setGradename(entity.getGradename());
+ model.setGradecode(entity.getGradecode());
+
+ return model;
+ }
+
+ public OrganizationClass Check(ActionType actionType, OrganizationClassViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrganizationClass entity = null;
+ if (ActionType.CREATE == actionType) {
+
+ entity = new OrganizationClass();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ OrganizationClassQueryObject queryObject = new OrganizationClassQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setName(model.getName());
+ entity.setOuterphone(model.getOuterphone());
+ entity.setInnerphone(model.getInnerphone());
+ entity.setSupervisor(model.getSupervisor());
+ entity.setSupervisorassistant(model.getSupervisorassistant());
+ entity.setFax(model.getFax());
+ entity.setZipcode(model.getZipcode());
+ entity.setAddress(model.getAddress());
+ entity.setParentid(model.getParentid());
+ entity.setStatus(model.getStatus());
+ entity.setDeplevel(model.getDeplevel());
+ entity.setOrganizationid(model.getOrganizationid());
+ entity.setOrganizationname(model.getOrganizationname());
+ entity.setOrganizationcode(model.getOrganizationcode());
+ entity.setDepartmentid(model.getDepartmentid());
+ entity.setDepartmentname(model.getDepartmentname());
+ entity.setDepartmentcode(model.getDepartmentcode());
+ entity.setMajorid(model.getMajorid());
+ entity.setMajorname(model.getMajorname());
+ entity.setMajorcode(model.getMajorcode());
+ entity.setGradeid(model.getGradeid());
+ entity.setGradename(model.getGradename());
+ entity.setGradecode(model.getGradecode());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "C";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%03d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ OrganizationClassExample example = new OrganizationClassExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<OrganizationClass> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ OrganizationClass entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationDepartmentService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationDepartmentService.java
new file mode 100644
index 0000000..96b7f6a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationDepartmentService.java
@@ -0,0 +1,308 @@
+package com.farriver.bwf.service.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrganizationDepartmentMapper;
+import com.farriver.bwf.data.master.model.OrganizationDepartment;
+import com.farriver.bwf.data.master.model.OrganizationDepartmentExample;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationDepartmentQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationDepartmentViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrganizationDepartment_cache")
+public class OrganizationDepartmentService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationDepartmentService.class);
+
+ private String message;
+
+ @Resource
+ OrganizationDepartmentMapper mapper;
+
+ public Map<MapDataType, Object> GetList(OrganizationDepartmentQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrganizationDepartmentExample example = new OrganizationDepartmentExample();
+ OrganizationDepartmentExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getOrganizationid() != null && !queryObject.getOrganizationid().isEmpty()) {
+ criteria.andOrganizationidEqualTo(queryObject.getOrganizationid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ OrganizationDepartmentExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getOrganizationcode() != null && !queryObject.getOrganizationcode().isEmpty()) {
+ criteria.andOrganizationcodeLike("%" + queryObject.getOrganizationcode() + "%");
+ }
+ if (queryObject.getOrganizationname() != null && !queryObject.getOrganizationname().isEmpty()) {
+ criteria.andOrganizationnameLike("%" + queryObject.getOrganizationname() + "%");
+ }
+ if (queryObject.getOrganizationid() != null && !queryObject.getOrganizationid().isEmpty()) {
+ criteria.andOrganizationidEqualTo(queryObject.getOrganizationid());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrganizationDepartment> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrganizationDepartment GetDetail(OrganizationDepartmentQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrganizationDepartment> list = (List<OrganizationDepartment>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrganizationDepartmentViewModel model) {
+ OrganizationDepartment entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrganizationDepartmentViewModel model) {
+ OrganizationDepartment entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(OrganizationDepartmentQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrganizationDepartment> list = (List<OrganizationDepartment>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrganizationDepartmentViewModel GetViewDetail(String id) {
+ OrganizationDepartmentQueryObject queryObject = new OrganizationDepartmentQueryObject();
+ queryObject.setId(id);
+
+ OrganizationDepartment entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrganizationDepartmentQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrganizationDepartment> list = (List<OrganizationDepartment>) map.get(MapDataType.DATA_LIST);
+
+ List<OrganizationDepartmentViewModel> viewModels = new ArrayList<>();
+ for (OrganizationDepartment entity : list) {
+ OrganizationDepartmentViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrganizationDepartmentViewModel BuildViewModel(OrganizationDepartment entity) {
+ if (entity == null)
+ return null;
+
+ OrganizationDepartmentViewModel model = new OrganizationDepartmentViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setOuterphone(entity.getOuterphone());
+ model.setInnerphone(entity.getInnerphone());
+ model.setSupervisor(entity.getSupervisor());
+ model.setSupervisorassistant(entity.getSupervisorassistant());
+ model.setFax(entity.getFax());
+ model.setZipcode(entity.getZipcode());
+ model.setAddress(entity.getAddress());
+ model.setParentid(entity.getParentid());
+ model.setStatus(entity.getStatus());
+ model.setDeplevel(entity.getDeplevel());
+ model.setOrganizationid(entity.getOrganizationid());
+ model.setOrganizationname(entity.getOrganizationname());
+ model.setOrganizationcode(entity.getOrganizationcode());
+
+ return model;
+ }
+
+ public OrganizationDepartment Check(ActionType actionType, OrganizationDepartmentViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrganizationDepartment entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrganizationDepartment();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ OrganizationDepartmentQueryObject queryObject = new OrganizationDepartmentQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setName(model.getName());
+ entity.setOuterphone(model.getOuterphone());
+ entity.setInnerphone(model.getInnerphone());
+ entity.setSupervisor(model.getSupervisor());
+ entity.setSupervisorassistant(model.getSupervisorassistant());
+ entity.setFax(model.getFax());
+ entity.setZipcode(model.getZipcode());
+ entity.setAddress(model.getAddress());
+ entity.setParentid(model.getParentid());
+ entity.setStatus(model.getStatus());
+ entity.setDeplevel(model.getDeplevel());
+ entity.setOrganizationid(model.getOrganizationid());
+ entity.setOrganizationname(model.getOrganizationname());
+ entity.setOrganizationcode(model.getOrganizationcode());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "D";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%03d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ OrganizationDepartmentExample example = new OrganizationDepartmentExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<OrganizationDepartment> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ OrganizationDepartment entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationGradeService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationGradeService.java
new file mode 100644
index 0000000..e934050
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationGradeService.java
@@ -0,0 +1,320 @@
+package com.farriver.bwf.service.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrganizationGradeMapper;
+import com.farriver.bwf.data.master.model.OrganizationGrade;
+import com.farriver.bwf.data.master.model.OrganizationGradeExample;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationGradeQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationGradeViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrganizationGrade_cache")
+public class OrganizationGradeService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationGradeService.class);
+
+ private String message;
+
+ @Resource
+ OrganizationGradeMapper mapper;
+
+ public Map<MapDataType, Object> GetList(OrganizationGradeQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrganizationGradeExample example = new OrganizationGradeExample();
+ OrganizationGradeExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getMajorid() != null && !queryObject.getMajorid().isEmpty()) {
+ criteria.andMajoridEqualTo(queryObject.getMajorid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ OrganizationGradeExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getOrganizationid() != null && !queryObject.getOrganizationid().isEmpty()) {
+ criteria.andOrganizationidEqualTo(queryObject.getOrganizationid());
+ }
+ if (queryObject.getDepartmentid() != null && !queryObject.getDepartmentid().isEmpty()) {
+ criteria.andDepartmentidEqualTo(queryObject.getDepartmentid());
+ }
+ if (queryObject.getMajorid() != null && !queryObject.getMajorid().isEmpty()) {
+ criteria.andMajoridEqualTo(queryObject.getMajorid());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrganizationGrade> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrganizationGrade GetDetail(OrganizationGradeQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrganizationGrade> list = (List<OrganizationGrade>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrganizationGradeViewModel model) {
+ OrganizationGrade entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrganizationGradeViewModel model) {
+ OrganizationGrade entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(OrganizationGradeQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrganizationGrade> list = (List<OrganizationGrade>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrganizationGradeViewModel GetViewDetail(String id) {
+ OrganizationGradeQueryObject queryObject = new OrganizationGradeQueryObject();
+ queryObject.setId(id);
+
+ OrganizationGrade entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrganizationGradeQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrganizationGrade> list = (List<OrganizationGrade>) map.get(MapDataType.DATA_LIST);
+
+ List<OrganizationGradeViewModel> viewModels = new ArrayList<>();
+ for (OrganizationGrade entity : list) {
+ OrganizationGradeViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrganizationGradeViewModel BuildViewModel(OrganizationGrade entity) {
+ if (entity == null)
+ return null;
+
+ OrganizationGradeViewModel model = new OrganizationGradeViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setOuterphone(entity.getOuterphone());
+ model.setInnerphone(entity.getInnerphone());
+ model.setSupervisor(entity.getSupervisor());
+ model.setSupervisorassistant(entity.getSupervisorassistant());
+ model.setFax(entity.getFax());
+ model.setZipcode(entity.getZipcode());
+ model.setAddress(entity.getAddress());
+ model.setParentid(entity.getParentid());
+ model.setStatus(entity.getStatus());
+ model.setDeplevel(entity.getDeplevel());
+ model.setOrganizationid(entity.getOrganizationid());
+ model.setOrganizationname(entity.getOrganizationname());
+ model.setOrganizationcode(entity.getOrganizationcode());
+ model.setDepartmentid(entity.getDepartmentid());
+ model.setDepartmentname(entity.getDepartmentname());
+ model.setDepartmentcode(entity.getDepartmentcode());
+ model.setMajorid(entity.getMajorid());
+ model.setMajorname(entity.getMajorname());
+ model.setMajorcode(entity.getMajorcode());
+
+ return model;
+ }
+
+ public OrganizationGrade Check(ActionType actionType, OrganizationGradeViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrganizationGrade entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrganizationGrade();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ OrganizationGradeQueryObject queryObject = new OrganizationGradeQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setName(model.getName());
+ entity.setOuterphone(model.getOuterphone());
+ entity.setInnerphone(model.getInnerphone());
+ entity.setSupervisor(model.getSupervisor());
+ entity.setSupervisorassistant(model.getSupervisorassistant());
+ entity.setFax(model.getFax());
+ entity.setZipcode(model.getZipcode());
+ entity.setAddress(model.getAddress());
+ entity.setParentid(model.getParentid());
+ entity.setStatus(model.getStatus());
+ entity.setDeplevel(model.getDeplevel());
+ entity.setOrganizationid(model.getOrganizationid());
+ entity.setOrganizationname(model.getOrganizationname());
+ entity.setOrganizationcode(model.getOrganizationcode());
+ entity.setDepartmentid(model.getDepartmentid());
+ entity.setDepartmentname(model.getDepartmentname());
+ entity.setDepartmentcode(model.getDepartmentcode());
+ entity.setMajorid(model.getMajorid());
+ entity.setMajorname(model.getMajorname());
+ entity.setMajorcode(model.getMajorcode());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "G";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%03d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ OrganizationGradeExample example = new OrganizationGradeExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<OrganizationGrade> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ OrganizationGrade entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMajorService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMajorService.java
new file mode 100644
index 0000000..425cfa0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMajorService.java
@@ -0,0 +1,295 @@
+package com.farriver.bwf.service.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrganizationMajorMapper;
+import com.farriver.bwf.data.master.model.OrganizationMajor;
+import com.farriver.bwf.data.master.model.OrganizationMajorExample;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationMajorQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationMajorViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrganizationMajor_cache")
+public class OrganizationMajorService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationMajorService.class);
+
+ private String message;
+
+ @Resource
+ OrganizationMajorMapper mapper;
+
+ public Map<MapDataType, Object> GetList(OrganizationMajorQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrganizationMajorExample example = new OrganizationMajorExample();
+ OrganizationMajorExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getDepartmentid() != null && !queryObject.getDepartmentid().isEmpty()) {
+ criteria.andDepartmentidEqualTo(queryObject.getDepartmentid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ OrganizationMajorExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getOrganizationid() != null && !queryObject.getOrganizationid().isEmpty()) {
+ criteria.andOrganizationidEqualTo(queryObject.getOrganizationid());
+ }
+ if (queryObject.getDepartmentid() != null && !queryObject.getDepartmentid().isEmpty()) {
+ criteria.andDepartmentidEqualTo(queryObject.getDepartmentid());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrganizationMajor> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrganizationMajor GetDetail(OrganizationMajorQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrganizationMajor> list = (List<OrganizationMajor>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrganizationMajorViewModel model) {
+ OrganizationMajor entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrganizationMajorViewModel model) {
+ OrganizationMajor entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(OrganizationMajorQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrganizationMajor> list = (List<OrganizationMajor>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrganizationMajorViewModel GetViewDetail(String id) {
+ OrganizationMajorQueryObject queryObject = new OrganizationMajorQueryObject();
+ queryObject.setId(id);
+
+ OrganizationMajor entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrganizationMajorQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrganizationMajor> list = (List<OrganizationMajor>) map.get(MapDataType.DATA_LIST);
+
+ List<OrganizationMajorViewModel> viewModels = new ArrayList<>();
+ for (OrganizationMajor entity : list) {
+ OrganizationMajorViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrganizationMajorViewModel BuildViewModel(OrganizationMajor entity) {
+ if (entity == null)
+ return null;
+
+ OrganizationMajorViewModel model = new OrganizationMajorViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setParentid(entity.getParentid());
+ model.setStatus(entity.getStatus());
+ model.setOrganizationid(entity.getOrganizationid());
+ model.setOrganizationname(entity.getOrganizationname());
+ model.setOrganizationcode(entity.getOrganizationcode());
+ model.setDepartmentid(entity.getDepartmentid());
+ model.setDepartmentname(entity.getDepartmentname());
+ model.setDepartmentcode(entity.getDepartmentcode());
+
+ return model;
+ }
+
+ public OrganizationMajor Check(ActionType actionType, OrganizationMajorViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrganizationMajor entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrganizationMajor();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ OrganizationMajorQueryObject queryObject = new OrganizationMajorQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setName(model.getName());
+ entity.setParentid(model.getParentid());
+ entity.setStatus(model.getStatus());
+ entity.setOrganizationid(model.getOrganizationid());
+ entity.setOrganizationname(model.getOrganizationname());
+ entity.setOrganizationcode(model.getOrganizationcode());
+ entity.setDepartmentid(model.getDepartmentid());
+ entity.setDepartmentname(model.getDepartmentname());
+ entity.setDepartmentcode(model.getDepartmentcode());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "M";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%03d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ OrganizationMajorExample example = new OrganizationMajorExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<OrganizationMajor> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ OrganizationMajor entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMasterService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMasterService.java
new file mode 100644
index 0000000..5e9c305
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/organization/OrganizationMasterService.java
@@ -0,0 +1,289 @@
+package com.farriver.bwf.service.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.OrganizationMasterMapper;
+import com.farriver.bwf.data.master.model.OrganizationMaster;
+import com.farriver.bwf.data.master.model.OrganizationMasterExample;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationMasterViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_OrganizationMaster_cache")
+public class OrganizationMasterService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationMasterService.class);
+
+ private String message;
+
+ @Resource
+ OrganizationMasterMapper mapper;
+
+ public Map<MapDataType, Object> GetList(OrganizationMasterQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ OrganizationMasterExample example = new OrganizationMasterExample();
+ OrganizationMasterExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ OrganizationMasterExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<OrganizationMaster> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public OrganizationMaster GetDetail(OrganizationMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<OrganizationMaster> list = (List<OrganizationMaster>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(OrganizationMasterViewModel model) {
+ OrganizationMaster entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(OrganizationMasterViewModel model) {
+ OrganizationMaster entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(OrganizationMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<OrganizationMaster> list = (List<OrganizationMaster>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public OrganizationMasterViewModel GetViewDetail(String id) {
+ OrganizationMasterQueryObject queryObject = new OrganizationMasterQueryObject();
+ queryObject.setId(id);
+
+ OrganizationMaster entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(OrganizationMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<OrganizationMaster> list = (List<OrganizationMaster>) map.get(MapDataType.DATA_LIST);
+
+ List<OrganizationMasterViewModel> viewModels = new ArrayList<>();
+ for (OrganizationMaster entity : list) {
+ OrganizationMasterViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static OrganizationMasterViewModel BuildViewModel(OrganizationMaster entity) {
+ if (entity == null)
+ return null;
+
+ OrganizationMasterViewModel model = new OrganizationMasterViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setOuterphone(entity.getOuterphone());
+ model.setInnerphone(entity.getInnerphone());
+ model.setSupervisor(entity.getSupervisor());
+ model.setSupervisorassistant(entity.getSupervisorassistant());
+ model.setFax(entity.getFax());
+ model.setZipcode(entity.getZipcode());
+ model.setAddress(entity.getAddress());
+ model.setParentid(entity.getParentid());
+ model.setStatus(entity.getStatus());
+ model.setDeplevel(entity.getDeplevel());
+
+ return model;
+ }
+
+ public OrganizationMaster Check(ActionType actionType, OrganizationMasterViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ OrganizationMaster entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new OrganizationMaster();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ OrganizationMasterQueryObject queryObject = new OrganizationMasterQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setName(model.getName());
+ entity.setOuterphone(model.getOuterphone());
+ entity.setInnerphone(model.getInnerphone());
+ entity.setSupervisor(model.getSupervisor());
+ entity.setSupervisorassistant(model.getSupervisorassistant());
+ entity.setFax(model.getFax());
+ entity.setZipcode(model.getZipcode());
+ entity.setAddress(model.getAddress());
+ entity.setParentid(model.getParentid());
+ entity.setStatus(model.getStatus());
+ entity.setDeplevel(model.getDeplevel());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "O";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%03d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ OrganizationMasterExample example = new OrganizationMasterExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<OrganizationMaster> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ OrganizationMaster entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/product/ProductService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/product/ProductService.java
new file mode 100644
index 0000000..d031638
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/product/ProductService.java
@@ -0,0 +1,69 @@
+package com.farriver.bwf.service.product;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.product.ProductCategoryQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.product.ProductMasterQueryObject;
+import com.farriver.bwf.service.ServiceBase;
+import com.farriver.bwf.service.extend.pim.PIMService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.stereotype.Service;
+
+import jakarta.annotation.Resource;
+
+@Service
+@CacheConfig(cacheNames = "bwf_ProductService_cache")
+public class ProductService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(ProductService.class);
+
+ @Resource
+ PIMService pimService;
+
+ public ApiPageData GetProductMasterList(ProductMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return pimService.GetProductMasterList(queryObject);
+ }
+
+ public ApiPageData GetProductListByCategoryId(String categoryid) {
+ if (categoryid == null || categoryid.isEmpty())
+ return null;
+
+ return pimService.GetProductListByCategoryId(categoryid);
+ }
+
+ public ApiData GetProductDetailByMasterId(String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return null;
+
+ return pimService.GetProductDetailByMasterId(masterid);
+ }
+
+ public ApiPageData GetProductCategoryList(ProductCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return pimService.GetProductCategoryList(queryObject);
+ }
+
+ public ApiPageData GetProductCategoryWithProductList(ProductCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return pimService.GetProductCategoryWithProductList(queryObject);
+ }
+
+ public ApiData GetProductCategoryListByParentName(String parentname) {
+ if (parentname == null || parentname.isEmpty())
+ return null;
+
+ return pimService.GetProductCategoryListByParentName(parentname);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionCategoryService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionCategoryService.java
new file mode 100644
index 0000000..c52c067
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionCategoryService.java
@@ -0,0 +1,506 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.ListUtils;
+import com.farriver.bwf.data.master.mapper.QuestionCategoryMapper;
+import com.farriver.bwf.data.master.model.QuestionCategory;
+import com.farriver.bwf.data.master.model.QuestionCategoryExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionCategoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionCategoryViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@CacheConfig(cacheNames = "bwf_QuestionCategory_cache")
+public class QuestionCategoryService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionCategoryService.class);
+
+ @Resource
+ QuestionCategoryMapper mapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(QuestionCategoryQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionCategoryExample example = new QuestionCategoryExample();
+ QuestionCategoryExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<QuestionCategory> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionCategory GetDetail(QuestionCategoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionCategory> list = (List<QuestionCategory>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionCategoryViewModel model) {
+ QuestionCategory entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionCategoryViewModel model) {
+ QuestionCategory entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(QuestionCategoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionCategory> list = (List<QuestionCategory>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionCategoryViewModel GetViewDetail(QuestionCategoryQueryObject queryObject) {
+ QuestionCategory entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionCategoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionCategory> list = (List<QuestionCategory>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionCategoryViewModel> viewModels = new ArrayList<>();
+ for (QuestionCategory entity : list) {
+ QuestionCategoryViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public List<QuestionCategoryViewModel> getQuestionCategoryTree(QuestionCategoryQueryObject queryObject) {
+ List<QuestionCategoryViewModel> reusltQuestionCategorys = new ArrayList<>();
+
+ List<QuestionCategoryViewModel> roots = new ArrayList<>();
+
+ //系统所有菜单
+ List<QuestionCategoryViewModel> QuestionCategorys = (List<QuestionCategoryViewModel>) GetViewPageList(queryObject).getData();
+
+ for (QuestionCategoryViewModel QuestionCategory : QuestionCategorys) {
+ if (QuestionCategory.getParentid() == null || QuestionCategory.getParentid().isEmpty()) {
+ roots.add(QuestionCategory);
+ }
+ }
+
+ for (QuestionCategoryViewModel root : roots) {
+ root = BuildTree(root, QuestionCategorys);
+
+ reusltQuestionCategorys.add(root);
+ }
+
+ Collections.sort(reusltQuestionCategorys, (QuestionCategoryViewModel o1, QuestionCategoryViewModel o2) -> {
+ if (o2.getStatus() == null || o1.getStatus() == null)
+ return o2.getName().compareTo(o1.getName());
+
+ int levelC = o2.getStatus() - o1.getStatus();
+ if (levelC == 0)
+ return o2.getName().compareTo(o1.getName());
+ else
+ return levelC;
+ });
+
+ return reusltQuestionCategorys;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListWithChildren(QuestionCategoryQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+
+ //目的获取全部数据
+ QuestionCategoryQueryObject queryObject2 = new QuestionCategoryQueryObject();
+ queryObject2.setPageIndex(-1);
+ queryObject2.setPageSize(-1);
+
+ //查询
+ Map<MapDataType, Object> map = GetList(queryObject2);
+ List<QuestionCategory> list = (List<QuestionCategory>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionCategoryViewModel> viewModels = new ArrayList<>();
+ if (list != null && list.size() > 0) {
+ for (QuestionCategory entity : list) {
+ QuestionCategoryViewModel viewModel = BuildViewModel(entity);
+ viewModels.add(viewModel);
+ }
+ }
+ viewModels = FormateQuestionCategoryParent(viewModels);
+
+ List<QuestionCategoryViewModel> temps = viewModels;
+
+ //查询条件
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getId() != null)
+ .filter(e -> e.getId().contains(queryObject.getId()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getParentid() != null && !queryObject.getParentid().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getParentid() != null)
+ .filter(e -> e.getParentid().contains(queryObject.getParentid()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getStatus() != null)
+ .filter(e -> Objects.equals(e.getStatus(), queryObject.getStatus()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getName() != null)
+ .filter(e -> e.getName().contains(queryObject.getName()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getCreatetime().before(queryObject.getStartDateTime()) && e.getCreatetime().after(queryObject.getEndDateTime()))
+ .collect(Collectors.toList());
+ }
+
+ //获取筛查后没有取到的父级元素组
+ List<QuestionCategoryViewModel> temps2 = new ArrayList<>();
+ List<QuestionCategoryViewModel> roots1 = new ArrayList<>();
+ for (QuestionCategoryViewModel model : viewModels) {
+ if (model != null) {
+ List<QuestionCategoryViewModel> parents = GetParent(model, temps, roots1);
+ for (QuestionCategoryViewModel parent : parents) {
+ if (viewModels.stream().filter(e -> e.getId().equals(parent.getId())).count() <= 0) {
+ temps2.add(parent);
+ }
+ }
+ }
+ }
+
+ //将父级元素组添加到结果集合中
+ for (QuestionCategoryViewModel model : temps2) {
+ if (viewModels.stream().filter(e -> e.getId().equals(model.getId())).count() <= 0) {
+ viewModels.add(model);
+ }
+ }
+
+ //通过递归构造树形结构
+ List<QuestionCategoryViewModel> roots = new ArrayList<>();
+ for (QuestionCategoryViewModel model : viewModels) {
+ if (model.getParentid() == null || model.getParentid().isEmpty()) {
+ model = BuildTree(model, viewModels);
+ String id = model.getId();
+ if (roots.stream().filter(e -> e.getId().equals(id)).count() <= 0) {
+ roots.add(model);
+ }
+ }
+ }
+
+ List<QuestionCategoryViewModel> pagelist = ListUtils.pagination(roots, queryObject.getPageIndex(), queryObject.getPageSize());
+
+ //构造结果
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(pagelist);
+ bean.setTotal(roots.size());
+
+ return bean;
+ }
+
+ //private methods
+ private static QuestionCategoryViewModel BuildViewModel(QuestionCategory entity) {
+ if (entity == null)
+ return null;
+
+ QuestionCategoryViewModel model = new QuestionCategoryViewModel();
+
+ model.setId(entity.getId());
+
+ model.setStatus(entity.getStatus());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setParentid(entity.getParentid());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setIcon(entity.getIcon());
+
+ return model;
+ }
+
+ public QuestionCategory Check(ActionType actionType, QuestionCategoryViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionCategory entity = null;
+ if (ActionType.CREATE == actionType) {
+ if (model.getName() != null && !model.getName().isEmpty()) {
+ QuestionCategoryQueryObject queryObject2 = new QuestionCategoryQueryObject();
+ queryObject2.setName(model.getName());
+
+ Map<MapDataType, Object> map2 = GetList(queryObject2);
+ Object object2 = map2.get(MapDataType.DATA_LIST);
+
+ if (object2 != null) {
+ List<QuestionCategory> list = (List<QuestionCategory>) object2;
+ if (list != null && list.size() > 0) {
+ message = LangConstants.MSG_ERROR_NAME_EXISTED;
+ return null;
+ }
+ }
+ }
+
+ entity = new QuestionCategory();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ QuestionCategoryQueryObject queryObject = new QuestionCategoryQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+
+ if (model.getName() != null && !model.getName().isEmpty()) {
+ QuestionCategoryQueryObject queryObject2 = new QuestionCategoryQueryObject();
+ queryObject2.setName(model.getName());
+
+ Map<MapDataType, Object> map2 = GetList(queryObject2);
+ Object object2 = map2.get(MapDataType.DATA_LIST);
+
+ if (object2 != null) {
+ List<QuestionCategory> list = (List<QuestionCategory>) object2;
+ if (list != null && list.size() > 0) {
+ List<QuestionCategory> target = list.stream()
+ .filter(m -> m.getName() != null && m.getName().equals(model.getName()) && !m.getId().equals(model.getId()))
+ .collect(Collectors.toList());
+ if (target != null && target.size() > 0) {
+ message = LangConstants.MSG_ERROR_CODE_EXISTED;
+ return null;
+ }
+ }
+ }
+ }
+ }
+
+ entity.setStatus(model.getStatus());
+ entity.setName(model.getName());
+ entity.setRemark(model.getRemark());
+ entity.setParentid(model.getParentid());
+ entity.setIcon(model.getIcon());
+
+ return entity;
+ }
+
+ public List<QuestionCategoryViewModel> GetParent(QuestionCategoryViewModel temp, List<QuestionCategoryViewModel> temps, List<QuestionCategoryViewModel> roots) {
+ String parentid = temp.getParentid();
+ if (parentid != null && !parentid.isEmpty()) {
+ List<QuestionCategoryViewModel> temps2 = temps.stream().filter(e -> e.getId().equals(parentid)).collect(Collectors.toList());
+ QuestionCategoryViewModel root = temps2 != null && temps2.size() > 0 ? temps2.get(0) : null;
+ if (root != null) {
+ String rootparentid = root.getParentid();
+
+ if (rootparentid != null && !rootparentid.isEmpty()) {
+ roots = GetParent(root, temps, roots);
+ } else {
+ if (roots.stream().filter(e -> e.getId().equals(root.getId())).count() <= 0) {
+ roots.add(root);
+ }
+ }
+ }
+ } else {
+ if (roots.stream().filter(e -> e.getId().equals(temp.getId())).count() <= 0) {
+ roots.add(temp);
+ }
+ }
+
+ return roots;
+ }
+
+ public QuestionCategoryViewModel BuildTree(QuestionCategoryViewModel root, List<QuestionCategoryViewModel> QuestionCategorys) {
+ if (QuestionCategorys == null || QuestionCategorys.size() <= 0) {
+ return root;
+ }
+
+ List<QuestionCategoryViewModel> children = new ArrayList<>();
+ for (QuestionCategoryViewModel QuestionCategory : QuestionCategorys) {
+ if (QuestionCategory != null && QuestionCategory.getParentid() != null && root.getId().equals(QuestionCategory.getParentid())) {
+ children.add(QuestionCategory);
+ }
+ }
+ Collections.sort(children, (QuestionCategoryViewModel o1, QuestionCategoryViewModel o2) -> {
+ if (o2.getStatus() == null || o1.getStatus() == null)
+ return o2.getName().compareTo(o1.getName());
+
+ int levelC = o2.getStatus() - o1.getStatus();
+ if (levelC == 0)
+ return o2.getName().compareTo(o1.getName());
+ else
+ return levelC;
+ });
+
+ root.setChildren(children);
+
+ if (children != null && children.size() > 0) {
+ for (QuestionCategoryViewModel child : children) {
+ BuildTree(child, QuestionCategorys);
+ }
+ }
+
+ return root;
+ }
+
+ private List<QuestionCategoryViewModel> FormateQuestionCategoryParent(List<QuestionCategoryViewModel> models) {
+ List<QuestionCategoryViewModel> list = new ArrayList<>();
+
+ List<QuestionCategoryViewModel> roots = models.stream()
+ .filter(m -> m.getParentid() == null || m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ list.addAll(roots);
+
+ List<QuestionCategoryViewModel> hasparentnodes = models.stream()
+ .filter(m -> m.getParentid() != null && !m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ for (QuestionCategoryViewModel hasparentnode : hasparentnodes) {
+ List<QuestionCategoryViewModel> parents = models.stream()
+ .filter(m -> m.getId().equals(hasparentnode.getParentid()))
+ .collect(Collectors.toList());
+ if (parents != null && parents.size() > 0) {
+ QuestionCategoryViewModel model = new QuestionCategoryViewModel();
+ QuestionCategoryViewModel entity = parents.get(0);
+ model.setId(entity.getId());
+ model.setCreatetime(entity.getCreatetime());
+ model.setParentid(entity.getParentid());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setIcon(entity.getIcon());
+
+ hasparentnode.setParent(model);
+ }
+
+ list.add(hasparentnode);
+ }
+
+ return list;
+ }
+
+ private List<QuestionCategoryViewModel> FormateQuestionCategoryChildren(List<QuestionCategoryViewModel> models) {
+ List<QuestionCategoryViewModel> list = new ArrayList<>();
+
+ List<QuestionCategoryViewModel> roots = models.stream()
+ .filter(m -> m.getParentid() == null || m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ for (QuestionCategoryViewModel root : roots) {
+ List<QuestionCategoryViewModel> childrens = models.stream()
+ .filter(m -> m.getParentid() != null && m.getParentid().equals(root.getId()))
+ .collect(Collectors.toList());
+
+ if (childrens != null && childrens.size() > 0) {
+ root.setChildren(childrens);
+ }
+
+ list.add(root);
+ }
+
+ return list;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterAnswerService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterAnswerService.java
new file mode 100644
index 0000000..e4d3c1f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterAnswerService.java
@@ -0,0 +1,235 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.QuestionMasterAnswerMapper;
+import com.farriver.bwf.data.master.model.QuestionMasterAnswer;
+import com.farriver.bwf.data.master.model.QuestionMasterAnswerExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionMasterAnswerQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionMasterAnswerViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "kbs_QuestionMasterAnswer_cache")
+public class QuestionMasterAnswerService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionMasterAnswerService.class);
+
+ @Resource
+ QuestionMasterAnswerMapper mapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(QuestionMasterAnswerQueryObject queryObject) {
+ if (queryObject == null) ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ QuestionMasterAnswerExample example = new QuestionMasterAnswerExample();
+ QuestionMasterAnswerExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getMasterid() != null && !queryObject.getMasterid().isEmpty()) {
+ criteria.andMasteridEqualTo(queryObject.getMasterid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andQkeyLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getQkey() != null && !queryObject.getQkey().isEmpty()) {
+ criteria.andQkeyLike("%" + queryObject.getQkey() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<QuestionMasterAnswer> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionMasterAnswer GetDetail(QuestionMasterAnswerQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionMasterAnswer> list = (List<QuestionMasterAnswer>) object;
+ if (list != null && list.size() == 1) return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionMasterAnswerViewModel model) {
+ QuestionMasterAnswer entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ /*
+ / QuestionMaster has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchCreate(String masterid, List<QuestionMasterAnswerViewModel> models) {
+ if (masterid == null || masterid.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ int count = 0;
+ if (models != null && models.size() > 0) {
+ for (QuestionMasterAnswerViewModel model : models) {
+ QuestionMasterAnswer entity = Check(ActionType.CREATE, model);
+ if (entity != null) {
+ entity.setMasterid(masterid);
+ count += mapper.insertSelective(entity);
+ }
+ }
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, count);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionMasterAnswerViewModel model) {
+ QuestionMasterAnswer entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ QuestionMasterAnswerQueryObject queryObject = new QuestionMasterAnswerQueryObject();
+ queryObject.setMasterid(masterid);
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionMasterAnswer> list = (List<QuestionMasterAnswer>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionMasterAnswerViewModel GetViewDetail(QuestionMasterAnswerQueryObject queryObject) {
+ QuestionMasterAnswer entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionMasterAnswerQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionMasterAnswer> list = (List<QuestionMasterAnswer>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionMasterAnswerViewModel> viewModels = new ArrayList<>();
+ for (QuestionMasterAnswer entity : list) {
+ QuestionMasterAnswerViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ public static QuestionMasterAnswerViewModel BuildViewModel(QuestionMasterAnswer entity) {
+ if (entity == null) return null;
+
+ QuestionMasterAnswerViewModel model = new QuestionMasterAnswerViewModel();
+
+ model.setId(entity.getId());
+
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setQkey(entity.getQkey());
+ model.setQvalue(entity.getQvalue());
+ model.setSequenceno(entity.getSequenceno());
+
+ return model;
+ }
+
+ public QuestionMasterAnswer Check(ActionType actionType, QuestionMasterAnswerViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionMasterAnswer entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new QuestionMasterAnswer();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ } else {
+ QuestionMasterAnswerQueryObject queryObject = new QuestionMasterAnswerQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+ entity.setQkey(model.getQkey());
+ entity.setQvalue(model.getQvalue());
+ entity.setSequenceno(model.getSequenceno());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterOptionService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterOptionService.java
new file mode 100644
index 0000000..a450bf4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterOptionService.java
@@ -0,0 +1,237 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.QuestionMasterOptionMapper;
+import com.farriver.bwf.data.master.model.QuestionMasterOption;
+import com.farriver.bwf.data.master.model.QuestionMasterOptionExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionMasterOptionQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionMasterOptionViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "kbs_QuestionMasterOption_cache")
+public class QuestionMasterOptionService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionMasterOptionService.class);
+
+ @Resource
+ QuestionMasterOptionMapper mapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(QuestionMasterOptionQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionMasterOptionExample example = new QuestionMasterOptionExample();
+ QuestionMasterOptionExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getMasterid() != null && !queryObject.getMasterid().isEmpty()) {
+ criteria.andMasteridEqualTo(queryObject.getMasterid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andQkeyLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getQkey() != null && !queryObject.getQkey().isEmpty()) {
+ criteria.andQkeyLike("%" + queryObject.getQkey() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<QuestionMasterOption> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionMasterOption GetDetail(QuestionMasterOptionQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionMasterOption> list = (List<QuestionMasterOption>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionMasterOptionViewModel model) {
+ QuestionMasterOption entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ /*
+ / QuestionMaster has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchCreate(String masterid, List<QuestionMasterOptionViewModel> models) {
+ if (masterid == null || masterid.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ int count = 0;
+ if (models != null && models.size() > 0) {
+ for (QuestionMasterOptionViewModel model : models) {
+ QuestionMasterOption entity = Check(ActionType.CREATE, model);
+ if (entity != null) {
+ entity.setMasterid(masterid);
+ count += mapper.insertSelective(entity);
+ }
+ }
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, count);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionMasterOptionViewModel model) {
+ QuestionMasterOption entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ QuestionMasterOptionQueryObject queryObject = new QuestionMasterOptionQueryObject();
+ queryObject.setMasterid(masterid);
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionMasterOption> list = (List<QuestionMasterOption>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionMasterOptionViewModel GetViewDetail(QuestionMasterOptionQueryObject queryObject) {
+ QuestionMasterOption entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionMasterOptionQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionMasterOption> list = (List<QuestionMasterOption>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionMasterOptionViewModel> viewModels = new ArrayList<>();
+ for (QuestionMasterOption entity : list) {
+ QuestionMasterOptionViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ public static QuestionMasterOptionViewModel BuildViewModel(QuestionMasterOption entity) {
+ if (entity == null)
+ return null;
+
+ QuestionMasterOptionViewModel model = new QuestionMasterOptionViewModel();
+
+ model.setId(entity.getId());
+
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setQkey(entity.getQkey());
+ model.setQvalue(entity.getQvalue());
+ model.setSequenceno(entity.getSequenceno());
+
+ return model;
+ }
+
+ public QuestionMasterOption Check(ActionType actionType, QuestionMasterOptionViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionMasterOption entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new QuestionMasterOption();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ } else {
+ QuestionMasterOptionQueryObject queryObject = new QuestionMasterOptionQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+ entity.setQkey(model.getQkey());
+ entity.setQvalue(model.getQvalue());
+ entity.setSequenceno(model.getSequenceno());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterService.java
new file mode 100644
index 0000000..9fbd66a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionMasterService.java
@@ -0,0 +1,707 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.entity.QuestionMasterWithBLOBsExtend;
+import com.farriver.bwf.data.master.mapper.QuestionMasterMapper;
+import com.farriver.bwf.data.master.model.*;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionMasterAnswerViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionMasterOptionViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionPaperQuestionMasterRelationViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@CacheConfig(cacheNames = "kbs_QuestionMaster_cache")
+public class QuestionMasterService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionMasterService.class);
+
+ @Resource
+ QuestionMasterMapper mapper;
+
+ @Resource
+ QuestionMasterAnswerService questionMasterAnswerService;
+
+ @Resource
+ QuestionMasterOptionService questionMasterOptionService;
+
+ @Resource
+ QuestionPaperQuestionMasterRelationService questionMasterPaperRelationService;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(QuestionMasterQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionMasterExample example = new QuestionMasterExample();
+ QuestionMasterExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ QuestionMasterExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ criteria.andSubjectnameLike("%" + queryObject.getSubjectname() + "%");
+ }
+ if (queryObject.getKnowledgepointid() != null && !queryObject.getKnowledgepointid().isEmpty()) {
+ criteria.andKnowledgepointidEqualTo(queryObject.getKnowledgepointid());
+ }
+ if (queryObject.getKnowledgepointname() != null && !queryObject.getKnowledgepointname().isEmpty()) {
+ criteria.andKnowledgepointnameLike("%" + queryObject.getKnowledgepointname() + "%");
+ }
+ if (queryObject.getCategoryid() != null && !queryObject.getCategoryid().isEmpty()) {
+ criteria.andCategoryidEqualTo(queryObject.getCategoryid());
+ }
+ if (queryObject.getCategoryname() != null && !queryObject.getCategoryname().isEmpty()) {
+ criteria.andCategorynameLike("%" + queryObject.getCategoryname() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<QuestionMaster> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public Map<MapDataType, Object> GetListWithBLOBs(QuestionMasterQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionMasterExample example = new QuestionMasterExample();
+ QuestionMasterExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ criteria.andSubjectnameLike("%" + queryObject.getSubjectname() + "%");
+ }
+ if (queryObject.getKnowledgepointid() != null && !queryObject.getKnowledgepointid().isEmpty()) {
+ criteria.andKnowledgepointidEqualTo(queryObject.getKnowledgepointid());
+ }
+ if (queryObject.getKnowledgepointname() != null && !queryObject.getKnowledgepointname().isEmpty()) {
+ criteria.andKnowledgepointnameLike("%" + queryObject.getKnowledgepointname() + "%");
+ }
+ if (queryObject.getCategoryid() != null && !queryObject.getCategoryid().isEmpty()) {
+ criteria.andCategoryidEqualTo(queryObject.getCategoryid());
+ }
+ if (queryObject.getCategoryname() != null && !queryObject.getCategoryname().isEmpty()) {
+ criteria.andCategorynameLike("%" + queryObject.getCategoryname() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ if (queryObject.getIds() != null && queryObject.getIds().size() > 0) {
+ criteria.andIdIn(queryObject.getIds());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<QuestionMasterWithBLOBs> list = mapper.selectByExampleWithBLOBs(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public Map<MapDataType, Object> GetListWithBLOBsExtend(QuestionMasterQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionMasterExample example = new QuestionMasterExample();
+ QuestionMasterExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ criteria.andSubjectnameLike("%" + queryObject.getSubjectname() + "%");
+ }
+ if (queryObject.getKnowledgepointid() != null && !queryObject.getKnowledgepointid().isEmpty()) {
+ criteria.andKnowledgepointidEqualTo(queryObject.getKnowledgepointid());
+ }
+ if (queryObject.getKnowledgepointname() != null && !queryObject.getKnowledgepointname().isEmpty()) {
+ criteria.andKnowledgepointnameLike("%" + queryObject.getKnowledgepointname() + "%");
+ }
+ if (queryObject.getCategoryid() != null && !queryObject.getCategoryid().isEmpty()) {
+ criteria.andCategoryidEqualTo(queryObject.getCategoryid());
+ }
+ if (queryObject.getCategoryname() != null && !queryObject.getCategoryname().isEmpty()) {
+ criteria.andCategorynameLike("%" + queryObject.getCategoryname() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ if (queryObject.getIds() != null && queryObject.getIds().size() > 0) {
+ criteria.andIdIn(queryObject.getIds());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<QuestionMasterWithBLOBsExtend> list = mapper.selectByExampleWithBLOBsExtend(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionMaster GetDetail(QuestionMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionMaster> list = (List<QuestionMaster>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ public QuestionMasterWithBLOBs GetDetailWithBLOBs(QuestionMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetListWithBLOBs(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionMasterWithBLOBs> list = (List<QuestionMasterWithBLOBs>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionMasterViewModel model) {
+ QuestionMasterWithBLOBs entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ questionMasterAnswerService.BatchCreate(entity.getId(), model.getAnswers());
+ questionMasterOptionService.BatchCreate(entity.getId(), model.getOptions());
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionMasterViewModel model) {
+ QuestionMasterWithBLOBs entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ questionMasterAnswerService.BatchDelete(entity.getId());
+ questionMasterAnswerService.BatchCreate(entity.getId(), model.getAnswers());
+
+ questionMasterOptionService.BatchDelete(entity.getId());
+ questionMasterOptionService.BatchCreate(entity.getId(), model.getOptions());
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(QuestionMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionMaster> list = (List<QuestionMaster>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionMasterViewModel GetViewDetail(QuestionMasterQueryObject queryObject) {
+ QuestionMaster entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public QuestionMasterViewModel GetViewDetailWithBLOBs(QuestionMasterQueryObject queryObject) {
+ QuestionMasterWithBLOBs entity = GetDetailWithBLOBs(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiData GetViewDetailWithBLOBs(String id) {
+ QuestionMasterQueryObject queryObject = new QuestionMasterQueryObject();
+ queryObject.setId(id);
+
+ QuestionMasterWithBLOBs entity = GetDetailWithBLOBs(queryObject);
+
+ QuestionMasterViewModel result = BuildViewModel(entity);
+
+ if (result != null)
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, result);
+ else
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionMaster> list = (List<QuestionMaster>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionMasterViewModel> viewModels = new ArrayList<>();
+ for (QuestionMaster entity : list) {
+ QuestionMasterViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListWithBLOBs(QuestionMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetListWithBLOBs(queryObject);
+ List<QuestionMasterWithBLOBs> list = (List<QuestionMasterWithBLOBs>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionMasterViewModel> viewModels = new ArrayList<>();
+ for (QuestionMasterWithBLOBs entity : list) {
+ QuestionMasterViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListWithBLOBsExtend(QuestionMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetListWithBLOBsExtend(queryObject);
+ List<QuestionMasterWithBLOBsExtend> list = (List<QuestionMasterWithBLOBsExtend>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionMasterViewModel> viewModels = new ArrayList<>();
+ for (QuestionMasterWithBLOBsExtend entity : list) {
+ QuestionMasterViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ @Cacheable
+ public ApiData GetQuestionMasterListByPaperid(String paperid) {
+ ApiPageData relations = questionMasterPaperRelationService.GetViewPageListByPrimaryKey(paperid);
+ if (relations == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ List<QuestionPaperQuestionMasterRelationViewModel> relationViewModels = (List<QuestionPaperQuestionMasterRelationViewModel>) relations.getData();
+
+ if (relationViewModels == null || relationViewModels.size() <= 0) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ List<String> questionids = relationViewModels.stream().map(QuestionPaperQuestionMasterRelationViewModel::getQuestionid).collect(Collectors.toList());
+ if (questionids == null || questionids.size() <= 0) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ QuestionMasterQueryObject questionMasterQueryObject = new QuestionMasterQueryObject();
+ questionMasterQueryObject.setIds(questionids);
+
+ ApiPageData questions = GetViewPageListWithBLOBsExtend(questionMasterQueryObject);
+ if (questions == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ List<QuestionMasterViewModel> questionMasterViewModels = (List<QuestionMasterViewModel>) questions.getData();
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, questionMasterViewModels);
+ }
+
+ //private methods
+ public static QuestionMasterViewModel BuildViewModel(QuestionMaster entity) {
+ if (entity == null)
+ return null;
+
+ QuestionMasterViewModel model = new QuestionMasterViewModel();
+
+ model.setId(entity.getId());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setStatus(entity.getStatus());
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectname(entity.getSubjectname());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setCategoryid(entity.getCategoryid());
+ model.setCategoryname(entity.getCategoryname());
+ model.setLevel(entity.getLevel());
+ model.setScore(entity.getScore());
+ model.setKnowledgepointid(entity.getKnowledgepointid());
+ model.setKnowledgepointcode(entity.getKnowledgepointcode());
+ model.setKnowledgepointname(entity.getKnowledgepointname());
+
+ return model;
+ }
+
+ public static QuestionMasterViewModel BuildViewModel(QuestionMasterWithBLOBs entity) {
+ if (entity == null)
+ return null;
+
+ QuestionMasterViewModel model = new QuestionMasterViewModel();
+
+ model.setId(entity.getId());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setStatus(entity.getStatus());
+ model.setStem(entity.getStem());
+ model.setAnswer(entity.getAnswer());
+ model.setCasebody(entity.getCasebody());
+ model.setAnalysis(entity.getAnalysis());
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectname(entity.getSubjectname());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setCategoryid(entity.getCategoryid());
+ model.setCategoryname(entity.getCategoryname());
+ model.setLevel(entity.getLevel());
+ model.setScore(entity.getScore());
+ model.setKnowledgepointid(entity.getKnowledgepointid());
+ model.setKnowledgepointcode(entity.getKnowledgepointcode());
+ model.setKnowledgepointname(entity.getKnowledgepointname());
+
+ return model;
+ }
+
+ public static QuestionMasterViewModel BuildViewModel(QuestionMasterWithBLOBsExtend entity) {
+ if (entity == null)
+ return null;
+
+ QuestionMasterViewModel model = new QuestionMasterViewModel();
+
+ model.setId(entity.getId());
+
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setStatus(entity.getStatus());
+ model.setStem(entity.getStem());
+ model.setAnswer(entity.getAnswer());
+ model.setCasebody(entity.getCasebody());
+ model.setAnalysis(entity.getAnalysis());
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectname(entity.getSubjectname());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setCategoryid(entity.getCategoryid());
+ model.setCategoryname(entity.getCategoryname());
+ model.setLevel(entity.getLevel());
+ model.setScore(entity.getScore());
+ model.setKnowledgepointid(entity.getKnowledgepointid());
+ model.setKnowledgepointcode(entity.getKnowledgepointcode());
+ model.setKnowledgepointname(entity.getKnowledgepointname());
+
+ if (entity.getAnswers() != null && entity.getAnswers().size() > 0) {
+ List<QuestionMasterAnswerViewModel> answers = new ArrayList<>();
+ List<QuestionMasterAnswer> questionMasterAnswers = entity.getAnswers();
+
+ Collections.sort(questionMasterAnswers, (QuestionMasterAnswer o1, QuestionMasterAnswer o2) -> {
+ if (o2.getSequenceno() == null || o1.getSequenceno() == null)
+ return o2.getQkey().compareTo(o1.getQkey());
+
+ int levelC = o2.getSequenceno() - o1.getSequenceno();
+ if (levelC == 0)
+ return o2.getQkey().compareTo(o1.getQkey());
+ else
+ return levelC;
+ });
+
+ for (QuestionMasterAnswer answer : questionMasterAnswers) {
+ QuestionMasterAnswerViewModel viewModel = QuestionMasterAnswerService.BuildViewModel(answer);
+ if (viewModel != null) {
+ answers.add(viewModel);
+ }
+ }
+
+ model.setAnswers(answers);
+ }
+
+ if (entity.getOptions() != null && entity.getOptions().size() > 0) {
+ List<QuestionMasterOptionViewModel> options = new ArrayList<>();
+ List<QuestionMasterOption> questionMasterOptions = entity.getOptions();
+
+ Collections.sort(questionMasterOptions, (QuestionMasterOption o1, QuestionMasterOption o2) -> {
+ if (o2.getSequenceno() == null || o1.getSequenceno() == null)
+ return o2.getQkey().compareTo(o1.getQkey());
+
+ int levelC = o2.getSequenceno() - o1.getSequenceno();
+ if (levelC == 0)
+ return o2.getQkey().compareTo(o1.getQkey());
+ else
+ return levelC;
+ });
+
+ for (QuestionMasterOption option : questionMasterOptions) {
+ QuestionMasterOptionViewModel viewModel = QuestionMasterOptionService.BuildViewModel(option);
+ if (viewModel != null) {
+ options.add(viewModel);
+ }
+ }
+
+ model.setOptions(options);
+ }
+
+ return model;
+ }
+
+ public QuestionMasterWithBLOBs Check(ActionType actionType, QuestionMasterViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionMasterWithBLOBs entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new QuestionMasterWithBLOBs();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ QuestionMasterQueryObject queryObject = new QuestionMasterQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetailWithBLOBs(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setName(model.getName());
+ entity.setRemark(model.getRemark());
+ entity.setStatus(model.getStatus());
+ entity.setStem(model.getStem());
+ entity.setAnswer(model.getAnswer());
+ entity.setCasebody(model.getCasebody());
+ entity.setAnalysis(model.getAnalysis());
+ entity.setSubjectid(model.getSubjectid());
+ entity.setSubjectname(model.getSubjectname());
+ entity.setSubjectcode(model.getSubjectcode());
+ entity.setCategoryid(model.getCategoryid());
+ entity.setCategoryname(model.getCategoryname());
+ entity.setLevel(model.getLevel());
+ entity.setScore(model.getScore());
+ entity.setKnowledgepointid(model.getKnowledgepointid());
+ entity.setKnowledgepointcode(model.getKnowledgepointcode());
+ entity.setKnowledgepointname(model.getKnowledgepointname());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "Q";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%07d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ QuestionMasterExample example = new QuestionMasterExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<QuestionMaster> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ QuestionMaster entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperCategoryService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperCategoryService.java
new file mode 100644
index 0000000..4cf390d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperCategoryService.java
@@ -0,0 +1,506 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.ListUtils;
+import com.farriver.bwf.data.master.mapper.QuestionPaperCategoryMapper;
+import com.farriver.bwf.data.master.model.QuestionPaperCategory;
+import com.farriver.bwf.data.master.model.QuestionPaperCategoryExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionPaperCategoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionPaperCategoryViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@CacheConfig(cacheNames = "bwf_QuestionPaperCategory_cache")
+public class QuestionPaperCategoryService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionPaperCategoryService.class);
+
+ @Resource
+ QuestionPaperCategoryMapper mapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(QuestionPaperCategoryQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionPaperCategoryExample example = new QuestionPaperCategoryExample();
+ QuestionPaperCategoryExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<QuestionPaperCategory> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionPaperCategory GetDetail(QuestionPaperCategoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionPaperCategory> list = (List<QuestionPaperCategory>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionPaperCategoryViewModel model) {
+ QuestionPaperCategory entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionPaperCategoryViewModel model) {
+ QuestionPaperCategory entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(QuestionPaperCategoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionPaperCategory> list = (List<QuestionPaperCategory>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionPaperCategoryViewModel GetViewDetail(QuestionPaperCategoryQueryObject queryObject) {
+ QuestionPaperCategory entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionPaperCategoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionPaperCategory> list = (List<QuestionPaperCategory>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionPaperCategoryViewModel> viewModels = new ArrayList<>();
+ for (QuestionPaperCategory entity : list) {
+ QuestionPaperCategoryViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public List<QuestionPaperCategoryViewModel> getQuestionPaperCategoryTree(QuestionPaperCategoryQueryObject queryObject) {
+ List<QuestionPaperCategoryViewModel> reusltQuestionPaperCategorys = new ArrayList<>();
+
+ List<QuestionPaperCategoryViewModel> roots = new ArrayList<>();
+
+ //系统所有菜单
+ List<QuestionPaperCategoryViewModel> QuestionPaperCategorys = (List<QuestionPaperCategoryViewModel>) GetViewPageList(queryObject).getData();
+
+ for (QuestionPaperCategoryViewModel QuestionPaperCategory : QuestionPaperCategorys) {
+ if (QuestionPaperCategory.getParentid() == null || QuestionPaperCategory.getParentid().isEmpty()) {
+ roots.add(QuestionPaperCategory);
+ }
+ }
+
+ for (QuestionPaperCategoryViewModel root : roots) {
+ root = BuildTree(root, QuestionPaperCategorys);
+
+ reusltQuestionPaperCategorys.add(root);
+ }
+
+ Collections.sort(reusltQuestionPaperCategorys, (QuestionPaperCategoryViewModel o1, QuestionPaperCategoryViewModel o2) -> {
+ if (o2.getStatus() == null || o1.getStatus() == null)
+ return o2.getName().compareTo(o1.getName());
+
+ int levelC = o2.getStatus() - o1.getStatus();
+ if (levelC == 0)
+ return o2.getName().compareTo(o1.getName());
+ else
+ return levelC;
+ });
+
+ return reusltQuestionPaperCategorys;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListWithChildren(QuestionPaperCategoryQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+
+ //目的获取全部数据
+ QuestionPaperCategoryQueryObject queryObject2 = new QuestionPaperCategoryQueryObject();
+ queryObject2.setPageIndex(-1);
+ queryObject2.setPageSize(-1);
+
+ //查询
+ Map<MapDataType, Object> map = GetList(queryObject2);
+ List<QuestionPaperCategory> list = (List<QuestionPaperCategory>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionPaperCategoryViewModel> viewModels = new ArrayList<>();
+ if (list != null && list.size() > 0) {
+ for (QuestionPaperCategory entity : list) {
+ QuestionPaperCategoryViewModel viewModel = BuildViewModel(entity);
+ viewModels.add(viewModel);
+ }
+ }
+ viewModels = FormateQuestionPaperCategoryParent(viewModels);
+
+ List<QuestionPaperCategoryViewModel> temps = viewModels;
+
+ //查询条件
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getId() != null)
+ .filter(e -> e.getId().contains(queryObject.getId()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getParentid() != null && !queryObject.getParentid().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getParentid() != null)
+ .filter(e -> e.getParentid().contains(queryObject.getParentid()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getStatus() != null)
+ .filter(e -> Objects.equals(e.getStatus(), queryObject.getStatus()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getName() != null)
+ .filter(e -> e.getName().contains(queryObject.getName()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getCreatetime().before(queryObject.getStartDateTime()) && e.getCreatetime().after(queryObject.getEndDateTime()))
+ .collect(Collectors.toList());
+ }
+
+ //获取筛查后没有取到的父级元素组
+ List<QuestionPaperCategoryViewModel> temps2 = new ArrayList<>();
+ List<QuestionPaperCategoryViewModel> roots1 = new ArrayList<>();
+ for (QuestionPaperCategoryViewModel model : viewModels) {
+ if (model != null) {
+ List<QuestionPaperCategoryViewModel> parents = GetParent(model, temps, roots1);
+ for (QuestionPaperCategoryViewModel parent : parents) {
+ if (viewModels.stream().filter(e -> e.getId().equals(parent.getId())).count() <= 0) {
+ temps2.add(parent);
+ }
+ }
+ }
+ }
+
+ //将父级元素组添加到结果集合中
+ for (QuestionPaperCategoryViewModel model : temps2) {
+ if (viewModels.stream().filter(e -> e.getId().equals(model.getId())).count() <= 0) {
+ viewModels.add(model);
+ }
+ }
+
+ //通过递归构造树形结构
+ List<QuestionPaperCategoryViewModel> roots = new ArrayList<>();
+ for (QuestionPaperCategoryViewModel model : viewModels) {
+ if (model.getParentid() == null || model.getParentid().isEmpty()) {
+ model = BuildTree(model, viewModels);
+ String id = model.getId();
+ if (roots.stream().filter(e -> e.getId().equals(id)).count() <= 0) {
+ roots.add(model);
+ }
+ }
+ }
+
+ List<QuestionPaperCategoryViewModel> pagelist = ListUtils.pagination(roots, queryObject.getPageIndex(), queryObject.getPageSize());
+
+ //构造结果
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(pagelist);
+ bean.setTotal(roots.size());
+
+ return bean;
+ }
+
+ //private methods
+ private static QuestionPaperCategoryViewModel BuildViewModel(QuestionPaperCategory entity) {
+ if (entity == null)
+ return null;
+
+ QuestionPaperCategoryViewModel model = new QuestionPaperCategoryViewModel();
+
+ model.setId(entity.getId());
+
+ model.setStatus(entity.getStatus());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setParentid(entity.getParentid());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setIcon(entity.getIcon());
+
+ return model;
+ }
+
+ public QuestionPaperCategory Check(ActionType actionType, QuestionPaperCategoryViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionPaperCategory entity = null;
+ if (ActionType.CREATE == actionType) {
+ if (model.getName() != null && !model.getName().isEmpty()) {
+ QuestionPaperCategoryQueryObject queryObject2 = new QuestionPaperCategoryQueryObject();
+ queryObject2.setName(model.getName());
+
+ Map<MapDataType, Object> map2 = GetList(queryObject2);
+ Object object2 = map2.get(MapDataType.DATA_LIST);
+
+ if (object2 != null) {
+ List<QuestionPaperCategory> list = (List<QuestionPaperCategory>) object2;
+ if (list != null && list.size() > 0) {
+ message = LangConstants.MSG_ERROR_NAME_EXISTED;
+ return null;
+ }
+ }
+ }
+
+ entity = new QuestionPaperCategory();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ QuestionPaperCategoryQueryObject queryObject = new QuestionPaperCategoryQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+
+ if (model.getName() != null && !model.getName().isEmpty()) {
+ QuestionPaperCategoryQueryObject queryObject2 = new QuestionPaperCategoryQueryObject();
+ queryObject2.setName(model.getName());
+
+ Map<MapDataType, Object> map2 = GetList(queryObject2);
+ Object object2 = map2.get(MapDataType.DATA_LIST);
+
+ if (object2 != null) {
+ List<QuestionPaperCategory> list = (List<QuestionPaperCategory>) object2;
+ if (list != null && list.size() > 0) {
+ List<QuestionPaperCategory> target = list.stream()
+ .filter(m -> m.getName() != null && m.getName().equals(model.getName()) && !m.getId().equals(model.getId()))
+ .collect(Collectors.toList());
+ if (target != null && target.size() > 0) {
+ message = LangConstants.MSG_ERROR_CODE_EXISTED;
+ return null;
+ }
+ }
+ }
+ }
+ }
+
+ entity.setStatus(model.getStatus());
+ entity.setName(model.getName());
+ entity.setRemark(model.getRemark());
+ entity.setParentid(model.getParentid());
+ entity.setIcon(model.getIcon());
+
+ return entity;
+ }
+
+ public List<QuestionPaperCategoryViewModel> GetParent(QuestionPaperCategoryViewModel temp, List<QuestionPaperCategoryViewModel> temps, List<QuestionPaperCategoryViewModel> roots) {
+ String parentid = temp.getParentid();
+ if (parentid != null && !parentid.isEmpty()) {
+ List<QuestionPaperCategoryViewModel> temps2 = temps.stream().filter(e -> e.getId().equals(parentid)).collect(Collectors.toList());
+ QuestionPaperCategoryViewModel root = temps2 != null && temps2.size() > 0 ? temps2.get(0) : null;
+ if (root != null) {
+ String rootparentid = root.getParentid();
+
+ if (rootparentid != null && !rootparentid.isEmpty()) {
+ roots = GetParent(root, temps, roots);
+ } else {
+ if (roots.stream().filter(e -> e.getId().equals(root.getId())).count() <= 0) {
+ roots.add(root);
+ }
+ }
+ }
+ } else {
+ if (roots.stream().filter(e -> e.getId().equals(temp.getId())).count() <= 0) {
+ roots.add(temp);
+ }
+ }
+
+ return roots;
+ }
+
+ public QuestionPaperCategoryViewModel BuildTree(QuestionPaperCategoryViewModel root, List<QuestionPaperCategoryViewModel> QuestionPaperCategorys) {
+ if (QuestionPaperCategorys == null || QuestionPaperCategorys.size() <= 0) {
+ return root;
+ }
+
+ List<QuestionPaperCategoryViewModel> children = new ArrayList<>();
+ for (QuestionPaperCategoryViewModel QuestionPaperCategory : QuestionPaperCategorys) {
+ if (QuestionPaperCategory != null && QuestionPaperCategory.getParentid() != null && root.getId().equals(QuestionPaperCategory.getParentid())) {
+ children.add(QuestionPaperCategory);
+ }
+ }
+ Collections.sort(children, (QuestionPaperCategoryViewModel o1, QuestionPaperCategoryViewModel o2) -> {
+ if (o2.getStatus() == null || o1.getStatus() == null)
+ return o2.getName().compareTo(o1.getName());
+
+ int levelC = o2.getStatus() - o1.getStatus();
+ if (levelC == 0)
+ return o2.getName().compareTo(o1.getName());
+ else
+ return levelC;
+ });
+
+ root.setChildren(children);
+
+ if (children != null && children.size() > 0) {
+ for (QuestionPaperCategoryViewModel child : children) {
+ BuildTree(child, QuestionPaperCategorys);
+ }
+ }
+
+ return root;
+ }
+
+ private List<QuestionPaperCategoryViewModel> FormateQuestionPaperCategoryParent(List<QuestionPaperCategoryViewModel> models) {
+ List<QuestionPaperCategoryViewModel> list = new ArrayList<>();
+
+ List<QuestionPaperCategoryViewModel> roots = models.stream()
+ .filter(m -> m.getParentid() == null || m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ list.addAll(roots);
+
+ List<QuestionPaperCategoryViewModel> hasparentnodes = models.stream()
+ .filter(m -> m.getParentid() != null && !m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ for (QuestionPaperCategoryViewModel hasparentnode : hasparentnodes) {
+ List<QuestionPaperCategoryViewModel> parents = models.stream()
+ .filter(m -> m.getId().equals(hasparentnode.getParentid()))
+ .collect(Collectors.toList());
+ if (parents != null && parents.size() > 0) {
+ QuestionPaperCategoryViewModel model = new QuestionPaperCategoryViewModel();
+ QuestionPaperCategoryViewModel entity = parents.get(0);
+ model.setId(entity.getId());
+ model.setCreatetime(entity.getCreatetime());
+ model.setParentid(entity.getParentid());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setIcon(entity.getIcon());
+
+ hasparentnode.setParent(model);
+ }
+
+ list.add(hasparentnode);
+ }
+
+ return list;
+ }
+
+ private List<QuestionPaperCategoryViewModel> FormateQuestionPaperCategoryChildren(List<QuestionPaperCategoryViewModel> models) {
+ List<QuestionPaperCategoryViewModel> list = new ArrayList<>();
+
+ List<QuestionPaperCategoryViewModel> roots = models.stream()
+ .filter(m -> m.getParentid() == null || m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ for (QuestionPaperCategoryViewModel root : roots) {
+ List<QuestionPaperCategoryViewModel> childrens = models.stream()
+ .filter(m -> m.getParentid() != null && m.getParentid().equals(root.getId()))
+ .collect(Collectors.toList());
+
+ if (childrens != null && childrens.size() > 0) {
+ root.setChildren(childrens);
+ }
+
+ list.add(root);
+ }
+
+ return list;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperQuestionMasterRelationService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperQuestionMasterRelationService.java
new file mode 100644
index 0000000..173f3bd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperQuestionMasterRelationService.java
@@ -0,0 +1,384 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.QuestionPaperQuestionMasterRelationMapper;
+import com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelation;
+import com.farriver.bwf.data.master.model.QuestionPaperQuestionMasterRelationExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionPaperQuestionMasterRelationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.*;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_QuestionPaperQuestionMasterRelation_cache")
+public class QuestionPaperQuestionMasterRelationService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionPaperQuestionMasterRelationService.class);
+
+ private String message;
+
+ @Resource
+ QuestionPaperQuestionMasterRelationMapper mapper;
+
+ public Map<MapDataType, Object> GetList(QuestionPaperQuestionMasterRelationQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionPaperQuestionMasterRelationExample example = new QuestionPaperQuestionMasterRelationExample();
+ QuestionPaperQuestionMasterRelationExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getPaperid() != null && !queryObject.getPaperid().isEmpty()) {
+ criteria.andPaperidEqualTo(queryObject.getPaperid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andQuestioncodeLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getQuestionid() != null && !queryObject.getQuestionid().isEmpty()) {
+ criteria.andPaperidEqualTo(queryObject.getQuestionid());
+ }
+ if (queryObject.getQuestioncode() != null && !queryObject.getQuestioncode().isEmpty()) {
+ criteria.andQuestioncodeLike("%" + queryObject.getQuestioncode() + "%");
+ }
+ if (queryObject.getQuestionname() != null && !queryObject.getQuestionname().isEmpty()) {
+ criteria.andQuestionnameLike("%" + queryObject.getQuestionname() + "%");
+ }
+ if (queryObject.getPaperid() != null && !queryObject.getPaperid().isEmpty()) {
+ criteria.andPaperidEqualTo(queryObject.getPaperid());
+ }
+ if (queryObject.getPapercode() != null && !queryObject.getPapercode().isEmpty()) {
+ criteria.andPapercodeLike("%" + queryObject.getPapercode() + "%");
+ }
+ if (queryObject.getPapername() != null && !queryObject.getPapername().isEmpty()) {
+ criteria.andPapernameLike("%" + queryObject.getPapername() + "%");
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+ if (queryObject.getSubjectcode() != null && !queryObject.getSubjectcode().isEmpty()) {
+ criteria.andSubjectcodeLike("%" + queryObject.getSubjectcode() + "%");
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ criteria.andSubjectnameLike("%" + queryObject.getSubjectname() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<QuestionPaperQuestionMasterRelation> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionPaperQuestionMasterRelation GetDetail(QuestionPaperQuestionMasterRelationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionPaperQuestionMasterRelation> list = (List<QuestionPaperQuestionMasterRelation>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionPaperQuestionMasterRelationViewModel model) {
+ QuestionPaperQuestionMasterRelation entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchCreate(QuestionPaperQuestionsViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ QuestionSubjectViewModel subject = model.getSubject();
+ if (subject == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ QuestionPaperViewModel paper = model.getPaper();
+ if (paper == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ List<QuestionMasterViewModel> questions = model.getQuestions();
+ if (questions == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ List<QuestionPaperQuestionMasterRelation> oldRelation = new ArrayList<>();
+
+ QuestionPaperQuestionMasterRelationQueryObject queryObject = new QuestionPaperQuestionMasterRelationQueryObject();
+ queryObject.setPaperid(paper.getId());
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ oldRelation = (List<QuestionPaperQuestionMasterRelation>) object;
+ }
+
+ if (oldRelation != null && oldRelation.size() > 0) {
+ List<QuestionPaperQuestionMasterRelation> finalOldRelation = oldRelation;
+ questions = questions.stream()
+ .filter(e -> finalOldRelation.stream().noneMatch(r -> r.getQuestionid().equals(e.getId())))
+ .toList();
+ }
+
+ for (QuestionMasterViewModel question : questions) {
+ QuestionPaperQuestionMasterRelationViewModel newRelation = new QuestionPaperQuestionMasterRelationViewModel();
+ newRelation.setPaperid(paper.getId());
+ newRelation.setPapercode(paper.getCode());
+ newRelation.setPapername(paper.getName());
+
+ newRelation.setQuestionid(question.getId());
+ newRelation.setQuestioncode(question.getCode());
+ newRelation.setQuestionname(question.getName());
+
+ newRelation.setQuetioncategory(question.getCategoryname());
+
+ newRelation.setSubjectid(subject.getId());
+ newRelation.setSubjectcode(subject.getCode());
+ newRelation.setSubjectname(subject.getName());
+
+ QuestionPaperQuestionMasterRelation entity = Check(ActionType.CREATE, newRelation);
+
+ mapper.insertSelective(entity);
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionPaperQuestionMasterRelationViewModel model) {
+ QuestionPaperQuestionMasterRelation entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(List<QuestionPaperQuestionMasterRelationViewModel> models) {
+ if (models == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ for (QuestionPaperQuestionMasterRelationViewModel model : models) {
+ mapper.deleteByPrimaryKey(model.getId());
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS);
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public void BatchUpdate(List<QuestionPaperQuestionMasterRelationViewModel> models) {
+ if (models == null) {
+ return;
+ }
+
+ for (QuestionPaperQuestionMasterRelationViewModel model : models) {
+ Update(model);
+ }
+ }
+
+ @Cacheable
+ public QuestionPaperQuestionMasterRelationViewModel GetViewDetail(String paperid) {
+ if (paperid == null) {
+ return null;
+ }
+
+ QuestionPaperQuestionMasterRelationQueryObject queryObject = new QuestionPaperQuestionMasterRelationQueryObject();
+ queryObject.setPaperid(paperid);
+
+ QuestionPaperQuestionMasterRelation entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public QuestionPaperQuestionMasterRelationViewModel GetViewDetail(QuestionPaperQuestionMasterRelationQueryObject queryObject) {
+ QuestionPaperQuestionMasterRelation entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionPaperQuestionMasterRelationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionPaperQuestionMasterRelation> list = (List<QuestionPaperQuestionMasterRelation>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionPaperQuestionMasterRelationViewModel> viewModels = new ArrayList<>();
+ for (QuestionPaperQuestionMasterRelation entity : list) {
+ QuestionPaperQuestionMasterRelationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListByPrimaryKey(String paperid) {
+ if (paperid == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ QuestionPaperQuestionMasterRelationQueryObject queryObject = new QuestionPaperQuestionMasterRelationQueryObject();
+ queryObject.setPaperid(paperid);
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionPaperQuestionMasterRelation> list = (List<QuestionPaperQuestionMasterRelation>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionPaperQuestionMasterRelationViewModel> viewModels = new ArrayList<>();
+ for (QuestionPaperQuestionMasterRelation entity : list) {
+ QuestionPaperQuestionMasterRelationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static QuestionPaperQuestionMasterRelationViewModel BuildViewModel(QuestionPaperQuestionMasterRelation entity) {
+ if (entity == null)
+ return null;
+
+ QuestionPaperQuestionMasterRelationViewModel model = new QuestionPaperQuestionMasterRelationViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setStatus(entity.getStatus());
+ model.setPaperid(entity.getPaperid());
+ model.setPapercode(entity.getPapercode());
+ model.setPapername(entity.getPapername());
+
+ model.setQuestionid(entity.getQuestionid());
+ model.setQuestioncode(entity.getQuestioncode());
+ model.setQuestionname(entity.getQuestionname());
+ model.setQuetioncategory(entity.getQuetioncategory());
+
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setSubjectname(entity.getSubjectname());
+
+ return model;
+ }
+
+ public QuestionPaperQuestionMasterRelation Check(ActionType actionType, QuestionPaperQuestionMasterRelationViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ if (model.getPaperid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionPaperQuestionMasterRelation entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new QuestionPaperQuestionMasterRelation();
+ if (model.getId() != null && !model.getId().isEmpty()) {
+ entity.setId(model.getId());
+ } else {
+ entity.setId(UUID.randomUUID().toString());
+ }
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ QuestionPaperQuestionMasterRelationQueryObject queryObject = new QuestionPaperQuestionMasterRelationQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setStatus(model.getStatus());
+ entity.setPaperid(model.getPaperid());
+ entity.setPapercode(model.getPapercode());
+ entity.setPapername(model.getPapername());
+
+ entity.setQuestionid(model.getQuestionid());
+ entity.setQuestioncode(model.getQuestioncode());
+ entity.setQuestionname(model.getQuestionname());
+ entity.setQuetioncategory(model.getQuetioncategory());
+
+ entity.setSubjectid(model.getSubjectid());
+ entity.setSubjectcode(model.getSubjectcode());
+ entity.setSubjectname(model.getSubjectname());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperService.java
new file mode 100644
index 0000000..e21cf0d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionPaperService.java
@@ -0,0 +1,304 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.QuestionPaperMapper;
+import com.farriver.bwf.data.master.model.QuestionPaper;
+import com.farriver.bwf.data.master.model.QuestionPaperExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionPaperQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionPaperViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_QuestionPaper_cache")
+public class QuestionPaperService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionPaperService.class);
+
+ private String message;
+
+ @Resource
+ QuestionPaperMapper mapper;
+
+ public Map<MapDataType, Object> GetList(QuestionPaperQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionPaperExample example = new QuestionPaperExample();
+ QuestionPaperExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ QuestionPaperExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ criteria.andSubjectnameLike("%" + queryObject.getSubjectname() + "%");
+ }
+ if (queryObject.getCategoryid() != null && !queryObject.getCategoryid().isEmpty()) {
+ criteria.andCategoryidEqualTo(queryObject.getCategoryid());
+ }
+ if (queryObject.getCategoryname() != null && !queryObject.getCategoryname().isEmpty()) {
+ criteria.andCategorynameLike("%" + queryObject.getCategoryname() + "%");
+ }
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<QuestionPaper> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionPaper GetDetail(QuestionPaperQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionPaper> list = (List<QuestionPaper>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionPaperViewModel model) {
+ QuestionPaper entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionPaperViewModel model) {
+ QuestionPaper entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(QuestionPaperQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionPaper> list = (List<QuestionPaper>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionPaperViewModel GetViewDetail(String id) {
+ QuestionPaperQueryObject queryObject = new QuestionPaperQueryObject();
+ queryObject.setId(id);
+
+ QuestionPaper entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionPaperQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionPaper> list = (List<QuestionPaper>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionPaperViewModel> viewModels = new ArrayList<>();
+ for (QuestionPaper entity : list) {
+ QuestionPaperViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static QuestionPaperViewModel BuildViewModel(QuestionPaper entity) {
+ if (entity == null)
+ return null;
+
+ QuestionPaperViewModel model = new QuestionPaperViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setStatus(entity.getStatus());
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectname(entity.getSubjectname());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setCategoryid(entity.getCategoryid());
+ model.setCategoryname(entity.getCategoryname());
+ model.setType(entity.getType());
+ model.setPrice(entity.getPrice());
+ model.setCoverimage(entity.getCoverimage());
+
+ return model;
+ }
+
+ public QuestionPaper Check(ActionType actionType, QuestionPaperViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionPaper entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new QuestionPaper();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ QuestionPaperQueryObject queryObject = new QuestionPaperQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setStatus(model.getStatus());
+ entity.setName(model.getName());
+ entity.setSubjectid(model.getSubjectid());
+ entity.setSubjectname(model.getSubjectname());
+ entity.setSubjectcode(model.getSubjectcode());
+ entity.setCategoryid(model.getCategoryid());
+ entity.setCategoryname(model.getCategoryname());
+ entity.setRemark(model.getRemark());
+ entity.setType(model.getType());;
+ entity.setPrice(model.getPrice());
+ entity.setCoverimage(model.getCoverimage());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "P";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%07d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ QuestionPaperExample example = new QuestionPaperExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<QuestionPaper> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ QuestionPaper entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectGradeRelationService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectGradeRelationService.java
new file mode 100644
index 0000000..c3b2ce4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectGradeRelationService.java
@@ -0,0 +1,352 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.QuestionSubjectGradeRelationMapper;
+import com.farriver.bwf.data.master.model.QuestionSubjectGradeRelation;
+import com.farriver.bwf.data.master.model.QuestionSubjectGradeRelationExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionSubjectGradeRelationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationGradeViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionGradeSubjectsViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionSubjectGradeRelationViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionSubjectViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@CacheConfig(cacheNames = "bwf_QuestionSubjectGradeRelation_cache")
+public class QuestionSubjectGradeRelationService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionSubjectGradeRelationService.class);
+
+ private String message;
+
+ @Resource
+ QuestionSubjectGradeRelationMapper mapper;
+
+ public Map<MapDataType, Object> GetList(QuestionSubjectGradeRelationQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionSubjectGradeRelationExample example = new QuestionSubjectGradeRelationExample();
+ QuestionSubjectGradeRelationExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andSubjectcodeLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getSubjectcode() != null && !queryObject.getSubjectcode().isEmpty()) {
+ criteria.andSubjectcodeLike("%" + queryObject.getSubjectcode() + "%");
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ criteria.andSubjectnameLike("%" + queryObject.getSubjectname() + "%");
+ }
+ if (queryObject.getGradeid() != null && !queryObject.getGradeid().isEmpty()) {
+ criteria.andGradeidEqualTo(queryObject.getGradeid());
+ }
+ if (queryObject.getGradecode() != null && !queryObject.getGradecode().isEmpty()) {
+ criteria.andGradecodeLike("%" + queryObject.getGradecode() + "%");
+ }
+ if (queryObject.getGradename() != null && !queryObject.getGradename().isEmpty()) {
+ criteria.andGradenameLike("%" + queryObject.getGradename() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<QuestionSubjectGradeRelation> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionSubjectGradeRelation GetDetail(QuestionSubjectGradeRelationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionSubjectGradeRelation> list = (List<QuestionSubjectGradeRelation>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionSubjectGradeRelationViewModel model) {
+ QuestionSubjectGradeRelation entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchCreate(QuestionGradeSubjectsViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ OrganizationGradeViewModel grade = model.getGrade();
+ if (grade == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ List<QuestionSubjectViewModel> subjects = model.getSubjects();
+ if (subjects == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ List<QuestionSubjectGradeRelation> oldRelation = new ArrayList<>();
+
+ QuestionSubjectGradeRelationQueryObject queryObject = new QuestionSubjectGradeRelationQueryObject();
+ queryObject.setGradeid(grade.getId());
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ oldRelation = (List<QuestionSubjectGradeRelation>) object;
+ }
+
+ if (oldRelation != null && oldRelation.size() > 0) {
+ List<QuestionSubjectGradeRelation> finalOldRelation = oldRelation;
+ subjects = subjects.stream()
+ .filter(e -> !finalOldRelation.stream().anyMatch(r -> r.getSubjectid().equals(e.getId())))
+ .collect(Collectors.toList());
+ }
+
+ for (QuestionSubjectViewModel subject : subjects) {
+ QuestionSubjectGradeRelationViewModel newRelation = new QuestionSubjectGradeRelationViewModel();
+ newRelation.setGradeid(grade.getId());
+ newRelation.setGradecode(grade.getCode());
+ newRelation.setGradename(grade.getName());
+ newRelation.setSubjectid(subject.getId());
+ newRelation.setSubjectcode(subject.getCode());
+ newRelation.setSubjectname(subject.getName());
+
+ QuestionSubjectGradeRelation entity = Check(ActionType.CREATE, newRelation);
+
+ mapper.insertSelective(entity);
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionSubjectGradeRelationViewModel model) {
+ QuestionSubjectGradeRelation entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(List<QuestionSubjectGradeRelationViewModel> models) {
+ if (models == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ for (QuestionSubjectGradeRelationViewModel model : models) {
+ mapper.deleteByPrimaryKey(model.getId());
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS);
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public void BatchUpdate(List<QuestionSubjectGradeRelationViewModel> models) {
+ if (models == null) {
+ return;
+ }
+
+ for (QuestionSubjectGradeRelationViewModel model : models) {
+ Update(model);
+ }
+ }
+
+ @Cacheable
+ public QuestionSubjectGradeRelationViewModel GetViewDetail(String subjectid) {
+ if (subjectid == null) {
+ return null;
+ }
+
+ QuestionSubjectGradeRelationQueryObject queryObject = new QuestionSubjectGradeRelationQueryObject();
+ queryObject.setSubjectid(subjectid);
+
+ QuestionSubjectGradeRelation entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public QuestionSubjectGradeRelationViewModel GetViewDetail(QuestionSubjectGradeRelationQueryObject queryObject) {
+ QuestionSubjectGradeRelation entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionSubjectGradeRelationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionSubjectGradeRelation> list = (List<QuestionSubjectGradeRelation>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionSubjectGradeRelationViewModel> viewModels = new ArrayList<>();
+ for (QuestionSubjectGradeRelation entity : list) {
+ QuestionSubjectGradeRelationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListByPrimaryKey(String subjectid) {
+ if (subjectid == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ QuestionSubjectGradeRelationQueryObject queryObject = new QuestionSubjectGradeRelationQueryObject();
+ queryObject.setSubjectid(subjectid);
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionSubjectGradeRelation> list = (List<QuestionSubjectGradeRelation>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionSubjectGradeRelationViewModel> viewModels = new ArrayList<>();
+ for (QuestionSubjectGradeRelation entity : list) {
+ QuestionSubjectGradeRelationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static QuestionSubjectGradeRelationViewModel BuildViewModel(QuestionSubjectGradeRelation entity) {
+ if (entity == null)
+ return null;
+
+ QuestionSubjectGradeRelationViewModel model = new QuestionSubjectGradeRelationViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setStatus(entity.getStatus());
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setSubjectname(entity.getSubjectname());
+ model.setGradeid(entity.getGradeid());
+ model.setGradecode(entity.getGradecode());
+ model.setGradename(entity.getGradename());
+
+ return model;
+ }
+
+ public QuestionSubjectGradeRelation Check(ActionType actionType, QuestionSubjectGradeRelationViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ if (model.getSubjectid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionSubjectGradeRelation entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new QuestionSubjectGradeRelation();
+ if (model.getId() != null && !model.getId().isEmpty()) {
+ entity.setId(model.getId());
+ } else {
+ entity.setId(UUID.randomUUID().toString());
+ }
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ QuestionSubjectGradeRelationQueryObject queryObject = new QuestionSubjectGradeRelationQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setStatus(model.getStatus());
+ entity.setSubjectid(model.getSubjectid());
+ entity.setSubjectcode(model.getSubjectcode());
+ entity.setSubjectname(model.getSubjectname());
+ entity.setGradeid(model.getGradeid());
+ entity.setGradecode(model.getGradecode());
+ entity.setGradename(model.getGradename());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectKnowledgePointService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectKnowledgePointService.java
new file mode 100644
index 0000000..65790f8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectKnowledgePointService.java
@@ -0,0 +1,555 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.ListUtils;
+import com.farriver.bwf.data.master.mapper.QuestionSubjectKnowledgePointMapper;
+import com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePoint;
+import com.farriver.bwf.data.master.model.QuestionSubjectKnowledgePointExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionSubjectKnowledgePointQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionSubjectKnowledgePointViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@CacheConfig(cacheNames = "bwf_QuestionSubjectKnowledgePoint_cache")
+public class QuestionSubjectKnowledgePointService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionSubjectKnowledgePointService.class);
+
+ @Resource
+ QuestionSubjectKnowledgePointMapper mapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(QuestionSubjectKnowledgePointQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionSubjectKnowledgePointExample example = new QuestionSubjectKnowledgePointExample();
+ QuestionSubjectKnowledgePointExample.Criteria criteria = example.createCriteria();
+
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ criteria.andSubjectidEqualTo(queryObject.getSubjectid());
+ }
+ if (queryObject.getSubjectcode() != null && !queryObject.getSubjectcode().isEmpty()) {
+ criteria.andSubjectcodeLike("%" + queryObject.getSubjectcode() + "%");
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ criteria.andSubjectnameLike("%" + queryObject.getSubjectname() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("name asc");
+
+ List<QuestionSubjectKnowledgePoint> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionSubjectKnowledgePoint GetDetail(QuestionSubjectKnowledgePointQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionSubjectKnowledgePoint> list = (List<QuestionSubjectKnowledgePoint>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionSubjectKnowledgePointViewModel model) {
+ QuestionSubjectKnowledgePoint entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionSubjectKnowledgePointViewModel model) {
+ QuestionSubjectKnowledgePoint entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(QuestionSubjectKnowledgePointQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionSubjectKnowledgePoint> list = (List<QuestionSubjectKnowledgePoint>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionSubjectKnowledgePointViewModel GetViewDetail(String id) {
+ QuestionSubjectKnowledgePointQueryObject queryObject = new QuestionSubjectKnowledgePointQueryObject();
+ queryObject.setId(id);
+
+ QuestionSubjectKnowledgePoint entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public QuestionSubjectKnowledgePointViewModel GetViewDetail(QuestionSubjectKnowledgePointQueryObject queryObject) {
+ QuestionSubjectKnowledgePoint entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionSubjectKnowledgePointQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionSubjectKnowledgePoint> list = (List<QuestionSubjectKnowledgePoint>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionSubjectKnowledgePointViewModel> viewModels = new ArrayList<>();
+ for (QuestionSubjectKnowledgePoint entity : list) {
+ QuestionSubjectKnowledgePointViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public List<QuestionSubjectKnowledgePointViewModel> getQuestionSubjectKnowledgePointTree(QuestionSubjectKnowledgePointQueryObject queryObject) {
+ List<QuestionSubjectKnowledgePointViewModel> reusltQuestionSubjectKnowledgePoints = new ArrayList<>();
+
+ List<QuestionSubjectKnowledgePointViewModel> roots = new ArrayList<>();
+
+ //系统所有菜单
+ List<QuestionSubjectKnowledgePointViewModel> QuestionSubjectKnowledgePoints = (List<QuestionSubjectKnowledgePointViewModel>) GetViewPageList(queryObject).getData();
+
+ for (QuestionSubjectKnowledgePointViewModel QuestionSubjectKnowledgePoint : QuestionSubjectKnowledgePoints) {
+ if (QuestionSubjectKnowledgePoint.getParentid() == null || QuestionSubjectKnowledgePoint.getParentid().isEmpty()) {
+ roots.add(QuestionSubjectKnowledgePoint);
+ }
+ }
+
+ for (QuestionSubjectKnowledgePointViewModel root : roots) {
+ root = BuildTree(root, QuestionSubjectKnowledgePoints);
+
+ reusltQuestionSubjectKnowledgePoints.add(root);
+ }
+
+ Collections.sort(reusltQuestionSubjectKnowledgePoints, (QuestionSubjectKnowledgePointViewModel o1, QuestionSubjectKnowledgePointViewModel o2) -> {
+ if (o2.getStatus() == null || o1.getStatus() == null)
+ return o1.getName().compareTo(o2.getName());
+
+ int levelC = o2.getStatus() - o1.getStatus();
+ if (levelC == 0)
+ return o1.getName().compareTo(o2.getName());
+ else
+ return levelC;
+ });
+
+ return reusltQuestionSubjectKnowledgePoints;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListWithChildren(QuestionSubjectKnowledgePointQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+
+ //目的获取全部数据
+ QuestionSubjectKnowledgePointQueryObject queryObject2 = new QuestionSubjectKnowledgePointQueryObject();
+ queryObject2.setPageIndex(-1);
+ queryObject2.setPageSize(-1);
+
+ //查询
+ Map<MapDataType, Object> map = GetList(queryObject2);
+ List<QuestionSubjectKnowledgePoint> list = (List<QuestionSubjectKnowledgePoint>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionSubjectKnowledgePointViewModel> viewModels = new ArrayList<>();
+ if (list != null && list.size() > 0) {
+ for (QuestionSubjectKnowledgePoint entity : list) {
+ QuestionSubjectKnowledgePointViewModel viewModel = BuildViewModel(entity);
+ viewModels.add(viewModel);
+ }
+ }
+ viewModels = FormateQuestionSubjectKnowledgePointParent(viewModels);
+
+ List<QuestionSubjectKnowledgePointViewModel> temps = viewModels;
+
+ //查询条件
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getId() != null)
+ .filter(e -> e.getId().contains(queryObject.getId()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getParentid() != null && !queryObject.getParentid().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getParentid() != null)
+ .filter(e -> e.getParentid().contains(queryObject.getParentid()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getStatus() != null)
+ .filter(e -> Objects.equals(e.getStatus(), queryObject.getStatus()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getName() != null)
+ .filter(e -> e.getName().contains(queryObject.getName()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getSubjectid() != null && !queryObject.getSubjectid().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getSubjectid() != null)
+ .filter(e -> e.getSubjectid().contains(queryObject.getSubjectid()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getSubjectname() != null && !queryObject.getSubjectname().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getSubjectname() != null)
+ .filter(e -> e.getSubjectname().contains(queryObject.getSubjectname()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getSubjectcode() != null && !queryObject.getSubjectcode().isEmpty()) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getSubjectcode() != null)
+ .filter(e -> e.getSubjectcode().contains(queryObject.getSubjectcode()))
+ .collect(Collectors.toList());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ viewModels = viewModels.stream()
+ .filter(e -> e.getCreatetime().before(queryObject.getStartDateTime()) && e.getCreatetime().after(queryObject.getEndDateTime()))
+ .collect(Collectors.toList());
+ }
+
+ //获取筛查后没有取到的父级元素组
+ List<QuestionSubjectKnowledgePointViewModel> temps2 = new ArrayList<>();
+ List<QuestionSubjectKnowledgePointViewModel> roots1 = new ArrayList<>();
+ for (QuestionSubjectKnowledgePointViewModel model : viewModels) {
+ if (model != null) {
+ List<QuestionSubjectKnowledgePointViewModel> parents = GetParent(model, temps, roots1);
+ for (QuestionSubjectKnowledgePointViewModel parent : parents) {
+ if (viewModels.stream().filter(e -> e.getId().equals(parent.getId())).count() <= 0) {
+ temps2.add(parent);
+ }
+ }
+ }
+ }
+
+ //将父级元素组添加到结果集合中
+ for (QuestionSubjectKnowledgePointViewModel model : temps2) {
+ if (viewModels.stream().filter(e -> e.getId().equals(model.getId())).count() <= 0) {
+ viewModels.add(model);
+ }
+ }
+
+ //通过递归构造树形结构
+ List<QuestionSubjectKnowledgePointViewModel> roots = new ArrayList<>();
+ for (QuestionSubjectKnowledgePointViewModel model : viewModels) {
+ if (model.getParentid() == null || model.getParentid().isEmpty()) {
+ model = BuildTree(model, viewModels);
+ String id = model.getId();
+ if (roots.stream().filter(e -> e.getId().equals(id)).count() <= 0) {
+ roots.add(model);
+ }
+ }
+ }
+
+ List<QuestionSubjectKnowledgePointViewModel> pagelist = ListUtils.pagination(roots, queryObject.getPageIndex(), queryObject.getPageSize());
+
+ //构造结果
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(pagelist);
+ bean.setTotal(roots.size());
+
+ return bean;
+ }
+
+ //private methods
+ private static QuestionSubjectKnowledgePointViewModel BuildViewModel(QuestionSubjectKnowledgePoint entity) {
+ if (entity == null)
+ return null;
+
+ QuestionSubjectKnowledgePointViewModel model = new QuestionSubjectKnowledgePointViewModel();
+
+ model.setId(entity.getId());
+
+ model.setStatus(entity.getStatus());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setParentid(entity.getParentid());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setSubjectname(entity.getSubjectname());
+
+ return model;
+ }
+
+ public QuestionSubjectKnowledgePoint Check(ActionType actionType, QuestionSubjectKnowledgePointViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionSubjectKnowledgePoint entity = null;
+ if (ActionType.CREATE == actionType) {
+ if (model.getName() != null && !model.getName().isEmpty()) {
+ QuestionSubjectKnowledgePointQueryObject queryObject2 = new QuestionSubjectKnowledgePointQueryObject();
+ queryObject2.setName(model.getName());
+
+ Map<MapDataType, Object> map2 = GetList(queryObject2);
+ Object object2 = map2.get(MapDataType.DATA_LIST);
+
+ if (object2 != null) {
+ List<QuestionSubjectKnowledgePoint> list = (List<QuestionSubjectKnowledgePoint>) object2;
+ if (list != null && list.size() > 0) {
+ message = LangConstants.MSG_ERROR_NAME_EXISTED;
+ return null;
+ }
+ }
+ }
+
+ entity = new QuestionSubjectKnowledgePoint();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ QuestionSubjectKnowledgePointQueryObject queryObject = new QuestionSubjectKnowledgePointQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+
+ if (model.getName() != null && !model.getName().isEmpty()) {
+ QuestionSubjectKnowledgePointQueryObject queryObject2 = new QuestionSubjectKnowledgePointQueryObject();
+ queryObject2.setName(model.getName());
+
+ Map<MapDataType, Object> map2 = GetList(queryObject2);
+ Object object2 = map2.get(MapDataType.DATA_LIST);
+
+ if (object2 != null) {
+ List<QuestionSubjectKnowledgePoint> list = (List<QuestionSubjectKnowledgePoint>) object2;
+ if (list != null && list.size() > 0) {
+ List<QuestionSubjectKnowledgePoint> target = list.stream()
+ .filter(m -> m.getName() != null && m.getName().equals(model.getName()) && !m.getId().equals(model.getId()))
+ .collect(Collectors.toList());
+ if (target != null && target.size() > 0) {
+ message = LangConstants.MSG_ERROR_CODE_EXISTED;
+ return null;
+ }
+ }
+ }
+ }
+ }
+
+ entity.setStatus(model.getStatus());
+ entity.setName(model.getName());
+ entity.setRemark(model.getRemark());
+ entity.setParentid(model.getParentid());
+ entity.setSubjectid(model.getSubjectid());
+ entity.setSubjectcode(model.getSubjectcode());
+ entity.setSubjectname(model.getSubjectname());
+
+ return entity;
+ }
+
+ public List<QuestionSubjectKnowledgePointViewModel> GetParent(QuestionSubjectKnowledgePointViewModel temp, List<QuestionSubjectKnowledgePointViewModel> temps, List<QuestionSubjectKnowledgePointViewModel> roots) {
+ String parentid = temp.getParentid();
+ if (parentid != null && !parentid.isEmpty()) {
+ List<QuestionSubjectKnowledgePointViewModel> temps2 = temps.stream().filter(e -> e.getId().equals(parentid)).collect(Collectors.toList());
+ QuestionSubjectKnowledgePointViewModel root = temps2 != null && temps2.size() > 0 ? temps2.get(0) : null;
+ if (root != null) {
+ String rootparentid = root.getParentid();
+
+ if (rootparentid != null && !rootparentid.isEmpty()) {
+ roots = GetParent(root, temps, roots);
+ } else {
+ if (roots.stream().filter(e -> e.getId().equals(root.getId())).count() <= 0) {
+ roots.add(root);
+ }
+ }
+ }
+ } else {
+ if (roots.stream().filter(e -> e.getId().equals(temp.getId())).count() <= 0) {
+ roots.add(temp);
+ }
+ }
+
+ return roots;
+ }
+
+ public QuestionSubjectKnowledgePointViewModel BuildTree(QuestionSubjectKnowledgePointViewModel root, List<QuestionSubjectKnowledgePointViewModel> QuestionSubjectKnowledgePoints) {
+ if (QuestionSubjectKnowledgePoints == null || QuestionSubjectKnowledgePoints.size() <= 0) {
+ return root;
+ }
+
+ List<QuestionSubjectKnowledgePointViewModel> children = new ArrayList<>();
+ for (QuestionSubjectKnowledgePointViewModel QuestionSubjectKnowledgePoint : QuestionSubjectKnowledgePoints) {
+ if (QuestionSubjectKnowledgePoint != null && QuestionSubjectKnowledgePoint.getParentid() != null && root.getId().equals(QuestionSubjectKnowledgePoint.getParentid())) {
+ children.add(QuestionSubjectKnowledgePoint);
+ }
+ }
+ Collections.sort(children, (QuestionSubjectKnowledgePointViewModel o1, QuestionSubjectKnowledgePointViewModel o2) -> {
+ if (o2.getStatus() == null || o1.getStatus() == null)
+ return o1.getName().compareTo(o2.getName());
+
+ int levelC = o2.getStatus() - o1.getStatus();
+ if (levelC == 0)
+ return o1.getName().compareTo(o2.getName());
+ else
+ return levelC;
+ });
+
+ root.setChildren(children);
+
+ if (children != null && children.size() > 0) {
+ for (QuestionSubjectKnowledgePointViewModel child : children) {
+ BuildTree(child, QuestionSubjectKnowledgePoints);
+ }
+ }
+
+ return root;
+ }
+
+ private List<QuestionSubjectKnowledgePointViewModel> FormateQuestionSubjectKnowledgePointParent(List<QuestionSubjectKnowledgePointViewModel> models) {
+ List<QuestionSubjectKnowledgePointViewModel> list = new ArrayList<>();
+
+ List<QuestionSubjectKnowledgePointViewModel> roots = models.stream()
+ .filter(m -> m.getParentid() == null || m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ list.addAll(roots);
+
+ List<QuestionSubjectKnowledgePointViewModel> hasparentnodes = models.stream()
+ .filter(m -> m.getParentid() != null && !m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ for (QuestionSubjectKnowledgePointViewModel hasparentnode : hasparentnodes) {
+ List<QuestionSubjectKnowledgePointViewModel> parents = models.stream()
+ .filter(m -> m.getId().equals(hasparentnode.getParentid()))
+ .collect(Collectors.toList());
+ if (parents != null && parents.size() > 0) {
+ QuestionSubjectKnowledgePointViewModel model = new QuestionSubjectKnowledgePointViewModel();
+ QuestionSubjectKnowledgePointViewModel entity = parents.get(0);
+ model.setId(entity.getId());
+ model.setCreatetime(entity.getCreatetime());
+ model.setParentid(entity.getParentid());
+ model.setName(entity.getName());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setSubjectid(entity.getSubjectid());
+ model.setSubjectcode(entity.getSubjectcode());
+ model.setSubjectname(entity.getSubjectname());
+
+ hasparentnode.setParent(model);
+ }
+
+ list.add(hasparentnode);
+ }
+
+ return list;
+ }
+
+ private List<QuestionSubjectKnowledgePointViewModel> FormateQuestionSubjectKnowledgePointChildren(List<QuestionSubjectKnowledgePointViewModel> models) {
+ List<QuestionSubjectKnowledgePointViewModel> list = new ArrayList<>();
+
+ List<QuestionSubjectKnowledgePointViewModel> roots = models.stream()
+ .filter(m -> m.getParentid() == null || m.getParentid().isEmpty())
+ .collect(Collectors.toList());
+
+ for (QuestionSubjectKnowledgePointViewModel root : roots) {
+ List<QuestionSubjectKnowledgePointViewModel> childrens = models.stream()
+ .filter(m -> m.getParentid() != null && m.getParentid().equals(root.getId()))
+ .collect(Collectors.toList());
+
+ if (childrens != null && childrens.size() > 0) {
+ root.setChildren(childrens);
+ }
+
+ list.add(root);
+ }
+
+ return list;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectService.java
new file mode 100644
index 0000000..36a7b82
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/question/QuestionSubjectService.java
@@ -0,0 +1,270 @@
+package com.farriver.bwf.service.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.QuestionSubjectMapper;
+import com.farriver.bwf.data.master.model.QuestionSubject;
+import com.farriver.bwf.data.master.model.QuestionSubjectExample;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionSubjectQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionSubjectViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_QuestionSubject_cache")
+public class QuestionSubjectService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionSubjectService.class);
+
+ private String message;
+
+ @Resource
+ QuestionSubjectMapper mapper;
+
+ public Map<MapDataType, Object> GetList(QuestionSubjectQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ QuestionSubjectExample example = new QuestionSubjectExample();
+ QuestionSubjectExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ QuestionSubjectExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<QuestionSubject> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public QuestionSubject GetDetail(QuestionSubjectQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<QuestionSubject> list = (List<QuestionSubject>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(QuestionSubjectViewModel model) {
+ QuestionSubject entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(QuestionSubjectViewModel model) {
+ QuestionSubject entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(QuestionSubjectQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<QuestionSubject> list = (List<QuestionSubject>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public QuestionSubjectViewModel GetViewDetail(String id) {
+ QuestionSubjectQueryObject queryObject = new QuestionSubjectQueryObject();
+ queryObject.setId(id);
+
+ QuestionSubject entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(QuestionSubjectQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<QuestionSubject> list = (List<QuestionSubject>) map.get(MapDataType.DATA_LIST);
+
+ List<QuestionSubjectViewModel> viewModels = new ArrayList<>();
+ for (QuestionSubject entity : list) {
+ QuestionSubjectViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static QuestionSubjectViewModel BuildViewModel(QuestionSubject entity) {
+ if (entity == null)
+ return null;
+
+ QuestionSubjectViewModel model = new QuestionSubjectViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setName(entity.getName());
+ model.setCode(entity.getCode());
+ model.setStatus(entity.getStatus());
+
+ return model;
+ }
+
+ public QuestionSubject Check(ActionType actionType, QuestionSubjectViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ QuestionSubject entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new QuestionSubject();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ QuestionSubjectQueryObject queryObject = new QuestionSubjectQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setStatus(model.getStatus());
+ entity.setName(model.getName());
+ entity.setRemark(model.getRemark());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "S";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%07d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ QuestionSubjectExample example = new QuestionSubjectExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<QuestionSubject> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ QuestionSubject entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/security/SecurityService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/security/SecurityService.java
new file mode 100644
index 0000000..0cd4138
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/security/SecurityService.java
@@ -0,0 +1,276 @@
+package com.farriver.bwf.service.security;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.security.AccountMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.common.AuthBean;
+import com.farriver.bwf.data.transferobject.viewmodel.pa.PAEmployeeViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PasswordViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import com.farriver.bwf.service.extend.rbac.RBACService;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@Service
+public class SecurityService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SecurityService.class);
+
+ private String message;
+
+ @Resource
+ RBACService rbacService;
+
+ @Value("${applicationcode}")
+ private String applicationcode;
+
+ public ApiData UpdateProfile(@RequestBody PAEmployeeViewModel model) {
+ try {
+ return rbacService.UpdatePAEmployeeProfile(model);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetEmployeePositionsByEmployeeId(@RequestParam("employeeid") String employeeid) {
+ try {
+ return rbacService.GetEmployeePositionsByEmployeeId(employeeid);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetEmployeePositionWithOrganizationsByEmployeeId(@RequestParam("employeeid") String employeeid) {
+ try {
+ return rbacService.GetEmployeePositionWithOrganizationsByEmployeeId(employeeid);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData UpdateAccountPassword(PasswordViewModel model) {
+ try {
+ return rbacService.UpdateAccountPassword(model);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiPageData GetAllApplication(Integer permissionLevel) {
+ try {
+ return rbacService.GetAllApplication(permissionLevel);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiPageData GetAccountApplications(String accountid) {
+ try {
+ return rbacService.GetAccountApplications(accountid);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public boolean CheckPermission(String applicationcode, AccountMasterViewModel account, String uri) {
+ try {
+ ApiData rp = rbacService.CheckPermission(applicationcode, account, uri);
+ if (rp == null) {
+ return false;
+ }
+
+ return (boolean) rp.getData();
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return false;
+ }
+
+ public ApiData RegisterAccount(AccountMasterViewModel model) {
+ try {
+ return rbacService.RegisterAccount(model);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData ResetPasswordSMSCode(PasswordViewModel model) {
+ try {
+ return rbacService.ResetPasswordSMSCode(model);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData ResetPasswordByEmail(PasswordViewModel model) {
+ try {
+ return rbacService.ResetPasswordByEmail(model);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData RetrievePasswordByEmail(String email, String ticket) {
+ try {
+ return rbacService.RetrievePasswordByEmail(email, ticket);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ }
+
+ return ApiData.error(message);
+ }
+
+ public ApiData LoginByAccountPassword(AuthBean authBean) {
+ try {
+ return rbacService.LoginByAccountPassword(authBean);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData LoginBySMSCode(AuthBean authBean) {
+ try {
+ return rbacService.LoginBySMSCode(authBean);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData Logout(String accountid) {
+ try {
+ return rbacService.GetLogout(accountid);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public void SetVerifyCode(String account, String code) {
+ try {
+ rbacService.SetVerifyCode(account, code);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+ }
+
+ public ApiData GetSMSCode(String cellphone) {
+ try {
+ return rbacService.GetSMSCode(cellphone);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetAccountRolesByAccountId(String id) {
+ try {
+ return rbacService.GetAccountRolesByAccountId(id);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiPageData getAllRoles(Integer permissionLevel) {
+ try {
+ return rbacService.getAllRoles(permissionLevel);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetRolesByAccountId(String accountid) {
+ try {
+ return rbacService.GetRolesByAccountId(accountid);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetRolesByPositionId(String positionid) {
+ try {
+ return rbacService.GetRolesByPositionId(positionid);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetRolePermissions(String applicationcode) {
+ try {
+ return rbacService.GetRolePermissions(applicationcode);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData LoadAccountByAccount(String code) {
+ try {
+ return rbacService.LoadAccountByAccount(code);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetAccountDetail(AccountMasterQueryObject queryObject) {
+ try {
+ return rbacService.GetAccountDetail(queryObject);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+
+ public ApiData GetAccountWithRolesAndPermissions(String id) {
+ try {
+ return rbacService.GetAccountWithRolesAndPermissions(id);
+ } catch (Exception exception) {
+ logger.error(exception.getMessage(), exception);
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartProductService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartProductService.java
new file mode 100644
index 0000000..37bf4a9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartProductService.java
@@ -0,0 +1,274 @@
+package com.farriver.bwf.service.shopping;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.ShoppingCartProductMapper;
+import com.farriver.bwf.data.master.model.ShoppingCartProduct;
+import com.farriver.bwf.data.master.model.ShoppingCartProductExample;
+import com.farriver.bwf.data.transferobject.queryobject.shopping.ShoppingCartProductQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.shopping.ShoppingCartProductViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_ShoppingCartProduct_cache")
+public class ShoppingCartProductService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(ShoppingCartProductService.class);
+
+ private String message;
+
+ @Resource
+ ShoppingCartProductMapper mapper;
+
+ public Map<MapDataType, Object> GetList(ShoppingCartProductQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ ShoppingCartProductExample example = new ShoppingCartProductExample();
+ ShoppingCartProductExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andProductcodeLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCartid() != null && !queryObject.getCartid().isEmpty()) {
+ criteria.andCartidEqualTo(queryObject.getCartid());
+ }
+ if (queryObject.getProductid() != null && !queryObject.getProductid().isEmpty()) {
+ criteria.andProductidEqualTo(queryObject.getProductid());
+ }
+ if (queryObject.getProductcode() != null && !queryObject.getProductcode().isEmpty()) {
+ criteria.andProductcodeLike("%" + queryObject.getProductcode() + "%");
+ }
+ if (queryObject.getProductname() != null && !queryObject.getProductname().isEmpty()) {
+ criteria.andProductnameLike("%" + queryObject.getProductname() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<ShoppingCartProduct> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public ShoppingCartProduct GetDetail(ShoppingCartProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<ShoppingCartProduct> list = (List<ShoppingCartProduct>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(ShoppingCartProductViewModel model) {
+ ShoppingCartProduct entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ /*
+ / ShoppingCart has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchCreate(List<ShoppingCartProductViewModel> models) {
+ int count = 0;
+ if (models != null && models.size() > 0) {
+ for (ShoppingCartProductViewModel model : models) {
+ ShoppingCartProduct entity = Check(ActionType.CREATE, model);
+ if (entity != null) {
+ count += mapper.insertSelective(entity);
+ }
+ }
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, count);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(ShoppingCartProductViewModel model) {
+ ShoppingCartProduct entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData DeleteByProductID(List<String> productids) {
+ ShoppingCartProductExample example = new ShoppingCartProductExample();
+ ShoppingCartProductExample.Criteria criteria = example.createCriteria();
+ criteria.andProductidIn(productids);
+
+ return ApiData.ok("", mapper.deleteByExample(example));
+ }
+
+ /*
+ / ShoppingCart has been set @Transactional, no set @Transactional for this function.
+ */
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(ShoppingCartProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<ShoppingCartProduct> list = (List<ShoppingCartProduct>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public ShoppingCartProductViewModel GetViewDetail(String id) {
+ ShoppingCartProductQueryObject queryObject = new ShoppingCartProductQueryObject();
+ queryObject.setId(id);
+
+ ShoppingCartProduct entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(ShoppingCartProductQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<ShoppingCartProduct> list = (List<ShoppingCartProduct>) map.get(MapDataType.DATA_LIST);
+
+ List<ShoppingCartProductViewModel> viewModels = new ArrayList<>();
+ for (ShoppingCartProduct entity : list) {
+ ShoppingCartProductViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ public static ShoppingCartProductViewModel BuildViewModel(ShoppingCartProduct entity) {
+ if (entity == null)
+ return null;
+
+ ShoppingCartProductViewModel model = new ShoppingCartProductViewModel();
+
+ model.setId(entity.getId());
+
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setProductid(entity.getProductid());
+ model.setProductcode(entity.getProductcode());
+ model.setProductname(entity.getProductname());
+ model.setStatus(entity.getStatus());
+ model.setColor(entity.getColor());
+ model.setSize(entity.getSize());
+ model.setCount(entity.getCount());
+ model.setImage(entity.getImage());
+ model.setPrice(entity.getPrice());
+ model.setSaleprice(entity.getSaleprice());
+ model.setCartid(entity.getCartid());
+ model.setCartcode(entity.getCartcode());
+
+ return model;
+ }
+
+ public ShoppingCartProduct Check(ActionType actionType, ShoppingCartProductViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+ if (model.getCartid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+ if (model.getProductid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ ShoppingCartProduct entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new ShoppingCartProduct();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ ShoppingCartProductQueryObject queryObject = new ShoppingCartProductQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setProductid(model.getProductid());
+ entity.setProductcode(model.getProductcode());
+ entity.setProductname(model.getProductname());
+ entity.setStatus(model.getStatus());
+ entity.setColor(model.getColor());
+ entity.setSize(model.getSize());
+ entity.setCount(model.getCount());
+ entity.setImage(model.getImage());
+ entity.setPrice(model.getPrice());
+ entity.setSaleprice(model.getSaleprice());
+ entity.setCartid(model.getCartid());
+ entity.setCartcode(model.getCartcode());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartService.java
new file mode 100644
index 0000000..acf40fb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/shopping/ShoppingCartService.java
@@ -0,0 +1,448 @@
+package com.farriver.bwf.service.shopping;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.entity.ShoppingCartExtend;
+import com.farriver.bwf.data.master.mapper.ShoppingCartMapper;
+import com.farriver.bwf.data.master.model.*;
+import com.farriver.bwf.data.transferobject.queryobject.shopping.ShoppingCartProductQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.shopping.ShoppingCartQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.shopping.ShoppingCartProductViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.shopping.ShoppingCartViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_ShoppingCart_cache")
+public class ShoppingCartService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(ShoppingCartService.class);
+
+ private String message;
+
+ @Resource
+ ShoppingCartMapper mapper;
+
+ @Resource
+ ShoppingCartProductService shoppingCartProductService;
+
+ public Map<MapDataType, Object> GetList(ShoppingCartQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ ShoppingCartExample example = new ShoppingCartExample();
+ ShoppingCartExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andVipnameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getVipuserid() != null && !queryObject.getVipuserid().isEmpty()) {
+ criteria.andVipuseridEqualTo(queryObject.getVipuserid());
+ }
+ if (queryObject.getVipphone() != null && !queryObject.getVipphone().isEmpty()) {
+ criteria.andVipphoneLike("%" + queryObject.getVipphone() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<ShoppingCart> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public Map<MapDataType, Object> GetExtendList(ShoppingCartQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ ShoppingCartExample example = new ShoppingCartExample();
+ ShoppingCartExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andVipnameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getVipuserid() != null && !queryObject.getVipuserid().isEmpty()) {
+ criteria.andVipuseridEqualTo(queryObject.getVipuserid());
+ }
+ if (queryObject.getVipphone() != null && !queryObject.getVipphone().isEmpty()) {
+ criteria.andVipphoneLike("%" + queryObject.getVipphone() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<ShoppingCartExtend> list = mapper.selectShoppingCartExtendByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public ShoppingCart GetDetail(ShoppingCartQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<ShoppingCart> list = (List<ShoppingCart>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ public ShoppingCartExtend GetExtendDetail(ShoppingCartQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetExtendList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<ShoppingCartExtend> list = (List<ShoppingCartExtend>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(ShoppingCartViewModel model) {
+ ShoppingCart entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData CreateWithProducts(ShoppingCartViewModel model) {
+ ShoppingCart entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ List<ShoppingCartProductViewModel> productViewModels = model.getProducts();
+ if (productViewModels != null && productViewModels.size() > 0) {
+ for (ShoppingCartProductViewModel productViewModel : productViewModels) {
+ productViewModel.setCartid(entity.getId());
+ productViewModel.setCartcode(entity.getCode());
+ }
+ }
+
+ ApiData productResult = shoppingCartProductService.BatchCreate(model.getProducts());
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(ShoppingCartViewModel model) {
+ ShoppingCart entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData UpdateWithProducts(ShoppingCartViewModel model) {
+ ShoppingCart entity = Check(ActionType.UPDATE, model);
+
+ //清楚旧产品数据
+ ShoppingCartProductQueryObject queryObject = new ShoppingCartProductQueryObject();
+ queryObject.setCartid(model.getId());
+ shoppingCartProductService.BatchDelete(queryObject);
+
+ if (entity != null) {
+ List<ShoppingCartProductViewModel> productViewModels = model.getProducts();
+ if (productViewModels != null && productViewModels.size() > 0) {
+ for (ShoppingCartProductViewModel productViewModel : productViewModels) {
+ productViewModel.setCartid(entity.getId());
+ productViewModel.setCartcode(entity.getCode());
+ }
+ }
+
+ ApiData productResult = shoppingCartProductService.BatchCreate(model.getProducts());
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @Transactional
+ public ApiData Save(ShoppingCartViewModel model) {
+ ShoppingCartQueryObject queryObject = new ShoppingCartQueryObject();
+ queryObject.setVipuserid(model.getVipuserid());
+
+ ShoppingCart entity = GetDetail(queryObject);
+ if (entity == null) {
+ return CreateWithProducts(model);
+ }
+
+ return shoppingCartProductService.BatchCreate(model.getProducts());
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(ShoppingCartQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<ShoppingCart> list = (List<ShoppingCart>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public ShoppingCartViewModel GetViewDetail(ShoppingCartQueryObject queryObject) {
+ ShoppingCart entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(ShoppingCartQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<ShoppingCart> list = (List<ShoppingCart>) map.get(MapDataType.DATA_LIST);
+
+ List<ShoppingCartViewModel> viewModels = new ArrayList<>();
+ for (ShoppingCart entity : list) {
+ ShoppingCartViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ @Cacheable
+ public ShoppingCartViewModel GetExtendViewDetail(ShoppingCartQueryObject queryObject) {
+ ShoppingCartExtend entity = GetExtendDetail(queryObject);
+
+ return BuildExtendViewModel(entity);
+ }
+
+ @Cacheable
+ public ShoppingCartViewModel GetExtendViewDetailById(String id) {
+ ShoppingCartQueryObject queryObject = new ShoppingCartQueryObject();
+ queryObject.setId(id);
+ ShoppingCartExtend entity = GetExtendDetail(queryObject);
+
+ return BuildExtendViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetExtendViewPageList(ShoppingCartQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetExtendList(queryObject);
+ List<ShoppingCartExtend> list = (List<ShoppingCartExtend>) map.get(MapDataType.DATA_LIST);
+
+ List<ShoppingCartViewModel> viewModels = new ArrayList<>();
+ for (ShoppingCartExtend entity : list) {
+ ShoppingCartViewModel viewModel = BuildExtendViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static ShoppingCartViewModel BuildViewModel(ShoppingCart entity) {
+ if (entity == null)
+ return null;
+
+ ShoppingCartViewModel model = new ShoppingCartViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setCode(entity.getCode());
+ model.setVipuserid(entity.getVipuserid());
+ model.setVipname(entity.getVipname());
+ model.setVipphone(entity.getVipphone());
+ model.setViptype(entity.getViptype());
+ model.setVipdiamondtype(entity.getVipdiamondtype());
+ model.setVippicture(entity.getVippicture());
+ model.setVipcarddiscountrate(entity.getVipcarddiscountrate());
+ model.setRemark(entity.getRemark());
+
+ return model;
+ }
+
+ private static ShoppingCartViewModel BuildExtendViewModel(ShoppingCartExtend entity) {
+ if (entity == null)
+ return null;
+
+ ShoppingCartViewModel model = BuildViewModel(entity);
+
+ List<ShoppingCartProductViewModel> products = new ArrayList<>();
+ for (ShoppingCartProduct product : entity.getProducts()) {
+ ShoppingCartProductViewModel productViewModel = ShoppingCartProductService.BuildViewModel(product);
+
+ products.add(productViewModel);
+ }
+ model.setProducts(products);
+
+ return model;
+ }
+
+ public ShoppingCart Check(ActionType actionType, ShoppingCartViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ ShoppingCart entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new ShoppingCart();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ ShoppingCartQueryObject queryObject = new ShoppingCartQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setVipuserid(model.getVipuserid());
+ entity.setVipname(model.getVipname());
+ entity.setVipphone(model.getVipphone());
+ entity.setViptype(model.getViptype());
+ entity.setVipdiamondtype(model.getVipdiamondtype());
+ entity.setVippicture(model.getVippicture());
+ entity.setVipcarddiscountrate(model.getVipcarddiscountrate());
+ entity.setRemark(model.getRemark());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "C";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%07d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ ShoppingCartExample example = new ShoppingCartExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<ShoppingCart> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ ShoppingCart entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/DashboardService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/DashboardService.java
new file mode 100644
index 0000000..5e3db0b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/DashboardService.java
@@ -0,0 +1,38 @@
+package com.farriver.bwf.service.statistics;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.utilities.DateUtil;
+import com.farriver.bwf.data.transferobject.queryobject.statistics.DashboardDataQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.statistics.DashboardDataViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+import java.util.Date;
+
+@Service
+@CacheConfig(cacheNames = "bwf_Dashboard_cache")
+public class DashboardService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(DashboardService.class);
+
+ private String message;
+
+ @Cacheable
+ public ApiData GetDashboardDatas(DashboardDataQueryObject queryObject) {
+ DashboardDataViewModel data = new DashboardDataViewModel();
+
+ //Date duration.
+ int year = queryObject.getYear();
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(year, 1, 1);
+
+ Date yeardatefrom = DateUtil.getYearDuration(calendar.getTime()).get("from");
+ Date yeardateto = DateUtil.getYearDuration(calendar.getTime()).get("to");
+
+ return ApiData.ok("", data);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/StatisticsDashboardService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/StatisticsDashboardService.java
new file mode 100644
index 0000000..103de19
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/statistics/StatisticsDashboardService.java
@@ -0,0 +1,21 @@
+package com.farriver.bwf.service.statistics;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.statistics.StatisticsDashboardDataQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.statistics.DashboardDataViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+@Service
+public class StatisticsDashboardService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(StatisticsDashboardService.class);
+
+ public ApiData GetDashboardData(StatisticsDashboardDataQueryObject queryObject) {
+ DashboardDataViewModel data = new DashboardDataViewModel();
+
+ return ApiData.error(LangConstants.MSG_INFO_SUCCESS, data);
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAliyunSMSService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAliyunSMSService.java
new file mode 100644
index 0000000..1f2fa38
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAliyunSMSService.java
@@ -0,0 +1,103 @@
+package com.farriver.bwf.service.system;
+
+import com.aliyun.dysmsapi20170525.models.*;
+import com.aliyun.teaopenapi.models.Config;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Service;
+
+import java.util.Random;
+
+@Service
+@Configuration
+@ConfigurationProperties("sms")
+public class SystemAliyunSMSService {
+ private static final Logger logger = LoggerFactory.getLogger(SystemAliyunSMSService.class);
+
+ private String accessKeyId = "LTAI5tMF7AFYuMpC2piqp37y";
+ private String accessKeySecret = "1VzzREEmzMf6qdOykJdZ6v9riZpNvx";
+ private String product = "Dysmsapi";
+ private String domain = "dysmsapi.aliyuncs.com";
+ private String signName = "远江智工";
+ private String templateCode = "SMS_232495027";
+
+ public static String getRandomCode() {
+ int n = 6;
+ StringBuilder code = new StringBuilder();
+ Random ran = new Random();
+ for (int i = 0; i < n; i++) {
+ code.append(Integer.valueOf(ran.nextInt(10)).toString());
+ }
+ return code.toString();
+ }
+
+ public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
+ Config config = new Config();
+ config.accessKeyId = accessKeyId;
+ config.accessKeySecret = accessKeySecret;
+ return new com.aliyun.dysmsapi20170525.Client(config);
+ }
+
+ public void sendSms(String phoneNumbers, String randomCode) throws Exception {
+ com.aliyun.dysmsapi20170525.Client client = createClient(accessKeyId, accessKeySecret);
+
+ String message = "{'code':" + randomCode + "}";
+
+ // 1.发送短信
+ SendSmsRequest sendReq = new SendSmsRequest()
+ .setPhoneNumbers(phoneNumbers)
+ .setSignName(signName)
+ .setTemplateCode(templateCode)
+ .setTemplateParam(message);
+ SendSmsResponse sendResp = client.sendSms(sendReq);
+ String code = sendResp.body.code;
+ if (!com.aliyun.teautil.Common.equalString(code, "OK")) {
+ logger.error("错误信息: " + sendResp.body.message + "");
+ return;
+ }
+
+ String bizId = sendResp.body.bizId;
+ // 2. 等待 10 秒后查询结果
+ com.aliyun.teautil.Common.sleep(10000);
+
+ // 3.查询结果
+ java.util.List<String> phoneNums = com.aliyun.darabonbastring.Client.split(phoneNumbers, ",", -1);
+ for (String phoneNum : phoneNums) {
+ QuerySendDetailsRequest queryReq = new QuerySendDetailsRequest()
+ .setPhoneNumber(com.aliyun.teautil.Common.assertAsString(phoneNum))
+ .setBizId(bizId)
+ .setSendDate(com.aliyun.darabonbatime.Client.format("yyyyMMdd"))
+ .setPageSize(10L)
+ .setCurrentPage(1L);
+
+ QuerySendDetailsResponse queryResp = client.querySendDetails(queryReq);
+
+ java.util.List<QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO> dtos =
+ queryResp.body.smsSendDetailDTOs.smsSendDetailDTO;
+
+ // 打印结果
+ for (QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO dto : dtos) {
+ if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "3")) {
+ logger.info("" + dto.phoneNum + " 发送成功,接收时间: " + dto.receiveDate + "");
+ } else if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "2")) {
+ logger.error("" + dto.phoneNum + " 发送失败");
+ } else {
+ logger.error("" + dto.phoneNum + " 正在发送中...");
+ }
+ }
+ }
+ }
+
+ public static void main(String[] args) {
+ try {
+ SystemAliyunSMSService SystemAliyunSMSService = new SystemAliyunSMSService();
+ SystemAliyunSMSService.sendSms("18222052509", SystemAliyunSMSService.getRandomCode());
+
+ logger.info("Completed!");
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAuditTrailService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAuditTrailService.java
new file mode 100644
index 0000000..55da789
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemAuditTrailService.java
@@ -0,0 +1,424 @@
+package com.farriver.bwf.service.system;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.DateTimeUtils;
+import com.farriver.bwf.data.master.mapper.SystemAuditTrailMapper;
+import com.farriver.bwf.data.master.model.SystemAuditTrail;
+import com.farriver.bwf.data.master.model.SystemAuditTrailExample;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemAuditTrailQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemAuditTrailViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import org.apache.poi.hpsf.DocumentSummaryInformation;
+import org.apache.poi.hpsf.SummaryInformation;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.io.ByteArrayOutputStream;
+import java.util.*;
+
+@Service
+public class SystemAuditTrailService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SystemAuditTrailService.class);
+
+ private String message;
+
+ @Resource
+ SystemAuditTrailMapper systemAuditTrailMapper;
+
+ public Map<MapDataType, Object> GetList(SystemAuditTrailQueryObject queryObject) {
+ if (queryObject == null) ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ SystemAuditTrailExample example = new SystemAuditTrailExample();
+ SystemAuditTrailExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andModuleLike("%" + queryObject.getFilter() + "%");
+
+ SystemAuditTrailExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andMessageLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getMessage() != null && !queryObject.getMessage().isEmpty()) {
+ criteria.andMessageLike("%" + queryObject.getMessage() + "%");
+ }
+ if (queryObject.getActionby() != null && !queryObject.getActionby().isEmpty()) {
+ criteria.andActionbyLike("%" + queryObject.getActionby() + "%");
+ }
+ if (queryObject.getActiontype() != null && !queryObject.getActiontype().isEmpty()) {
+ criteria.andActiontypeLike("%" + queryObject.getActiontype() + "%");
+ }
+ if (queryObject.getActionip() != null && !queryObject.getActionip().isEmpty()) {
+ criteria.andActionipLike("%" + queryObject.getActionip() + "%");
+ }
+ if (queryObject.getModule() != null && !queryObject.getModule().isEmpty()) {
+ criteria.andModuleLike("%" + queryObject.getModule() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andActiontimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = systemAuditTrailMapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("actiontime desc");
+
+ List<SystemAuditTrail> list = systemAuditTrailMapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public SystemAuditTrail GetDetail(SystemAuditTrailQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<SystemAuditTrail> list = (List<SystemAuditTrail>) object;
+ if (list != null && list.size() == 1) return list.get(0);
+ }
+
+ return null;
+ }
+
+ public ApiData Create(SystemAuditTrailViewModel model) {
+ SystemAuditTrail entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemAuditTrailMapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public ApiData Update(SystemAuditTrailViewModel model) {
+ SystemAuditTrail entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemAuditTrailMapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public ApiData Delete(String id) {
+ return ApiData.ok("", systemAuditTrailMapper.deleteByPrimaryKey(id));
+ }
+
+ public ApiData BatchDelete(SystemAuditTrailQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<SystemAuditTrail> list = (List<SystemAuditTrail>) object;
+ if (list != null && list.size() > 0) {
+ List<String> ids = list.stream().map(SystemAuditTrail::getId).toList();
+
+ SystemAuditTrailExample example = new SystemAuditTrailExample();
+ SystemAuditTrailExample.Criteria criteria = example.createCriteria();
+ criteria.andIdIn(ids);
+
+ count += systemAuditTrailMapper.deleteByExample(example);
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ public SystemAuditTrailViewModel GetViewDetail(SystemAuditTrailQueryObject queryObject) {
+ SystemAuditTrail entity = GetDetail(queryObject);
+
+ if (entity == null) {
+ return null;
+ }
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetViewPageList(SystemAuditTrailQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemAuditTrail> list = (List<SystemAuditTrail>) map.get(MapDataType.DATA_LIST);
+
+ List<SystemAuditTrailViewModel> viewModels = new ArrayList<>();
+ for (SystemAuditTrail entity : list) {
+ SystemAuditTrailViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public ResponseEntity<byte[]> ExportData(SystemAuditTrailQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemAuditTrail> list = (List<SystemAuditTrail>) map.get(MapDataType.DATA_LIST);
+
+ //1. 创建一个 Excel 文档
+ HSSFWorkbook workbook = new HSSFWorkbook();
+// 2. 创建文档摘要
+ workbook.createInformationProperties();
+// 3. 获取并配置文档信息
+ DocumentSummaryInformation docInfo = workbook.getDocumentSummaryInformation();
+ //文档类别
+ docInfo.setCategory("");
+ //文档管理员
+ docInfo.setManager("");
+ //设置公司信息
+ docInfo.setCompany("");
+// 4. 获取文档摘要信息
+ SummaryInformation summInfo = workbook.getSummaryInformation();
+ //文档标题
+ summInfo.setTitle("");
+ //文档作者
+ summInfo.setAuthor("");
+ // 文档备注
+ summInfo.setComments("");
+ //5. 创建样式
+ HSSFSheet sheet = workbook.createSheet("Sheet1");
+
+ //设置列的宽度
+
+ HSSFCellStyle cellStyle = workbook.createCellStyle();
+ cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
+ cellStyle.setAlignment(HorizontalAlignment.LEFT);
+ cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+
+ sheet.setColumnWidth(0, 20 * 256);
+ sheet.setDefaultColumnStyle(0, cellStyle);
+
+ sheet.setColumnWidth(1, 16 * 256);
+ sheet.setDefaultColumnStyle(1, cellStyle);
+
+ sheet.setColumnWidth(2, 16 * 256);
+ sheet.setDefaultColumnStyle(2, cellStyle);
+
+ sheet.setColumnWidth(3, 16 * 256);
+ sheet.setDefaultColumnStyle(3, cellStyle);
+
+ sheet.setColumnWidth(4, 16 * 256);
+ sheet.setDefaultColumnStyle(4, cellStyle);
+
+ sheet.setColumnWidth(5, 32 * 256);
+ sheet.setDefaultColumnStyle(5, cellStyle);
+
+ sheet.setColumnWidth(6, 100 * 256);
+ sheet.setColumnWidth(7, 100 * 256);
+
+ HSSFCellStyle textCellStyle = workbook.createCellStyle();
+ textCellStyle.setAlignment(HorizontalAlignment.LEFT);
+ textCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+ textCellStyle.setWrapText(true);
+
+ sheet.setDefaultColumnStyle(6, textCellStyle);
+ sheet.setDefaultColumnStyle(7, textCellStyle);
+
+ //6. 创建标题行
+ //创建标题行的样式
+ HSSFCellStyle headerStyle = workbook.createCellStyle();
+ headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index);
+ headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ headerStyle.setAlignment(HorizontalAlignment.LEFT);
+ headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+ headerStyle.setBorderTop(BorderStyle.THIN);
+ headerStyle.setBorderBottom(BorderStyle.THIN);
+ headerStyle.setBorderLeft(BorderStyle.THIN);
+
+ Short headRowheight = 500;
+ HSSFRow r0 = sheet.createRow(0);
+ r0.setHeight(headRowheight);
+
+ HSSFCell c0 = r0.createCell(0);
+ c0.setCellValue("操作时间");
+ c0.setCellStyle(headerStyle);
+
+ HSSFCell c1 = r0.createCell(1);
+ c1.setCellStyle(headerStyle);
+ c1.setCellValue("系统模块");
+
+ HSSFCell c2 = r0.createCell(2);
+ c2.setCellStyle(headerStyle);
+ c2.setCellValue("操作类型");
+
+ HSSFCell c3 = r0.createCell(3);
+ c3.setCellStyle(headerStyle);
+ c3.setCellValue("操作人");
+
+ HSSFCell c4 = r0.createCell(4);
+ c4.setCellStyle(headerStyle);
+ c4.setCellValue("登录IP");
+
+ HSSFCell c5 = r0.createCell(5);
+ c5.setCellStyle(headerStyle);
+ c5.setCellValue("操作信息");
+
+ HSSFCell c6 = r0.createCell(6);
+ c6.setCellStyle(headerStyle);
+ c6.setCellValue("修改前数据");
+
+ HSSFCell c7 = r0.createCell(7);
+ c7.setCellStyle(headerStyle);
+ c7.setCellValue("修改后数据");
+
+ for (int i = 0; i < list.size(); i++) {
+ SystemAuditTrail entity = list.get(i);
+ HSSFRow row = sheet.createRow(i + 1);
+ row.createCell(0).setCellValue(DateTimeUtils.dateToString(entity.getActiontime(), "yyyy/MM/dd HH:mm:ss"));
+ row.createCell(1).setCellValue(entity.getModule());
+ row.createCell(2).setCellValue(entity.getActiontype());
+ row.createCell(3).setCellValue(entity.getActionby());
+ row.createCell(4).setCellValue(entity.getActionip());
+ row.createCell(5).setCellValue(entity.getMessage());
+ row.createCell(6).setCellValue(entity.getBeforetarget());
+ row.createCell(7).setCellValue(entity.getAftertarget());
+ }
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ HttpHeaders headers = new HttpHeaders();
+
+ try {
+ headers.setContentDispositionFormData("attachment", new String((UUID.randomUUID().toString() + ".xls").getBytes("UTF-8"), "ISO-8859-1"));
+ headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+ workbook.write(baos);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+
+ return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED);
+ }
+
+ private SystemAuditTrailViewModel monitorModel;
+
+ public SystemAuditTrailViewModel getMonitorModel() {
+ return monitorModel;
+ }
+
+ public void setMonitorModel(SystemAuditTrailViewModel monitorModel) {
+ this.monitorModel = monitorModel;
+ }
+
+ public void BeginMonitor(String message, String module, ActionType actionType, Object orgianl) {
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ if (requestAttributes == null) return;
+
+ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+
+ var user = GetSessionAccount();
+
+ this.monitorModel = new SystemAuditTrailViewModel();
+ if (user != null) this.monitorModel.setActionby(String.format("%s(%s)", user.getName(), user.getCode()));
+
+ this.monitorModel.setMessage(message);
+ this.monitorModel.setModule(module);
+ this.monitorModel.setActionip(request.getRemoteAddr());
+ this.monitorModel.setActiontime(new Date());
+ this.monitorModel.setActiontype(actionType.toString());
+
+ if (orgianl != null) this.monitorModel.setBeforetarget(JSON.toJSONString(orgianl));
+ }
+
+ public void EndMonitor(Object latest) {
+ if (latest != null && this.monitorModel.getActiontype().equals(ActionType.UPDATE.toString()))
+ this.monitorModel.setAftertarget(JSON.toJSONString(latest));
+
+ Create(this.monitorModel);
+ this.monitorModel = null;
+ }
+
+ //private methods
+ private static SystemAuditTrailViewModel BuildViewModel(SystemAuditTrail entity) {
+ if (entity == null) return null;
+
+ SystemAuditTrailViewModel model = new SystemAuditTrailViewModel();
+
+ model.setId(entity.getId());
+ model.setMessage(entity.getMessage());
+ model.setActionby(entity.getActionby());
+ model.setActiontype(entity.getActiontype());
+ model.setActionip(entity.getActionip());
+ model.setActiontime(entity.getActiontime());
+ model.setModule(entity.getModule());
+ model.setBeforetarget(entity.getBeforetarget());
+ model.setAftertarget(entity.getAftertarget());
+
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ return model;
+ }
+
+ public SystemAuditTrail Check(ActionType actionType, SystemAuditTrailViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ SystemAuditTrail entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new SystemAuditTrail();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setActiontime(new Date());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ SystemAuditTrailQueryObject queryObject = new SystemAuditTrailQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setMessage(model.getMessage());
+ entity.setActionby(model.getActionby());
+ entity.setActiontype(model.getActiontype());
+ entity.setActionip(model.getActionip());
+ entity.setModule(model.getModule());
+ entity.setRemark(model.getRemark());
+ entity.setBeforetarget(model.getBeforetarget());
+ entity.setAftertarget(model.getAftertarget());
+
+ return entity;
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemConfigService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemConfigService.java
new file mode 100644
index 0000000..7f56c25
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemConfigService.java
@@ -0,0 +1,253 @@
+package com.farriver.bwf.service.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.SystemConfigMapper;
+import com.farriver.bwf.data.master.model.SystemConfig;
+import com.farriver.bwf.data.master.model.SystemConfigExample;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemConfigQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemConfigViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "erp_SystemConfigMapper_cache")
+public class SystemConfigService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SystemConfigService.class);
+
+ @Resource
+ SystemConfigMapper systemConfigMapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(SystemConfigQueryObject queryObject) {
+ if (queryObject == null) ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ SystemConfigExample example = new SystemConfigExample();
+ SystemConfigExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getKey() != null && !queryObject.getKey().isEmpty()) {
+ criteria.andCkeyLike("%" + queryObject.getKey() + "%");
+ }
+ if (queryObject.getValue() != null && !queryObject.getValue().isEmpty()) {
+ criteria.andCvalueLike("%" + queryObject.getValue() + "%");
+ }
+ if (queryObject.getLevel() != null && !queryObject.getLevel().isEmpty()) {
+ criteria.andClevelLike("%" + queryObject.getLevel() + "%");
+ }
+ if (queryObject.getCategory() != null && !queryObject.getCategory().isEmpty()) {
+ criteria.andCategoryLike("%" + queryObject.getCategory() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+
+ //查询总数
+ long total = systemConfigMapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+
+ List<SystemConfig> list = systemConfigMapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public SystemConfig GetDetail(SystemConfigQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<SystemConfig> list = (List<SystemConfig>) object;
+ if (list != null && list.size() == 1) return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(SystemConfigViewModel model) {
+ SystemConfig entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+
+ int result = systemConfigMapper.insertSelective(entity);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, entity);
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(SystemConfigViewModel model) {
+ SystemConfig entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemConfigMapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", systemConfigMapper.deleteByPrimaryKey(id));
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(SystemConfigQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<SystemConfig> list = (List<SystemConfig>) object;
+ if (list != null && list.size() > 0) {
+ List<String> ids = list.stream().map(SystemConfig::getId).toList();
+
+ SystemConfigExample example = new SystemConfigExample();
+ SystemConfigExample.Criteria criteria = example.createCriteria();
+ criteria.andIdIn(ids);
+
+ count += systemConfigMapper.deleteByExample(example);
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public SystemConfigViewModel GetViewDetail(SystemConfigQueryObject queryObject) {
+ SystemConfig entity = GetDetail(queryObject);
+
+ if (entity == null) {
+ return null;
+ }
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(SystemConfigQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemConfig> list = (List<SystemConfig>) map.get(MapDataType.DATA_LIST);
+
+ List<SystemConfigViewModel> viewModels = new ArrayList<>();
+ for (SystemConfig entity : list) {
+ SystemConfigViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public String GetOrCreateSystemConfig(String key) {
+ var data = GetViewPageList(new SystemConfigQueryObject());
+ if (data != null && data.getData() != null) {
+ var list = (List<SystemConfigViewModel>) data.getData();
+ if (list != null && !list.isEmpty()) {
+ var model = list.stream().filter(e -> key.equals(e.getKey())).findFirst();
+ if (model.isPresent()) {
+ return model.get().getValue();
+ }
+ }
+ }
+
+ return null;
+ }
+
+ //private methods
+ private static SystemConfigViewModel BuildViewModel(SystemConfig entity) {
+ if (entity == null) return null;
+
+ SystemConfigViewModel model = new SystemConfigViewModel();
+
+ model.setId(entity.getId());
+ model.setKey(entity.getCkey());
+ model.setValue(entity.getCvalue());
+ model.setLevel(entity.getClevel());
+ model.setCategory(entity.getCategory());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ return model;
+ }
+
+ public SystemConfig Check(ActionType actionType, SystemConfigViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ SystemConfig entity = null;
+ if (ActionType.CREATE == actionType) {
+ if (model.getKey() != null && !model.getKey().isEmpty()) {
+ var queryObject2 = new SystemConfigQueryObject();
+ queryObject2.setKey(model.getKey());
+
+ var map2 = GetList(queryObject2);
+ var object2 = map2.get(MapDataType.DATA_LIST);
+
+ if (object2 != null) {
+ var list = (List<SystemConfig>) object2;
+ if (list != null && list.size() > 0) {
+ message = LangConstants.MSG_ERROR_CODE_EXISTED;
+ return null;
+ }
+ }
+ }
+
+ entity = new SystemConfig();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ SystemConfigQueryObject queryObject = new SystemConfigQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setCkey(model.getKey());
+ entity.setCvalue(model.getValue());
+ entity.setClevel(model.getLevel());
+ entity.setCategory(model.getCategory());
+ entity.setRemark(model.getRemark());
+
+ return entity;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemLogService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemLogService.java
new file mode 100644
index 0000000..30cf363
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemLogService.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.service.system;
+
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.utilities.DateTimeUtils;
+import com.farriver.bwf.common.utilities.FileUtil;
+import com.farriver.bwf.common.utilities.ListUtils;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemLogQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemLogViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class SystemLogService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SystemLogService.class);
+
+ @Value("${log.path}")
+ public String logPath;
+
+ @Value("${log.alias}")
+ public String logAlias;
+
+ public ApiPageData GetViewPageList(SystemLogQueryObject queryObject) {
+ String folder = logPath;
+ List<File> logfiles = FileUtil.getFiles(folder);
+
+ List<SystemLogViewModel> viewModels = new ArrayList<>();
+
+ String[] modules = folder.split("/");
+ String module = modules[modules.length - 1];
+ for (File file : logfiles) {
+ SystemLogViewModel sytemLog = new SystemLogViewModel();
+ sytemLog.setId(UUID.randomUUID().toString());
+ sytemLog.setModule(module);
+ sytemLog.setSource("../../" + module + "/" + file.getName());
+
+ Date datetime = DateTimeUtils.parseDate(file.getName(), new SimpleDateFormat("yyyy-MM-dd-HH-mm"));
+ if (datetime != null) sytemLog.setActiontime(datetime);
+
+ viewModels.add(sytemLog);
+ }
+
+ //查询条件
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ viewModels = viewModels.stream().filter(e -> e.getActiontime().after(queryObject.getStartDateTime()) && e.getActiontime().before(queryObject.getEndDateTime())).collect(Collectors.toList());
+ }
+
+ Collections.sort(viewModels, (SystemLogViewModel o1, SystemLogViewModel o2) -> o2.getActiontime().compareTo(o1.getActiontime()));
+
+ //分页-内存
+ List<SystemLogViewModel> pagelist = ListUtils.pagination(viewModels, queryObject.getPageIndex(), queryObject.getPageSize());
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(pagelist);
+ bean.setTotal(viewModels.size());
+
+ return bean;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMailLogService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMailLogService.java
new file mode 100644
index 0000000..c951aa2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMailLogService.java
@@ -0,0 +1,226 @@
+package com.farriver.bwf.service.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.SystemMailLogMapper;
+import com.farriver.bwf.data.master.model.SystemMailLog;
+import com.farriver.bwf.data.master.model.SystemMailLogExample;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemMailLogQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMailLogViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class SystemMailLogService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SystemMailLogService.class);
+
+ @Resource
+ SystemMailLogMapper systemMailLogMapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(SystemMailLogQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ SystemMailLogExample example = new SystemMailLogExample();
+ SystemMailLogExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andExchangeLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getUid() != null && !queryObject.getUid().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getUid());
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getExchange() != null && !queryObject.getExchange().isEmpty()) {
+ criteria.andExchangeLike("%" + queryObject.getExchange() + "%");
+ }
+ if (queryObject.getCount() != null) {
+ criteria.andCountEqualTo(queryObject.getCount());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = systemMailLogMapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<SystemMailLog> list = systemMailLogMapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public SystemMailLog GetDetail(SystemMailLogQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<SystemMailLog> list = (List<SystemMailLog>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ public ApiData Create(SystemMailLogViewModel model) {
+ SystemMailLog entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemMailLogMapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public ApiData Update(SystemMailLog model) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemMailLogMapper.updateByPrimaryKeySelective(model));
+ }
+
+ public ApiData Update(SystemMailLogViewModel model) {
+ SystemMailLog entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemMailLogMapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public SystemMailLog Check(ActionType actionType, SystemMailLogViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ SystemMailLog entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new SystemMailLog();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ } else {
+ SystemMailLogQueryObject queryObject = new SystemMailLogQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setUid(model.getUid());
+ entity.setStatus(model.getStatus());
+ entity.setRoutekey(model.getRoutekey());
+ entity.setExchange(model.getExchange());
+ entity.setCount(model.getCount());
+ entity.setTrytime(model.getTrytime());
+ entity.setUsername(model.getUsername());
+ entity.setAccount(model.getAccount());
+
+
+ return entity;
+ }
+
+ public ApiData Delete(String id) {
+ return ApiData.ok("", systemMailLogMapper.deleteByPrimaryKey(id));
+ }
+
+ public ApiData BatchDelete(SystemMailLogQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<SystemMailLog> list = (List<SystemMailLog>) object;
+ if (list != null && list.size() > 0) {
+ List<String> ids = list.stream().map(SystemMailLog::getId).toList();
+
+ SystemMailLogExample example = new SystemMailLogExample();
+ SystemMailLogExample.Criteria criteria = example.createCriteria();
+ criteria.andIdIn(ids);
+
+ count += systemMailLogMapper.deleteByExample(example);
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ public SystemMailLogViewModel GetViewDetail(SystemMailLogQueryObject queryObject) {
+ SystemMailLog entity = GetDetail(queryObject);
+
+ if (entity == null) {
+ return null;
+ }
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetViewPageList(SystemMailLogQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemMailLog> list = (List<SystemMailLog>) map.get(MapDataType.DATA_LIST);
+
+ List<SystemMailLogViewModel> viewModels = new ArrayList<>();
+ for (SystemMailLog entity : list) {
+ SystemMailLogViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static SystemMailLogViewModel BuildViewModel(SystemMailLog entity) {
+ if (entity == null)
+ return null;
+
+ SystemMailLogViewModel model = new SystemMailLogViewModel();
+
+ model.setId(entity.getId());
+ model.setUid(entity.getUid());
+ model.setStatus(entity.getStatus());
+ model.setRoutekey(entity.getRoutekey());
+ model.setExchange(entity.getExchange());
+ model.setCount(entity.getCount());
+ model.setTrytime(entity.getTrytime());
+ model.setUsername(entity.getUsername());
+ model.setAccount(entity.getAccount());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ return model;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMenuService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMenuService.java
new file mode 100644
index 0000000..a82a16e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemMenuService.java
@@ -0,0 +1,416 @@
+package com.farriver.bwf.service.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.options.RoleOption;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.TreeBuilder;
+import com.farriver.bwf.common.utilities.TreeBuilderNode;
+import com.farriver.bwf.data.master.mapper.SystemMenuMapper;
+import com.farriver.bwf.data.master.model.SystemMenu;
+import com.farriver.bwf.data.master.model.SystemMenuExample;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemMenuQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PermissionMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMenuViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMenuWriteViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import com.farriver.bwf.service.extend.rbac.RBACService;
+import jakarta.annotation.Resource;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class SystemMenuService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SystemMenuService.class);
+
+ private String message;
+
+ @Resource
+ SystemMenuMapper systemMenuMapper;
+
+ @Resource
+ RBACService rbacService;
+
+ @Value("${applicationcode}")
+ private String applicationcode;
+
+ public Map<MapDataType, Object> GetList(SystemMenuQueryObject queryObject) {
+ if (queryObject == null) ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ SystemMenuExample example = new SystemMenuExample();
+ SystemMenuExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ SystemMenuExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getParentid() != null && !queryObject.getParentid().isEmpty()) {
+ criteria.andParentidEqualTo(queryObject.getParentid());
+ }
+ if (queryObject.getParentcode() != null && !queryObject.getParentcode().isEmpty()) {
+ criteria.andParentcodeLike("%" + queryObject.getParentcode() + "%");
+ }
+ if (queryObject.getParentname() != null && !queryObject.getParentname().isEmpty()) {
+ criteria.andParentnameLike("%" + queryObject.getParentname() + "%");
+ }
+ if (queryObject.getComponent() != null && !queryObject.getComponent().isEmpty()) {
+ criteria.andComponentLike("%" + queryObject.getComponent() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = systemMenuMapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ List<SystemMenu> list = systemMenuMapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public SystemMenu GetDetail(SystemMenuQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<SystemMenu> list = (List<SystemMenu>) object;
+ if (list != null && list.size() == 1) return list.get(0);
+ }
+
+ return null;
+ }
+
+ public ApiData Create(SystemMenuWriteViewModel model) {
+ SystemMenu entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ try {
+ PermissionMasterViewModel permissionViewModel = new PermissionMasterViewModel();
+
+ permissionViewModel.setId(model.getId());
+ permissionViewModel.setName(model.getName());
+ permissionViewModel.setApplicationcode(applicationcode);
+
+ if (model.getUrl() != null && model.getUrl().isEmpty()) {
+ String[] urlArray = model.getUrl().split(model.getComponent());
+ String url = urlArray[0];
+
+ PermissionMasterViewModel parent = rbacService.GetUriPermission(applicationcode, url);
+
+ if (parent != null) {
+ permissionViewModel.setParentid(parent.getId());
+ }
+ }
+
+ permissionViewModel.setRemark(model.getRemark());
+ permissionViewModel.setUrl(model.getUrl());
+ permissionViewModel.setType(0); //SystemMenu
+ permissionViewModel.setLevel(RoleOption.Other.ordinal()); //Other
+
+ rbacService.CreatePermission(permissionViewModel);
+ } catch (Exception exception) {
+ logger.warn(exception.getMessage());
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemMenuMapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public ApiData Update(SystemMenuWriteViewModel model) {
+ SystemMenu entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ try {
+ PermissionMasterViewModel permissionViewModel = new PermissionMasterViewModel();
+
+ permissionViewModel.setId(model.getId());
+ permissionViewModel.setName(model.getName());
+ permissionViewModel.setApplicationcode(applicationcode);
+
+ if (model.getUrl() != null && !model.getUrl().isEmpty()) {
+ String[] urlArray = model.getUrl().split(String.format("/%s", model.getComponent()));
+ String url = urlArray[0];
+
+ PermissionMasterViewModel parent = rbacService.GetUriPermission(applicationcode, url);
+
+ if (parent != null) {
+ permissionViewModel.setParentid(parent.getId());
+ }
+ }
+
+ permissionViewModel.setRemark(model.getRemark());
+ permissionViewModel.setUrl(model.getUrl());
+ permissionViewModel.setType(0); //SystemMenu
+ permissionViewModel.setLevel(RoleOption.Other.ordinal()); //Other
+
+ rbacService.CreatePermission(permissionViewModel);
+ } catch (Exception exception) {
+ logger.warn(exception.getMessage());
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemMenuMapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public ApiData Delete(String id) {
+ return ApiData.ok("", systemMenuMapper.deleteByPrimaryKey(id));
+ }
+
+ public ApiData BatchDelete(SystemMenuQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<SystemMenu> list = (List<SystemMenu>) object;
+ if (list != null && list.size() > 0) {
+ List<String> ids = list.stream().map(SystemMenu::getId).toList();
+
+ SystemMenuExample example = new SystemMenuExample();
+ SystemMenuExample.Criteria criteria = example.createCriteria();
+ criteria.andIdIn(ids);
+
+ count += systemMenuMapper.deleteByExample(example);
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ public SystemMenuViewModel GetViewDetail(SystemMenuQueryObject queryObject) {
+ SystemMenu entity = GetDetail(queryObject);
+
+ if (entity == null) {
+ return null;
+ }
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetViewPageList(SystemMenuQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemMenu> list = (List<SystemMenu>) map.get(MapDataType.DATA_LIST);
+
+ List<SystemMenuViewModel> viewModels = new ArrayList<>();
+ for (SystemMenu entity : list) {
+ SystemMenuViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public ApiPageData GetViewPageListWithChildren(SystemMenuQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemMenu> list = (List<SystemMenu>) map.get(MapDataType.DATA_LIST);
+ if (list == null || list.isEmpty()) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ list.sort(Comparator.comparing(SystemMenu::getType).thenComparing(SystemMenu::getName));
+
+ List<TreeBuilderNode> viewModels = new ArrayList<>();
+ for (SystemMenu entity : list) {
+ SystemMenuViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ viewModels = TreeBuilder.buildTreeFromNodes(viewModels);
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ public ApiData getTree() {
+ SystemMenuQueryObject queryObject = new SystemMenuQueryObject();
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemMenu> list = (List<SystemMenu>) map.get(MapDataType.DATA_LIST);
+ if (list == null || list.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ list.sort(Comparator.comparing(SystemMenu::getType).thenComparing(SystemMenu::getName));
+
+ List<TreeBuilderNode> viewModels = new ArrayList<>();
+ for (SystemMenu entity : list) {
+ SystemMenuViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ viewModels = TreeBuilder.buildTreeFromNodes(viewModels);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, viewModels);
+ }
+
+ //private methods
+ private static SystemMenuViewModel BuildViewModel(SystemMenu entity) {
+ if (entity == null) return null;
+
+ SystemMenuViewModel model = new SystemMenuViewModel();
+
+ model.setId(entity.getId());
+ model.setCreatetime(entity.getCreatetime());
+ model.setParentid(entity.getParentid());
+ model.setParentcode(entity.getParentcode());
+ model.setParentname(entity.getParentname());
+ model.setName(entity.getName());
+ model.setCode(entity.getCode());
+ model.setUrl(entity.getUrl());
+ model.setPath(entity.getPath());
+ model.setComponent(entity.getComponent());
+ model.setType(entity.getType());
+ model.setIcon(entity.getIcon());
+ model.setKeepalive(entity.getKeepalive());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setLanguagekey(entity.getLanguagekey());
+ model.setLevel(entity.getLevel());
+
+ return model;
+ }
+
+ public SystemMenu Check(ActionType actionType, SystemMenuWriteViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ SystemMenu entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new SystemMenu();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ SystemMenuQueryObject queryObject = new SystemMenuQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ if (entity == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setParentid(model.getParentid());
+ entity.setParentcode(model.getParentcode());
+ entity.setParentname(model.getParentname());
+ entity.setLanguagekey(model.getLanguagekey());
+ entity.setName(model.getName());
+ entity.setUrl(model.getUrl());
+ entity.setPath(model.getPath());
+ entity.setComponent(model.getComponent());
+ entity.setType(model.getType());
+ entity.setIcon(model.getIcon());
+ entity.setKeepalive(model.getKeepalive());
+ entity.setIsdeleted(model.getIsdeleted());
+ entity.setRemark(model.getRemark());
+ entity.setLevel(model.getLevel());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "M";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ logger.error(e.getMessage(), e);
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%03d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ SystemMenuExample example = new SystemMenuExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<SystemMenu> list = systemMenuMapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ SystemMenu entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemNotificationService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemNotificationService.java
new file mode 100644
index 0000000..61f0263
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemNotificationService.java
@@ -0,0 +1,254 @@
+package com.farriver.bwf.service.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.SystemNotificationMapper;
+import com.farriver.bwf.data.master.model.SystemNotification;
+import com.farriver.bwf.data.master.model.SystemNotificationExample;
+import com.farriver.bwf.data.transferobject.options.SystemNotificationStatusOptions;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemNotificationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemNotificationViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class SystemNotificationService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SystemNotificationService.class);
+
+ @Resource
+ SystemNotificationMapper systemNotificationMapper;
+
+ private String message;
+
+ public Map<MapDataType, Object> GetList(SystemNotificationQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ SystemNotificationExample example = new SystemNotificationExample();
+ SystemNotificationExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andTitleLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getTitle() != null && !queryObject.getTitle().isEmpty()) {
+ criteria.andTitleLike("%" + queryObject.getTitle() + "%");
+ }
+ if (queryObject.getKeywords() != null && !queryObject.getKeywords().isEmpty()) {
+ criteria.andKeywordsLike("%" + queryObject.getKeywords() + "%");
+ }
+ if (queryObject.getDepartment() != null && !queryObject.getDepartment().isEmpty()) {
+ criteria.andDepartmentLike("%" + queryObject.getDepartment() + "%");
+ }
+ if (queryObject.getCategory() != null && !queryObject.getCategory().isEmpty()) {
+ criteria.andCategoryLike("%" + queryObject.getCategory() + "%");
+ }
+ if (queryObject.getActionby() != null && !queryObject.getActionby().isEmpty()) {
+ criteria.andActionbyLike("%" + queryObject.getActionby() + "%");
+ }
+ if (queryObject.getPublisher() != null && !queryObject.getPublisher().isEmpty()) {
+ criteria.andPublisherLike("%" + queryObject.getPublisher() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = systemNotificationMapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<SystemNotification> list = systemNotificationMapper.selectByExampleWithBLOBs(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public SystemNotification GetDetail(SystemNotificationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<SystemNotification> list = (List<SystemNotification>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ public ApiData Create(SystemNotificationViewModel model) {
+ SystemNotification entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemNotificationMapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public ApiData Update(SystemNotificationViewModel model) {
+ SystemNotification entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, systemNotificationMapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public ApiData Delete(String id) {
+ return ApiData.ok("", systemNotificationMapper.deleteByPrimaryKey(id));
+ }
+
+ public ApiData BatchDelete(SystemNotificationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<SystemNotification> list = (List<SystemNotification>) object;
+ if (list != null && list.size() > 0) {
+ List<String> ids = list.stream().map(SystemNotification::getId).toList();
+
+ SystemNotificationExample example = new SystemNotificationExample();
+ SystemNotificationExample.Criteria criteria = example.createCriteria();
+ criteria.andIdIn(ids);
+
+ count += systemNotificationMapper.deleteByExample(example);
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ public SystemNotificationViewModel GetViewDetail(SystemNotificationQueryObject queryObject) {
+ SystemNotification entity = GetDetail(queryObject);
+
+ if (entity == null) {
+ return null;
+ }
+
+ return BuildViewModel(entity);
+ }
+
+ public ApiPageData GetViewPageList(SystemNotificationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<SystemNotification> list = (List<SystemNotification>) map.get(MapDataType.DATA_LIST);
+
+ List<SystemNotificationViewModel> viewModels = new ArrayList<>();
+ if (list != null && list.size() > 0) {
+ for (SystemNotification entity : list) {
+ SystemNotificationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static SystemNotificationViewModel BuildViewModel(SystemNotification entity) {
+ if (entity == null)
+ return null;
+
+ SystemNotificationViewModel model = new SystemNotificationViewModel();
+
+ model.setId(entity.getId());
+
+ model.setTitle(entity.getTitle());
+ model.setContext(entity.getContext());
+ model.setDepartment(entity.getDepartment());
+ model.setCategory(entity.getCategory());
+ model.setNlevel(entity.getNlevel());
+ model.setKeywords(entity.getKeywords());
+ model.setActionby(entity.getActionby());
+ model.setStatus(entity.getStatus());
+ model.setPublishdatetime(entity.getPublishdatetime());
+ model.setPublisher(entity.getPublisher());
+ model.setContext(entity.getContext());
+
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ return model;
+ }
+
+ public SystemNotification Check(ActionType actionType, SystemNotificationViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ SystemNotification entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new SystemNotification();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ entity.setStatus(SystemNotificationStatusOptions.Unpublished.ordinal());
+ } else {
+ SystemNotificationQueryObject queryObject = new SystemNotificationQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ entity.setIsdeleted(model.getIsdeleted());
+ entity.setStatus(model.getStatus());
+ if (model.getStatus() == 2) {
+ entity.setPublishdatetime(new Date());
+ }
+ }
+
+ entity.setTitle(model.getTitle());
+ entity.setContext(model.getContext());
+ entity.setDepartment(model.getDepartment());
+ entity.setCategory(model.getCategory());
+ entity.setNlevel(model.getNlevel());
+ entity.setKeywords(model.getKeywords());
+ entity.setActionby(model.getActionby());
+ entity.setPublishdatetime(model.getPublishdatetime());
+ entity.setPublisher(model.getPublisher());
+ entity.setContext(model.getContext());
+ entity.setRemark(model.getRemark());
+
+
+ return entity;
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemPrintService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemPrintService.java
new file mode 100644
index 0000000..8facd39
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/system/SystemPrintService.java
@@ -0,0 +1,44 @@
+package com.farriver.bwf.service.system;
+
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.print.*;
+import javax.print.attribute.DocAttributeSet;
+import javax.print.attribute.HashDocAttributeSet;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import java.io.FileInputStream;
+
+@Service
+public class SystemPrintService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(SystemPrintService.class);
+
+ public void Print(String filepath) {
+ try {
+
+ DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
+ PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
+ PrintService[] pservices = PrintServiceLookup.lookupPrintServices(flavor, aset);
+ PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
+ PrintService service = ServiceUI.printDialog(null, 200, 200, pservices, defaultService, flavor, aset);
+
+ if (service != null) {
+ DocPrintJob pj = service.createPrintJob();
+ FileInputStream fis = new FileInputStream(filepath);//("D:" + File.separator + "gocar.sql");// 打印D盘HELLO.txt文档。
+ DocAttributeSet das = new HashDocAttributeSet();
+ Doc doc = new SimpleDoc(fis, flavor, das);
+ pj.print(doc, aset);
+
+ } else {
+ logger.error(LangConstants.MSG_ERROR_PRINT);
+ }
+
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/task/VIPMasterPaperRelationCheckTask.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/task/VIPMasterPaperRelationCheckTask.java
new file mode 100644
index 0000000..4676898
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/task/VIPMasterPaperRelationCheckTask.java
@@ -0,0 +1,71 @@
+package com.farriver.bwf.service.task;
+
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.data.transferobject.options.VIPMasterPaperRelationStatusOptions;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterPaperRelationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterPaperRelationViewModel;
+import com.farriver.bwf.service.vip.VIPMasterPaperRelationService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import jakarta.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class VIPMasterPaperRelationCheckTask {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterPaperRelationCheckTask.class);
+
+ @Resource
+ VIPMasterPaperRelationService vipMasterPaperRelationService;
+
+ /*
+ 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
+ 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
+ 0 0 12 ? * WED 表示每个星期三中午12点
+ "0 0 12 * * ?" 每天中午12点触发
+ "0 15 10 ? * *" 每天上午10:15触发
+ "0 15 10 * * ?" 每天上午10:15触发
+ "0 15 10 * * ? *" 每天上午10:15触发
+ "0 15 10 * * ? 2005" 2005年的每天上午10:15触发
+ "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
+ "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
+ "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
+ "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
+ "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
+ "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
+ "0 15 10 15 * ?" 每月15日上午10:15触发
+ "0 15 10 L * ?" 每月最后一日的上午10:15触发
+ "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
+ "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
+ "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
+ */
+ @Scheduled(cron = "0/3600 * * * * ?")
+ public void VIPMasterPaperRelationCheckSchedule() {
+ try {
+ List<Integer> statuslist = new ArrayList<>();
+ statuslist.add(VIPMasterPaperRelationStatusOptions.VALID.ordinal());
+ statuslist.add(VIPMasterPaperRelationStatusOptions.LOCKED.ordinal());
+
+ VIPMasterPaperRelationQueryObject queryObject = new VIPMasterPaperRelationQueryObject();
+ queryObject.setStatuslist(statuslist);
+
+ ApiPageData apiPageData = vipMasterPaperRelationService.GetViewPageList(queryObject);
+ List<VIPMasterPaperRelationViewModel> viewModels = (List<VIPMasterPaperRelationViewModel>) apiPageData.getData();
+
+ if (viewModels == null && viewModels.size() <= 0) {
+ return;
+ }
+
+ for (VIPMasterPaperRelationViewModel relationViewModel : viewModels) {
+ relationViewModel.setStatus(VIPMasterPaperRelationStatusOptions.EXPIRED.ordinal());
+ }
+
+ vipMasterPaperRelationService.BatchUpdate(viewModels);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponActiveService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponActiveService.java
new file mode 100644
index 0000000..e500bdb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponActiveService.java
@@ -0,0 +1,315 @@
+package com.farriver.bwf.service.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.VIPCouponActiveMapper;
+import com.farriver.bwf.data.master.model.VIPCouponActive;
+import com.farriver.bwf.data.master.model.VIPCouponActiveExample;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPCouponActiveQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPCouponActiveViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_VIPCouponActive_cache")
+public class VIPCouponActiveService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPCouponActiveService.class);
+
+ private String message;
+
+ @Resource
+ VIPCouponActiveMapper mapper;
+
+ public Map<MapDataType, Object> GetList(VIPCouponActiveQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ VIPCouponActiveExample example = new VIPCouponActiveExample();
+ VIPCouponActiveExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getFilter() + "%");
+
+ VIPCouponActiveExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andActivitynameLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getActivityname() != null && !queryObject.getActivityname().isEmpty()) {
+ criteria.andActivitynameLike("%" + queryObject.getActivityname() + "%");
+ }
+ if (queryObject.getMasterid() != null && !queryObject.getMasterid().isEmpty()) {
+ criteria.andMasteridEqualTo(queryObject.getMasterid());
+ }
+ if (queryObject.getMastercode() != null && !queryObject.getMastercode().isEmpty()) {
+ criteria.andMastercodeLike("%" + queryObject.getMastercode() + "%");
+ }
+ if (queryObject.getMastername() != null && !queryObject.getMastername().isEmpty()) {
+ criteria.andMasternameLike("%" + queryObject.getMastername() + "%");
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<VIPCouponActive> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public VIPCouponActive GetDetail(VIPCouponActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<VIPCouponActive> list = (List<VIPCouponActive>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(VIPCouponActiveViewModel model) {
+ VIPCouponActive entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(VIPCouponActiveViewModel model) {
+ VIPCouponActive entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(VIPCouponActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<VIPCouponActive> list = (List<VIPCouponActive>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public VIPCouponActiveViewModel GetViewDetail(String id) {
+ VIPCouponActiveQueryObject queryObject = new VIPCouponActiveQueryObject();
+ queryObject.setId(id);
+
+ VIPCouponActive entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPCouponActiveViewModel GetViewDetail(VIPCouponActiveQueryObject queryObject) {
+ VIPCouponActive entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(VIPCouponActiveQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPCouponActive> list = (List<VIPCouponActive>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPCouponActiveViewModel> viewModels = new ArrayList<>();
+ for (VIPCouponActive entity : list) {
+ VIPCouponActiveViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static VIPCouponActiveViewModel BuildViewModel(VIPCouponActive entity) {
+ if (entity == null)
+ return null;
+
+ VIPCouponActiveViewModel model = new VIPCouponActiveViewModel();
+
+ model.setId(entity.getId());
+ model.setCode(entity.getCode());
+ model.setType(entity.getType());
+ model.setActivityname(entity.getActivityname());
+ model.setDistributioncondition(entity.getDistributioncondition());
+ model.setAmount(entity.getAmount());
+ model.setDiscount(entity.getDiscount());
+ model.setDiscountrate(entity.getDiscountrate());
+ model.setValiddatefrom(entity.getValiddatefrom());
+ model.setValiddateto(entity.getValiddateto());
+ model.setIssuingtime(entity.getIssuingtime());
+ model.setUsagetime(entity.getUsagetime());
+ model.setOrderno(entity.getOrderno());
+ model.setMasterid(entity.getMasterid());
+ model.setMastercode(entity.getMastercode());
+ model.setMastername(entity.getMastername());
+ model.setStatus(entity.getStatus());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setRemark(entity.getRemark());
+
+ return model;
+ }
+
+ public VIPCouponActive Check(ActionType actionType, VIPCouponActiveViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ VIPCouponActive entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new VIPCouponActive();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ VIPCouponActiveQueryObject queryObject = new VIPCouponActiveQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setType(model.getType());
+ entity.setActivityname(model.getActivityname());
+ entity.setDistributioncondition(model.getDistributioncondition());
+ entity.setAmount(model.getAmount());
+ entity.setDiscount(model.getDiscount());
+ entity.setDiscountrate(model.getDiscountrate());
+ entity.setValiddatefrom(model.getValiddatefrom());
+ entity.setValiddateto(model.getValiddateto());
+ entity.setIssuingtime(model.getIssuingtime());
+ entity.setUsagetime(model.getUsagetime());
+ entity.setOrderno(model.getOrderno());
+ entity.setMasterid(model.getMasterid());
+ entity.setMastercode(model.getMastercode());
+ entity.setMastername(model.getMastername());
+ entity.setStatus(model.getStatus());
+ entity.setRemark(model.getRemark());
+ entity.setIsdeleted(model.getIsdeleted());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "M";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%07d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ VIPCouponActiveExample example = new VIPCouponActiveExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<VIPCouponActive> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ VIPCouponActive entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponHistoryService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponHistoryService.java
new file mode 100644
index 0000000..28a45c5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPCouponHistoryService.java
@@ -0,0 +1,267 @@
+package com.farriver.bwf.service.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.VIPCouponHistoryMapper;
+import com.farriver.bwf.data.master.model.VIPCouponHistory;
+import com.farriver.bwf.data.master.model.VIPCouponHistoryExample;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPCouponHistoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPCouponHistoryViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_VIPCouponHistory_cache")
+public class VIPCouponHistoryService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPCouponHistoryService.class);
+
+ private String message;
+
+ @Resource
+ VIPCouponHistoryMapper mapper;
+
+ public Map<MapDataType, Object> GetList(VIPCouponHistoryQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ VIPCouponHistoryExample example = new VIPCouponHistoryExample();
+ VIPCouponHistoryExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getMasterid() != null && !queryObject.getMasterid().isEmpty()) {
+ criteria.andMasteridEqualTo(queryObject.getMasterid());
+ }
+ if (queryObject.getMastercode() != null && !queryObject.getMastercode().isEmpty()) {
+ criteria.andMastercodeLike("%" + queryObject.getMastercode() + "%");
+ }
+ if (queryObject.getMastername() != null && !queryObject.getMastername().isEmpty()) {
+ criteria.andMasternameLike("%" + queryObject.getMastername() + "%");
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getStartDateTime() != null && queryObject.getEndDateTime() != null) {
+ criteria.andCreatetimeBetween(queryObject.getStartDateTime(), queryObject.getEndDateTime());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<VIPCouponHistory> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public VIPCouponHistory GetDetail(VIPCouponHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<VIPCouponHistory> list = (List<VIPCouponHistory>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(VIPCouponHistoryViewModel model) {
+ VIPCouponHistory entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(VIPCouponHistoryViewModel model) {
+ VIPCouponHistory entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(VIPCouponHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<VIPCouponHistory> list = (List<VIPCouponHistory>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public VIPCouponHistoryViewModel GetViewDetail(String id) {
+ VIPCouponHistoryQueryObject queryObject = new VIPCouponHistoryQueryObject();
+ queryObject.setId(id);
+
+ VIPCouponHistory entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPCouponHistoryViewModel GetViewDetail(VIPCouponHistoryQueryObject queryObject) {
+ VIPCouponHistory entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(VIPCouponHistoryQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPCouponHistory> list = (List<VIPCouponHistory>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPCouponHistoryViewModel> viewModels = new ArrayList<>();
+ for (VIPCouponHistory entity : list) {
+ VIPCouponHistoryViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static VIPCouponHistoryViewModel BuildViewModel(VIPCouponHistory entity) {
+ if (entity == null)
+ return null;
+
+ VIPCouponHistoryViewModel model = new VIPCouponHistoryViewModel();
+
+ model.setId(entity.getId());
+ model.setCode(entity.getCode());
+ model.setType(entity.getType());
+ model.setActivityname(entity.getActivityname());
+ model.setDistributioncondition(entity.getDistributioncondition());
+ model.setAmount(entity.getAmount());
+ model.setDiscount(entity.getDiscount());
+ model.setDiscountrate(entity.getDiscountrate());
+ model.setDiscountrate(entity.getDiscountrate());
+ model.setValiddatefrom(entity.getValiddatefrom());
+ model.setValiddateto(entity.getValiddateto());
+ model.setIssuingtime(entity.getIssuingtime());
+ model.setUsagetime(entity.getUsagetime());
+ model.setOrderno(entity.getOrderno());
+ model.setMasterid(entity.getMasterid());
+ model.setMastercode(entity.getMastercode());
+ model.setMastername(entity.getMastername());
+ model.setStatus(entity.getStatus());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+ model.setRemark(entity.getRemark());
+
+ return model;
+ }
+
+ public VIPCouponHistory Check(ActionType actionType, VIPCouponHistoryViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ VIPCouponHistory entity = null;
+ if (ActionType.CREATE == actionType) {
+ VIPCouponHistoryQueryObject queryObject = new VIPCouponHistoryQueryObject();
+ queryObject.setCode(model.getCode());
+ entity = GetDetail(queryObject);
+ if (entity != null) {
+ message = LangConstants.MSG_ERROR_CELLPHONE_EXISTED;
+ return null;
+ }
+
+ entity = new VIPCouponHistory();
+ entity.setId(UUID.randomUUID().toString());
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ VIPCouponHistoryQueryObject queryObject = new VIPCouponHistoryQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setCode(model.getCode());
+ entity.setType(model.getType());
+ entity.setActivityname(model.getActivityname());
+ entity.setDistributioncondition(model.getDistributioncondition());
+ entity.setAmount(model.getAmount());
+ entity.setDiscount(model.getDiscount());
+ entity.setDiscountrate(model.getDiscountrate());
+ entity.setDiscountrate(model.getDiscountrate());
+ entity.setValiddatefrom(model.getValiddatefrom());
+ entity.setValiddateto(model.getValiddateto());
+ entity.setIssuingtime(model.getIssuingtime());
+ entity.setUsagetime(model.getUsagetime());
+ entity.setOrderno(model.getOrderno());
+ entity.setMasterid(model.getMasterid());
+ entity.setMastercode(model.getMastercode());
+ entity.setMastername(model.getMastername());
+ entity.setStatus(model.getStatus());
+ entity.setRemark(model.getRemark());
+ entity.setIsdeleted(model.getIsdeleted());
+
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPDepositActivityService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPDepositActivityService.java
new file mode 100644
index 0000000..38969ef
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPDepositActivityService.java
@@ -0,0 +1,298 @@
+package com.farriver.bwf.service.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.VIPDepositActivityMapper;
+import com.farriver.bwf.data.master.model.VIPDepositActivity;
+import com.farriver.bwf.data.master.model.VIPDepositActivityExample;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPDepositActivityQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPDepositActivityViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_VIPDepositActivity_cache")
+public class VIPDepositActivityService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPDepositActivityService.class);
+
+ private String message;
+
+ @Resource
+ VIPDepositActivityMapper mapper;
+
+ public Map<MapDataType, Object> GetList(VIPDepositActivityQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ VIPDepositActivityExample example = new VIPDepositActivityExample();
+ VIPDepositActivityExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getFilter() + "%");
+
+ VIPDepositActivityExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andNameLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getCode() != null && !queryObject.getCode().isEmpty()) {
+ criteria.andCodeLike("%" + queryObject.getCode() + "%");
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getDescription() != null && !queryObject.getDescription().isEmpty()) {
+ criteria.andDescriptionLike("%" + queryObject.getDescription() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<VIPDepositActivity> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public VIPDepositActivity GetDetail(VIPDepositActivityQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<VIPDepositActivity> list = (List<VIPDepositActivity>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(VIPDepositActivityViewModel model) {
+ VIPDepositActivity entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(VIPDepositActivityViewModel model) {
+ VIPDepositActivity entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(VIPDepositActivityQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<VIPDepositActivity> list = (List<VIPDepositActivity>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public VIPDepositActivityViewModel GetViewDetail(String id) {
+ VIPDepositActivityQueryObject queryObject = new VIPDepositActivityQueryObject();
+ queryObject.setId(id);
+
+ VIPDepositActivity entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPDepositActivityViewModel GetViewDetail(VIPDepositActivityQueryObject queryObject) {
+ VIPDepositActivity entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(VIPDepositActivityQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPDepositActivity> list = (List<VIPDepositActivity>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPDepositActivityViewModel> viewModels = new ArrayList<>();
+ for (VIPDepositActivity entity : list) {
+ VIPDepositActivityViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static VIPDepositActivityViewModel BuildViewModel(VIPDepositActivity entity) {
+ if (entity == null)
+ return null;
+
+ VIPDepositActivityViewModel model = new VIPDepositActivityViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setStatus(entity.getStatus());
+ model.setCode(entity.getCode());
+ model.setName(entity.getName());
+ model.setDescription(entity.getDescription());
+ model.setAmount(entity.getAmount());
+ model.setDiscount(entity.getDiscount());
+ model.setDiscountrate(entity.getDiscountrate());
+ model.setPresent(entity.getPresent());
+
+ return model;
+ }
+
+ public VIPDepositActivity Check(ActionType actionType, VIPDepositActivityViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ VIPDepositActivity entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new VIPDepositActivity();
+ if (model.getId() != null && !model.getId().isEmpty()) {
+ entity.setId(model.getId());
+ } else {
+ entity.setId(UUID.randomUUID().toString());
+ }
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ } else {
+ VIPDepositActivityQueryObject queryObject = new VIPDepositActivityQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setStatus(model.getStatus());
+ entity.setName(model.getName());
+ entity.setDescription(model.getDescription());
+ entity.setAmount(model.getAmount());
+ entity.setDiscount(model.getDiscount());
+ entity.setDiscountrate(model.getDiscountrate());
+ entity.setPresent(model.getPresent());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "V";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%07d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ VIPDepositActivityExample example = new VIPDepositActivityExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<VIPDepositActivity> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ VIPDepositActivity entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterOrganizationService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterOrganizationService.java
new file mode 100644
index 0000000..69400f1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterOrganizationService.java
@@ -0,0 +1,349 @@
+package com.farriver.bwf.service.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.VIPMasterOrganizationMapper;
+import com.farriver.bwf.data.master.model.VIPMasterOrganization;
+import com.farriver.bwf.data.master.model.VIPMasterOrganizationExample;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterOrganizationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterOrganizationViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_VIPMasterOrganization_cache")
+public class VIPMasterOrganizationService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterOrganizationService.class);
+
+ private String message;
+
+ @Resource
+ VIPMasterOrganizationMapper mapper;
+
+ public Map<MapDataType, Object> GetList(VIPMasterOrganizationQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ VIPMasterOrganizationExample example = new VIPMasterOrganizationExample();
+ VIPMasterOrganizationExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andMasternameLike("%" + queryObject.getFilter() + "%");
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+
+ if (queryObject.getMasterid() != null && !queryObject.getMasterid().isEmpty()) {
+ criteria.andMasteridEqualTo(queryObject.getMasterid());
+ }
+ if (queryObject.getMastercode() != null && !queryObject.getMastercode().isEmpty()) {
+ criteria.andMastercodeLike("%" + queryObject.getMastercode() + "%");
+ }
+ if (queryObject.getMastername() != null && !queryObject.getMastername().isEmpty()) {
+ criteria.andMasternameLike("%" + queryObject.getMastername() + "%");
+ }
+
+ if (queryObject.getOrganizationid() != null && !queryObject.getOrganizationid().isEmpty()) {
+ criteria.andOrganizationidEqualTo(queryObject.getOrganizationid());
+ }
+ if (queryObject.getOrganizationcode() != null && !queryObject.getOrganizationcode().isEmpty()) {
+ criteria.andOrganizationcodeLike("%" + queryObject.getOrganizationcode() + "%");
+ }
+ if (queryObject.getOrganizationname() != null && !queryObject.getOrganizationname().isEmpty()) {
+ criteria.andOrganizationnameLike("%" + queryObject.getOrganizationname() + "%");
+ }
+
+ if (queryObject.getDepartmentid() != null && !queryObject.getDepartmentid().isEmpty()) {
+ criteria.andDepartmentidEqualTo(queryObject.getDepartmentid());
+ }
+ if (queryObject.getDepartmentcode() != null && !queryObject.getDepartmentcode().isEmpty()) {
+ criteria.andDepartmentcodeLike("%" + queryObject.getDepartmentcode() + "%");
+ }
+ if (queryObject.getDepartmentname() != null && !queryObject.getDepartmentname().isEmpty()) {
+ criteria.andDepartmentnameLike("%" + queryObject.getDepartmentname() + "%");
+ }
+
+ if (queryObject.getMajorid() != null && !queryObject.getMajorid().isEmpty()) {
+ criteria.andMajoridEqualTo(queryObject.getMajorid());
+ }
+ if (queryObject.getMajorcode() != null && !queryObject.getMajorcode().isEmpty()) {
+ criteria.andMajorcodeLike("%" + queryObject.getMajorcode() + "%");
+ }
+ if (queryObject.getMajorname() != null && !queryObject.getMajorname().isEmpty()) {
+ criteria.andMajornameLike("%" + queryObject.getMajorname() + "%");
+ }
+
+ if (queryObject.getGradeid() != null && !queryObject.getGradeid().isEmpty()) {
+ criteria.andGradeidEqualTo(queryObject.getGradeid());
+ }
+ if (queryObject.getGradecode() != null && !queryObject.getGradecode().isEmpty()) {
+ criteria.andGradecodeLike("%" + queryObject.getGradecode() + "%");
+ }
+ if (queryObject.getGradename() != null && !queryObject.getGradename().isEmpty()) {
+ criteria.andGradenameLike("%" + queryObject.getGradename() + "%");
+ }
+
+ if (queryObject.getClassid() != null && !queryObject.getClassid().isEmpty()) {
+ criteria.andClassidEqualTo(queryObject.getClassid());
+ }
+ if (queryObject.getClasscode() != null && !queryObject.getClasscode().isEmpty()) {
+ criteria.andClasscodeLike("%" + queryObject.getClasscode() + "%");
+ }
+ if (queryObject.getClassname() != null && !queryObject.getClassname().isEmpty()) {
+ criteria.andClassnameLike("%" + queryObject.getClassname() + "%");
+ }
+
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<VIPMasterOrganization> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public VIPMasterOrganization GetDetail(VIPMasterOrganizationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<VIPMasterOrganization> list = (List<VIPMasterOrganization>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(VIPMasterOrganizationViewModel model) {
+ VIPMasterOrganization entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(VIPMasterOrganizationViewModel model) {
+ VIPMasterOrganization entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(VIPMasterOrganizationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<VIPMasterOrganization> list = (List<VIPMasterOrganization>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData SetVIPOrganization(VIPMasterOrganizationViewModel model) {
+ if (model == null || model.getMasterid().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ VIPMasterOrganizationQueryObject queryObject = new VIPMasterOrganizationQueryObject();
+ queryObject.setMasterid(model.getMasterid());
+
+ VIPMasterOrganization vipMasterOrganization = GetDetail(queryObject);
+ if (vipMasterOrganization != null) {
+ model.setId(vipMasterOrganization.getId());
+ if (vipMasterOrganization.getUpdatecount() == null) {
+ model.setUpdatecount(1);
+ } else {
+ model.setUpdatecount(vipMasterOrganization.getUpdatecount() + 1);
+ }
+
+ return Update(model);
+ } else {
+ model.setUpdatecount(0);
+
+ return Create(model);
+ }
+ }
+
+ @Cacheable
+ public VIPMasterOrganizationViewModel GetViewDetail(String id) {
+ VIPMasterOrganizationQueryObject queryObject = new VIPMasterOrganizationQueryObject();
+ queryObject.setId(id);
+
+ VIPMasterOrganization entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPMasterOrganizationViewModel GetViewDetailByMasterId(String masterid) {
+ VIPMasterOrganizationQueryObject queryObject = new VIPMasterOrganizationQueryObject();
+ queryObject.setMasterid(masterid);
+
+ VIPMasterOrganization entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPMasterOrganizationViewModel GetViewDetail(VIPMasterOrganizationQueryObject queryObject) {
+ VIPMasterOrganization entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(VIPMasterOrganizationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPMasterOrganization> list = (List<VIPMasterOrganization>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPMasterOrganizationViewModel> viewModels = new ArrayList<>();
+ for (VIPMasterOrganization entity : list) {
+ VIPMasterOrganizationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static VIPMasterOrganizationViewModel BuildViewModel(VIPMasterOrganization entity) {
+ if (entity == null)
+ return null;
+
+ VIPMasterOrganizationViewModel model = new VIPMasterOrganizationViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setMasterid(entity.getMasterid());
+ model.setMastercode(entity.getMastercode());
+ model.setMastername(entity.getMastername());
+ model.setOrganizationid(entity.getOrganizationid());
+ model.setOrganizationname(entity.getOrganizationname());
+ model.setOrganizationcode(entity.getOrganizationcode());
+ model.setDepartmentid(entity.getDepartmentid());
+ model.setDepartmentname(entity.getDepartmentname());
+ model.setDepartmentcode(entity.getDepartmentcode());
+ model.setMajorid(entity.getMajorid());
+ model.setMajorname(entity.getMajorname());
+ model.setMajorcode(entity.getMajorcode());
+ model.setGradeid(entity.getGradeid());
+ model.setGradename(entity.getGradename());
+ model.setGradecode(entity.getGradecode());
+ model.setClassid(entity.getClassid());
+ model.setClassname(entity.getClassname());
+ model.setClasscode(entity.getClasscode());
+ model.setUpdatecount(entity.getUpdatecount());
+
+ return model;
+ }
+
+ public VIPMasterOrganization Check(ActionType actionType, VIPMasterOrganizationViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ VIPMasterOrganization entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new VIPMasterOrganization();
+ if (model.getId() != null && !model.getId().isEmpty()) {
+ entity.setId(model.getId());
+ } else {
+ entity.setId(UUID.randomUUID().toString());
+ }
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ VIPMasterOrganizationQueryObject queryObject = new VIPMasterOrganizationQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setMasterid(model.getMasterid());
+ entity.setMastercode(model.getMastercode());
+ entity.setMastername(model.getMastername());
+ entity.setOrganizationid(model.getOrganizationid());
+ entity.setOrganizationname(model.getOrganizationname());
+ entity.setOrganizationcode(model.getOrganizationcode());
+ entity.setDepartmentid(model.getDepartmentid());
+ entity.setDepartmentname(model.getDepartmentname());
+ entity.setDepartmentcode(model.getDepartmentcode());
+ entity.setMajorid(model.getMajorid());
+ entity.setMajorname(model.getMajorname());
+ entity.setMajorcode(model.getMajorcode());
+ entity.setGradeid(model.getGradeid());
+ entity.setGradename(model.getGradename());
+ entity.setGradecode(model.getGradecode());
+ entity.setClassid(model.getClassid());
+ entity.setClassname(model.getClassname());
+ entity.setClasscode(model.getClasscode());
+ entity.setUpdatecount(model.getUpdatecount());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterPaperRelationService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterPaperRelationService.java
new file mode 100644
index 0000000..f4bf2ef
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterPaperRelationService.java
@@ -0,0 +1,318 @@
+package com.farriver.bwf.service.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.VIPMasterPaperRelationMapper;
+import com.farriver.bwf.data.master.model.VIPMasterPaperRelation;
+import com.farriver.bwf.data.master.model.VIPMasterPaperRelationExample;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterPaperRelationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterPaperRelationViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_VIPMasterPaperRelation_cache")
+public class VIPMasterPaperRelationService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterPaperRelationService.class);
+
+ private String message;
+
+ @Resource
+ VIPMasterPaperRelationMapper mapper;
+
+ public Map<MapDataType, Object> GetList(VIPMasterPaperRelationQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ VIPMasterPaperRelationExample example = new VIPMasterPaperRelationExample();
+ VIPMasterPaperRelationExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andMastercodeLike("%" + queryObject.getFilter() + "%");
+
+ VIPMasterPaperRelationExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andMasternameLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+
+ VIPMasterPaperRelationExample.Criteria criteria3 = example.createCriteria();
+ criteria3.andPapercodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria3);
+
+ VIPMasterPaperRelationExample.Criteria criteria4 = example.createCriteria();
+ criteria4.andPapernameLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria4);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getMasterid() != null && !queryObject.getMasterid().isEmpty()) {
+ criteria.andMasteridEqualTo(queryObject.getMasterid());
+ }
+ if (queryObject.getMastercode() != null && !queryObject.getMastercode().isEmpty()) {
+ criteria.andMastercodeLike("%" + queryObject.getMastercode() + "%");
+ }
+ if (queryObject.getMastername() != null && !queryObject.getMastername().isEmpty()) {
+ criteria.andMasternameLike("%" + queryObject.getMastername() + "%");
+ }
+ if (queryObject.getPaperid() != null && !queryObject.getPaperid().isEmpty()) {
+ criteria.andPaperidEqualTo(queryObject.getPaperid());
+ }
+ if (queryObject.getPapercode() != null && !queryObject.getPapercode().isEmpty()) {
+ criteria.andPapercodeLike("%" + queryObject.getPapercode() + "%");
+ }
+ if (queryObject.getPapername() != null && !queryObject.getPapername().isEmpty()) {
+ criteria.andPapernameLike("%" + queryObject.getPapername() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ if (queryObject.getStatuslist() != null && queryObject.getStatuslist().size() > 0) {
+ criteria.andStatusIn(queryObject.getStatuslist());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<VIPMasterPaperRelation> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public VIPMasterPaperRelation GetDetail(VIPMasterPaperRelationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<VIPMasterPaperRelation> list = (List<VIPMasterPaperRelation>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(VIPMasterPaperRelationViewModel model) {
+ VIPMasterPaperRelation entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(VIPMasterPaperRelationViewModel model) {
+ VIPMasterPaperRelation entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(VIPMasterPaperRelationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<VIPMasterPaperRelation> list = (List<VIPMasterPaperRelation>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public void BatchUpdate(List<VIPMasterPaperRelationViewModel> models) {
+ if (models == null) {
+ return;
+ }
+
+ for (VIPMasterPaperRelationViewModel model : models) {
+ Update(model);
+ }
+ }
+
+ @Cacheable
+ public VIPMasterPaperRelationViewModel GetViewDetail(String masterid) {
+ if (masterid == null) {
+ return null;
+ }
+
+ VIPMasterPaperRelationQueryObject queryObject = new VIPMasterPaperRelationQueryObject();
+ queryObject.setMasterid(masterid);
+
+ VIPMasterPaperRelation entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPMasterPaperRelationViewModel GetViewDetail(VIPMasterPaperRelationQueryObject queryObject) {
+ VIPMasterPaperRelation entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(VIPMasterPaperRelationQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPMasterPaperRelation> list = (List<VIPMasterPaperRelation>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPMasterPaperRelationViewModel> viewModels = new ArrayList<>();
+ for (VIPMasterPaperRelation entity : list) {
+ VIPMasterPaperRelationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageListByPrimaryKey(String masterid) {
+ if (masterid == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ VIPMasterPaperRelationQueryObject queryObject = new VIPMasterPaperRelationQueryObject();
+ queryObject.setMasterid(masterid);
+
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPMasterPaperRelation> list = (List<VIPMasterPaperRelation>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPMasterPaperRelationViewModel> viewModels = new ArrayList<>();
+ for (VIPMasterPaperRelation entity : list) {
+ VIPMasterPaperRelationViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static VIPMasterPaperRelationViewModel BuildViewModel(VIPMasterPaperRelation entity) {
+ if (entity == null)
+ return null;
+
+ VIPMasterPaperRelationViewModel model = new VIPMasterPaperRelationViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setStatus(entity.getStatus());
+ model.setMasterid(entity.getMasterid());
+ model.setMastercode(entity.getMastercode());
+ model.setMastername(entity.getMastername());
+ model.setPaperid(entity.getPaperid());
+ model.setPapercode(entity.getPapercode());
+ model.setPapername(entity.getPapername());
+ model.setBuyedtime(entity.getBuyedtime());
+ model.setAmount(entity.getAmount());
+
+ return model;
+ }
+
+ public VIPMasterPaperRelation Check(ActionType actionType, VIPMasterPaperRelationViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ if (model.getMasterid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ VIPMasterPaperRelation entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new VIPMasterPaperRelation();
+ if (model.getId() != null && !model.getId().isEmpty()) {
+ entity.setId(model.getId());
+ } else {
+ entity.setId(UUID.randomUUID().toString());
+ }
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ entity.setBuyedtime(new Date());
+ } else {
+ VIPMasterPaperRelationQueryObject queryObject = new VIPMasterPaperRelationQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ entity.setBuyedtime(model.getBuyedtime());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setStatus(model.getStatus());
+ entity.setMasterid(model.getMasterid());
+ entity.setMastercode(model.getMastercode());
+ entity.setMastername(model.getMastername());
+ entity.setPaperid(model.getPaperid());
+ entity.setPapercode(model.getPapercode());
+ entity.setPapername(model.getPapername());
+ entity.setAmount(model.getAmount());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterService.java
new file mode 100644
index 0000000..200c97e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterService.java
@@ -0,0 +1,326 @@
+package com.farriver.bwf.service.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.VIPMasterMapper;
+import com.farriver.bwf.data.master.model.VIPMaster;
+import com.farriver.bwf.data.master.model.VIPMasterExample;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_VIPMaster_cache")
+public class VIPMasterService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterService.class);
+
+ private String message;
+
+ @Resource
+ VIPMasterMapper mapper;
+
+ public Map<MapDataType, Object> GetList(VIPMasterQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ VIPMasterExample example = new VIPMasterExample();
+ VIPMasterExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getFilter() + "%");
+
+ VIPMasterExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andCodeLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getDiamondtype() != null) {
+ criteria.andDiamondtypeEqualTo(queryObject.getDiamondtype());
+ }
+ if (queryObject.getName() != null && !queryObject.getName().isEmpty()) {
+ criteria.andNameLike("%" + queryObject.getName() + "%");
+ }
+ if (queryObject.getNickname() != null && !queryObject.getNickname().isEmpty()) {
+ criteria.andNicknameLike("%" + queryObject.getNickname() + "%");
+ }
+ if (queryObject.getProvince() != null && !queryObject.getProvince().isEmpty()) {
+ criteria.andProvinceLike("%" + queryObject.getProvince() + "%");
+ }
+ if (queryObject.getCountry() != null && !queryObject.getCountry().isEmpty()) {
+ criteria.andCountryLike("%" + queryObject.getCountry() + "%");
+ }
+ if (queryObject.getIdcard() != null && !queryObject.getIdcard().isEmpty()) {
+ criteria.andIdcardLike("%" + queryObject.getIdcard() + "%");
+ }
+ if (queryObject.getOpenid() != null && !queryObject.getOpenid().isEmpty()) {
+ criteria.andOpenidLike("%" + queryObject.getOpenid() + "%");
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<VIPMaster> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public VIPMaster GetDetail(VIPMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<VIPMaster> list = (List<VIPMaster>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(VIPMasterViewModel model) {
+ VIPMaster entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(VIPMasterViewModel model) {
+ VIPMaster entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(VIPMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<VIPMaster> list = (List<VIPMaster>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ @Cacheable
+ public VIPMasterViewModel GetViewDetail(String id) {
+ VIPMasterQueryObject queryObject = new VIPMasterQueryObject();
+ queryObject.setId(id);
+
+ VIPMaster entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPMasterViewModel GetViewDetail(VIPMasterQueryObject queryObject) {
+ VIPMaster entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(VIPMasterQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPMaster> list = (List<VIPMaster>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPMasterViewModel> viewModels = new ArrayList<>();
+ for (VIPMaster entity : list) {
+ VIPMasterViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static VIPMasterViewModel BuildViewModel(VIPMaster entity) {
+ if (entity == null)
+ return null;
+
+ VIPMasterViewModel model = new VIPMasterViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setName(entity.getName());
+ model.setCode(entity.getCode());
+ model.setDiamondtype(entity.getDiamondtype());
+ model.setType(entity.getType());
+ model.setDiscountrate(entity.getDiscountrate());
+ model.setIdcard(entity.getIdcard());
+ model.setGender(entity.getGender());
+ model.setBirthday(entity.getBirthday());
+ model.setOpenid(entity.getOpenid());
+ model.setNickname(entity.getNickname());
+ model.setLanguage(entity.getLanguage());
+ model.setCity(entity.getCity());
+ model.setProvince(entity.getProvince());
+ model.setCountry(entity.getCountry());
+ model.setAvatarurl(entity.getAvatarurl());
+ model.setCellphone(entity.getCellphone());
+ model.setToken(entity.getToken());
+
+ return model;
+ }
+
+ public VIPMaster Check(ActionType actionType, VIPMasterViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ VIPMaster entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new VIPMaster();
+ if (model.getId() != null && !model.getId().isEmpty()) {
+ entity.setId(model.getId());
+ } else {
+ entity.setId(UUID.randomUUID().toString());
+ }
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+
+ String oldCode = GetLatestCode();
+ String newCode = generateCode(oldCode);
+ if (newCode == null)
+ return null;
+
+ entity.setCode(newCode);
+ entity.setDiscountrate(new BigDecimal(1));
+ } else {
+ VIPMasterQueryObject queryObject = new VIPMasterQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ entity.setDiscountrate(model.getDiscountrate());
+ }
+
+ entity.setRemark(model.getRemark());
+ entity.setName(model.getName());
+ entity.setDiamondtype(model.getDiamondtype());
+ entity.setType(model.getType());
+ entity.setIdcard(model.getIdcard());
+ entity.setGender(model.getGender());
+ entity.setBirthday(model.getBirthday());
+ entity.setOpenid(model.getOpenid());
+ entity.setNickname(model.getNickname());
+ entity.setLanguage(model.getLanguage());
+ entity.setCity(model.getCity());
+ entity.setProvince(model.getProvince());
+ entity.setCountry(model.getCountry());
+ entity.setAvatarurl(model.getAvatarurl());
+ entity.setCellphone(model.getCellphone());
+ entity.setToken(model.getToken());
+
+ return entity;
+ }
+
+ @Nullable
+ public String generateCode(String oldCode) {
+
+ String preNo = "V";
+ int _newCodeNum = 1;
+
+ try {
+ int _oldCodeNum = 0;
+
+ if (oldCode != null && !oldCode.equals("") && oldCode.length() > 2) {
+ String _oldNoNumString = oldCode.substring(2);
+ _oldCodeNum = Integer.parseInt(_oldNoNumString);
+ }
+
+ if (_oldCodeNum != 0) {
+ int a = _oldCodeNum + 1;
+ _newCodeNum = a;
+ }
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ message = LangConstants.MSG_ERROR_SYSTEM;
+ return null;
+ }
+
+ return String.format("%s%07d", preNo, _newCodeNum);
+ }
+
+ public String GetLatestCode() {
+ String oldCode = "";
+
+ VIPMasterExample example = new VIPMasterExample();
+ example.setOrderByClause("code desc");
+ example.setRows(1);
+ example.setOffset(0);
+ List<VIPMaster> list = mapper.selectByExample(example);
+ if (list != null && list.size() > 0) {
+ VIPMaster entity2 = list.get(0);
+ if (entity2 != null) {
+ oldCode = entity2.getCode();
+ }
+ }
+
+ return oldCode;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterWalletService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterWalletService.java
new file mode 100644
index 0000000..b6bb58b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/vip/VIPMasterWalletService.java
@@ -0,0 +1,301 @@
+package com.farriver.bwf.service.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.options.ActionType;
+import com.farriver.bwf.common.options.MapDataType;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.master.mapper.VIPMasterWalletMapper;
+import com.farriver.bwf.data.master.model.VIPMasterWallet;
+import com.farriver.bwf.data.master.model.VIPMasterWalletExample;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterWalletQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterWalletChargeViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterWalletRechargeViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterWalletViewModel;
+import com.farriver.bwf.service.ServiceBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import jakarta.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+
+@Service
+@CacheConfig(cacheNames = "bwf_VIPMasterWallet_cache")
+public class VIPMasterWalletService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterWalletService.class);
+
+ private String message;
+
+ @Resource
+ VIPMasterService vipMasterService;
+
+ @Resource
+ VIPMasterWalletMapper mapper;
+
+ public Map<MapDataType, Object> GetList(VIPMasterWalletQueryObject queryObject) {
+ if (queryObject == null) return null;
+
+ VIPMasterWalletExample example = new VIPMasterWalletExample();
+ VIPMasterWalletExample.Criteria criteria = example.createCriteria();
+
+ //查询条件
+ if (queryObject.getFilter() != null && !queryObject.getFilter().isEmpty()) {
+ criteria.andMastercodeLike("%" + queryObject.getFilter() + "%");
+
+ VIPMasterWalletExample.Criteria criteria2 = example.createCriteria();
+ criteria2.andMasternameLike("%" + queryObject.getFilter() + "%");
+ example.or(criteria2);
+ } else {
+ if (queryObject.getId() != null && !queryObject.getId().isEmpty()) {
+ criteria.andIdEqualTo(queryObject.getId());
+ }
+ if (queryObject.getMasterid() != null && !queryObject.getMasterid().isEmpty()) {
+ criteria.andMasteridEqualTo(queryObject.getMasterid());
+ }
+ if (queryObject.getMastercode() != null && !queryObject.getMastercode().isEmpty()) {
+ criteria.andMastercodeLike("%" + queryObject.getMastercode() + "%");
+ }
+ if (queryObject.getMastername() != null && !queryObject.getMastername().isEmpty()) {
+ criteria.andMasternameLike("%" + queryObject.getMastername() + "%");
+ }
+ if (queryObject.getStatus() != null && queryObject.getStatus() >= 0) {
+ criteria.andStatusEqualTo(queryObject.getStatus());
+ }
+ }
+
+ //查询总数
+ long total = mapper.countByExample(example);
+
+ //分页
+ int pageIndex = queryObject.getPageIndex();
+ int pageSize = queryObject.getPageSize();
+ if (pageIndex > 0 && pageSize > 0) {
+ example.setRows(pageSize);
+ example.setOffset((pageIndex - 1) * pageSize);
+ }
+
+ example.setOrderByClause("createtime desc");
+
+ List<VIPMasterWallet> list = mapper.selectByExample(example);
+
+ Map<MapDataType, Object> map = new HashMap<>();
+ map.put(MapDataType.DATA_LIST, list);
+ map.put(MapDataType.TOTAL_COUNT, total);
+ map.put(MapDataType.PAGE_INDEX, pageIndex);
+ map.put(MapDataType.PAGE_SIZE, pageSize);
+
+ return map;
+ }
+
+ public VIPMasterWallet GetDetail(VIPMasterWalletQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+
+ if (object != null) {
+ List<VIPMasterWallet> list = (List<VIPMasterWallet>) object;
+ if (list != null && list.size() == 1)
+ return list.get(0);
+ }
+
+ return null;
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Create(VIPMasterWalletViewModel model) {
+ VIPMasterWallet entity = Check(ActionType.CREATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.insertSelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Update(VIPMasterWalletViewModel model) {
+ VIPMasterWallet entity = Check(ActionType.UPDATE, model);
+
+ if (entity != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, mapper.updateByPrimaryKeySelective(entity));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ @CacheEvict(allEntries = true)
+ public ApiData Delete(String id) {
+ return ApiData.ok("", mapper.deleteByPrimaryKey(id));
+ }
+
+ public ApiData Charge(VIPMasterWalletChargeViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getMasterid() == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ VIPMasterWalletQueryObject queryObject = new VIPMasterWalletQueryObject();
+ queryObject.setMasterid(model.getMasterid());
+
+ VIPMasterWalletViewModel vipMasterWalletViewModel = GetViewDetail(queryObject);
+ if (vipMasterWalletViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ BigDecimal balance = vipMasterWalletViewModel.getBalance().subtract(model.getAmount());
+ vipMasterWalletViewModel.setBalance(balance);
+
+ return Update(vipMasterWalletViewModel);
+ }
+
+ public ApiData Recharge(VIPMasterWalletRechargeViewModel model) {
+ VIPMasterViewModel vipMasterViewModel = vipMasterService.GetViewDetail(model.getMasterid());
+
+ if (vipMasterViewModel == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ VIPMasterWalletQueryObject queryObject = new VIPMasterWalletQueryObject();
+ queryObject.setMasterid(model.getMasterid());
+
+ VIPMasterWalletViewModel walletViewModel = GetViewDetail(queryObject);
+ if (walletViewModel == null) {
+ walletViewModel = new VIPMasterWalletViewModel();
+ walletViewModel.setMasterid(model.getMasterid());
+ walletViewModel.setMastercode(vipMasterViewModel.getCode());
+ walletViewModel.setMastername(vipMasterViewModel.getName());
+ walletViewModel.setBalance(model.getAmount());
+
+ return Create(walletViewModel);
+ } else {
+ BigDecimal balance = walletViewModel.getBalance().add(model.getAmount());
+ walletViewModel.setBalance(balance);
+
+ return Update(walletViewModel);
+ }
+ }
+
+ @Transactional
+ @CacheEvict(allEntries = true)
+ public ApiData BatchDelete(VIPMasterWalletQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ Object object = map.get(MapDataType.DATA_LIST);
+ int count = 0;
+ if (object != null) {
+ List<VIPMasterWallet> list = (List<VIPMasterWallet>) object;
+ if (list != null && list.size() == 1) {
+ count += mapper.deleteByPrimaryKey(list.get(0).getId());
+ }
+ }
+
+ return ApiData.ok("", count);
+ }
+
+ //@Cacheable
+ public VIPMasterWalletViewModel GetViewDetail(String masterid) {
+ VIPMasterWalletQueryObject queryObject = new VIPMasterWalletQueryObject();
+ queryObject.setMasterid(masterid);
+
+ VIPMasterWallet entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public VIPMasterWalletViewModel GetViewDetail(VIPMasterWalletQueryObject queryObject) {
+ VIPMasterWallet entity = GetDetail(queryObject);
+
+ return BuildViewModel(entity);
+ }
+
+ @Cacheable
+ public ApiPageData GetViewPageList(VIPMasterWalletQueryObject queryObject) {
+ Map<MapDataType, Object> map = GetList(queryObject);
+ List<VIPMasterWallet> list = (List<VIPMasterWallet>) map.get(MapDataType.DATA_LIST);
+
+ List<VIPMasterWalletViewModel> viewModels = new ArrayList<>();
+ for (VIPMasterWallet entity : list) {
+ VIPMasterWalletViewModel viewModel = BuildViewModel(entity);
+
+ viewModels.add(viewModel);
+ }
+
+ ApiPageData bean = ApiPageData.build();
+ bean.setData(viewModels);
+ bean.setTotal((Long) map.get(MapDataType.TOTAL_COUNT));
+
+ return bean;
+ }
+
+ //private methods
+ private static VIPMasterWalletViewModel BuildViewModel(VIPMasterWallet entity) {
+ if (entity == null)
+ return null;
+
+ VIPMasterWalletViewModel model = new VIPMasterWalletViewModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setStatus(entity.getStatus());
+ model.setBalance(entity.getBalance());
+ model.setMasterid(entity.getMasterid());
+ model.setMastercode(entity.getMastercode());
+ model.setMastername(entity.getMastername());
+
+ return model;
+ }
+
+ public VIPMasterWallet Check(ActionType actionType, VIPMasterWalletViewModel model) {
+ message = "";
+
+ if (model == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ if (model.getMasterid() == null) {
+ message = LangConstants.MSG_ERROR_PARAMETERS;
+ return null;
+ }
+
+ VIPMasterWallet entity = null;
+ if (ActionType.CREATE == actionType) {
+ entity = new VIPMasterWallet();
+ if (model.getId() != null && !model.getId().isEmpty()) {
+ entity.setId(model.getId());
+ } else {
+ entity.setId(UUID.randomUUID().toString());
+ }
+ entity.setCreatetime(new Date());
+ entity.setIsdeleted(false);
+ } else {
+ VIPMasterWalletQueryObject queryObject = new VIPMasterWalletQueryObject();
+ queryObject.setId(model.getId());
+
+ entity = GetDetail(queryObject);
+ entity.setUpdatetime(new Date());
+ }
+
+ entity.setRemark(model.getRemark());
+
+ entity.setStatus(model.getStatus());
+ entity.setBalance(model.getBalance());
+ entity.setMasterid(model.getMasterid());
+ entity.setMastercode(model.getMastercode());
+ entity.setMastername(model.getMastername());
+
+ return entity;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/EnterpriseWeChatService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/EnterpriseWeChatService.java
new file mode 100644
index 0000000..5be4087
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/EnterpriseWeChatService.java
@@ -0,0 +1,53 @@
+package com.farriver.bwf.service.wechat;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.service.ServiceBase;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.utilities.HttpUtil;
+import com.farriver.bwf.data.transferobject.wechat.EnterpriseWeChatTokenModel;
+import com.farriver.bwf.data.transferobject.wechat.EnterpriseWeChatUserIdModel;
+import com.farriver.bwf.data.transferobject.wechat.EnterpriseWeChatUserInfoModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EnterpriseWeChatService extends ServiceBase {
+ private static final Logger logger = LoggerFactory.getLogger(EnterpriseWeChatService.class);
+
+ @Value("${QYWX.appid}")
+ private String appid;
+
+ @Value("${QYWX.corpsecret}")
+ private String corpsecret;
+
+ @Cacheable
+ public EnterpriseWeChatUserInfoModel AutoLoginCheck(String code) throws Exception {
+ logger.info("Enterprise Wechat Request code: " + code);
+
+ //获取access_token
+ String getTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=s%&corpsecret=s%";
+ String formattedGetTokenUrl = String.format(getTokenUrl, appid, corpsecret);
+ ApiData tokenData = HttpUtil.DoGet(formattedGetTokenUrl);
+ logger.info("Enterprise WeChat Request tokenData: " + JSON.toJSONString(tokenData));
+ EnterpriseWeChatTokenModel tokenModel = JSON.parseObject(tokenData.getMessage(), EnterpriseWeChatTokenModel.class);
+
+ //获取userId
+ String getUserIDUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=s%&code=s%";
+ String formattedGetUserIDUrl = String.format(getUserIDUrl, tokenModel.getAccess_token(), code);
+ ApiData userIDData = HttpUtil.DoGet(formattedGetUserIDUrl);
+ logger.info("Enterprise WeChat Request userIDData: " + JSON.toJSONString(userIDData));
+ EnterpriseWeChatUserIdModel weChatUserIdModel = JSON.parseObject(userIDData.getMessage(), EnterpriseWeChatUserIdModel.class);
+
+ //获取user
+ String getUserInfoUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=s%&userid=s%";
+ String formattedGetUserInfoUrl = String.format(getUserInfoUrl, tokenModel.getAccess_token(), weChatUserIdModel.getUserId());
+ ApiData userInfoData = HttpUtil.DoGet(formattedGetUserInfoUrl);
+ logger.info("Enterprise WeChat Request userInfoData: " + JSON.toJSONString(userInfoData));
+ EnterpriseWeChatUserInfoModel weChatUserInfoModel = JSON.parseObject(userIDData.getMessage(), EnterpriseWeChatUserInfoModel.class);
+
+ return weChatUserInfoModel;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/WeChatUserService.java b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/WeChatUserService.java
new file mode 100644
index 0000000..347f736
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.service/src/main/java/com/farriver/bwf/service/wechat/WeChatUserService.java
@@ -0,0 +1,214 @@
+package com.farriver.bwf.service.wechat;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.options.RoleOption;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.EncryptUtil;
+import com.farriver.bwf.data.transferobject.queryobject.security.AccountMasterQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PasswordViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterViewModel;
+import com.farriver.bwf.data.transferobject.wechat.WeChatLoginInfo;
+import com.farriver.bwf.data.transferobject.wechat.WeChatUserModel;
+import com.farriver.bwf.service.extend.rbac.RBACService;
+import com.farriver.bwf.service.vip.VIPMasterService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import jakarta.annotation.Resource;
+
+@Service
+public class WeChatUserService {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatUserService.class);
+
+ private String message;
+
+ @Resource
+ VIPMasterService vipService;
+
+ @Resource
+ RBACService rbacService;
+
+ public VIPMasterViewModel RegisterUser(WeChatUserModel model) {
+ try {
+ AccountMasterViewModel userViewModel = new AccountMasterViewModel();
+
+ userViewModel.setId(model.getId());
+ userViewModel.setName(model.getNickname());
+ userViewModel.setPassword(model.getPassword());
+ userViewModel.setType(RoleOption.Other.ordinal());
+ userViewModel.setCellphone(model.getCellphone());
+
+ AccountMasterViewModel rbacUser = null;
+ AccountMasterQueryObject queryObject = new AccountMasterQueryObject();
+ queryObject.setCellphone(model.getCellphone());
+ ApiData apiData = rbacService.GetAccountDetail(queryObject);
+ if (apiData.getCode() == 200) {
+ rbacUser = JSON.parseObject(JSON.toJSONString(apiData.getData()), AccountMasterViewModel.class);
+ }
+ if (rbacUser == null) {
+ apiData = rbacService.RegisterAccount(userViewModel);
+ if (apiData.getCode() == 200 || apiData.getMessage().equals(LangConstants.MSG_ERROR_CELLPHONE_EXISTED)) {
+ rbacUser = JSON.parseObject(JSON.toJSONString(apiData.getData()), AccountMasterViewModel.class);
+ if (rbacUser == null) {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+
+ VIPMasterViewModel entity = new VIPMasterViewModel();
+ entity.setRemark(model.getRemark());
+ entity.setName(model.getName());
+ entity.setDiamondtype(model.getDiamondtype());
+ entity.setType(model.getType());
+ entity.setDiscountrate(model.getDiscountrate());
+ entity.setIdcard(model.getIdcard());
+ entity.setGender(model.getGender());
+ entity.setBirthday(model.getBirthday());
+ entity.setOpenid(model.getOpenid());
+ entity.setNickname(model.getNickname());
+ entity.setLanguage(model.getLanguage());
+ entity.setCity(model.getCity());
+ entity.setProvince(model.getProvince());
+ entity.setCountry(model.getCountry());
+ entity.setAvatarurl(model.getAvatarurl());
+ entity.setCellphone(model.getCellphone());
+ entity.setToken(model.getToken());
+
+ entity.setId(rbacUser.getId());
+ vipService.Create(entity);
+
+ return entity;
+
+ } catch (Exception exception) {
+ logger.warn(exception.getMessage());
+ }
+ return null;
+ }
+
+ public ApiData ResetPassword(WeChatUserModel model) {
+ VIPMasterQueryObject queryObject = new VIPMasterQueryObject();
+ queryObject.setCellphone(model.getCellphone());
+
+ VIPMasterViewModel vipMasterViewModel = vipService.GetViewDetail(queryObject);
+ if (vipMasterViewModel == null) {
+ return null;
+ }
+
+ if (model.getPassword() != null && !model.getPassword().isEmpty()) {
+ String encryptPassword = EncryptUtil.md5Encrypt(model.getPassword());
+ vipMasterViewModel.setPassword(encryptPassword);
+
+ try {
+ PasswordViewModel passwordViewModel = new PasswordViewModel();
+ passwordViewModel.setNewpassword(model.getPassword());
+ passwordViewModel.setRandomcode(model.getRandomcode());
+ passwordViewModel.setCellphone(model.getCellphone());
+
+ ApiData apiData = rbacService.ResetPasswordSMSCode(passwordViewModel);
+ String m = apiData.getMessage();
+ logger.info("Reset password of RBAC message: " + m);
+ } catch (Exception exception) {
+ logger.warn(exception.getMessage());
+ }
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, vipService.Update(vipMasterViewModel));
+ } else {
+ return ApiData.error(message);
+ }
+ }
+
+ public WeChatUserModel WeChatLoginByOpenid(WeChatLoginInfo weChatLoginInfo) {
+ if (weChatLoginInfo == null || weChatLoginInfo.getOpenid() == null || weChatLoginInfo.getOpenid().isEmpty()) {
+ return null;
+ }
+
+ VIPMasterQueryObject queryObject = new VIPMasterQueryObject();
+ queryObject.setOpenid(weChatLoginInfo.getOpenid());
+
+ VIPMasterViewModel vipMasterViewModel = vipService.GetViewDetail(queryObject);
+ if (vipMasterViewModel == null) {
+ return null;
+ }
+
+ return BuildViewModel(vipMasterViewModel);
+ }
+
+ public WeChatUserModel WeChatLoginBySMSCode(WeChatLoginInfo weChatLoginInfo) {
+ if (weChatLoginInfo != null && !weChatLoginInfo.getCellphone().isEmpty()) {
+ VIPMasterQueryObject queryObject = new VIPMasterQueryObject();
+ queryObject.setCellphone(weChatLoginInfo.getCellphone());
+
+ VIPMasterViewModel vipMasterViewModel = vipService.GetViewDetail(queryObject);
+ if (vipMasterViewModel == null) {
+ return null;
+ }
+
+ return BuildViewModel(vipMasterViewModel);
+ }
+
+ return null;
+ }
+
+ public WeChatUserModel WeChatLoginByPassword(WeChatLoginInfo weChatLoginInfo) {
+ if (weChatLoginInfo == null || weChatLoginInfo.getCellphone() == null || weChatLoginInfo.getCellphone().isEmpty()) {
+ return null;
+ }
+
+ VIPMasterQueryObject queryObject = new VIPMasterQueryObject();
+ queryObject.setCellphone(weChatLoginInfo.getCellphone());
+
+ VIPMasterViewModel vipMasterViewModel = vipService.GetViewDetail(queryObject);
+ if (vipMasterViewModel == null) {
+ return null;
+ }
+
+ WeChatUserModel weChatUser = BuildViewModel(vipMasterViewModel);
+
+ String encryptPassword = EncryptUtil.md5Encrypt(weChatLoginInfo.getPassword());
+ if (weChatUser.getPassword() == null || !weChatUser.getPassword().equals(encryptPassword)) {
+ return null;
+ }
+
+ return weChatUser;
+ }
+
+ //private methods
+ private static WeChatUserModel BuildViewModel(VIPMasterViewModel entity) {
+ if (entity == null)
+ return null;
+
+ WeChatUserModel model = new WeChatUserModel();
+
+ model.setId(entity.getId());
+ model.setIsdeleted(entity.getIsdeleted());
+ model.setRemark(entity.getRemark());
+ model.setCreatetime(entity.getCreatetime());
+ model.setUpdatetime(entity.getUpdatetime());
+
+ model.setName(entity.getName());
+ model.setDiamondtype(entity.getDiamondtype());
+ model.setType(entity.getType());
+ model.setDiscountrate(entity.getDiscountrate());
+ model.setIdcard(entity.getIdcard());
+ model.setGender(entity.getGender());
+ model.setBirthday(entity.getBirthday());
+ model.setOpenid(entity.getOpenid());
+ model.setNickname(entity.getNickname());
+ model.setLanguage(entity.getLanguage());
+ model.setCity(entity.getCity());
+ model.setProvince(entity.getProvince());
+ model.setCountry(entity.getCountry());
+ model.setAvatarurl(entity.getAvatarurl());
+ model.setCellphone(entity.getCellphone());
+ model.setToken(entity.getToken());
+
+ return model;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/pom.xml b/04-Development/02-Code/bwf/com.farriver.bwf.web/pom.xml
new file mode 100644
index 0000000..6078e63
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/pom.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>war</packaging>
+ <groupId>com.farriver.bwf.web</groupId>
+ <artifactId>web</artifactId>
+ <version>${revision}</version>
+ <parent>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <dependencies>
+ <dependency>
+ <groupId>com.farriver.bwf.common</groupId>
+ <artifactId>common</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.data.transferobject</groupId>
+ <artifactId>transferobject</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.data.master</groupId>
+ <artifactId>master</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.service</groupId>
+ <artifactId>service</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.farriver.bwf.service.extend</groupId>
+ <artifactId>extend</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <finalName>bwf</finalName>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**/*.xml</include>
+ </includes>
+ </resource>
+ </resources>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>3.4.0</version>
+ </plugin>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring-boot.version}</version>
+ <configuration>
+ <mainClass>com.farriver.bwf.WebApplication</mainClass>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/WebApplication.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/WebApplication.java
new file mode 100644
index 0000000..4883898
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/WebApplication.java
@@ -0,0 +1,34 @@
+package com.farriver.bwf;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.WebApplicationInitializer;
+
+@SpringBootApplication
+@EnableCaching
+@MapperScan(basePackages = "com.farriver.bwf.data.master")
+@EnableScheduling
+@EnableDiscoveryClient
+@EnableFeignClients
+public class WebApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
+ private static final Logger logger = LoggerFactory.getLogger(WebApplication.class);
+
+ public static void main(String[] args) {
+ logger.info("WebApplication is started.");
+ SpringApplication.run(WebApplication.class, args);
+ }
+
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+ return application.sources(WebApplication.class);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/EntryController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/EntryController.java
new file mode 100644
index 0000000..4f32a59
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/EntryController.java
@@ -0,0 +1,12 @@
+package com.farriver.bwf.web.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+public class EntryController{
+ @RequestMapping("/")
+ public String index() {
+ return "redirect:/index.html?route=/";
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FastDFSController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FastDFSController.java
new file mode 100644
index 0000000..5f836b4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FastDFSController.java
@@ -0,0 +1,33 @@
+package com.farriver.bwf.web.controller;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.service.common.FastDFSService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+@RestController
+@RequestMapping("/api/fastdfs")
+public class FastDFSController extends AdminControllerBase {
+
+ @Resource
+ FastDFSService fastDFSService;
+
+ @PostMapping("/upload")
+ public ApiData Upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fastDFSService.Upload(file);
+ }
+
+ @PostMapping("/download")
+ public ResponseEntity<byte[]> Download(@RequestParam(defaultValue = "") String filepath) throws Exception {
+ return fastDFSService.Download(filepath);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String filepath) {
+ return fastDFSService.Delete(filepath);
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FileController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FileController.java
new file mode 100644
index 0000000..e98fa0d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/FileController.java
@@ -0,0 +1,56 @@
+package com.farriver.bwf.web.controller;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.WangEditResponse;
+import com.farriver.bwf.service.common.FileService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+@RestController
+@RequestMapping("/api/file")
+public class FileController extends AdminControllerBase {
+
+ @Resource
+ FileService fileService;
+
+ @PostMapping("/upload")
+ public String Upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fileService.Upload(file, request);
+ }
+
+ @PostMapping("/upload/document")
+ public ApiData UploadDocument(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fileService.UploadDocument(file, request);
+ }
+
+ @PostMapping("/upload/template/import")
+ public ApiData UploadImportTemplate(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fileService.UploadImportTemplate(file, request);
+ }
+
+ @PostMapping("/upload/template/export")
+ public ApiData UploadExportTemplate(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fileService.UploadExportTemplate(file, request);
+ }
+
+ @PostMapping("/upload/report")
+ public ApiData UploadReport(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fileService.UploadReport(file, request);
+ }
+
+ @PostMapping("/upload/bol")
+ public ApiData UploadBOL(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fileService.UploadBOL(file, request);
+ }
+
+ @PostMapping("/wangeditupload")
+ public WangEditResponse WangEditUpload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
+ return fileService.WangEditUpload(file, request);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/GlobalErrorController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/GlobalErrorController.java
new file mode 100644
index 0000000..666fe11
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/GlobalErrorController.java
@@ -0,0 +1,32 @@
+package com.farriver.bwf.web.controller;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.autoconfigure.web.ErrorProperties;
+import org.springframework.boot.autoconfigure.web.ServerProperties;
+import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController;
+import org.springframework.boot.web.servlet.error.ErrorAttributes;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+@RequestMapping({"${server.error.path:${error.path:/error}}"})
+public class GlobalErrorController extends AbstractErrorController {
+ private static final Logger logger = LoggerFactory.getLogger(GlobalErrorController.class);
+
+ private final ErrorProperties errorProperties;
+
+ public GlobalErrorController(ErrorAttributes errorAttributes, ServerProperties serverProperties) {
+ super(errorAttributes);
+ errorProperties = serverProperties.getError();
+ }
+
+ public String getErrorPath() {
+ return this.errorProperties.getPath();
+ }
+
+ private ErrorProperties getErrorProperties() {
+ return this.errorProperties;
+ }
+}
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminControllerBase.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminControllerBase.java
new file mode 100644
index 0000000..0da7786
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminControllerBase.java
@@ -0,0 +1,61 @@
+package com.farriver.bwf.web.controller.admin;
+
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+public abstract class AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(AdminControllerBase.class);
+
+ private HttpServletRequest request;
+ private HttpServletResponse response;
+ private HttpSession session;
+
+ public HttpServletRequest getRequest() {
+ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ assert requestAttributes != null;
+ this.request = requestAttributes.getRequest();
+
+ return request;
+ }
+
+ public HttpServletResponse getResponse() {
+ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ assert requestAttributes != null;
+ this.response = requestAttributes.getResponse();
+
+ return response;
+ }
+
+ public HttpSession getSession() {
+ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ assert requestAttributes != null;
+ this.request = requestAttributes.getRequest();
+ this.session = this.request.getSession();
+ if (session != null)
+ System.out.println(session.getId());
+
+ return session;
+ }
+
+ public AccountMasterViewModel CurrentUser() {
+ try {
+ this.session = getSession();
+ if (this.session != null) {
+ Object cu = this.session.getAttribute("account");
+
+ return (AccountMasterViewModel) cu;
+ }
+ return null;
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return null;
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminOauthController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminOauthController.java
new file mode 100644
index 0000000..44e5bb7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/AdminOauthController.java
@@ -0,0 +1,88 @@
+package com.farriver.bwf.web.controller.admin;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.utilities.VerificationCode;
+import com.farriver.bwf.data.transferobject.viewmodel.common.AuthBean;
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PasswordViewModel;
+import com.farriver.bwf.service.security.SecurityService;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.web.bind.annotation.*;
+
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+
+@RestController
+@RequestMapping("/api/admin/oauth")
+public class AdminOauthController extends AdminControllerBase {
+
+ @Resource
+ private SecurityService securityService;
+
+ @GetMapping("/getaccountwithrolesandpermissions")
+ public ApiData GetAccountWithRolesAndPermissions(@RequestParam("accountid") String accountid) {
+ return securityService.GetAccountWithRolesAndPermissions(accountid);
+ }
+
+ @PostMapping("/login")
+ public ApiData LoginByAccountPassword(@RequestBody AuthBean authBean) {
+ return securityService.LoginByAccountPassword(authBean);
+ }
+
+ @PostMapping("/loginBySMSCode")
+ public ApiData LoginBySMSCode(@RequestBody AuthBean authBean) {
+ return securityService.LoginBySMSCode(authBean);
+ }
+
+ @GetMapping("/logout")
+ public ApiData GetLogout(@RequestParam("accountid") String accountid) {
+ return securityService.Logout(accountid);
+ }
+
+ @GetMapping("/getaccountbycode")
+ public ApiData LoadAccountByAccount(@RequestParam("account") String account) {
+ return securityService.LoadAccountByAccount(account);
+ }
+
+ @GetMapping("/setverifycode")
+ public void SetVerifyCode(@RequestParam("account") String account, @RequestParam("code") String code) {
+ securityService.SetVerifyCode(account, code);
+ }
+
+ @GetMapping("/getverifycode")
+ public void GetVerifyCode(@RequestParam("account") String account, HttpServletRequest request, HttpServletResponse resp) throws IOException {
+ VerificationCode code = new VerificationCode();
+ BufferedImage image = code.getImage();
+
+ securityService.SetVerifyCode(account, code.getText());
+
+ VerificationCode.output(image, resp.getOutputStream());
+ }
+
+ @GetMapping("/sendsmscode")
+ public ApiData GetSMSCode(@RequestParam(defaultValue = "") String cellphone) {
+ return securityService.GetSMSCode(cellphone);
+ }
+
+ @PostMapping("/register")
+ public ApiData RegisterAccount(@RequestBody AccountMasterViewModel model) {
+ return securityService.RegisterAccount(model);
+ }
+
+ @PostMapping("/resetpasswordbysms")
+ public ApiData ResetPasswordSMSCode(@RequestBody PasswordViewModel model) {
+ return securityService.ResetPasswordSMSCode(model);
+ }
+
+ @PostMapping("/resetpasswordbyemail")
+ public ApiData ResetPasswordByEmail(@RequestBody PasswordViewModel model) {
+ return securityService.ResetPasswordByEmail(model);
+ }
+
+ @PostMapping("/retrievepasswordbyemail")
+ public ApiData RetrievePasswordByEmail(@RequestParam(defaultValue = "") String email, @RequestParam(defaultValue = "") String ticket) {
+ return securityService.RetrievePasswordByEmail(email, ticket);
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/DashboardController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/DashboardController.java
new file mode 100644
index 0000000..0ecfb26
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/DashboardController.java
@@ -0,0 +1,23 @@
+package com.farriver.bwf.web.controller.admin;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.data.transferobject.queryobject.statistics.StatisticsDashboardDataQueryObject;
+import com.farriver.bwf.service.statistics.StatisticsDashboardService;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/admin/dashboard")
+public class DashboardController extends AdminControllerBase {
+
+ @Resource
+ StatisticsDashboardService statisticsDashboardService;
+
+ @PostMapping("/data")
+ public ApiData GetDashboardData(@RequestBody StatisticsDashboardDataQueryObject queryObject) {
+ return statisticsDashboardService.GetDashboardData(queryObject);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/ifc/IFCController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/ifc/IFCController.java
new file mode 100644
index 0000000..7c92038
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/ifc/IFCController.java
@@ -0,0 +1,139 @@
+package com.farriver.bwf.web.controller.admin.ifc;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.data.transferobject.queryobject.approval.ApprovalRecordQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.dispatch.DispatchApprovalQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.dispatch.DispatchNotificationQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.dispatch.DispatchTaskQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.approval.ApprovalRecordViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.dispatch.DispatchApprovalViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.dispatch.DispatchNotificationViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.dispatch.DispatchTaskViewModel;
+import com.farriver.bwf.service.extend.ifc.IFCService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin/ifc")
+public class IFCController extends AdminControllerBase {
+
+ @Resource
+ IFCService ifcService;
+
+ @GetMapping("/operation/list")
+ public ApiData GetOperationList(@RequestParam("uid") String uid) {
+ return ifcService.GetOperationList(uid);
+ }
+
+ @GetMapping("/dispatch/notification/latest")
+ public ApiData GetLatestNotificationList(@RequestParam("uid") String uid) {
+ return ifcService.GetLatestNotificationList(uid);
+ }
+
+ @PostMapping("/dispatch/notification/list")
+ public ApiPageData GetNotificationList(@RequestBody DispatchNotificationQueryObject queryObject) {
+ return ifcService.GetNotificationList(queryObject);
+ }
+
+ @PostMapping("/dispatch/notification/create")
+ public ApiData CreateNotification(@RequestBody DispatchNotificationViewModel model) {
+ return ifcService.CreateNotification(model);
+ }
+
+ @GetMapping("/dispatch/notification/delete")
+ public ApiData DeleteNotification(@RequestParam(defaultValue = "") String id) {
+ return ifcService.DeleteNotification(id);
+ }
+
+ @PostMapping("/dispatch/notification/update")
+ public ApiData UpdateNotification(@RequestBody DispatchNotificationViewModel model) {
+ return ifcService.UpdateNotification(model);
+ }
+
+ @GetMapping("/dispatch/task/latest")
+ public ApiData GetLatestTaskList(@RequestParam("uid") String uid) {
+ return ifcService.GetLatestTaskList(uid);
+ }
+
+ @PostMapping("/dispatch/task/list")
+ public ApiPageData GetTaskList(@RequestBody DispatchTaskQueryObject queryObject) {
+ return ifcService.GetTaskList(queryObject);
+ }
+
+ @PostMapping("/dispatch/task/create")
+ public ApiData CreateTask(@RequestBody DispatchTaskViewModel model) {
+ return ifcService.CreateTask(model);
+ }
+
+ @GetMapping("/dispatch/task/delete")
+ public ApiData DeleteTask(@RequestParam(defaultValue = "") String id) {
+ return ifcService.DeleteTask(id);
+ }
+
+ @PostMapping("/dispatch/task/update")
+ public ApiData UpdateTask(@RequestBody DispatchTaskViewModel model) {
+ return ifcService.UpdateTask(model);
+ }
+
+ @GetMapping("/dispatch/approval/latest")
+ public ApiData GetLatestApprovalList(@RequestParam("uid") String uid) {
+ return ifcService.GetLatestApprovalList(uid);
+ }
+
+ @PostMapping("/dispatch/approval/list")
+ public ApiPageData GetApprovalList(@RequestBody DispatchApprovalQueryObject queryObject) {
+ return ifcService.GetApprovalList(queryObject);
+ }
+
+ @PostMapping("/dispatch/approval/create")
+ public ApiData CreateApproval(@RequestBody DispatchApprovalViewModel model) {
+ return ifcService.CreateApproval(model);
+ }
+
+ @GetMapping("/dispatch/approval/delete")
+ public ApiData DeleteApproval(@RequestParam(defaultValue = "") String id) {
+ return ifcService.DeleteApproval(id);
+ }
+
+ @PostMapping("/dispatch/approval/update")
+ public ApiData UpdateApproval(@RequestBody DispatchApprovalViewModel model) {
+ return ifcService.UpdateApproval(model);
+ }
+
+ @GetMapping("/approve/template/detail")
+ public ApiData GetApprovalTemplateDetailWithCode(@RequestParam(defaultValue = "") String code) {
+ return ifcService.GetApprovalTemplateDetailWithCode(code);
+ }
+
+ @GetMapping("/approve/record/detail")
+ public ApiData GetApprovalRecordDetailWithNo(@RequestParam(defaultValue = "") String no) {
+ return ifcService.GetApprovalRecordDetailWithNo(no);
+ }
+
+ @PostMapping("/approve/record/list")
+ public ApiPageData GetApprovalRecordList(@RequestBody ApprovalRecordQueryObject queryObject) {
+ return ifcService.GetApprovalRecordList(queryObject);
+ }
+
+ @PostMapping("/approve/record/pass")
+ public ApiData PassApprovalRecord(@RequestBody ApprovalRecordViewModel model) {
+ return ifcService.PassApprovalRecord(model);
+ }
+
+ @PostMapping("/approve/record/reject")
+ public ApiData RejectApprovalRecord(@RequestBody ApprovalRecordViewModel model) {
+ return ifcService.RejectApprovalRecord(model);
+ }
+
+ @GetMapping("/approve/record/complete")
+ public ApiData CompleteApprovalRecord(@RequestParam(defaultValue = "") String no) {
+ return ifcService.CompleteApprovalRecord(no);
+ }
+
+ @GetMapping("/approve/record/cancel")
+ public ApiData CancelApprovalRecord(@RequestParam(defaultValue = "") String no) {
+ return ifcService.CancelApprovalRecord(no);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveController.java
new file mode 100644
index 0000000..c5e4d55
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveController.java
@@ -0,0 +1,138 @@
+package com.farriver.bwf.web.controller.admin.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderActiveQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderActiveViewModel;
+import com.farriver.bwf.service.order.OrderActiveService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/order/active")
+public class OrderActiveController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderActiveController.class);
+
+ @Resource
+ OrderActiveService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/makeorder")
+ public ApiData MakeOrder(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.MakeOrder(model);
+ }
+
+ @PostMapping("/delivery")
+ public ApiData Delivery(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Delivery(model);
+ }
+
+ @PostMapping("/receive")
+ public ApiData Receive(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Receive(model);
+ }
+
+ @PostMapping("/reject")
+ public ApiData Reject(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Reject(model);
+ }
+
+ @PostMapping("/pay")
+ public ApiData Pay(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Pay(model);
+ }
+
+ @PostMapping("/cancel")
+ public ApiData Cancel(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Cancel(model);
+ }
+
+ @PostMapping("/comment")
+ public ApiData Comment(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Comment(model);
+ }
+
+ @PostMapping("/complete")
+ public ApiData Complete(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Complete(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrderActiveQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrderActiveViewModel GetExtendDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetExtendViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveProductController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveProductController.java
new file mode 100644
index 0000000..d90cd6c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderActiveProductController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderActiveProductQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderActiveProductViewModel;
+import com.farriver.bwf.service.order.OrderActiveProductService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/order/active/product")
+public class OrderActiveProductController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderActiveProductController.class);
+
+ @Resource
+ OrderActiveProductService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrderActiveProductViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrderActiveProductQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrderActiveProductViewModel GetExtendDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrderActiveProductViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryController.java
new file mode 100644
index 0000000..209c7b7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderHistoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderHistoryViewModel;
+import com.farriver.bwf.service.order.OrderHistoryService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/order/history")
+public class OrderHistoryController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderHistoryController.class);
+
+ @Resource
+ OrderHistoryService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrderHistoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrderHistoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetExtendViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrderHistoryViewModel GetExtendDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetExtendViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrderHistoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryProductController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryProductController.java
new file mode 100644
index 0000000..e69a4b4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderHistoryProductController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderHistoryProductQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderHistoryProductViewModel;
+import com.farriver.bwf.service.order.OrderHistoryProductService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/order/active/history")
+public class OrderHistoryProductController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderHistoryProductController.class);
+
+ @Resource
+ OrderHistoryProductService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrderHistoryProductViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrderHistoryProductQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrderHistoryProductViewModel GetExtendDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrderHistoryProductViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderReceiverController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderReceiverController.java
new file mode 100644
index 0000000..66895dc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/order/OrderReceiverController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.order;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.order.OrderReceiverQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderReceiverViewModel;
+import com.farriver.bwf.service.order.OrderReceiverService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/order/receiver")
+public class OrderReceiverController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrderReceiverController.class);
+
+ @Resource
+ OrderReceiverService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrderReceiverViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrderReceiverQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrderReceiverViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrderReceiverViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationClassController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationClassController.java
new file mode 100644
index 0000000..c6c3364
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationClassController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationClassQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationClassViewModel;
+import com.farriver.bwf.service.organization.OrganizationClassService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/organization/class")
+public class OrganizationClassController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationClassController.class);
+
+ @Resource
+ OrganizationClassService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrganizationClassViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrganizationClassQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrganizationClassViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrganizationClassViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationDepartmentController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationDepartmentController.java
new file mode 100644
index 0000000..cb44e2b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationDepartmentController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationDepartmentQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationDepartmentViewModel;
+import com.farriver.bwf.service.organization.OrganizationDepartmentService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/organization/department")
+public class OrganizationDepartmentController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationDepartmentController.class);
+
+ @Resource
+ OrganizationDepartmentService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrganizationDepartmentViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrganizationDepartmentQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrganizationDepartmentViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrganizationDepartmentViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationGradeController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationGradeController.java
new file mode 100644
index 0000000..6afdcd0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationGradeController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationGradeQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationGradeViewModel;
+import com.farriver.bwf.service.organization.OrganizationGradeService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/organization/grade")
+public class OrganizationGradeController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationGradeController.class);
+
+ @Resource
+ OrganizationGradeService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrganizationGradeViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrganizationGradeQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrganizationGradeViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrganizationGradeViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMajorController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMajorController.java
new file mode 100644
index 0000000..cdc91d6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMajorController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationMajorQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationMajorViewModel;
+import com.farriver.bwf.service.organization.OrganizationMajorService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/organization/major")
+public class OrganizationMajorController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationMajorController.class);
+
+ @Resource
+ OrganizationMajorService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrganizationMajorViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrganizationMajorQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrganizationMajorViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrganizationMajorViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMasterController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMasterController.java
new file mode 100644
index 0000000..24b1860
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/organization/OrganizationMasterController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.organization;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.organization.OrganizationMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.organization.OrganizationMasterViewModel;
+import com.farriver.bwf.service.organization.OrganizationMasterService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/organization/master")
+public class OrganizationMasterController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OrganizationMasterController.class);
+
+ @Resource
+ OrganizationMasterService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody OrganizationMasterViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody OrganizationMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public OrganizationMasterViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody OrganizationMasterViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionCategoryController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionCategoryController.java
new file mode 100644
index 0000000..89baf2a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionCategoryController.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionCategoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionCategoryViewModel;
+import com.farriver.bwf.service.question.QuestionCategoryService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/admin/question/category")
+public class QuestionCategoryController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionCategoryController.class);
+
+ @Resource
+ QuestionCategoryService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionCategoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @GetMapping("/tree")
+ public List<QuestionCategoryViewModel> getMenuTree() {
+ List<QuestionCategoryViewModel> datalist = service.getQuestionCategoryTree(new QuestionCategoryQueryObject());
+
+ return datalist;
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/listwithchildren")
+ public ApiPageData GetListWithChildren(@RequestBody QuestionCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageListWithChildren(queryObject);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionCategoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionMasterController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionMasterController.java
new file mode 100644
index 0000000..f0a3a92
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionMasterController.java
@@ -0,0 +1,83 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionMasterViewModel;
+import com.farriver.bwf.service.question.QuestionMasterService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/question/master")
+public class QuestionMasterController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionMasterController.class);
+
+ @Resource
+ QuestionMasterService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionMasterViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/listwithblobsextend")
+ public ApiPageData GetListWithBLOBsExtend(@RequestBody QuestionMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageListWithBLOBsExtend(queryObject);
+ }
+
+ @GetMapping("/listbypaperid")
+ public ApiData GetQuestionMasterListByPaperid(@RequestParam(defaultValue = "") String paperid) {
+ if (paperid == null || paperid.isEmpty())
+ return null;
+
+ return service.GetQuestionMasterListByPaperid(paperid);
+ }
+
+ @GetMapping("/detail")
+ public ApiData GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetailWithBLOBs(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionMasterViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperCategoryController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperCategoryController.java
new file mode 100644
index 0000000..c87111f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperCategoryController.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionPaperCategoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionPaperCategoryViewModel;
+import com.farriver.bwf.service.question.QuestionPaperCategoryService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/admin/question/paper/category")
+public class QuestionPaperCategoryController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionPaperCategoryController.class);
+
+ @Resource
+ QuestionPaperCategoryService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionPaperCategoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @GetMapping("/tree")
+ public List<QuestionPaperCategoryViewModel> getMenuTree() {
+ List<QuestionPaperCategoryViewModel> datalist = service.getQuestionPaperCategoryTree(new QuestionPaperCategoryQueryObject());
+
+ return datalist;
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionPaperCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/listwithchildren")
+ public ApiPageData GetListWithChildren(@RequestBody QuestionPaperCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageListWithChildren(queryObject);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionPaperCategoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperController.java
new file mode 100644
index 0000000..785efbd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionPaperQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionPaperViewModel;
+import com.farriver.bwf.service.question.QuestionPaperService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/question/paper")
+public class QuestionPaperController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionPaperController.class);
+
+ @Resource
+ QuestionPaperService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionPaperViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionPaperQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public QuestionPaperViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionPaperViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperQuestionMasterRelationController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperQuestionMasterRelationController.java
new file mode 100644
index 0000000..30c7dd5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionPaperQuestionMasterRelationController.java
@@ -0,0 +1,87 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionPaperQuestionMasterRelationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionPaperQuestionMasterRelationViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionPaperQuestionsViewModel;
+import com.farriver.bwf.service.question.QuestionPaperQuestionMasterRelationService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/admin/question/paper/question/master/relation")
+public class QuestionPaperQuestionMasterRelationController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionPaperQuestionMasterRelationController.class);
+
+ @Resource
+ QuestionPaperQuestionMasterRelationService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionPaperQuestionMasterRelationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/batchcreate")
+ public ApiData BatchCreate(@RequestBody QuestionPaperQuestionsViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.BatchCreate(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionPaperQuestionMasterRelationQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public QuestionPaperQuestionMasterRelationViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/batchdelete")
+ public ApiData BatchDelete(@RequestBody List<QuestionPaperQuestionMasterRelationViewModel> models) {
+ if (models == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.BatchDelete(models);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionPaperQuestionMasterRelationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectController.java
new file mode 100644
index 0000000..edb4f37
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionSubjectQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionSubjectViewModel;
+import com.farriver.bwf.service.question.QuestionSubjectService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/question/subject")
+public class QuestionSubjectController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionSubjectController.class);
+
+ @Resource
+ QuestionSubjectService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionSubjectViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionSubjectQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public QuestionSubjectViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionSubjectViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectGradeRelationController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectGradeRelationController.java
new file mode 100644
index 0000000..df74139
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectGradeRelationController.java
@@ -0,0 +1,86 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionSubjectGradeRelationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionGradeSubjectsViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionSubjectGradeRelationViewModel;
+import com.farriver.bwf.service.question.QuestionSubjectGradeRelationService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/admin/question/subject/grade/relation")
+public class QuestionSubjectGradeRelationController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionSubjectGradeRelationController.class);
+
+ @Resource
+ QuestionSubjectGradeRelationService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionSubjectGradeRelationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/batchcreate")
+ public ApiData BatchCreate(@RequestBody QuestionGradeSubjectsViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.BatchCreate(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionSubjectGradeRelationQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public QuestionSubjectGradeRelationViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/batchdelete")
+ public ApiData BatchDelete(@RequestBody List<QuestionSubjectGradeRelationViewModel> models) {
+ if (models == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.BatchDelete(models);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionSubjectGradeRelationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectKnowledgePointController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectKnowledgePointController.java
new file mode 100644
index 0000000..6431af3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/question/QuestionSubjectKnowledgePointController.java
@@ -0,0 +1,85 @@
+package com.farriver.bwf.web.controller.admin.question;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.QuestionSubjectKnowledgePointQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.question.QuestionSubjectKnowledgePointViewModel;
+import com.farriver.bwf.service.question.QuestionSubjectKnowledgePointService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/admin/question/subject/knowledge-point")
+public class QuestionSubjectKnowledgePointController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(QuestionSubjectKnowledgePointController.class);
+
+ @Resource
+ QuestionSubjectKnowledgePointService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody QuestionSubjectKnowledgePointViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody QuestionSubjectKnowledgePointQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/tree")
+ public List<QuestionSubjectKnowledgePointViewModel> GetTree(@RequestBody QuestionSubjectKnowledgePointQueryObject queryObject) {
+ if (queryObject == null) {
+ return null;
+ }
+
+ return service.getQuestionSubjectKnowledgePointTree(queryObject);
+ }
+
+ @PostMapping("/listwithchildren")
+ public ApiPageData GetListWithChildren(@RequestBody QuestionSubjectKnowledgePointQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageListWithChildren(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public QuestionSubjectKnowledgePointViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody QuestionSubjectKnowledgePointViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/security/SecurityController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/security/SecurityController.java
new file mode 100644
index 0000000..07bc2c2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/security/SecurityController.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.web.controller.admin.security;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.viewmodel.pa.PAEmployeeViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PasswordViewModel;
+import com.farriver.bwf.service.security.SecurityService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin/security")
+public class SecurityController extends AdminControllerBase {
+
+ @Resource
+ SecurityService securityService;
+
+ @PostMapping("/account/update/profile")
+ public ApiData UpdateProfile(@RequestBody PAEmployeeViewModel model) {
+ return securityService.UpdateProfile(model);
+ }
+
+ @GetMapping("/role/all")
+ public ApiPageData getAllRoles() {
+ return securityService.getAllRoles(0);
+ }
+
+ @GetMapping("/role/listbyaccountid")
+ public ApiData GetListByAccountId(@RequestParam(defaultValue = "") String accountid) {
+ if (accountid == null || accountid.isEmpty()) return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return securityService.GetRolesByAccountId(accountid);
+ }
+
+ @GetMapping("/role/listbypositionid")
+ public ApiData GetListByPositionId(@RequestParam(defaultValue = "") String positionid) {
+ if (positionid == null || positionid.isEmpty()) return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return securityService.GetRolesByPositionId(positionid);
+ }
+
+ @PostMapping("/account/pass")
+ public ApiData UpdateAccountPassword(@RequestBody PasswordViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return securityService.UpdateAccountPassword(model);
+ }
+
+ @GetMapping("/application/all")
+ public ApiPageData GetAllApplication(@RequestParam("permissionLevel") Integer permissionLevel) {
+ return securityService.GetAllApplication(permissionLevel);
+ }
+
+ @GetMapping("/application/accountapps")
+ public ApiPageData GetAccountApplications(@RequestParam("accountid") String accountid) {
+ return securityService.GetAccountApplications(accountid);
+ }
+
+ @GetMapping("/employee/positions")
+ public ApiData GetEmployeePositionsByEmployeeId(@RequestParam("employeeid") String employeeid) {
+ return securityService.GetEmployeePositionsByEmployeeId(employeeid);
+ }
+
+ @GetMapping("/employee/positionwithorganization")
+ public ApiData GetEmployeePositionWithOrganizationsByEmployeeId(@RequestParam(defaultValue = "") String employeeid) {
+ if (employeeid == null || employeeid.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return securityService.GetEmployeePositionWithOrganizationsByEmployeeId(employeeid);
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartController.java
new file mode 100644
index 0000000..daf1bb3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartController.java
@@ -0,0 +1,75 @@
+package com.farriver.bwf.web.controller.admin.shopping;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.shopping.ShoppingCartQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.shopping.ShoppingCartViewModel;
+import com.farriver.bwf.service.shopping.ShoppingCartService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/shopping/card")
+public class ShoppingCartController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(ShoppingCartController.class);
+
+ @Resource
+ ShoppingCartService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody ShoppingCartViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/save")
+ public ApiData Save(@RequestBody ShoppingCartViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Save(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody ShoppingCartQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetExtendViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public ShoppingCartViewModel GetExtendDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetExtendViewDetailById(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody ShoppingCartViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartProductController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartProductController.java
new file mode 100644
index 0000000..0f38fbd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/shopping/ShoppingCartProductController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.shopping;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.shopping.ShoppingCartProductQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.shopping.ShoppingCartProductViewModel;
+import com.farriver.bwf.service.shopping.ShoppingCartProductService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/shopping/card/product")
+public class ShoppingCartProductController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(ShoppingCartProductController.class);
+
+ @Resource
+ ShoppingCartProductService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody ShoppingCartProductViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody ShoppingCartProductQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public ShoppingCartProductViewModel GetExtendDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody ShoppingCartProductViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemAuditTrailController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemAuditTrailController.java
new file mode 100644
index 0000000..59888a8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemAuditTrailController.java
@@ -0,0 +1,60 @@
+package com.farriver.bwf.web.controller.admin.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemAuditTrailQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemAuditTrailViewModel;
+import com.farriver.bwf.service.system.SystemAuditTrailService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin/system/audittrail")
+public class SystemAuditTrailController extends AdminControllerBase {
+
+ @Resource
+ SystemAuditTrailService systemAuditTrailService;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody SystemAuditTrailViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemAuditTrailService.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody SystemAuditTrailQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemAuditTrailService.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return systemAuditTrailService.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody SystemAuditTrailViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemAuditTrailService.Update(model);
+ }
+
+ @PostMapping("/export")
+ public ResponseEntity<byte[]> ExportData(@RequestBody SystemAuditTrailQueryObject queryObject) {
+ return systemAuditTrailService.ExportData(queryObject);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemConfigController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemConfigController.java
new file mode 100644
index 0000000..a0f1ef7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemConfigController.java
@@ -0,0 +1,59 @@
+package com.farriver.bwf.web.controller.admin.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemConfigQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemConfigViewModel;
+import com.farriver.bwf.service.system.SystemConfigService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin/system/config")
+public class SystemConfigController extends AdminControllerBase {
+
+ @Resource
+ SystemConfigService systemConfigService;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody SystemConfigViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemConfigService.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody SystemConfigQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemConfigService.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return systemConfigService.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody SystemConfigViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemConfigService.Update(model);
+ }
+
+ @GetMapping("/getsystemconfig")
+ public ApiData GetSystemConfig() {
+ return null;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemLogController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemLogController.java
new file mode 100644
index 0000000..74698cc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemLogController.java
@@ -0,0 +1,29 @@
+package com.farriver.bwf.web.controller.admin.system;
+
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemLogQueryObject;
+import com.farriver.bwf.service.system.SystemLogService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/admin/system/log")
+public class SystemLogController extends AdminControllerBase {
+
+ @Resource
+ SystemLogService systemLogService;
+
+ @PostMapping("/list")
+ public ApiPageData getLogs(@RequestBody SystemLogQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemLogService.GetViewPageList(queryObject);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMailLogController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMailLogController.java
new file mode 100644
index 0000000..ddda6b2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMailLogController.java
@@ -0,0 +1,54 @@
+package com.farriver.bwf.web.controller.admin.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemMailLogQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMailLogViewModel;
+import com.farriver.bwf.service.system.SystemMailLogService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin/system/mailsendlog")
+public class SystemMailLogController extends AdminControllerBase {
+
+ @Resource
+ SystemMailLogService systemMailLogService;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody SystemMailLogViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemMailLogService.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody SystemMailLogQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemMailLogService.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return systemMailLogService.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody SystemMailLogViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemMailLogService.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMenuController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMenuController.java
new file mode 100644
index 0000000..5b7062f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemMenuController.java
@@ -0,0 +1,59 @@
+package com.farriver.bwf.web.controller.admin.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemMenuQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemMenuWriteViewModel;
+import com.farriver.bwf.service.system.SystemMenuService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin/system/menu")
+public class SystemMenuController extends AdminControllerBase {
+
+ @Resource
+ SystemMenuService systemMenuService;
+
+ @GetMapping("/tree")
+ public ApiData getTree() {
+ return systemMenuService.getTree();
+ }
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody SystemMenuWriteViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemMenuService.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody SystemMenuQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemMenuService.GetViewPageListWithChildren(queryObject);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return systemMenuService.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody SystemMenuWriteViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemMenuService.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemNotificationController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemNotificationController.java
new file mode 100644
index 0000000..95b3cd0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/system/SystemNotificationController.java
@@ -0,0 +1,54 @@
+package com.farriver.bwf.web.controller.admin.system;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.system.SystemNotificationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.system.SystemNotificationViewModel;
+import com.farriver.bwf.service.system.SystemNotificationService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/api/admin/system/notification")
+public class SystemNotificationController extends AdminControllerBase {
+
+ @Resource
+ SystemNotificationService systemNotificationService;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody SystemNotificationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemNotificationService.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody SystemNotificationQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemNotificationService.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return systemNotificationService.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody SystemNotificationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return systemNotificationService.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponActiveController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponActiveController.java
new file mode 100644
index 0000000..bc97b89
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponActiveController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPCouponActiveQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPCouponActiveViewModel;
+import com.farriver.bwf.service.vip.VIPCouponActiveService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/vip/coupon/active")
+public class VIPCouponActiveController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPCouponActiveController.class);
+
+ @Resource
+ VIPCouponActiveService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody VIPCouponActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody VIPCouponActiveQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public VIPCouponActiveViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody VIPCouponActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponHistoryController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponHistoryController.java
new file mode 100644
index 0000000..b585544
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPCouponHistoryController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPCouponHistoryQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPCouponHistoryViewModel;
+import com.farriver.bwf.service.vip.VIPCouponHistoryService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/vip/coupon/history")
+public class VIPCouponHistoryController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPCouponHistoryController.class);
+
+ @Resource
+ VIPCouponHistoryService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody VIPCouponHistoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody VIPCouponHistoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public VIPCouponHistoryViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody VIPCouponHistoryViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPDepositActivityController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPDepositActivityController.java
new file mode 100644
index 0000000..74dab22
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPDepositActivityController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPDepositActivityQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPDepositActivityViewModel;
+import com.farriver.bwf.service.vip.VIPDepositActivityService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/vip/deposit/activity")
+public class VIPDepositActivityController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPDepositActivityController.class);
+
+ @Resource
+ VIPDepositActivityService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody VIPDepositActivityViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody VIPDepositActivityQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public VIPDepositActivityViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody VIPDepositActivityViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterController.java
new file mode 100644
index 0000000..779751f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterViewModel;
+import com.farriver.bwf.service.vip.VIPMasterService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/vip/master")
+public class VIPMasterController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterController.class);
+
+ @Resource
+ VIPMasterService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody VIPMasterViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody VIPMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public VIPMasterViewModel GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return service.GetViewDetail(id);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody VIPMasterViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterPaperRelationController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterPaperRelationController.java
new file mode 100644
index 0000000..e141c71
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterPaperRelationController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterPaperRelationQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterPaperRelationViewModel;
+import com.farriver.bwf.service.vip.VIPMasterPaperRelationService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/vip/master/paper/relation")
+public class VIPMasterPaperRelationController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterPaperRelationController.class);
+
+ @Resource
+ VIPMasterPaperRelationService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody VIPMasterPaperRelationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody VIPMasterPaperRelationQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public VIPMasterPaperRelationViewModel GetDetail(@RequestParam(defaultValue = "") String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return null;
+
+ return service.GetViewDetail(masterid);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody VIPMasterPaperRelationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterWalletController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterWalletController.java
new file mode 100644
index 0000000..ec885dd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/admin/vip/VIPMasterWalletController.java
@@ -0,0 +1,66 @@
+package com.farriver.bwf.web.controller.admin.vip;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPMasterWalletQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterWalletViewModel;
+import com.farriver.bwf.service.vip.VIPMasterWalletService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/admin/vip/master/wallet")
+public class VIPMasterWalletController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(VIPMasterWalletController.class);
+
+ @Resource
+ VIPMasterWalletService service;
+
+ @PostMapping("/create")
+ public ApiData Create(@RequestBody VIPMasterWalletViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Create(model);
+ }
+
+ @PostMapping("/list")
+ public ApiPageData GetList(@RequestBody VIPMasterWalletQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/detail")
+ public VIPMasterWalletViewModel GetDetail(@RequestParam(defaultValue = "") String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return null;
+
+ return service.GetViewDetail(masterid);
+ }
+
+ @GetMapping("/delete")
+ public ApiData Delete(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+
+ return service.Delete(id);
+ }
+
+ @PostMapping("/update")
+ public ApiData Update(@RequestBody VIPMasterWalletViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Update(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/open/OpenApiController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/open/OpenApiController.java
new file mode 100644
index 0000000..5403d81
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/open/OpenApiController.java
@@ -0,0 +1,14 @@
+package com.farriver.bwf.web.controller.open;
+
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/open")
+public class OpenApiController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(OpenApiController.class);
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/IndexController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/IndexController.java
new file mode 100644
index 0000000..eb1dd7c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/IndexController.java
@@ -0,0 +1,13 @@
+package com.farriver.bwf.web.controller.portal;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/portal/index")
+public class IndexController {
+ private static final Logger logger = LoggerFactory.getLogger(IndexController.class);
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/PortalOauthController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/PortalOauthController.java
new file mode 100644
index 0000000..bdbf3d3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/portal/PortalOauthController.java
@@ -0,0 +1,89 @@
+package com.farriver.bwf.web.controller.portal;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.utilities.VerificationCode;
+import com.farriver.bwf.data.transferobject.viewmodel.AuthBean;
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import com.farriver.bwf.data.transferobject.viewmodel.security.PasswordViewModel;
+import com.farriver.bwf.service.security.SecurityService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.web.bind.annotation.*;
+
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+
+@RestController
+@RequestMapping("/api/portal/oauth")
+public class PortalOauthController extends AdminControllerBase {
+
+ @Resource
+ private SecurityService securityService;
+
+ @GetMapping("/getaccountwithrolesandpermissions")
+ public ApiData GetAccountWithRolesAndPermissions(@RequestParam("accountid") String accountid) {
+ return securityService.GetAccountWithRolesAndPermissions(accountid);
+ }
+
+ @PostMapping("/login")
+ public ApiData LoginByAccountPassword(@RequestBody AuthBean authBean) {
+ return securityService.LoginByAccountPassword(authBean);
+ }
+
+ @PostMapping("/loginBySMSCode")
+ public ApiData LoginBySMSCode(@RequestBody AuthBean authBean) {
+ return securityService.LoginBySMSCode(authBean);
+ }
+
+ @GetMapping("/logout")
+ public ApiData GetLogout(@RequestParam("accountid") String accountid) {
+ return securityService.Logout(accountid);
+ }
+
+ @GetMapping("/getaccountbycode")
+ public ApiData LoadAccountByAccount(@RequestParam("account") String account) {
+ return securityService.LoadAccountByAccount(account);
+ }
+
+ @GetMapping("/setverifycode")
+ public void SetVerifyCode(@RequestParam("account") String account, @RequestParam("code") String code) {
+ securityService.SetVerifyCode(account, code);
+ }
+
+ @GetMapping("/getverifycode")
+ public void GetVerifyCode(@RequestParam("account") String account, HttpServletRequest request, HttpServletResponse resp) throws IOException {
+ VerificationCode code = new VerificationCode();
+ BufferedImage image = code.getImage();
+
+ securityService.SetVerifyCode(account, code.getText());
+
+ VerificationCode.output(image, resp.getOutputStream());
+ }
+
+ @GetMapping("/sendsmscode")
+ public ApiData GetSMSCode(@RequestParam(defaultValue = "") String cellphone) {
+ return securityService.GetSMSCode(cellphone);
+ }
+
+ @PostMapping("/register")
+ public ApiData RegisterAccount(@RequestBody AccountMasterViewModel model) {
+ return securityService.RegisterAccount(model);
+ }
+
+ @PostMapping("/resetpasswordbysms")
+ public ApiData ResetPasswordSMSCode(@RequestBody PasswordViewModel model) {
+ return securityService.ResetPasswordSMSCode(model);
+ }
+
+ @PostMapping("/resetpasswordbyemail")
+ public ApiData ResetPasswordByEmail(@RequestBody PasswordViewModel model) {
+ return securityService.ResetPasswordByEmail(model);
+ }
+
+ @PostMapping("/retrievepasswordbyemail")
+ public ApiData RetrievePasswordByEmail(@RequestParam(defaultValue = "") String email, @RequestParam(defaultValue = "") String ticket) {
+ return securityService.RetrievePasswordByEmail(email, ticket);
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/EnterpriseWeChatController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/EnterpriseWeChatController.java
new file mode 100644
index 0000000..124bc81
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/EnterpriseWeChatController.java
@@ -0,0 +1,37 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.wechat.EnterpriseWeChatUserInfoModel;
+import com.farriver.bwf.service.wechat.EnterpriseWeChatService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import jakarta.annotation.Resource;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/wechat/enterprise")
+public class EnterpriseWeChatController {
+ private static final Logger logger = LoggerFactory.getLogger(EnterpriseWeChatController.class);
+
+ @Resource
+ private EnterpriseWeChatService enterpriseWeChatService;
+
+ @GetMapping("/autologin")
+ public ApiData AutoLoginCheck(@RequestParam(defaultValue = "") String code) {
+ try {
+ EnterpriseWeChatUserInfoModel data = enterpriseWeChatService.AutoLoginCheck(code);
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayController.java
new file mode 100644
index 0000000..a466f43
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayController.java
@@ -0,0 +1,98 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.wechat.WeChatPayConfigViewModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/wechat/pay")
+public class WXPayController {
+ private static final Logger logger = LoggerFactory.getLogger(WXPayController.class);
+
+ @Resource
+ private WXPayViaGZHConfig wxPayViaGZHConfig;
+
+ @Resource
+ private WXPayViaMiniProgramConfig wxPayViaMiniProgramConfig;
+
+ @Resource
+ private WXPayViaNativeConfig wxPayViaNativeConfig;
+
+ @GetMapping("/GetWeChatGZHConfig")
+ public ApiData GetWeChatGZHConfig() {
+ try {
+ return wxPayViaGZHConfig.GetWeChatConfig();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @GetMapping("/GetWeChatMiniProgramConfig")
+ public ApiData GetWeChatMiniProgramConfig() {
+ try {
+ return wxPayViaMiniProgramConfig.GetWeChatConfig();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @GetMapping("/GetWeChatNativeConfig")
+ public ApiData GetWeChatNativeConfig() {
+ try {
+ return wxPayViaNativeConfig.GetWeChatConfig();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/PayUseWXViaGZH")
+ public ApiData PayUseWXViaGZH(@RequestBody WeChatPayConfigViewModel model) {
+ try {
+ return wxPayViaGZHConfig.PayUseWX(model);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/PayUseWXViaMiniProgram")
+ public ApiData PayUseWXViaMiniProgram(@RequestBody WeChatPayConfigViewModel model) {
+ try {
+ return wxPayViaMiniProgramConfig.PayUseWX(model);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/PayUseWXViaNative")
+ public ApiData PayUseWXViaNative(@RequestBody WeChatPayConfigViewModel model) {
+ try {
+ return wxPayViaNativeConfig.PayUseWX(model);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaGZHConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaGZHConfig.java
new file mode 100644
index 0000000..b03e1f1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaGZHConfig.java
@@ -0,0 +1,271 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.utilities.HttpUtil;
+import com.farriver.bwf.data.transferobject.wechat.*;
+import okhttp3.HttpUrl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import jakarta.servlet.http.HttpServletRequest;
+import java.security.KeyFactory;
+import java.security.PrivateKey;
+import java.security.Signature;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Base64;
+import java.util.UUID;
+
+@Component
+@Service
+@CacheConfig(cacheNames = "bwf_WXPayViaGZHConfig_cache")
+public class WXPayViaGZHConfig {
+ private static final Logger logger = LoggerFactory.getLogger(WXPayViaGZHConfig.class);
+
+ @Value("${wx.gzh_appid}")
+ private String gzh_appid = "";
+ @Value("${wx.gzh_secret}")
+ private String gzh_secret = "";
+ @Value("${wx.gzh_notify_url}")
+ private String gzh_notify_url = "";
+ @Value("${wx.mch_id}")
+ private String mch_id = "";
+ @Value("${wx.paykey}")
+ private String paykey = "";
+ @Value("${wx.serialNo}")
+ private String serialNo = "";
+ @Value("${wx.privateKey}")
+ private String privateKey = "";
+
+ public ApiData GetWeChatConfig() {
+ WeChatConfigForGZHModel config = new WeChatConfigForGZHModel();
+ config.setAppId(gzh_appid);
+ config.setMch_id(mch_id);
+// config.setPaykey(paykey);
+// config.setNotify_url(gzh_notify_url);
+// config.setSecret(gzh_secret);
+// config.setSerialNo(serialNo);
+// config.setPrivateKey(privateKey);
+
+ return ApiData.ok("", config);
+ }
+
+ public ApiData PayUseWX(WeChatPayConfigViewModel model) {
+ try {
+ //Check data
+ if (model == null || model.getCode().isEmpty() || model.getOrderid().isEmpty() || model.getTotalprice().isEmpty()) {
+ return ApiData.error("微信支付异常,请重新打开公众号");
+ }
+
+ //获取用户终端IP
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+ String userip = request.getRemoteAddr();
+
+ //获取支付配置
+ return PayUseWXV3(model.getRequesturl(), model.getCode(), userip, model.getOrderid(), model.getTotalprice(), model.getProductname());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.debug("PayUseWX.Exception: " + ex.getMessage());
+
+ return ApiData.error("微信支付配置异常,请选择其他支付方式");
+ }
+ }
+
+ @Cacheable
+ public ApiData PayUseWXV3(String requesturl, String code, String userip, String orderid, String totalprice, String productname) throws Exception {
+
+ WeChatConfigModel config = new WeChatConfigModel();
+
+ if (gzh_appid.isEmpty()) {
+ return ApiData.error("微信支付参数appid异常,请重新打开公众号");
+ }
+ if (mch_id.isEmpty()) {
+ return ApiData.error("微信支付参数mch_id异常,请重新打开公众号");
+ }
+ if (gzh_secret.isEmpty()) {
+ return ApiData.error("微信支付参数secret异常,请重新打开公众号");
+ }
+ if (code.isEmpty()) {
+ return ApiData.error("微信支付参数code异常,请重新打开公众号");
+ }
+ if (userip.isEmpty()) {
+ return ApiData.error("微信支付参数userip异常,请重新打开公众号");
+ }
+ if (paykey.isEmpty()) {
+ return ApiData.error("微信支付参数paykey异常,请重新打开公众号");
+ }
+ if (gzh_notify_url.isEmpty()) {
+ return ApiData.error("微信支付参数notify_url异常,请重新打开公众号");
+ }
+ if (orderid.isEmpty()) {
+ return ApiData.error("微信支付参数orderid异常,请重新打开公众号");
+ }
+ if (totalprice.isEmpty()) {
+ return ApiData.error("微信支付参数totalprice异常,请重新打开公众号");
+ }
+
+ double iTotalPrice = -1;
+ int total_fee = -1;
+ try {
+ iTotalPrice = Double.parseDouble(totalprice) * 100;
+ String iTotalPriceStr = iTotalPrice + "";
+ String[] iTotalPriceStrArr = iTotalPriceStr.split("\\.");
+ String iTotalPriceStr2 = iTotalPriceStrArr[0];
+ total_fee = Integer.parseInt(iTotalPriceStr2);
+
+ if (total_fee <= 0) {
+ return ApiData.error("微信支付total_fee异常,请重新打开公众号");
+ }
+ logger.debug("total_fee: " + total_fee);
+ } catch (Exception exception) {
+ return ApiData.error("微信支付total_fee异常,请重新打开公众号");
+ }
+
+ String nonceStr = CreateNonce();
+ long timestamp = CreateTimestamp();
+
+ // 获取统一下单号
+ GongZhongHaoAccessToken AccessToken = GetAccessToken(gzh_appid, gzh_secret, code);
+ logger.debug("getAccessTokenUri: " + JSON.toJSONString(AccessToken));
+
+ String openid = AccessToken.getOpenid();
+ logger.debug("openid: " + openid);
+
+ if (openid.isEmpty()) {
+ return ApiData.error("微信支付openid异常,请重新打开公众号");
+ }
+
+ StringBuilder str = new StringBuilder();
+ str.append("{");
+ str.append(String.format("\"mchid\":\"%s\",", mch_id));
+ str.append(String.format("\"out_trade_no\":\"%s\",", orderid.substring(0, 30)));
+ str.append("\"appid\":\"" + gzh_appid + "\",");
+ str.append("\"description\":\"" + productname + "\",");
+ str.append("\"notify_url\":\"" + gzh_notify_url + "\","); //支付成功后的通知地址
+ str.append("\"amount\":{");
+ str.append(String.format("\"total\":%s,", total_fee)); //支付金额
+ str.append("\"currency\":\"CNY\"");
+ str.append("},");
+ str.append("\"payer\":{");
+ str.append("\"openid\":\"" + openid + "\"");
+ str.append("}");
+ str.append("}");
+
+ String url = "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
+ String body = str.toString();
+ String authorization = GetAuthorization(url, "POST", body, timestamp, nonceStr);
+ String transactionsResponse = HttpUtil.Post(url, body, authorization);
+ logger.debug("PayUseWXV3.transactionsResponse:" + transactionsResponse);
+
+ TransactionsOrderPay gongZhongHaoAccessToken = JSON.parseObject(transactionsResponse, TransactionsOrderPay.class);
+ String preid = gongZhongHaoAccessToken.getPrepay_id();
+
+ logger.debug("PayUseWXV3.preid:" + preid);
+
+ if (preid.isEmpty()) {
+ return ApiData.error("微信支付参数preid异常,请选择其他支付方式");
+ }
+
+ String paySignmessage = String.format("%s\n%s\n%s\nprepay_id=%s\n", gzh_appid, timestamp, nonceStr, preid);
+
+ logger.debug("GetAuthorization.paySignmessage:" + paySignmessage);
+
+ String paySign = Sign(paySignmessage, privateKey);
+
+ logger.debug("GetAuthorization.paySign:" + paySign);
+
+
+ config.setAppId(gzh_appid);
+ config.setTimestamp(timestamp + "");
+ config.setNonceStr(nonceStr);
+ config.setPaySign(paySign);
+ config.setSignType("RSA");
+ config.setPrepay_id(preid);
+
+ logger.debug("WeChatConfigModel: " + JSON.toJSONString(config));
+
+ return ApiData.ok("操作成功!", config);
+ }
+
+ @Cacheable
+ public GongZhongHaoAccessToken GetAccessToken(String appid, String secret, String code) throws Exception {
+ String getAccessTokenUri = String.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", appid, secret, code);
+
+ String tokenData = HttpUtil.Get(getAccessTokenUri);
+
+ GongZhongHaoAccessToken data = JSON.parseObject(tokenData, GongZhongHaoAccessToken.class);
+
+ if (data != null && data.getOpenid() != null && !data.getOpenid().isEmpty()) {
+ return data;
+ } else {
+ return null;
+ }
+ }
+
+ public String CreateNonce() {
+ return UUID.randomUUID().toString();
+ }
+
+ public long CreateTimestamp() {
+ return System.currentTimeMillis() / 1000;
+ }
+
+ protected String GetAuthorization(String url, String method, String body, long timestamp, String nonceStr) {
+ String message = buildMessage(method, HttpUrl.get(url), timestamp, nonceStr, body);
+ String signature = Sign(message, privateKey);
+
+ return "WECHATPAY2-SHA256-RSA2048 mchid=\"" + mch_id + "\","
+ + "nonce_str=\"" + nonceStr + "\","
+ + "timestamp=\"" + timestamp + "\","
+ + "serial_no=\"" + serialNo + "\","
+ + "signature=\"" + signature + "\"";
+ }
+
+ protected String Sign(String message, String privateKey) {
+ logger.debug("Sign.message:" + message);
+ logger.debug("Sign.privateKey:" + privateKey);
+ try {
+ Signature sign = Signature.getInstance("SHA256withRSA");
+ sign.initSign(getPrivateKey(privateKey));
+ sign.update(message.getBytes("utf-8"));
+
+ return Base64.getEncoder().encodeToString(sign.sign());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.debug(ex.getMessage());
+ }
+
+ return null;
+ }
+
+ public PrivateKey getPrivateKey(String privateKey) throws Exception {
+ byte[] keyBytes = privateKey.getBytes();
+
+ PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
+ KeyFactory kf = KeyFactory.getInstance("RSA");
+ return kf.generatePrivate(spec);
+ }
+
+ protected String buildMessage(String method, HttpUrl url, long timestamp, String nonceStr, String body) {
+ String canonicalUrl = url.encodedPath();
+ if (url.encodedQuery() != null) {
+ canonicalUrl += "?" + url.encodedQuery();
+ }
+
+ return method + "\n"
+ + canonicalUrl + "\n"
+ + timestamp + "\n"
+ + nonceStr + "\n"
+ + body + "\n";
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaMiniProgramConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaMiniProgramConfig.java
new file mode 100644
index 0000000..c6a2993
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaMiniProgramConfig.java
@@ -0,0 +1,359 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.data.transferobject.wechat.*;
+import okhttp3.HttpUrl;
+import org.apache.http.StatusLine;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import jakarta.servlet.http.HttpServletRequest;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.Signature;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Base64;
+import java.util.UUID;
+
+@Component
+@Service
+@CacheConfig(cacheNames = "bwf_WXPayViaMiniProgramConfig_cache")
+public class WXPayViaMiniProgramConfig {
+ private static final Logger logger = LoggerFactory.getLogger(WXPayViaMiniProgramConfig.class);
+
+ @Value("${wx.mp_appid}")
+ private String mp_appid = "";
+ @Value("${wx.mp_secret}")
+ private String mp_secret = "";
+ @Value("${wx.mp_notify_url}")
+ private String mp_notify_url = "";
+ @Value("${wx.mch_id}")
+ private String mch_id = "";
+ @Value("${wx.paykey}")
+ private String paykey = "";
+ @Value("${wx.serialNo}")
+ private String serialNo = "";
+ @Value("${wx.privateKey}")
+ private String privateKey = "";
+
+ public ApiData GetWeChatConfig() {
+ WeChatConfigForGZHModel config = new WeChatConfigForGZHModel();
+ config.setAppId(mp_appid);
+ config.setMch_id(mch_id);
+ config.setPaykey(paykey);
+ config.setNotify_url(mp_notify_url);
+ config.setSecret(mp_secret);
+ config.setSerialNo(serialNo);
+ config.setPrivateKey(privateKey);
+
+ return ApiData.ok("", config);
+ }
+
+ public ApiData PayUseWX(WeChatPayConfigViewModel model) {
+ try {
+ //Check data
+ if (model == null || model.getCode().isEmpty() || model.getOrderid().isEmpty() || model.getTotalprice().isEmpty()) {
+ return ApiData.error("微信支付异常,请重新打开公众号");
+ }
+
+ //获取用户终端IP
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+ String userip = request.getRemoteAddr();
+
+ //获取支付配置
+ return PayUseWXV3(model.getRequesturl(), model.getCode(), userip, model.getOrderid(), model.getTotalprice(), model.getProductname());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.debug("PayUseWX.Exception: " + ex.getMessage());
+
+ return ApiData.error("微信支付配置异常,请选择其他支付方式");
+ }
+ }
+
+ @Cacheable
+ public ApiData PayUseWXV3(String requesturl, String code, String userip, String orderid, String totalprice, String productname) throws Exception {
+ WeChatConfigModel config = new WeChatConfigModel();
+
+ if (mp_appid.isEmpty()) {
+ return ApiData.error("微信支付参数appid异常,请重新打开公众号");
+ }
+ if (mch_id.isEmpty()) {
+ return ApiData.error("微信支付参数mch_id异常,请重新打开公众号");
+ }
+ if (mp_secret.isEmpty()) {
+ return ApiData.error("微信支付参数secret异常,请重新打开公众号");
+ }
+ if (code.isEmpty()) {
+ return ApiData.error("微信支付参数openid异常,请重新打开公众号");
+ }
+ if (userip.isEmpty()) {
+ return ApiData.error("微信支付参数userip异常,请重新打开公众号");
+ }
+ if (paykey.isEmpty()) {
+ return ApiData.error("微信支付参数paykey异常,请重新打开公众号");
+ }
+ if (mp_notify_url.isEmpty()) {
+ return ApiData.error("微信支付参数notify_url异常,请重新打开公众号");
+ }
+ if (orderid.isEmpty()) {
+ return ApiData.error("微信支付参数orderid异常,请重新打开公众号");
+ }
+ if (totalprice.isEmpty()) {
+ return ApiData.error("微信支付参数totalprice异常,请重新打开公众号");
+ }
+
+ double iTotalPrice = -1;
+ int total_fee = -1;
+ try {
+ iTotalPrice = Double.parseDouble(totalprice) * 100;
+ String iTotalPriceStr = iTotalPrice + "";
+ String[] iTotalPriceStrArr = iTotalPriceStr.split("\\.");
+ String iTotalPriceStr2 = iTotalPriceStrArr[0];
+ total_fee = Integer.parseInt(iTotalPriceStr2);
+
+ if (total_fee <= 0) {
+ return ApiData.error("微信支付total_fee异常,请重新打开公众号");
+ }
+ logger.debug("total_fee: " + total_fee);
+ } catch (Exception exception) {
+ return ApiData.error("微信支付total_fee异常,请重新打开公众号");
+ }
+
+ String nonceStr = CreateNonce();
+ long timestamp = CreateTimestamp();
+
+ // 获取统一下单号
+ MiniProgramJSCode2Session AccessToken = GetAccessToken(mp_appid, mp_secret, code);
+ if (AccessToken == null) {
+ return ApiData.error("获取AccessToken失败!");
+ }
+ logger.debug("getAccessTokenUri: " + JSON.toJSONString(AccessToken));
+
+ String openid = AccessToken.getOpenid();
+ logger.debug("openid: " + openid);
+
+ if (openid.isEmpty()) {
+ return ApiData.error("微信支付openid异常,请重新打开公众号");
+ }
+
+ StringBuilder str = new StringBuilder();
+ str.append("{");
+ str.append(String.format("\"mchid\":\"%s\",", mch_id));
+ if (orderid.length() > 30) {
+ orderid = orderid.substring(0, 30);
+ }
+ str.append(String.format("\"out_trade_no\":\"%s\",", orderid));
+ str.append("\"appid\":\"" + mp_appid + "\",");
+ str.append("\"description\":\"" + productname + "\",");
+ str.append("\"notify_url\":\"" + mp_notify_url + "\","); //支付成功后的通知地址
+ str.append("\"amount\":{");
+ str.append(String.format("\"total\":%s,", total_fee)); //支付金额
+ str.append("\"currency\":\"CNY\"");
+ str.append("},");
+ str.append("\"payer\":{");
+ str.append("\"openid\":\"" + openid + "\"");
+ str.append("}");
+ str.append("}");
+
+ String url = "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
+ String body = str.toString();
+ String authorization = GetAuthorization(url, "POST", body, timestamp, nonceStr);
+ String transactionsResponse = HttpPost(url, body, authorization);
+ logger.debug("PayUseWXV3.transactionsResponse:" + transactionsResponse);
+
+ TransactionsOrderPay gongZhongHaoAccessToken = JSON.parseObject(transactionsResponse, TransactionsOrderPay.class);
+ String preid = gongZhongHaoAccessToken.getPrepay_id();
+
+ logger.debug("PayUseWXV3.preid:" + preid);
+
+ if (preid.isEmpty()) {
+ return ApiData.error("微信支付参数preid异常,请选择其他支付方式");
+ }
+
+ String paySignmessage = String.format("%s\n%s\n%s\nprepay_id=%s\n", mp_appid, timestamp, nonceStr, preid);
+
+ logger.debug("GetAuthorization.paySignmessage:" + paySignmessage);
+
+ String paySign = Sign(paySignmessage, privateKey);
+
+ logger.debug("GetAuthorization.paySign:" + paySign);
+
+
+ config.setAppId(mp_appid);
+ config.setTimestamp(timestamp + "");
+ config.setNonceStr(nonceStr);
+ config.setPaySign(paySign);
+ config.setSignType("RSA");
+ config.setPrepay_id(preid);
+
+ logger.debug("WeChatConfigModel: " + JSON.toJSONString(config));
+
+ return ApiData.ok("操作成功!", config);
+ }
+
+ @Cacheable
+ public MiniProgramJSCode2Session GetAccessToken(String appid, String secret, String code) throws Exception {
+ String getAccessTokenUri = String.format("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", appid, secret, code);
+
+ String tokenData = HttpGet(getAccessTokenUri);
+
+ MiniProgramJSCode2Session data = JSON.parseObject(tokenData, MiniProgramJSCode2Session.class);
+
+ if (data != null && data.getOpenid() != null && !data.getOpenid().isEmpty()) {
+ return data;
+ } else {
+ return null;
+ }
+ }
+
+ public String CreateNonce() {
+ return UUID.randomUUID().toString();
+ }
+
+ public long CreateTimestamp() {
+ return System.currentTimeMillis() / 1000;
+ }
+
+ public static String HttpGet(String url) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build();
+ httpGet.setConfig(defaultRequestConfig);
+ httpGet.addHeader("Content-Type", "application/json;charset=UTF-8");
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpGet);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.debug("result: " + result);
+
+ return result;
+ } catch (Exception e) {
+ return null;
+ } finally {
+ if (response != null) response.close();
+ httpClient.close();
+ }
+ }
+
+ public static String HttpPost(String url, String json, String Authorization) throws Exception {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ HttpPost httpPost = new HttpPost(url);
+ RequestConfig defaultRequestConfig = RequestConfig.custom()
+ .setSocketTimeout(5000)
+ .setConnectTimeout(5000)
+ .setConnectionRequestTimeout(5000)
+ .build();
+
+ httpPost.setConfig(defaultRequestConfig);
+ httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
+ httpPost.addHeader("UserAgent", "faloo.com/WebRequest");
+ httpPost.addHeader("Accept", "application/json");
+ httpPost.addHeader("Authorization", Authorization);
+ httpPost.setEntity(new StringEntity(json, "UTF-8"));
+
+ CloseableHttpResponse response = null;
+
+ try {
+ response = httpClient.execute(httpPost);
+ StatusLine statusline = response.getStatusLine();
+ logger.info("statusline: " + statusline);
+
+ int statusCode = statusline.getStatusCode();
+ logger.info("statusCode: " + statusCode);
+
+ org.apache.http.HttpEntity entity = response.getEntity();
+ String result = EntityUtils.toString(entity, "UTF-8");
+ logger.info("result: " + result);
+
+ return result;
+ } catch (Exception e) {
+ return null;
+ } finally {
+ if (response != null) {
+ response.close();
+ }
+
+ httpClient.close();
+ }
+ }
+
+ protected String GetAuthorization(String url, String method, String body, long timestamp, String nonceStr) {
+ String message = buildMessage(method, HttpUrl.get(url), timestamp, nonceStr, body);
+ String signature = Sign(message, privateKey);
+
+ return "WECHATPAY2-SHA256-RSA2048 mchid=\"" + mch_id + "\","
+ + "nonce_str=\"" + nonceStr + "\","
+ + "timestamp=\"" + timestamp + "\","
+ + "serial_no=\"" + serialNo + "\","
+ + "signature=\"" + signature + "\"";
+ }
+
+ protected String Sign(String message, String privateKey) {
+ logger.debug("Sign.message:" + message);
+ logger.debug("Sign.privateKey:" + privateKey);
+ try {
+ Signature sign = Signature.getInstance("SHA256withRSA");
+ sign.initSign(getPrivateKey(privateKey));
+ sign.update(message.getBytes("utf-8"));
+
+ return Base64.getEncoder().encodeToString(sign.sign());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.debug(ex.getMessage());
+ }
+
+ return null;
+ }
+
+ public PrivateKey getPrivateKey(String keyString) throws Exception {
+ try {
+ keyString = keyString.replace("-----BEGIN PRIVATE KEY-----", "").replace("-----END PRIVATE KEY-----", "").replaceAll("\\s+", "");
+ return KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode(keyString)));
+ } catch (NoSuchAlgorithmException var2) {
+ throw new UnsupportedOperationException(var2);
+ } catch (InvalidKeySpecException var3) {
+ throw new IllegalArgumentException(var3);
+ }
+ }
+
+ protected String buildMessage(String method, HttpUrl url, long timestamp, String nonceStr, String body) {
+ String canonicalUrl = url.encodedPath();
+ if (url.encodedQuery() != null) {
+ canonicalUrl += "?" + url.encodedQuery();
+ }
+
+ return method + "\n"
+ + canonicalUrl + "\n"
+ + timestamp + "\n"
+ + nonceStr + "\n"
+ + body + "\n";
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaNativeConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaNativeConfig.java
new file mode 100644
index 0000000..096bfd6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WXPayViaNativeConfig.java
@@ -0,0 +1,271 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.utilities.HttpUtil;
+import com.farriver.bwf.data.transferobject.wechat.*;
+import okhttp3.HttpUrl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import jakarta.servlet.http.HttpServletRequest;
+import java.security.KeyFactory;
+import java.security.PrivateKey;
+import java.security.Signature;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Base64;
+import java.util.UUID;
+
+@Component
+@Service
+@CacheConfig(cacheNames = "bwf_WXPayViaNativeConfig_cache")
+public class WXPayViaNativeConfig {
+ private static final Logger logger = LoggerFactory.getLogger(WXPayViaNativeConfig.class);
+
+ @Value("${wx.kfpt_appid}")
+ private String kfpt_appid = "";
+ @Value("${wx.kfpt_secret}")
+ private String kfpt_secret = "";
+ @Value("${wx.kfpt_notify_url}")
+ private String kfpt_notify_url = "";
+ @Value("${wx.mch_id}")
+ private String mch_id = "";
+ @Value("${wx.paykey}")
+ private String paykey = "";
+ @Value("${wx.serialNo}")
+ private String serialNo = "";
+ @Value("${wx.privateKey}")
+ private String privateKey = "";
+
+ public ApiData GetWeChatConfig() {
+ WeChatConfigForGZHModel config = new WeChatConfigForGZHModel();
+ config.setAppId(kfpt_appid);
+ config.setMch_id(mch_id);
+// config.setPaykey(paykey);
+// config.setNotify_url(bwf_notify_url);
+// config.setSecret(bwf_secret);
+// config.setSerialNo(serialNo);
+// config.setPrivateKey(privateKey);
+
+ return ApiData.ok("", config);
+ }
+
+ public ApiData PayUseWX(WeChatPayConfigViewModel model) {
+ try {
+ //Check data
+ if (model == null || model.getCode().isEmpty() || model.getOrderid().isEmpty() || model.getTotalprice().isEmpty()) {
+ return ApiData.error("微信支付异常,请重新打开网页");
+ }
+
+ //获取用户终端IP
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+ String userip = request.getRemoteAddr();
+
+ //获取支付配置
+ return PayUseWXV3(model.getRequesturl(), model.getCode(), userip, model.getOrderid(), model.getTotalprice(), model.getProductname());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.debug("PayUseWX.Exception: " + ex.getMessage());
+
+ return ApiData.error("微信支付配置异常,请选择其他支付方式");
+ }
+ }
+
+ @Cacheable
+ public ApiData PayUseWXV3(String requesturl, String code, String userip, String orderid, String totalprice, String productname) throws Exception {
+
+ WeChatConfigModel config = new WeChatConfigModel();
+
+ if (kfpt_appid.isEmpty()) {
+ return ApiData.error("微信支付参数appid异常,请重新打开网页");
+ }
+ if (mch_id.isEmpty()) {
+ return ApiData.error("微信支付参数mch_id异常,请重新打开网页");
+ }
+ if (kfpt_secret.isEmpty()) {
+ return ApiData.error("微信支付参数secret异常,请重新打开网页");
+ }
+ if (code.isEmpty()) {
+ return ApiData.error("微信支付参数code异常,请重新打开网页");
+ }
+ if (userip.isEmpty()) {
+ return ApiData.error("微信支付参数userip异常,请重新打开网页");
+ }
+ if (paykey.isEmpty()) {
+ return ApiData.error("微信支付参数paykey异常,请重新打开网页");
+ }
+ if (kfpt_notify_url.isEmpty()) {
+ return ApiData.error("微信支付参数notify_url异常,请重新打开网页");
+ }
+ if (orderid.isEmpty()) {
+ return ApiData.error("微信支付参数orderid异常,请重新打开网页");
+ }
+ if (totalprice.isEmpty()) {
+ return ApiData.error("微信支付参数totalprice异常,请重新打开网页");
+ }
+
+ double iTotalPrice = -1;
+ int total_fee = -1;
+ try {
+ iTotalPrice = Double.parseDouble(totalprice) * 100;
+ String iTotalPriceStr = iTotalPrice + "";
+ String[] iTotalPriceStrArr = iTotalPriceStr.split("\\.");
+ String iTotalPriceStr2 = iTotalPriceStrArr[0];
+ total_fee = Integer.parseInt(iTotalPriceStr2);
+
+ if (total_fee <= 0) {
+ return ApiData.error("微信支付total_fee异常,请重新打开网页");
+ }
+ logger.debug("total_fee: " + total_fee);
+ } catch (Exception exception) {
+ return ApiData.error("微信支付total_fee异常,请重新打开网页");
+ }
+
+ String nonceStr = CreateNonce();
+ long timestamp = CreateTimestamp();
+
+ // 获取统一下单号
+ GongZhongHaoAccessToken AccessToken = GetAccessToken(kfpt_appid, kfpt_secret, code);
+ logger.debug("getAccessTokenUri: " + JSON.toJSONString(AccessToken));
+
+ String openid = AccessToken.getOpenid();
+ logger.debug("openid: " + openid);
+
+ if (openid.isEmpty()) {
+ return ApiData.error("微信支付openid异常,请重新打开网页");
+ }
+
+ StringBuilder str = new StringBuilder();
+ str.append("{");
+ str.append(String.format("\"mchid\":\"%s\",", mch_id));
+ str.append(String.format("\"out_trade_no\":\"%s\",", orderid.substring(0, 30)));
+ str.append("\"appid\":\"" + kfpt_appid + "\",");
+ str.append("\"description\":\"" + productname + "\",");
+ str.append("\"notify_url\":\"" + kfpt_notify_url + "\","); //支付成功后的通知地址
+ str.append("\"amount\":{");
+ str.append(String.format("\"total\":%s,", total_fee)); //支付金额
+ str.append("\"currency\":\"CNY\"");
+ str.append("},");
+ str.append("\"payer\":{");
+ str.append("\"openid\":\"" + openid + "\"");
+ str.append("}");
+ str.append("}");
+
+ String url = "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
+ String body = str.toString();
+ String authorization = GetAuthorization(url, "POST", body, timestamp, nonceStr);
+ String transactionsResponse = HttpUtil.Post(url, body, authorization);
+ logger.debug("PayUseWXV3.transactionsResponse:" + transactionsResponse);
+
+ TransactionsOrderPay gongZhongHaoAccessToken = JSON.parseObject(transactionsResponse, TransactionsOrderPay.class);
+ String preid = gongZhongHaoAccessToken.getPrepay_id();
+
+ logger.debug("PayUseWXV3.preid:" + preid);
+
+ if (preid.isEmpty()) {
+ return ApiData.error("微信支付参数preid异常,请选择其他支付方式");
+ }
+
+ String paySignmessage = String.format("%s\n%s\n%s\nprepay_id=%s\n", kfpt_appid, timestamp, nonceStr, preid);
+
+ logger.debug("GetAuthorization.paySignmessage:" + paySignmessage);
+
+ String paySign = Sign(paySignmessage, privateKey);
+
+ logger.debug("GetAuthorization.paySign:" + paySign);
+
+
+ config.setAppId(kfpt_appid);
+ config.setTimestamp(timestamp + "");
+ config.setNonceStr(nonceStr);
+ config.setPaySign(paySign);
+ config.setSignType("RSA");
+ config.setPrepay_id(preid);
+
+ logger.debug("WeChatConfigModel: " + JSON.toJSONString(config));
+
+ return ApiData.ok("操作成功!", config);
+ }
+
+ @Cacheable
+ public GongZhongHaoAccessToken GetAccessToken(String appid, String secret, String code) throws Exception {
+ String getAccessTokenUri = String.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", appid, secret, code);
+
+ String tokenData = HttpUtil.Get(getAccessTokenUri);
+
+ GongZhongHaoAccessToken data = JSON.parseObject(tokenData, GongZhongHaoAccessToken.class);
+
+ if (data != null && data.getOpenid() != null && !data.getOpenid().isEmpty()) {
+ return data;
+ } else {
+ return null;
+ }
+ }
+
+ public String CreateNonce() {
+ return UUID.randomUUID().toString();
+ }
+
+ public long CreateTimestamp() {
+ return System.currentTimeMillis() / 1000;
+ }
+
+ protected String GetAuthorization(String url, String method, String body, long timestamp, String nonceStr) {
+ String message = buildMessage(method, HttpUrl.get(url), timestamp, nonceStr, body);
+ String signature = Sign(message, privateKey);
+
+ return "WECHATPAY2-SHA256-RSA2048 mchid=\"" + mch_id + "\","
+ + "nonce_str=\"" + nonceStr + "\","
+ + "timestamp=\"" + timestamp + "\","
+ + "serial_no=\"" + serialNo + "\","
+ + "signature=\"" + signature + "\"";
+ }
+
+ protected String Sign(String message, String privateKey) {
+ logger.debug("Sign.message:" + message);
+ logger.debug("Sign.privateKey:" + privateKey);
+ try {
+ Signature sign = Signature.getInstance("SHA256withRSA");
+ sign.initSign(getPrivateKey(privateKey));
+ sign.update(message.getBytes("utf-8"));
+
+ return Base64.getEncoder().encodeToString(sign.sign());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ logger.debug(ex.getMessage());
+ }
+
+ return null;
+ }
+
+ public PrivateKey getPrivateKey(String privateKey) throws Exception {
+ byte[] keyBytes = privateKey.getBytes();
+
+ PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
+ KeyFactory kf = KeyFactory.getInstance("RSA");
+ return kf.generatePrivate(spec);
+ }
+
+ protected String buildMessage(String method, HttpUrl url, long timestamp, String nonceStr, String body) {
+ String canonicalUrl = url.encodedPath();
+ if (url.encodedQuery() != null) {
+ canonicalUrl += "?" + url.encodedQuery();
+ }
+
+ return method + "\n"
+ + canonicalUrl + "\n"
+ + timestamp + "\n"
+ + nonceStr + "\n"
+ + body + "\n";
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthController.java
new file mode 100644
index 0000000..9d4df1e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthController.java
@@ -0,0 +1,309 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.VerificationCode;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.VIPMasterViewModel;
+import com.farriver.bwf.data.transferobject.wechat.*;
+import com.farriver.bwf.service.config.RedisUtil;
+import com.farriver.bwf.service.system.SystemAliyunSMSService;
+import com.farriver.bwf.service.wechat.WeChatUserService;
+import com.farriver.bwf.web.initializer.config.JwtConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+
+@RestController
+@RequestMapping("/api/wechat/oauth")
+public class WeChatOauthController {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatOauthController.class);
+
+ @Resource
+ private WeChatUserService weChatUserService;
+
+ @Resource
+ private WeChatOauthViaGZHConfig weChatOauthViaGZHConfig;
+
+ @Resource
+ private WeChatOauthViaMiniProgramConfig weChatOauthViaMiniProgramConfig;
+
+ @Resource
+ private JwtConfig jwtConfig;
+
+ @Resource
+ private RedisUtil redisUtil;
+
+ @PostMapping("/GetAppConfig")
+ public ApiData GetAppConfig() {
+ try {
+ WeChatUserModel data = new WeChatUserModel();
+
+ if (data == null) {
+ return ApiData.error(LangConstants.MSG_INFO_FAILED);
+ } else {
+ String token = jwtConfig.getToken(data.getOpenid());
+ data.setToken(token);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ }
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/LoginByWXOpenID")
+ public ApiData LoginByWXOpenID(@RequestBody WeChatLoginInfo weChatLoginInfo) {
+ try {
+ if (weChatLoginInfo == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (weChatLoginInfo.getOpenid() == null || weChatLoginInfo.getOpenid().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ WeChatUserModel data = weChatUserService.WeChatLoginByOpenid(weChatLoginInfo);
+
+ if (data == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_USER_NOT_EXISTED);
+ } else {
+ String token = jwtConfig.getToken(data.getId());
+ data.setToken(token);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ }
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/loginBySMSCode")
+ public ApiData LoginBySMSCode(@RequestBody WeChatLoginInfo weChatLoginInfo) {
+ try {
+ if (weChatLoginInfo == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (weChatLoginInfo.getCellphone() == null || weChatLoginInfo.getCellphone().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (weChatLoginInfo.getRandomcode() == null || weChatLoginInfo.getRandomcode().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String value = (String) redisUtil.hget("WE_CHAT_LOGIN_SMS_CODE_LIST", weChatLoginInfo.getCellphone());
+ if (value == null || value.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_VERIFY_CODE_EXPIRED);
+ }
+ if (!weChatLoginInfo.getRandomcode().equals(value)) {
+ return ApiData.error(LangConstants.MSG_ERROR_VERIFY_CODE);
+ }
+
+ WeChatUserModel data = weChatUserService.WeChatLoginBySMSCode(weChatLoginInfo);
+
+ if (data == null) {
+ return ApiData.error(LangConstants.MSG_INFO_FAILED);
+ } else {
+ String token = jwtConfig.getToken(data.getId());
+ data.setToken(token);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ }
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/loginByPassword")
+ public ApiData LoginByPassword(@RequestBody WeChatLoginInfo weChatLoginInfo) {
+ try {
+ if (weChatLoginInfo == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (weChatLoginInfo.getCellphone() == null || weChatLoginInfo.getCellphone().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (weChatLoginInfo.getPassword() == null || weChatLoginInfo.getPassword().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ WeChatUserModel data = weChatUserService.WeChatLoginByPassword(weChatLoginInfo);
+
+ if (data == null) {
+ return ApiData.error(LangConstants.MSG_INFO_FAILED);
+ } else {
+ String token = jwtConfig.getToken(data.getId());
+ data.setToken(token);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ }
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/RegisterUser")
+ public ApiData RegisterUser(@RequestBody WeChatUserModel model) {
+ try {
+ VIPMasterViewModel newUser = weChatUserService.RegisterUser(model);
+ if (newUser == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_USER_NOT_EXISTED);
+ }
+
+ String token = jwtConfig.getToken(newUser.getId());
+ newUser.setToken(token);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, newUser);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/RegisterUserByCellphone")
+ public ApiData RegisterUserByCellphone(@RequestBody WeChatUserModel model) {
+ try {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getCellphone() == null || model.getCellphone().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getRandomcode() == null || model.getRandomcode().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String value = (String) redisUtil.hget("WE_CHAT_LOGIN_SMS_CODE_LIST", model.getCellphone());
+ if (value == null || value.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_VERIFY_CODE_EXPIRED);
+ }
+ if (!model.getRandomcode().equals(value)) {
+ return ApiData.error(LangConstants.MSG_ERROR_VERIFY_CODE);
+ }
+
+ VIPMasterViewModel newUser = weChatUserService.RegisterUser(model);
+
+ String token = jwtConfig.getToken(newUser.getId());
+ newUser.setToken(token);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, newUser);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/ResetPasswordCellphone")
+ public ApiData ResetPasswordCellphone(@RequestBody WeChatUserModel model) {
+ try {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getCellphone() == null || model.getCellphone().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+ if (model.getRandomcode() == null || model.getRandomcode().isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ String value = (String) redisUtil.hget("WE_CHAT_LOGIN_SMS_CODE_LIST", model.getCellphone());
+ if (value == null || value.isEmpty()) {
+ return ApiData.error(LangConstants.MSG_ERROR_VERIFY_CODE_EXPIRED);
+ }
+ if (!model.getRandomcode().equals(value)) {
+ return ApiData.error(LangConstants.MSG_ERROR_VERIFY_CODE);
+ }
+
+ return weChatUserService.ResetPassword(model);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @GetMapping("/GetSMSCode")
+ public ApiData GetSMSCode(@RequestParam(defaultValue = "") String cellphone) {
+ try {
+ String randomCode = SystemAliyunSMSService.getRandomCode();
+ redisUtil.hset("WE_CHAT_LOGIN_SMS_CODE_LIST", cellphone, randomCode, 300);
+ redisUtil.hset("RESET_PASS_PHONE_SMS_CODE_LIST", cellphone, randomCode, 300);
+ SystemAliyunSMSService aliyunSMSService = new SystemAliyunSMSService();
+ aliyunSMSService.sendSms(cellphone, randomCode);
+
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @GetMapping("/GetAccessTokenForGZH")
+ public ApiData GetAccessTokenForGZH(@RequestParam(defaultValue = "") String code) {
+ try {
+ return weChatOauthViaGZHConfig.GetAccessToken(code);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @GetMapping("/GetAccessTokenForMiniProgram")
+ public ApiData GetAccessTokenForMiniProgram() {
+ try {
+ return weChatOauthViaMiniProgramConfig.GetAccessToken();
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @GetMapping("/GetWXCode2SessionForMiniProgram")
+ public ApiData GetWXCode2SessionForMiniProgram(@RequestParam(defaultValue = "") String code) {
+ try {
+ return weChatOauthViaMiniProgramConfig.GetWXCode2Session(code);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @PostMapping("/GetUserPhoneNumberForMiniProgram")
+ public ApiData GetUserPhoneNumberForMiniProgram(@RequestBody MiniProgramUserPhoneNumberParam model) {
+ try {
+ return weChatOauthViaMiniProgramConfig.GetUserPhoneNumber(model);
+ } catch (Exception ex) {
+ logger.error(ex.getMessage(), ex);
+
+ return ApiData.error(LangConstants.MSG_INFO_FAILED, ex.getMessage());
+ }
+ }
+
+ @GetMapping("/code")
+ public void verifyCode(@RequestParam("account") String account, HttpServletRequest request, HttpServletResponse resp) throws IOException {
+ VerificationCode code = new VerificationCode();
+ BufferedImage image = code.getImage();
+
+ redisUtil.hset("WE_CHAT_LOGIN_VERIFY_CODE_LIST", account, code.getText(), 300);
+
+ VerificationCode.output(image, resp.getOutputStream());
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaGZHConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaGZHConfig.java
new file mode 100644
index 0000000..8a2f54f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaGZHConfig.java
@@ -0,0 +1,51 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.HttpUtil;
+import com.farriver.bwf.data.transferobject.wechat.GongZhongHaoAccessToken;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+@Component
+@Service
+@CacheConfig(cacheNames = "bwf_WeChatOauthViaGZHConfig_cache")
+public class WeChatOauthViaGZHConfig {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatOauthViaGZHConfig.class);
+
+ @Value("${wx.gzh_appid}")
+ private String gzh_appid = "";
+ @Value("${wx.gzh_secret}")
+ private String gzh_secret = "";
+ @Value("${wx.gzh_notify_url}")
+ private String gzh_notify_url = "";
+ @Value("${wx.mch_id}")
+ private String mch_id = "";
+ @Value("${wx.paykey}")
+ private String paykey = "";
+ @Value("${wx.serialNo}")
+ private String serialNo = "";
+ @Value("${wx.privateKey}")
+ private String privateKey = "";
+
+ @Cacheable
+ public ApiData GetAccessToken(String code) throws Exception {
+ String getAccessTokenUri = String.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", gzh_appid, gzh_secret, code);
+
+ String tokenData = HttpUtil.Get(getAccessTokenUri);
+
+ GongZhongHaoAccessToken data = JSON.parseObject(tokenData, GongZhongHaoAccessToken.class);
+
+ if (data != null && data.getOpenid() != null && !data.getOpenid().isEmpty()) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ } else {
+ return ApiData.error(LangConstants.MSG_INFO_FAILED);
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaMiniProgramConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaMiniProgramConfig.java
new file mode 100644
index 0000000..ae5c427
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOauthViaMiniProgramConfig.java
@@ -0,0 +1,83 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.common.utilities.HttpUtil;
+import com.farriver.bwf.data.transferobject.wechat.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+@Component
+@Service
+@CacheConfig(cacheNames = "bwf_WeChatOauthViaMiniProgramConfig_cache")
+public class WeChatOauthViaMiniProgramConfig {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatOauthViaMiniProgramConfig.class);
+
+ @Value("${wx.mp_appid}")
+ private String mp_appid = "";
+ @Value("${wx.mp_secret}")
+ private String mp_secret = "";
+ @Value("${wx.mp_notify_url}")
+ private String mp_notify_url = "";
+ @Value("${wx.mch_id}")
+ private String mch_id = "";
+ @Value("${wx.paykey}")
+ private String paykey = "";
+ @Value("${wx.serialNo}")
+ private String serialNo = "";
+ @Value("${wx.privateKey}")
+ private String privateKey = "";
+
+ @Cacheable
+ public ApiData GetAccessToken() throws Exception {
+ String url = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", mp_appid, mp_secret);
+
+ String tokenData = HttpUtil.Get(url);
+
+ MiniProgramAccessToken data = JSON.parseObject(tokenData, MiniProgramAccessToken.class);
+
+ if (data != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ } else {
+ return ApiData.error(LangConstants.MSG_INFO_FAILED);
+ }
+ }
+
+ @Cacheable
+ public ApiData GetWXCode2Session(String code) throws Exception {
+ String url = String.format("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", mp_appid, mp_secret, code);
+
+ String tokenData = HttpUtil.Get(url);
+
+ MiniProgramJSCode2Session data = JSON.parseObject(tokenData, MiniProgramJSCode2Session.class);
+
+ if (data != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ } else {
+ return ApiData.error(LangConstants.MSG_INFO_FAILED);
+ }
+ }
+
+ @Cacheable
+ public ApiData GetUserPhoneNumber(MiniProgramUserPhoneNumberParam model) throws Exception {
+ String url = String.format("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s", model.getAccess_token());
+
+ MiniProgramUserPhoneNumberCode code = new MiniProgramUserPhoneNumberCode();
+ code.setCode(model.getCode());
+ String tokenData = HttpUtil.Post(url, JSON.toJSONString(code), "");
+
+ MiniProgramUserPhoneNumberResult data = JSON.parseObject(tokenData, MiniProgramUserPhoneNumberResult.class);
+
+ if (data != null) {
+ return ApiData.ok(LangConstants.MSG_INFO_SUCCESS, data);
+ } else {
+ return ApiData.error(LangConstants.MSG_INFO_FAILED);
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrderActiveController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrderActiveController.java
new file mode 100644
index 0000000..f5603fc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrderActiveController.java
@@ -0,0 +1,39 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.viewmodel.order.OrderActiveViewModel;
+import com.farriver.bwf.service.order.OrderActiveService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/wechat/order/active")
+public class WeChatOrderActiveController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatOrderActiveController.class);
+
+ @Resource
+ OrderActiveService service;
+
+ @PostMapping("/makeorder")
+ public ApiData MakeOrder(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.MakeOrder(model);
+ }
+
+ @PostMapping("/pay")
+ public ApiData Pay(@RequestBody OrderActiveViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return service.Pay(model);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrganizationController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrganizationController.java
new file mode 100644
index 0000000..2024004
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatOrganizationController.java
@@ -0,0 +1,81 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.organization.*;
+import com.farriver.bwf.service.organization.*;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/wechat/organization")
+public class WeChatOrganizationController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatOrganizationController.class);
+
+ @Resource
+ OrganizationMasterService organizationMasterService;
+
+ @Resource
+ OrganizationDepartmentService organizationDepartmentService;
+
+ @Resource
+ OrganizationMajorService organizationMajorService;
+
+ @Resource
+ OrganizationGradeService organizationGradeService;
+
+ @Resource
+ OrganizationClassService organizationClassService;
+
+ @PostMapping("/master/list")
+ public ApiPageData GetOrganizationMasterList(@RequestBody OrganizationMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return organizationMasterService.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/department/list")
+ public ApiPageData GetOrganizationDepartmentList(@RequestBody OrganizationDepartmentQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return organizationDepartmentService.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/major/list")
+ public ApiPageData GetOrganizationMajorList(@RequestBody OrganizationMajorQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return organizationMajorService.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/grade/list")
+ public ApiPageData GetOrganizationGradeList(@RequestBody OrganizationGradeQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return organizationGradeService.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/class/list")
+ public ApiPageData GetOrganizationClassList(@RequestBody OrganizationClassQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return organizationClassService.GetViewPageList(queryObject);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatProductController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatProductController.java
new file mode 100644
index 0000000..d965806
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatProductController.java
@@ -0,0 +1,74 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.product.ProductCategoryQueryObject;
+import com.farriver.bwf.data.transferobject.queryobject.product.ProductMasterQueryObject;
+import com.farriver.bwf.service.product.ProductService;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/wechat/product")
+public class WeChatProductController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatProductController.class);
+
+ @Resource
+ ProductService productService;
+
+ @PostMapping("/master/list")
+ public ApiPageData GetProductMasterList(@RequestBody ProductMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return productService.GetProductMasterList(queryObject);
+ }
+
+ @GetMapping("/listbycategoryid")
+ public ApiPageData GetProductListByCategoryId(@RequestParam(defaultValue = "") String categoryid) {
+ if (categoryid == null || categoryid.isEmpty())
+ return null;
+
+ return productService.GetProductListByCategoryId(categoryid);
+ }
+
+ @GetMapping("/detailbymasterid")
+ public ApiData GetProductDetailByMasterId(@RequestParam(defaultValue = "") String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return null;
+
+ return productService.GetProductDetailByMasterId(masterid);
+ }
+
+ @PostMapping("/category/list")
+ public ApiPageData GetProductCategoryList(@RequestBody ProductCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return productService.GetProductCategoryList(queryObject);
+ }
+
+ @PostMapping("/category/listwithproducts")
+ public ApiPageData GetProductCategoryWithProductList(@RequestBody ProductCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return productService.GetProductCategoryWithProductList(queryObject);
+ }
+
+ @GetMapping("/category/listbyparent")
+ public ApiData GetProductCategoryListByParentName(@RequestParam(defaultValue = "") String parentname) {
+ if (parentname == null || parentname.isEmpty())
+ return null;
+
+ return productService.GetProductCategoryListByParentName(parentname);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatQuestionController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatQuestionController.java
new file mode 100644
index 0000000..66a8d57
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatQuestionController.java
@@ -0,0 +1,99 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.question.*;
+import com.farriver.bwf.service.question.*;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/wechat/question")
+public class WeChatQuestionController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatQuestionController.class);
+
+ @Resource
+ QuestionSubjectService questionSubjectService;
+
+ @Resource
+ QuestionSubjectGradeRelationService questionSubjectGradeRelationService;
+
+ @Resource
+ QuestionMasterService questionMasterService;
+
+ @Resource
+ QuestionCategoryService questionCategoryService;
+
+ @Resource
+ QuestionPaperService questionPaperService;
+
+ @Resource
+ QuestionPaperCategoryService questionPaperCategoryService;
+
+ @PostMapping("/subject/list")
+ public ApiPageData GetQuestionSubjectList(@RequestBody QuestionSubjectGradeRelationQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return questionSubjectGradeRelationService.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/master/list")
+ public ApiPageData GetQuestionMasterList(@RequestBody QuestionMasterQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return questionMasterService.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/master/listbypaperid")
+ public ApiData GetQuestionMasterListByPaperid(@RequestParam(defaultValue = "") String paperid) {
+ if (paperid == null || paperid.isEmpty())
+ return null;
+
+ return questionMasterService.GetQuestionMasterListByPaperid(paperid);
+ }
+
+ @GetMapping("/master/detail")
+ public ApiData GetDetail(@RequestParam(defaultValue = "") String id) {
+ if (id == null || id.isEmpty())
+ return null;
+
+ return questionMasterService.GetViewDetailWithBLOBs(id);
+ }
+
+ @PostMapping("/category/list")
+ public ApiPageData GetQuestionCategoryList(@RequestBody QuestionCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return questionCategoryService.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/paper/list")
+ public ApiPageData GetQuestionPaperList(@RequestBody QuestionPaperQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return questionPaperService.GetViewPageList(queryObject);
+ }
+
+ @PostMapping("/paper/category/list")
+ public ApiPageData GetQuestionPaperCategoryList(@RequestBody QuestionPaperCategoryQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return questionPaperCategoryService.GetViewPageList(queryObject);
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatVipController.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatVipController.java
new file mode 100644
index 0000000..b069328
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/controller/wechat/WeChatVipController.java
@@ -0,0 +1,104 @@
+package com.farriver.bwf.web.controller.wechat;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.model.ApiPageData;
+import com.farriver.bwf.common.statics.LangConstants;
+import com.farriver.bwf.data.transferobject.queryobject.vip.VIPDepositActivityQueryObject;
+import com.farriver.bwf.data.transferobject.viewmodel.vip.*;
+import com.farriver.bwf.service.vip.*;
+import com.farriver.bwf.web.controller.admin.AdminControllerBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/wechat/vip")
+public class WeChatVipController extends AdminControllerBase {
+ private static final Logger logger = LoggerFactory.getLogger(WeChatVipController.class);
+
+ @Resource
+ VIPMasterOrganizationService vipMasterOrganizationService;
+
+ @Resource
+ VIPMasterService vipMasterService;
+
+ @Resource
+ VIPDepositActivityService vipDepositActivityService;
+
+ @Resource
+ VIPMasterWalletService vipMasterWalletService;
+
+ @Resource
+ VIPMasterPaperRelationService vipMasterPaperRelationService;
+
+ @PostMapping("/organization/set")
+ public ApiData SetVIPOrganization(@RequestBody VIPMasterOrganizationViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return vipMasterOrganizationService.SetVIPOrganization(model);
+ }
+
+ @GetMapping("/organization/detail")
+ public VIPMasterOrganizationViewModel GetVIPMasterOrganizationDetail(@RequestParam(defaultValue = "") String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return null;
+
+ return vipMasterOrganizationService.GetViewDetailByMasterId(masterid);
+ }
+
+ @PostMapping("/master/update")
+ public ApiData UpdateVIPMaster(@RequestBody VIPMasterViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return vipMasterService.Update(model);
+ }
+
+ @PostMapping("/deposit/activity/list")
+ public ApiPageData GetVIPDepositActivityList(@RequestBody VIPDepositActivityQueryObject queryObject) {
+ if (queryObject == null) {
+ return ApiPageData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return vipDepositActivityService.GetViewPageList(queryObject);
+ }
+
+ @GetMapping("/master/wallet/detail")
+ public VIPMasterWalletViewModel GetVIPMasterWalletDetail(@RequestParam(defaultValue = "") String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return null;
+
+ return vipMasterWalletService.GetViewDetail(masterid);
+ }
+
+ @PostMapping("/master/wallet/charge")
+ public ApiData ChargeVIPMasterWalletDetail(@RequestBody VIPMasterWalletChargeViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return vipMasterWalletService.Charge(model);
+ }
+
+ @PostMapping("/master/wallet/recharge")
+ public ApiData RechargeVIPMasterWalletDetail(@RequestBody VIPMasterWalletRechargeViewModel model) {
+ if (model == null) {
+ return ApiData.error(LangConstants.MSG_ERROR_PARAMETERS);
+ }
+
+ return vipMasterWalletService.Recharge(model);
+ }
+
+ @GetMapping("/paper/relation/list")
+ public ApiPageData GetVIPPaperRelationList(@RequestParam(defaultValue = "") String masterid) {
+ if (masterid == null || masterid.isEmpty())
+ return null;
+
+ return vipMasterPaperRelationService.GetViewPageListByPrimaryKey(masterid);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/NacosRegisterOnWar.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/NacosRegisterOnWar.java
new file mode 100644
index 0000000..9bd9c8c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/NacosRegisterOnWar.java
@@ -0,0 +1,53 @@
+package com.farriver.bwf.web.initializer;
+
+import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.Query;
+import java.lang.management.ManagementFactory;
+import java.util.Set;
+
+@Component
+@Slf4j
+public class NacosRegisterOnWar implements ApplicationRunner {
+
+ @Autowired(required = false)
+ private NacosAutoServiceRegistration registration;
+
+ @Value("${server.port}")
+ Integer port;
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ if (registration != null && port != null) {
+ Integer tomcatPort = port;
+ try {
+ tomcatPort = Integer.valueOf(getTomcatPort());
+ registration.setPort(tomcatPort);
+ } catch (Exception e) {
+ log.warn("获取外部Tomcat端口异常:", e);
+ }
+
+ registration.start();
+ }
+ }
+
+ /**
+ * 获取外部tomcat端口
+ */
+ public String getTomcatPort() throws Exception {
+ MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
+ Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
+ if (!objectNames.isEmpty())
+ return objectNames.iterator().next().getKeyProperty("port");
+
+ return "8080";
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebMvcConfiguration.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebMvcConfiguration.java
new file mode 100644
index 0000000..1719636
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebMvcConfiguration.java
@@ -0,0 +1,35 @@
+package com.farriver.bwf.web.initializer;
+
+import com.farriver.bwf.web.initializer.interceptor.CrossInterceptor;
+import com.farriver.bwf.web.initializer.interceptor.OptionsInterceptor;
+import com.farriver.bwf.web.initializer.interceptor.TokenInterceptor;
+import com.farriver.bwf.web.initializer.interceptor.WelcomeWebRequestInterceptor;
+import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+class WebMvcConfiguration implements WebMvcConfigurer {
+
+ @Resource
+ private OptionsInterceptor optionsInterceptor;
+
+ @Resource
+ private CrossInterceptor crossInterceptor;
+
+ @Resource
+ private TokenInterceptor tokenInterceptor;
+
+ @Resource
+ private WelcomeWebRequestInterceptor welcomeWebRequestInterceptor;
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(crossInterceptor).addPathPatterns("/**");
+ registry.addInterceptor(optionsInterceptor).addPathPatterns("/**");
+ registry.addInterceptor(tokenInterceptor).addPathPatterns("/**");
+
+ registry.addWebRequestInterceptor(welcomeWebRequestInterceptor).addPathPatterns("/**");
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebSocketConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebSocketConfig.java
new file mode 100644
index 0000000..995f90e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/WebSocketConfig.java
@@ -0,0 +1,26 @@
+package com.farriver.bwf.web.initializer;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.messaging.simp.config.MessageBrokerRegistry;
+import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
+import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
+import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
+
+@Configuration
+@EnableWebSocketMessageBroker
+public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
+ private static final Logger logger = LoggerFactory.getLogger(WebSocketConfig.class);
+
+ @Override
+ public void registerStompEndpoints(StompEndpointRegistry registry) {
+ registry.addEndpoint("api/ws/ep").setAllowedOrigins("*").withSockJS();
+ }
+
+ @Override
+ public void configureMessageBroker(MessageBrokerRegistry registry) {
+ registry.enableSimpleBroker("/topic", "/user", "/mass", "/alone");
+ registry.setUserDestinationPrefix("/user");
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/aop/AuditTrailAop.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/aop/AuditTrailAop.java
new file mode 100644
index 0000000..07813cc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/aop/AuditTrailAop.java
@@ -0,0 +1,53 @@
+package com.farriver.bwf.web.initializer.aop;
+
+import jakarta.servlet.http.HttpServletRequest;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.util.Arrays;
+
+@Aspect
+@Component
+public class AuditTrailAop {
+ private final Logger logger = LoggerFactory.getLogger(AuditTrailAop.class);
+
+ @Pointcut("execution(public * com.farriver.bwf.web.controller..*.*(..))")
+ public void ControllerLog() {
+
+ }
+
+ @Before("ControllerLog()")
+ public void logBeforeController(JoinPoint joinPoint) {
+ LogRecord(joinPoint);
+ }
+
+ @After("ControllerLog()")
+ public void logAfterController(JoinPoint joinPoint) {
+ LogRecord(joinPoint);
+ }
+
+ private void LogRecord(JoinPoint joinPoint) {
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ if(requestAttributes==null)
+ return;
+
+ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+
+ logger.debug("URL: " + request.getRequestURL().toString());
+ logger.debug("HTTP_METHOD: " + request.getMethod());
+ logger.debug("IP: " + request.getRemoteAddr());
+ logger.debug("ARGS: " + Arrays.toString(joinPoint.getArgs()));
+ logger.debug("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
+ logger.debug("TARGET: " + joinPoint.getTarget());
+ logger.debug("THIS: " + joinPoint.getThis());
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/DFSClientConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/DFSClientConfig.java
new file mode 100644
index 0000000..b35dcbf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/DFSClientConfig.java
@@ -0,0 +1,7 @@
+package com.farriver.bwf.web.initializer.config;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class DFSClientConfig {
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FastDFSClientConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FastDFSClientConfig.java
new file mode 100644
index 0000000..7284ecf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FastDFSClientConfig.java
@@ -0,0 +1,86 @@
+package com.farriver.bwf.web.initializer.config;
+
+import com.github.tobato.fastdfs.FdfsClientConfig;
+import com.github.tobato.fastdfs.domain.fdfs.StorePath;
+import com.github.tobato.fastdfs.domain.proto.storage.DownloadCallback;
+import com.github.tobato.fastdfs.domain.upload.ThumbImage;
+import com.github.tobato.fastdfs.service.FastFileStorageClient;
+import jakarta.annotation.Resource;
+import org.apache.commons.io.FilenameUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Import;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+@Import(FdfsClientConfig.class)
+@Component
+public class FastDFSClientConfig {
+ private static final Logger logger = LoggerFactory.getLogger(FastDFSClientConfig.class);
+
+ @Resource
+ FastFileStorageClient storageClient;
+
+ @Value("${nginx.host}")
+ private String nginxHost;
+
+ @Value("${nginx.port}")
+ private String nginxPort;
+
+ @Value("${fdfs.thumbImage.width}")
+ private int thumbImageWeight = 150;
+
+ @Value("${fdfs.thumbImage.height}")
+ private int thumbImageHeight = 150;
+
+ @Value("${fdfs.soTimeout}")
+ private long soTimeout = 1500;
+
+ @Value("${fdfs.connectTimeout}")
+ private long connectTimeout = 600;
+
+ private ThumbImage thumbImage;
+
+ public ThumbImage getThumbImage() {
+ if (thumbImage == null) {
+ thumbImage = new ThumbImage(thumbImageWeight, thumbImageHeight);
+ }
+ return thumbImage;
+ }
+
+ public String uploadFile(MultipartFile file) throws IOException {
+ StorePath storePath = storageClient.uploadFile(file.getInputStream(),
+ file.getSize(),
+ FilenameUtils.getExtension(file.getOriginalFilename()),
+ null);
+
+ String path = thumbImage.getThumbImagePath(storePath.getPath());
+ System.out.println("thumbImage :" + path);
+
+ return getResAccessUrl(storePath);
+ }
+
+ public void delFile(String filePath) {
+ storageClient.deleteFile(filePath);
+ }
+
+ public InputStream download(String groupName, String path) {
+ InputStream ins = storageClient.downloadFile(groupName, path, new DownloadCallback<InputStream>() {
+ @Override
+ public InputStream recv(InputStream ins) throws IOException {
+ return ins;
+ }
+ });
+ return ins;
+ }
+
+ private String getResAccessUrl(StorePath storePath) {
+ String fileUrl = "http://" + nginxHost + ":" + nginxPort + "/" + storePath.getFullPath();
+
+ return fileUrl;
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FeignConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FeignConfig.java
new file mode 100644
index 0000000..fa436f1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/FeignConfig.java
@@ -0,0 +1,19 @@
+package com.farriver.bwf.web.initializer.config;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+@Configuration
+public class FeignConfig implements RequestInterceptor {
+ @Override
+ public void apply(RequestTemplate requestTemplate) {
+ ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = attributes.getRequest();
+
+ requestTemplate.header("Authorization", request.getHeader("Authorization"));
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/JwtConfig.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/JwtConfig.java
new file mode 100644
index 0000000..f1a5535
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/config/JwtConfig.java
@@ -0,0 +1,170 @@
+package com.farriver.bwf.web.initializer.config;
+
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.security.Keys;
+import io.jsonwebtoken.security.SecureDigestAlgorithm;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import javax.crypto.SecretKey;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Component
+@Configurable
+@ConfigurationProperties("jwt")
+public class JwtConfig {
+ private static final Logger logger = LoggerFactory.getLogger(JwtConfig.class);
+
+ private Boolean tokenSwitch = false;
+
+ private String header = "Authorization";
+
+ private long expire = 3600;
+
+ private String secret = "farriver";
+
+ private List ignoredStatic;
+
+ private List ignoredApi;
+
+ private List<String> ignoreCheckTokenUriList = new ArrayList<>();
+
+ public List getIgnoredStatic() {
+ return ignoredStatic;
+ }
+
+ public void setIgnoredStatic(List ignoredStatic) {
+ this.ignoredStatic = ignoredStatic;
+ InitIgnoreCheckTokenUriList(ignoredStatic);
+ }
+
+ public List getIgnoredApi() {
+ return ignoredApi;
+ }
+
+ public void setIgnoredApi(List ignoredApi) {
+ this.ignoredApi = ignoredApi;
+ InitIgnoreCheckTokenUriList(ignoredApi);
+ }
+
+ public List<String> getIgnoreCheckTokenUriList() {
+ InitIgnoreCheckTokenUriList(this.ignoredStatic);
+ InitIgnoreCheckTokenUriList(this.ignoredApi);
+
+ return ignoreCheckTokenUriList;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+
+ public long getExpire() {
+ return expire;
+ }
+
+ public void setExpire(long expire) {
+ this.expire = expire;
+ }
+
+ public String getHeader() {
+ return header;
+ }
+
+ public void setHeader(String header) {
+ this.header = header;
+ }
+
+ public Boolean getTokenSwitch() {
+ return tokenSwitch;
+ }
+
+ public void setTokenSwitch(Boolean tokenSwitch) {
+ this.tokenSwitch = tokenSwitch;
+ }
+
+ //Methods
+ public String getToken(String identityId) {
+ Date nowDate = new Date();
+ SecureDigestAlgorithm<SecretKey, SecretKey> algorithm = Jwts.SIG.HS256;
+ SecretKey key = Keys.hmacShaKeyFor(secret.getBytes());
+
+ Date expireDate = new Date(nowDate.getTime() + expire * 1000);
+ return Jwts.builder()
+ .header().add("typ", "JWT").and()
+ .subject(identityId)
+ .issuedAt(nowDate)
+ .expiration(expireDate)
+ .signWith(key, algorithm)
+ .compact();
+ }
+
+ public Claims getTokenClaim(String token) {
+ try {
+ SecretKey key = Keys.hmacShaKeyFor(secret.getBytes());
+
+ return Jwts.parser()
+ .verifyWith(key)
+ .build()
+ .parseSignedClaims(token)
+ .getPayload();
+ } catch (Exception e) {
+ logger.debug(e.getMessage());
+ }
+ return null;
+ }
+
+ public boolean isTokenExpired(Date expirationTime) {
+ return expirationTime.before(new Date());
+ }
+
+ public void InitIgnoreCheckTokenUriList(List<String> ignorelist) {
+ try {
+ if (ignorelist != null && !ignorelist.isEmpty()) {
+ if (ignoreCheckTokenUriList == null) {
+ ignoreCheckTokenUriList = new ArrayList<>();
+ }
+
+ for (String ignore : ignorelist) {
+ if (!ignoreCheckTokenUriList.contains(ignore))
+ ignoreCheckTokenUriList.add(ignore);
+ }
+ }
+ } catch (Exception ex) {
+ logger.error(ex.getMessage());
+ }
+ }
+
+ public boolean isIgnoredUri(String uri) {
+ for (String ignoreUriPath : getIgnoreCheckTokenUriList()) {
+ try {
+ ignoreUriPath = ignoreUriPath.trim();
+
+ if (ignoreUriPath.endsWith("*")) {
+ String[] prefixArr = ignoreUriPath.split("\\*");
+ String prefix = prefixArr[0];
+ if (uri.startsWith(prefix)) {
+ return true;
+ }
+ } else {
+ if (uri.contains(ignoreUriPath)) {
+ return true;
+ }
+ }
+ } catch (Exception ex) {
+ logger.error(ex.getMessage());
+ }
+ }
+
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/exception/GlobalExceptionHandler.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/exception/GlobalExceptionHandler.java
new file mode 100644
index 0000000..d32a335
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/exception/GlobalExceptionHandler.java
@@ -0,0 +1,28 @@
+package com.farriver.bwf.web.initializer.exception;
+
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.common.statics.LangConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import java.sql.SQLException;
+
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+ private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
+
+ @ExceptionHandler(SQLException.class)
+ public ApiData sqlException(SQLException e) {
+ logger.error("system error: ", e);
+
+ return ApiData.error(LangConstants.MSG_ERROR_SYSTEM);
+ }
+
+ @ExceptionHandler(Exception.class)
+ public ApiData GlobalException(Exception e) {
+ logger.error("system error: ", e);
+ return ApiData.error(LangConstants.MSG_ERROR_SYSTEM);
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/CrossInterceptor.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/CrossInterceptor.java
new file mode 100644
index 0000000..e5cbfeb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/CrossInterceptor.java
@@ -0,0 +1,36 @@
+package com.farriver.bwf.web.initializer.interceptor;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+@Component
+@Configuration
+@ConfigurationProperties(prefix = "spring.cross")
+public class CrossInterceptor implements HandlerInterceptor {
+ private static final Logger logger = LoggerFactory.getLogger(CrossInterceptor.class);
+
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+ logger.debug("CrossInterceptor.preHandle is executed.");
+
+ response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
+ response.setHeader("Access-Control-Allow-Credentials", "true");
+ response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");
+ response.setHeader("Access-Control-Allow-Headers", "*");
+
+ return true;
+ }
+
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
+ }
+
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/OptionsInterceptor.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/OptionsInterceptor.java
new file mode 100644
index 0000000..565b01b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/OptionsInterceptor.java
@@ -0,0 +1,37 @@
+package com.farriver.bwf.web.initializer.interceptor;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpMethod;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.PrintWriter;
+
+@Component
+public class OptionsInterceptor implements HandlerInterceptor {
+ private static final Logger logger = LoggerFactory.getLogger(OptionsInterceptor.class);
+
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+ logger.debug("OptionsInterceptor.preHandle is executed.");
+
+ if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
+ response.setStatus(HttpServletResponse.SC_OK);
+ PrintWriter out = response.getWriter();
+ out.flush();
+ out.close();
+ }
+
+ return true;
+ }
+
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
+ }
+
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/TokenInterceptor.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/TokenInterceptor.java
new file mode 100644
index 0000000..23b6610
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/TokenInterceptor.java
@@ -0,0 +1,106 @@
+package com.farriver.bwf.web.initializer.interceptor;
+
+import com.alibaba.fastjson2.JSON;
+import com.farriver.bwf.common.model.ApiData;
+import com.farriver.bwf.data.transferobject.viewmodel.security.AccountMasterViewModel;
+import com.farriver.bwf.service.security.SecurityService;
+import com.farriver.bwf.web.initializer.config.JwtConfig;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.jsonwebtoken.Claims;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+@Component
+public class TokenInterceptor implements HandlerInterceptor {
+ private static final Logger logger = LoggerFactory.getLogger(TokenInterceptor.class);
+
+ @Resource
+ private JwtConfig jwtConfig;
+
+ @Resource
+ SecurityService securityService;
+
+ public boolean preHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Object handler) throws Exception {
+ logger.debug("TokenInterceptor.preHandle is executed.");
+ try {
+ String uri = request.getRequestURI();
+ if (!uri.contains("/api")) {
+ logger.debug("Ignored access.");
+ return true;
+ }
+
+ if (!jwtConfig.getTokenSwitch()) {
+ return true;
+ }
+
+ if (jwtConfig.isIgnoredUri(uri)) {
+ return true;
+ }
+
+ String token = request.getHeader(jwtConfig.getHeader());
+
+ if (token == null || token.isEmpty()) {
+ token = request.getParameter(jwtConfig.getHeader());
+ }
+
+ if (token == null || token.isEmpty()) {
+ EndBadRequest(401, response, ApiData.unauthorized("Access is denied!"));
+ return false;
+ }
+
+ Claims claims = jwtConfig.getTokenClaim(token);
+ if (claims == null || jwtConfig.isTokenExpired(claims.getExpiration())) {
+ EndBadRequest(401, response, ApiData.unauthorized("Session out, please re-login!"));
+ return false;
+ }
+
+ String userId = claims.getSubject();
+
+ request.setAttribute("identityId", userId);
+
+ AccountMasterViewModel account = null;
+ ApiData apiData = securityService.GetAccountWithRolesAndPermissions(userId);
+ if (apiData.getData() != null) {
+ account = JSON.parseObject(JSON.toJSONString(apiData.getData()), AccountMasterViewModel.class);
+ }
+ if (account == null) {
+ EndBadRequest(500, response, ApiData.unauthorized("Invalid user, please get access permission firstly!"));
+ return false;
+ }
+
+ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ requestAttributes.getRequest().getSession().setAttribute("account", account);
+
+ return true;
+ } catch (Exception exception) {
+ EndBadRequest(500, response, ApiData.unauthorized("System Error!"));
+ return false;
+ }
+ }
+
+ private void EndBadRequest(int statusCode, HttpServletResponse response, ApiData respBean) throws IOException {
+ response.setStatus(statusCode);
+ response.setContentType("application/json;charset=utf-8");
+ response.setHeader("Access-Control-Allow-Origin", "*");
+ response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT,PATCH");
+ response.setHeader("Access-Control-Allow-Headers", "Content-Type, Content-Length, Authorization, Accept, X-Requested-With, Access-Control");
+ response.setHeader("Allow", "POST, GET");
+ response.setHeader("Access-Control-Allow-Credentials", "true");
+
+ PrintWriter out = response.getWriter();
+ out.write(new ObjectMapper().writeValueAsString(respBean));
+ out.flush();
+ out.close();
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/WelcomeWebRequestInterceptor.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/WelcomeWebRequestInterceptor.java
new file mode 100644
index 0000000..4c2ef27
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/java/com/farriver/bwf/web/initializer/interceptor/WelcomeWebRequestInterceptor.java
@@ -0,0 +1,24 @@
+package com.farriver.bwf.web.initializer.interceptor;
+
+import org.springframework.stereotype.Component;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.context.request.WebRequest;
+import org.springframework.web.context.request.WebRequestInterceptor;
+
+@Component
+public class WelcomeWebRequestInterceptor implements WebRequestInterceptor {
+ @Override
+ public void preHandle(WebRequest request) throws Exception {
+
+ }
+
+ @Override
+ public void postHandle(WebRequest request, ModelMap model) throws Exception {
+
+ }
+
+ @Override
+ public void afterCompletion(WebRequest request, Exception ex) throws Exception {
+
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/application.yml b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/application.yml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/application.yml
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/bootstrap.yml b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..310e84c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/bootstrap.yml
@@ -0,0 +1,32 @@
+spring:
+ application:
+ name: service-provider-bwf
+ main:
+ allow-circular-references: true
+ profiles:
+ default: dev
+ cloud:
+ nacos:
+ config:
+ server-addr: 47.121.117.123:8848
+ namespace: dev
+ group: bwf
+ prefix: application
+ file-extension: yml
+ refresh-enabled: true
+ encode: UTF-8
+ extension-configs:
+ - data-id: common.yml
+ group: common
+ refresh: true
+ discovery:
+ namespace: dev
+ #指定 注册配置中心nacos的ip
+ server-addr: 47.121.117.123:8848
+ #指定 外网ip
+ ip: 47.121.117.123
+ #指定 外网端口
+ port: 8080
+ inetutils: #在nacos的配置文件中添加配置项指定优先注册到nacos中的外网ip的前缀
+ preferred-networks: 47.121.117.123
+ ignored-interfaces: eth.*
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/logback-spring.xml b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..0eb75e6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/logback-spring.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+ <include resource="org/springframework/boot/logging/logback/base.xml"/>
+
+ <!-- 测试环境+开发环境. 多个使用逗号隔开. -->
+ <springProfile name="test,dev">
+ <logger name="org.springframework.web" level="INFO">
+ <appender-ref ref="FILE"/>
+ </logger>
+ <logger name="com.farriver" level="INFO"/>
+ </springProfile>
+
+ <!-- 生产环境. -->
+ <springProfile name="prod">
+ <logger name="org.springframework.web" level="ERROR">
+ <appender-ref ref="FILE"/>
+ </logger>
+ <logger name="com.farriver" level="ERROR"/>
+ </springProfile>
+
+ <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
+ <property name="LOG_HOME" value="/var/www/bwf/log"/>
+
+ <!-- 控制台输出 -->
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+ <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{50} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <!-- 按照每天生成日志文件 -->
+ <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <!--日志文件输出的文件名-->
+ <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd-HH-mm}.log</FileNamePattern>
+ <!--日志文件保留天数-->
+ <MaxHistory>30</MaxHistory>
+ </rollingPolicy>
+
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+ <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{50} - %msg%n</pattern>
+ </encoder>
+ <!--日志文件最大的大小-->
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>10MB</MaxFileSize>
+ </triggeringPolicy>
+ </appender>
+
+ <!-- 日志输出级别 -->
+ <root level="INFO">
+ <appender-ref ref="CONSOLE"/>
+ <appender-ref ref="FILE"/>
+ </root>
+ <!-- <root level="Debug">-->
+ <!-- <appender-ref ref="CONSOLE"/>-->
+ <!-- </root>-->
+</configuration>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/nacos-logback.xml b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/nacos-logback.xml
new file mode 100644
index 0000000..697f1dc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/nacos-logback.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false">
+
+ <!--如果使用nacos配置contextName不写或者为nacos不能为其他值-->
+ <contextName>nacos</contextName>
+ <springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
+ <springProperty scope="context" name="FILE_NAME" source="spring.application.name"/>
+ <property name="STDOUT_PATTERN"
+ value="%d{yyyy-MM-dd HH:mm:ss.SSS} %easyHighlight(%5.5level) %magenta(%pid) --- [%15.15thread] %cyan(%-40.40logger{39} [%4.4line]) : %msg%n"/>
+ <property name="FILE_PATTERN"
+ value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5.5level %pid --- [%15.15thread] %-40.40logger{40} [%4.4line] : %msg%n"/>
+ <property name="MAX_HISTORY" value="30"/>
+ <property name="MAX_SIZE" value="10MB"/>
+
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder
+ class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+ <layout class="com.suncnpap.framework.web.config.logback.EasyPatternLayout">
+ <pattern>
+ ${logging.console.pattern:-${STDOUT_PATTERN}}
+ </pattern>
+ </layout>
+ </encoder>
+ </appender>
+
+ <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <!-- 只打印错误日志 -->
+ <level>ERROR</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <!--日志文件输出的文件名-->
+ <fileNamePattern>
+ ${LOG_PATH}/${FILE_NAME}/error/%d{yyyy-MM-dd}.%i.log
+ </fileNamePattern>
+ <!--日志文件保留天数-->
+ <maxHistory>${logging.file.max-history:-${MAX_HISTORY}}</maxHistory>
+ <maxFileSize>${logging.file.max.size:-${MAX_SIZE}}}</maxFileSize>
+ </rollingPolicy>
+
+ <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+ <layout class="com.suncnpap.framework.web.config.logback.EasyPatternLayout">
+ <pattern>
+ ${logging.console.pattern:-${FILE_PATTERN}}
+ </pattern>
+ </layout>
+ </encoder>
+ </appender>
+
+ <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <!--日志文件输出的文件名-->
+ <fileNamePattern>
+ ${LOG_PATH}/${FILE_NAME}/debug/%d{yyyy-MM-dd}.%i.log
+ </fileNamePattern>
+
+ <!--日志文件保留天数-->
+ <maxHistory>${logging.file.max-history:-${MAX_HISTORY}}</maxHistory>
+ <maxFileSize>${logging.file.max.size:-${MAX_SIZE}}}</maxFileSize>
+ </rollingPolicy>
+
+ <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+ <layout class="com.suncnpap.framework.web.config.logback.EasyPatternLayout">
+ <pattern>
+ ${logging.console.pattern:-${FILE_PATTERN}}
+ </pattern>
+ </layout>
+ </encoder>
+ </appender>
+
+ <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!-- 只打印info的日志 -->
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
+ <level>INFO</level>
+ <onMatch>ACCEPT</onMatch>
+ <onMismatch>DENY</onMismatch>
+ </filter>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <!--日志文件输出的文件名-->
+ <fileNamePattern>
+ ${LOG_PATH}/${FILE_NAME}/info/%d{yyyy-MM-dd}.%i.log
+ </fileNamePattern>
+
+ <!--日志文件保留天数-->
+ <maxHistory>${logging.file.max-history:-${MAX_HISTORY}}</maxHistory>
+ <maxFileSize>${logging.file.max.size:-${MAX_SIZE}}}</maxFileSize>
+ </rollingPolicy>
+
+ <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+ <layout class="com.suncnpap.framework.web.config.logback.EasyPatternLayout">
+ <pattern>
+ ${logging.console.pattern:-${FILE_PATTERN}}
+ </pattern>
+ </layout>
+ </encoder>
+
+ </appender>
+
+
+ <root level="${logging.level:-info}">
+ <appender-ref ref="STDOUT"/>
+ <appender-ref ref="FILE_DEBUG"/>
+ <appender-ref ref="FILE_INFO"/>
+ <appender-ref ref="FILE_ERROR"/>
+ </root>
+
+</configuration>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/templates/template.html b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/templates/template.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/main/resources/templates/template.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.web/src/test/java/com/farriver/bwf/WebApplicationTests.java b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/test/java/com/farriver/bwf/WebApplicationTests.java
new file mode 100644
index 0000000..c5b496c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.web/src/test/java/com/farriver/bwf/WebApplicationTests.java
@@ -0,0 +1,16 @@
+package com.farriver.bwf;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class WebApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/.babelrc b/04-Development/02-Code/bwf/com.farriver.bwf.webui/.babelrc
new file mode 100644
index 0000000..8a5cbdf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/.babelrc
@@ -0,0 +1,11 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-transform-runtime",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-transform-classes",
+ "@babel/plugin-transform-modules-commonjs" // 如果有些引用插件使用common方式,安装此插件
+ ]
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/.gitignore b/04-Development/02-Code/bwf/com.farriver.bwf.webui/.gitignore
new file mode 100644
index 0000000..53f7466
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/.gitignore
@@ -0,0 +1,5 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+*.local
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/README.md b/04-Development/02-Code/bwf/com.farriver.bwf.webui/README.md
new file mode 100644
index 0000000..fd147bd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/README.md
@@ -0,0 +1,3 @@
+### Far River Copyright @ 2021 All right reserved ###
+
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/index.html b/04-Development/02-Code/bwf/com.farriver.bwf.webui/index.html
new file mode 100644
index 0000000..d1b8b12
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/index.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <link rel="icon" href="/assets/favicon.ico" />
+ <meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
+ <meta http-equiv="x-ua-compatible" content="IE=Edge,IE=IE9">
+ <meta http-equiv="x-ua-compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width,initial-scale=1minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
+ <title>BWF</title>
+ <script src="/assets/config.js"></script>
+</head>
+
+<body>
+<script>
+ global = window;
+</script>
+<div id="app">
+</div>
+<script type="module" src="/src/main.js"></script>
+<style type="text/css">
+ #nprogress .bar {
+ background: var(--el-color-primary);
+ 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 var(--el-color-primary), 0 0 5px var(--el-color-primary);
+ opacity: 1.0;
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+ }
+
+ #nprogress .spinner-icon {
+ width: 18px;
+ height: 18px;
+ box-sizing: border-box;
+ border: solid 2px transparent;
+ border-top-color: var(--el-color-primary);
+ border-left-color: var(--el-color-primary);
+ border-radius: 50%;
+ -webkit-animation: nprogress-spinner 400ms linear infinite;
+ animation: nprogress-spinner 400ms linear infinite;
+ }
+
+ .el-link.el-link--primary:hover {
+ color: var(--el-color-primary-light-6);
+ }
+
+ .el-dialog {
+ padding: 0px;
+ }
+
+</style>
+</body>
+
+</html>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/package-lock.json b/04-Development/02-Code/bwf/com.farriver.bwf.webui/package-lock.json
new file mode 100644
index 0000000..97658e7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/package-lock.json
@@ -0,0 +1,13735 @@
+{
+ "name": "bwf",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "bwf",
+ "version": "0.0.0",
+ "dependencies": {
+ "@amap/amap-jsapi-loader": "^1.0.1",
+ "@babel/plugin-transform-class-properties": "^7.22.5",
+ "@babel/runtime": "^7.23.2",
+ "@element-plus/icons-vue": "^2.1.0",
+ "@vitejs/plugin-vue": "^4.4.0",
+ "@wangeditor/editor": "^5.1.23",
+ "@wangeditor/editor-for-vue": "^5.1.12",
+ "@wangeditor/plugin-formula": "^1.0.11",
+ "axios": "^1.5.1",
+ "babel-loader": "^8.0.4",
+ "default-passive-events": "^2.0.0",
+ "echarts": "^5.4.3",
+ "echarts-liquidfill": "^3.1.0",
+ "element-plus": "^2.7.3",
+ "element-resize-detector": "^1.2.4",
+ "es6-promise": "^4.2.8",
+ "global": "^4.4.0",
+ "jquery": "^3.7.1",
+ "js-cookie": "^3.0.5",
+ "moment": "^2.29.4",
+ "net": "^1.0.2",
+ "node-sass": "^9.0.0",
+ "nprogress": "^0.2.0",
+ "pdf": "^0.1.0",
+ "pinia": "^2.1.6",
+ "pinia-plugin-persistedstate": "^3.2.0",
+ "sortablejs": "^1.15.0",
+ "util": "^0.12.5",
+ "vite": "^4.4.11",
+ "vue": "^3.3.4",
+ "vue-amap": "^0.5.10",
+ "vue-i18n": "^9.5.0",
+ "vue-loading-overlay": "^6.0.3",
+ "vue-router": "^4.2.5",
+ "vue-seamless-scroll": "^1.1.23",
+ "vue3-amap": "^1.0.5",
+ "vue3-google-map": "^0.18.0",
+ "vue3-i18n": "^1.1.5",
+ "vue3-json-viewer": "^2.2.2",
+ "vue3-seamless-scroll": "^2.0.1",
+ "vue3-tree-org": "^4.2.2",
+ "weixin-js-sdk": "^1.6.5"
+ },
+ "devDependencies": {
+ "@babel/cli": "^7.23.0",
+ "@babel/core": "^7.23.2",
+ "@babel/plugin-transform-classes": "^7.22.15",
+ "@babel/plugin-transform-runtime": "^7.23.2",
+ "@babel/preset-env": "^7.23.2",
+ "@types/node": "^20.8.3",
+ "@vue/compiler-sfc": "^3.2.26",
+ "@vue/runtime-core": "^3.2.37",
+ "consola": "^3.2.3",
+ "element-theme-chalk": "^2.15.14",
+ "gulp": "^4.0.2",
+ "less": "^4.2.0",
+ "sass": "^1.69.0",
+ "svg-sprite-loader": "^6.0.11",
+ "vite-plugin-style-import": "^2.0.0"
+ }
+ },
+ "node_modules/@amap/amap-jsapi-loader": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
+ "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==",
+ "license": "MIT"
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/cli": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.25.9.tgz",
+ "integrity": "sha512-I+02IfrTiSanpxJBlZQYb18qCxB6c2Ih371cVpfgIrPQrjAYkf45XxomTJOG8JBWX5GY35/+TmhCMdJ4ZPkL8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "commander": "^6.2.0",
+ "convert-source-map": "^2.0.0",
+ "fs-readdir-recursive": "^1.1.0",
+ "glob": "^7.2.0",
+ "make-dir": "^2.1.0",
+ "slash": "^2.0.0"
+ },
+ "bin": {
+ "babel": "bin/babel.js",
+ "babel-external-helpers": "bin/babel-external-helpers.js"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "optionalDependencies": {
+ "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
+ "chokidar": "^3.6.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz",
+ "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz",
+ "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+ "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.0",
+ "@babel/generator": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.0",
+ "@babel/parser": "^7.26.0",
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.26.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz",
+ "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.26.0",
+ "@babel/types": "^7.26.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz",
+ "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
+ "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
+ "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz",
+ "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "regexpu-core": "^6.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
+ "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-wrap-function": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
+ "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz",
+ "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
+ "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
+ "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.26.1",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz",
+ "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.26.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
+ "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
+ "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
+ "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
+ "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
+ "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
+ "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
+ "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
+ "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
+ "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
+ "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
+ "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
+ "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
+ "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/template": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
+ "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
+ "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
+ "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
+ "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz",
+ "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
+ "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
+ "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
+ "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
+ "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
+ "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
+ "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
+ "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
+ "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz",
+ "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-simple-access": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
+ "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
+ "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
+ "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
+ "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
+ "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
+ "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
+ "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
+ "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
+ "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
+ "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
+ "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
+ "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
+ "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regexp-modifiers": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
+ "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
+ "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz",
+ "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
+ "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
+ "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
+ "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
+ "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
+ "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
+ "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
+ "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
+ "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
+ "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
+ "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-import-assertions": "^7.26.0",
+ "@babel/plugin-syntax-import-attributes": "^7.26.0",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.25.9",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.9",
+ "@babel/plugin-transform-async-to-generator": "^7.25.9",
+ "@babel/plugin-transform-block-scoped-functions": "^7.25.9",
+ "@babel/plugin-transform-block-scoping": "^7.25.9",
+ "@babel/plugin-transform-class-properties": "^7.25.9",
+ "@babel/plugin-transform-class-static-block": "^7.26.0",
+ "@babel/plugin-transform-classes": "^7.25.9",
+ "@babel/plugin-transform-computed-properties": "^7.25.9",
+ "@babel/plugin-transform-destructuring": "^7.25.9",
+ "@babel/plugin-transform-dotall-regex": "^7.25.9",
+ "@babel/plugin-transform-duplicate-keys": "^7.25.9",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-dynamic-import": "^7.25.9",
+ "@babel/plugin-transform-exponentiation-operator": "^7.25.9",
+ "@babel/plugin-transform-export-namespace-from": "^7.25.9",
+ "@babel/plugin-transform-for-of": "^7.25.9",
+ "@babel/plugin-transform-function-name": "^7.25.9",
+ "@babel/plugin-transform-json-strings": "^7.25.9",
+ "@babel/plugin-transform-literals": "^7.25.9",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
+ "@babel/plugin-transform-member-expression-literals": "^7.25.9",
+ "@babel/plugin-transform-modules-amd": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.9",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.9",
+ "@babel/plugin-transform-modules-umd": "^7.25.9",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-new-target": "^7.25.9",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
+ "@babel/plugin-transform-numeric-separator": "^7.25.9",
+ "@babel/plugin-transform-object-rest-spread": "^7.25.9",
+ "@babel/plugin-transform-object-super": "^7.25.9",
+ "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9",
+ "@babel/plugin-transform-private-methods": "^7.25.9",
+ "@babel/plugin-transform-private-property-in-object": "^7.25.9",
+ "@babel/plugin-transform-property-literals": "^7.25.9",
+ "@babel/plugin-transform-regenerator": "^7.25.9",
+ "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
+ "@babel/plugin-transform-reserved-words": "^7.25.9",
+ "@babel/plugin-transform-shorthand-properties": "^7.25.9",
+ "@babel/plugin-transform-spread": "^7.25.9",
+ "@babel/plugin-transform-sticky-regex": "^7.25.9",
+ "@babel/plugin-transform-template-literals": "^7.25.9",
+ "@babel/plugin-transform-typeof-symbol": "^7.25.9",
+ "@babel/plugin-transform-unicode-escapes": "^7.25.9",
+ "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.38.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
+ "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.9",
+ "@babel/generator": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.25.9",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
+ "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@ctrl/tinycolor": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+ "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@element-plus/icons-vue": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+ "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+ "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+ "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+ "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+ "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+ "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+ "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+ "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+ "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+ "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+ "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+ "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+ "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+ "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+ "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+ "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+ "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+ "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+ "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+ "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+ "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+ "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+ "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz",
+ "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.8"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.11",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz",
+ "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.8"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz",
+ "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==",
+ "license": "MIT"
+ },
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "license": "MIT"
+ },
+ "node_modules/@googlemaps/js-api-loader": {
+ "version": "1.16.8",
+ "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.8.tgz",
+ "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@googlemaps/markerclusterer": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.5.3.tgz",
+ "integrity": "sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "supercluster": "^8.0.1"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.1.tgz",
+ "integrity": "sha512-rG5/hlNW6Qfve41go37szEf0mVLcfhYuOu83JcY0jZKasnwsrcZYYWDzebCcuO5I/6Sy1JFWo9p+nvkQS1Dy+w==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/message-compiler": "9.14.1",
+ "@intlify/shared": "9.14.1"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.1.tgz",
+ "integrity": "sha512-MY8hwukJBnXvGAncVKlHsqKDQ5ZcQx4peqEmI8wBUTXn4pezrtTGYXNoz81cLyEEHB+L/zlKWVBSh5TiX4gYoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/shared": "9.14.1",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@intlify/shared": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.1.tgz",
+ "integrity": "sha512-XjHu6PEQup9MnP1x0W9y0nXXfq9jFftAYSfV11hryjtH4XqXP8HrzMvXI+ZVifF+jZLszaTzIhvukllplxTQTg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/chokidar-2": {
+ "version": "2.1.8-no-fsevents.3",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
+ "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
+ "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@gar/promisify": "^1.1.3",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@npmcli/fs/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@npmcli/move-file": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
+ "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
+ "license": "MIT",
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz",
+ "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.4.1",
+ "@parcel/watcher-darwin-arm64": "2.4.1",
+ "@parcel/watcher-darwin-x64": "2.4.1",
+ "@parcel/watcher-freebsd-x64": "2.4.1",
+ "@parcel/watcher-linux-arm-glibc": "2.4.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.4.1",
+ "@parcel/watcher-linux-arm64-musl": "2.4.1",
+ "@parcel/watcher-linux-x64-glibc": "2.4.1",
+ "@parcel/watcher-linux-x64-musl": "2.4.1",
+ "@parcel/watcher-win32-arm64": "2.4.1",
+ "@parcel/watcher-win32-ia32": "2.4.1",
+ "@parcel/watcher-win32-x64": "2.4.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
+ "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
+ "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
+ "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
+ "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
+ "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
+ "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
+ "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
+ "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
+ "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
+ "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
+ "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
+ "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher/node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "name": "@sxzz/popperjs-es",
+ "version": "2.11.7",
+ "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+ "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@transloadit/prettier-bytes": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
+ "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.17.12",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.12.tgz",
+ "integrity": "sha512-sviUmCE8AYdaF/KIHLDJBQgeYzPBI0vf/17NaYehBJfYD1j6/L95Slh07NlyK2iNyBNaEkb3En2jRt+a8y3xZQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/lodash-es": {
+ "version": "4.17.12",
+ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+ "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.17.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.1.tgz",
+ "integrity": "sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.16",
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+ "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==",
+ "license": "MIT"
+ },
+ "node_modules/@uppy/companion-client": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz",
+ "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
+ "license": "MIT",
+ "dependencies": {
+ "@uppy/utils": "^4.1.2",
+ "namespace-emitter": "^2.0.1"
+ }
+ },
+ "node_modules/@uppy/core": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz",
+ "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@transloadit/prettier-bytes": "0.0.7",
+ "@uppy/store-default": "^2.1.1",
+ "@uppy/utils": "^4.1.3",
+ "lodash.throttle": "^4.1.1",
+ "mime-match": "^1.0.2",
+ "namespace-emitter": "^2.0.1",
+ "nanoid": "^3.1.25",
+ "preact": "^10.5.13"
+ }
+ },
+ "node_modules/@uppy/store-default": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz",
+ "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==",
+ "license": "MIT"
+ },
+ "node_modules/@uppy/utils": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz",
+ "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash.throttle": "^4.1.1"
+ }
+ },
+ "node_modules/@uppy/xhr-upload": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
+ "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@uppy/companion-client": "^2.2.2",
+ "@uppy/utils": "^4.1.2",
+ "nanoid": "^3.1.25"
+ },
+ "peerDependencies": {
+ "@uppy/core": "^2.3.3"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+ "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz",
+ "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/shared": "3.5.12",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz",
+ "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz",
+ "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/compiler-core": "3.5.12",
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/compiler-ssr": "3.5.12",
+ "@vue/shared": "3.5.12",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.11",
+ "postcss": "^8.4.47",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz",
+ "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz",
+ "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz",
+ "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz",
+ "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.12",
+ "@vue/runtime-core": "3.5.12",
+ "@vue/shared": "3.5.12",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz",
+ "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.12",
+ "@vue/shared": "3.5.12"
+ },
+ "peerDependencies": {
+ "vue": "3.5.12"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
+ "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
+ "license": "MIT"
+ },
+ "node_modules/@vueuse/core": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+ "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.16",
+ "@vueuse/metadata": "9.13.0",
+ "@vueuse/shared": "9.13.0",
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/core/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/metadata": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+ "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+ "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+ "license": "MIT",
+ "dependencies": {
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@wangeditor/basic-modules": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
+ "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-url": "^1.2.4"
+ },
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.throttle": "^4.1.1",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/code-highlight": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
+ "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
+ "license": "MIT",
+ "dependencies": {
+ "prismjs": "^1.23.0"
+ },
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/core": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz",
+ "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/event-emitter": "^0.3.3",
+ "event-emitter": "^0.3.5",
+ "html-void-elements": "^2.0.0",
+ "i18next": "^20.4.0",
+ "scroll-into-view-if-needed": "^2.2.28",
+ "slate-history": "^0.66.0"
+ },
+ "peerDependencies": {
+ "@uppy/core": "^2.1.1",
+ "@uppy/xhr-upload": "^2.0.3",
+ "dom7": "^3.0.0",
+ "is-hotkey": "^0.2.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.foreach": "^4.5.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "lodash.toarray": "^4.4.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/editor": {
+ "version": "5.1.23",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz",
+ "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@uppy/core": "^2.1.1",
+ "@uppy/xhr-upload": "^2.0.3",
+ "@wangeditor/basic-modules": "^1.1.7",
+ "@wangeditor/code-highlight": "^1.0.3",
+ "@wangeditor/core": "^1.1.19",
+ "@wangeditor/list-module": "^1.0.5",
+ "@wangeditor/table-module": "^1.1.4",
+ "@wangeditor/upload-image-module": "^1.0.2",
+ "@wangeditor/video-module": "^1.1.4",
+ "dom7": "^3.0.0",
+ "is-hotkey": "^0.2.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.foreach": "^4.5.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "lodash.toarray": "^4.4.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/editor-for-vue": {
+ "version": "5.1.12",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
+ "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@wangeditor/editor": ">=5.1.0",
+ "vue": "^3.0.5"
+ }
+ },
+ "node_modules/@wangeditor/list-module": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz",
+ "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/plugin-formula": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@wangeditor/plugin-formula/-/plugin-formula-1.0.11.tgz",
+ "integrity": "sha512-8QQTj/WxPoGDiBbII4I56P5zeEFp7tG9bC2zQtM3hNlX6UyCNFh6EmqQQxWdD4CttAe7sKquqZHpxySf7rV4MA==",
+ "license": "MIT",
+ "dependencies": {
+ "dom7": "^4.0.4",
+ "nanoid": "^3.2.0"
+ },
+ "peerDependencies": {
+ "@wangeditor/editor": ">=5.0.0",
+ "katex": "^0.15.2",
+ "snabbdom": "^3.3.1"
+ }
+ },
+ "node_modules/@wangeditor/plugin-formula/node_modules/dom7": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.6.tgz",
+ "integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==",
+ "license": "MIT",
+ "dependencies": {
+ "ssr-window": "^4.0.0"
+ }
+ },
+ "node_modules/@wangeditor/plugin-formula/node_modules/ssr-window": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz",
+ "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==",
+ "license": "MIT"
+ },
+ "node_modules/@wangeditor/table-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz",
+ "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/upload-image-module": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
+ "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@uppy/core": "^2.0.3",
+ "@uppy/xhr-upload": "^2.0.3",
+ "@wangeditor/basic-modules": "1.x",
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.foreach": "^4.5.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/video-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz",
+ "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@uppy/core": "^2.1.4",
+ "@uppy/xhr-upload": "^2.0.7",
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+ "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+ "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+ "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+ "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+ "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+ "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+ "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+ "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "license": "ISC"
+ },
+ "node_modules/acorn": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
+ "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/agentkeepalive": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
+ "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
+ "license": "MIT",
+ "dependencies": {
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-wrap": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-wrap": "0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/append-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
+ "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-equal": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/aproba": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
+ "license": "ISC"
+ },
+ "node_modules/archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/are-we-there-yet/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-filter": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
+ "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "make-iterator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
+ "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "make-iterator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-initial": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
+ "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-slice": "^1.0.0",
+ "is-number": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-initial/node_modules/is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-last": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
+ "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-last/node_modules/is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-sort": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
+ "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "default-compare": "^1.0.0",
+ "get-value": "^2.0.6",
+ "kind-of": "^5.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/async-done": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
+ "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.2",
+ "process-nextick-args": "^2.0.0",
+ "stream-exhaust": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/async-each": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz",
+ "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/async-settle": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
+ "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async-done": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true,
+ "license": "(MIT OR Apache-2.0)",
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/babel-loader": {
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz",
+ "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==",
+ "license": "MIT",
+ "dependencies": {
+ "find-cache-dir": "^3.3.1",
+ "loader-utils": "^2.0.4",
+ "make-dir": "^3.1.0",
+ "schema-utils": "^2.6.5"
+ },
+ "engines": {
+ "node": ">= 8.9"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "webpack": ">=2"
+ }
+ },
+ "node_modules/babel-loader/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/bach": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
+ "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-filter": "^1.1.1",
+ "arr-flatten": "^1.0.1",
+ "arr-map": "^2.0.0",
+ "array-each": "^1.0.0",
+ "array-initial": "^1.0.0",
+ "array-last": "^1.1.1",
+ "async-done": "^1.2.2",
+ "async-settle": "^1.0.0",
+ "now-and-later": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/batch-processor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz",
+ "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==",
+ "license": "MIT"
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.24.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
+ "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001669",
+ "electron-to-chromium": "^1.5.41",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.1"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz",
+ "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "license": "MIT"
+ },
+ "node_modules/cacache": {
+ "version": "16.1.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
+ "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/move-file": "^2.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/cacache/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/cacache/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cacache/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase-keys": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+ "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "license": "MIT",
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "map-obj": "^4.0.0",
+ "quick-lru": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001671",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001671.tgz",
+ "integrity": "sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/capital-case": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
+ "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/change-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
+ "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "capital-case": "^1.0.4",
+ "constant-case": "^3.0.4",
+ "dot-case": "^3.0.4",
+ "header-case": "^2.0.4",
+ "no-case": "^3.0.4",
+ "param-case": "^3.0.4",
+ "pascal-case": "^3.1.2",
+ "path-case": "^3.0.4",
+ "sentence-case": "^3.0.4",
+ "snake-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "license": "MIT",
+ "dependencies": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cloneable-readable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
+ "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "process-nextick-args": "^2.0.0",
+ "readable-stream": "^2.3.5"
+ }
+ },
+ "node_modules/code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/collection-map": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
+ "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-map": "^2.0.2",
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "license": "ISC",
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "license": "MIT"
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+ "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
+ "license": "MIT"
+ },
+ "node_modules/comutils": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/comutils/-/comutils-1.1.19.tgz",
+ "integrity": "sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw==",
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/consola": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
+ "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
+ "node_modules/console": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/console/-/console-0.7.2.tgz",
+ "integrity": "sha512-+JSDwGunA4MTEgAV/4VBKwUHonP8CzJ/6GIuwPi6acKFqFfHUdSGCm89ZxZ5FfGWdZfkdgAroy5bJ5FSeN/t4g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+ "license": "ISC"
+ },
+ "node_modules/constant-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
+ "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case": "^2.0.2"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-what": "^3.14.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/copy-props": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
+ "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "each-props": "^1.3.2",
+ "is-plain-object": "^5.0.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
+ "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
+ "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.23.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "license": "MIT"
+ },
+ "node_modules/d": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+ "license": "ISC",
+ "dependencies": {
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decamelize-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
+ "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
+ "license": "MIT",
+ "dependencies": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decamelize-keys/node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/deepmerge": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz",
+ "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
+ "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "kind-of": "^5.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-passive-events": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/default-passive-events/-/default-passive-events-2.0.0.tgz",
+ "integrity": "sha512-eMtt76GpDVngZQ3ocgvRcNCklUMwID1PaNbCNxfpDXuiOXttSh0HzBbda1HU9SIUsDc02vb7g9+3I5tlqe/qMQ==",
+ "license": "MIT"
+ },
+ "node_modules/default-resolution": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
+ "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
+ "license": "MIT"
+ },
+ "node_modules/delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+ "license": "MIT"
+ },
+ "node_modules/detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/dom7": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz",
+ "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
+ "license": "MIT",
+ "dependencies": {
+ "ssr-window": "^3.0.0-alpha.1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/domready": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz",
+ "integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==",
+ "dev": true
+ },
+ "node_modules/domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "node_modules/each-props": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
+ "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-object": "^2.0.1",
+ "object.defaults": "^1.1.0"
+ }
+ },
+ "node_modules/each-props/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/echarts": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz",
+ "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "2.3.0",
+ "zrender": "5.6.0"
+ }
+ },
+ "node_modules/echarts-liquidfill": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/echarts-liquidfill/-/echarts-liquidfill-3.1.0.tgz",
+ "integrity": "sha512-5Dlqs/jTsdTUAsd+K5LPLLTgrbbNORUSBQyk8PSy1Mg2zgHDWm83FmvA4s0ooNepCJojFYRITTQ4GU1UUSKYLw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "echarts": "^5.0.1"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.47",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz",
+ "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==",
+ "license": "ISC"
+ },
+ "node_modules/element-plus": {
+ "version": "2.8.6",
+ "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.8.6.tgz",
+ "integrity": "sha512-fk5jB8V3efM02/4roZ5SWOLArgaYXbxEydZLlXSr+KPAwjNyHBlk2+HO5em8YKo5+RLBoHnn6BaThj6IE4nXoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@ctrl/tinycolor": "^3.4.1",
+ "@element-plus/icons-vue": "^2.3.1",
+ "@floating-ui/dom": "^1.0.1",
+ "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+ "@types/lodash": "^4.14.182",
+ "@types/lodash-es": "^4.17.6",
+ "@vueuse/core": "^9.1.0",
+ "async-validator": "^4.2.5",
+ "dayjs": "^1.11.3",
+ "escape-html": "^1.0.3",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.21",
+ "lodash-unified": "^1.0.2",
+ "memoize-one": "^6.0.0",
+ "normalize-wheel-es": "^1.2.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/element-resize-detector": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz",
+ "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==",
+ "license": "MIT",
+ "dependencies": {
+ "batch-processor": "1.0.0"
+ }
+ },
+ "node_modules/element-theme-chalk": {
+ "version": "2.15.14",
+ "resolved": "https://registry.npmjs.org/element-theme-chalk/-/element-theme-chalk-2.15.14.tgz",
+ "integrity": "sha512-jgMTD6Qg6UPRDjBzARl42xit7lfCg+gE8x+QaUmmrhWv2TsnFoerhOupn0smxKTfO0Oh9Kh53Q+thXeZO7/0rQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "license": "MIT"
+ },
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.3",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es5-ext": {
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
+ "hasInstallScript": true,
+ "license": "ISC",
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "license": "MIT",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-promise": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+ "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
+ "license": "MIT"
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+ "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.18.20",
+ "@esbuild/android-arm64": "0.18.20",
+ "@esbuild/android-x64": "0.18.20",
+ "@esbuild/darwin-arm64": "0.18.20",
+ "@esbuild/darwin-x64": "0.18.20",
+ "@esbuild/freebsd-arm64": "0.18.20",
+ "@esbuild/freebsd-x64": "0.18.20",
+ "@esbuild/linux-arm": "0.18.20",
+ "@esbuild/linux-arm64": "0.18.20",
+ "@esbuild/linux-ia32": "0.18.20",
+ "@esbuild/linux-loong64": "0.18.20",
+ "@esbuild/linux-mips64el": "0.18.20",
+ "@esbuild/linux-ppc64": "0.18.20",
+ "@esbuild/linux-riscv64": "0.18.20",
+ "@esbuild/linux-s390x": "0.18.20",
+ "@esbuild/linux-x64": "0.18.20",
+ "@esbuild/netbsd-x64": "0.18.20",
+ "@esbuild/openbsd-x64": "0.18.20",
+ "@esbuild/sunos-x64": "0.18.20",
+ "@esbuild/win32-arm64": "0.18.20",
+ "@esbuild/win32-ia32": "0.18.20",
+ "@esbuild/win32-x64": "0.18.20"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "license": "ISC",
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "license": "MIT",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "license": "ISC",
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+ "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
+ "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "license": "MIT",
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/findup-sync": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+ "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/fined/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "for-in": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "map-cache": "^0.2.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-mkdirp-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
+ "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "through2": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/fs-readdir-recursive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gauge": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "license": "MIT",
+ "dependencies": {
+ "globule": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-stream": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend": "^3.0.0",
+ "glob": "^7.1.1",
+ "glob-parent": "^3.1.0",
+ "is-negated-glob": "^1.0.0",
+ "ordered-read-streams": "^1.0.0",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.1.5",
+ "remove-trailing-separator": "^1.0.1",
+ "to-absolute-glob": "^2.0.0",
+ "unique-stream": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/glob-stream/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "node_modules/glob-stream/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/glob-watcher": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
+ "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "^2.0.0",
+ "async-done": "^1.2.0",
+ "chokidar": "^2.0.0",
+ "is-negated-glob": "^1.0.0",
+ "just-debounce": "^1.0.0",
+ "normalize-path": "^3.0.0",
+ "object.defaults": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "optionalDependencies": {
+ "fsevents": "^1.2.7"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/glob-watcher/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "license": "MIT",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globule": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz",
+ "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "glob": "~7.1.1",
+ "lodash": "^4.17.21",
+ "minimatch": "~3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/globule/node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/globule/node_modules/minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/glogg": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
+ "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sparkles": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "license": "MIT",
+ "dependencies": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/gulp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
+ "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob-watcher": "^5.0.3",
+ "gulp-cli": "^2.2.0",
+ "undertaker": "^1.2.1",
+ "vinyl-fs": "^3.0.0"
+ },
+ "bin": {
+ "gulp": "bin/gulp.js"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/gulp-cli": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
+ "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "^1.0.1",
+ "archy": "^1.0.0",
+ "array-sort": "^1.0.0",
+ "color-support": "^1.1.3",
+ "concat-stream": "^1.6.0",
+ "copy-props": "^2.0.1",
+ "fancy-log": "^1.3.2",
+ "gulplog": "^1.0.0",
+ "interpret": "^1.4.0",
+ "isobject": "^3.0.1",
+ "liftoff": "^3.1.0",
+ "matchdep": "^2.0.0",
+ "mute-stdout": "^1.0.0",
+ "pretty-hrtime": "^1.0.0",
+ "replace-homedir": "^1.0.0",
+ "semver-greatest-satisfied-range": "^1.1.0",
+ "v8flags": "^3.2.0",
+ "yargs": "^7.1.0"
+ },
+ "bin": {
+ "gulp": "bin/gulp.js"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+ "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glogg": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/hard-rejection": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
+ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+ "license": "ISC"
+ },
+ "node_modules/has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/header-case": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
+ "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "capital-case": "^1.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse-passwd": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/html-void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
+ "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/htmlparser2/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
+ "node_modules/i18next": {
+ "version": "20.6.1",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz",
+ "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/immer": {
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
+ "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "license": "ISC"
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "license": "MIT",
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
+ "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "license": "MIT"
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
+ "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extendable/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hotkey": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
+ "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==",
+ "license": "MIT"
+ },
+ "node_modules/is-lambda": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "license": "MIT"
+ },
+ "node_modules/is-negated-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
+ "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-unc-path": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "unc-path-regex": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+ "license": "MIT"
+ },
+ "node_modules/is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-valid-glob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
+ "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jquery": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
+ "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
+ "license": "MIT"
+ },
+ "node_modules/js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/js-cookie": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
+ "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "license": "MIT"
+ },
+ "node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/just-debounce": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz",
+ "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/katex": {
+ "version": "0.15.6",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.6.tgz",
+ "integrity": "sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==",
+ "funding": [
+ "https://opencollective.com/katex",
+ "https://github.com/sponsors/katex"
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "commander": "^8.0.0"
+ },
+ "bin": {
+ "katex": "cli.js"
+ }
+ },
+ "node_modules/katex/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/kdbush": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz",
+ "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==",
+ "license": "ISC"
+ },
+ "node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/last-run": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
+ "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "default-resolution": "^2.0.0",
+ "es6-weak-map": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/lazystream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.6.3"
+ }
+ },
+ "node_modules/lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "invert-kv": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lead": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
+ "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flush-write-stream": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/less": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz",
+ "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "copy-anything": "^2.0.1",
+ "parse-node-version": "^1.0.1",
+ "tslib": "^2.3.0"
+ },
+ "bin": {
+ "lessc": "bin/lessc"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "optionalDependencies": {
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "source-map": "~0.6.0"
+ }
+ },
+ "node_modules/liftoff": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
+ "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend": "^3.0.0",
+ "findup-sync": "^3.0.0",
+ "fined": "^1.0.1",
+ "flagged-respawn": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.0",
+ "rechoir": "^0.6.2",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/liftoff/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
+ "node_modules/load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/load-json-file/node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/load-json-file/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "license": "MIT",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash-unified": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+ "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/lodash-es": "*",
+ "lodash": "*",
+ "lodash-es": "*"
+ }
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.toarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
+ "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==",
+ "license": "MIT"
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.12",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz",
+ "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "devOptional": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/make-fetch-happen": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
+ "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
+ "license": "ISC",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^16.1.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^2.0.3",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^9.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/make-iterator/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-obj": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
+ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/matchdep": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
+ "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "findup-sync": "^2.0.0",
+ "micromatch": "^3.0.4",
+ "resolve": "^1.4.0",
+ "stack-trace": "0.0.10"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/matchdep/node_modules/findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^3.1.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/matchdep/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==",
+ "license": "MIT"
+ },
+ "node_modules/meow": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
+ "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/minimist": "^1.2.0",
+ "camelcase-keys": "^6.2.2",
+ "decamelize": "^1.2.0",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^3.0.0",
+ "read-pkg-up": "^7.0.1",
+ "redent": "^3.0.0",
+ "trim-newlines": "^3.0.0",
+ "type-fest": "^0.18.0",
+ "yargs-parser": "^20.2.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz",
+ "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-obj": "^1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/micromatch/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz",
+ "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
+ "license": "ISC",
+ "dependencies": {
+ "wildcard": "^1.1.0"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minimist-options": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+ "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+ "license": "MIT",
+ "dependencies": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0",
+ "kind-of": "^6.0.3"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/minimist-options/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
+ "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.1.6",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/mitt": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz",
+ "integrity": "sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/moment": {
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/mute-stdout": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
+ "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/namespace-emitter": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
+ "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==",
+ "license": "MIT"
+ },
+ "node_modules/nan": {
+ "version": "2.22.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz",
+ "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/needle": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz",
+ "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/net": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/net/-/net-1.0.2.tgz",
+ "integrity": "sha512-kbhcj2SVVR4caaVnGLJKmlk2+f+oLkjqdKeQlmUtz6nGzOpbcobwVIeSURNgraV/v3tlmGIX82OcPCl0K6RbHQ==",
+ "license": "MIT"
+ },
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "license": "ISC"
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/node-gyp": {
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz",
+ "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==",
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^9.1.0",
+ "nopt": "^5.0.0",
+ "npmlog": "^6.0.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": ">= 10.12.0"
+ }
+ },
+ "node_modules/node-gyp/node_modules/@npmcli/fs": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
+ "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@gar/promisify": "^1.0.1",
+ "semver": "^7.3.5"
+ }
+ },
+ "node_modules/node-gyp/node_modules/@npmcli/move-file": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+ "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
+ "license": "MIT",
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-gyp/node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/node-gyp/node_modules/cacache": {
+ "version": "15.3.0",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+ "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^1.0.0",
+ "@npmcli/move-file": "^1.0.1",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "glob": "^7.1.4",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^6.0.0",
+ "minipass": "^3.1.1",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.2",
+ "mkdirp": "^1.0.3",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^8.0.1",
+ "tar": "^6.0.2",
+ "unique-filename": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/node-gyp/node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/node-gyp/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-gyp/node_modules/make-fetch-happen": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
+ "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
+ "license": "ISC",
+ "dependencies": {
+ "agentkeepalive": "^4.1.3",
+ "cacache": "^15.2.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^6.0.0",
+ "minipass": "^3.1.3",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^1.3.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.2",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^6.0.0",
+ "ssri": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/node-gyp/node_modules/minipass-fetch": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
+ "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.1.0",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.12"
+ }
+ },
+ "node_modules/node-gyp/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-gyp/node_modules/socks-proxy-agent": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
+ "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/node-gyp/node_modules/ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/node-gyp/node_modules/unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "node_modules/node-gyp/node_modules/unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "node_modules/node-gyp/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "license": "MIT"
+ },
+ "node_modules/node-sass": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz",
+ "integrity": "sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==",
+ "deprecated": "Node Sass is no longer supported. Please use `sass` or `sass-embedded` instead.",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^4.1.2",
+ "cross-spawn": "^7.0.3",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "lodash": "^4.17.15",
+ "make-fetch-happen": "^10.0.4",
+ "meow": "^9.0.0",
+ "nan": "^2.17.0",
+ "node-gyp": "^8.4.1",
+ "sass-graph": "^4.0.1",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^2.2.1"
+ },
+ "bin": {
+ "node-sass": "bin/node-sass"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+ "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^4.0.1",
+ "is-core-module": "^2.5.0",
+ "semver": "^7.3.4",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-wheel-es": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+ "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/now-and-later": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
+ "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.3.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/npmlog": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/nprogress": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
+ "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
+ "license": "MIT"
+ },
+ "node_modules/number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.reduce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
+ "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/ordered-read-streams": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
+ "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "node_modules/os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lcid": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
+ "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
+ },
+ "node_modules/path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-root-regex": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-type/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/pdf": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/pdf/-/pdf-0.1.0.tgz",
+ "integrity": "sha512-OCrtycX8Fb0wXJJbU11xjWZbZHpvYq3kUHrWLnPC7+Czjocvg2iI25kRt4CUTq74/rX5aUv8zIAYC/Ky3Bybrg==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.4.tgz",
+ "integrity": "sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.6.3",
+ "vue-demi": "^0.14.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia-plugin-persistedstate": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.3.tgz",
+ "integrity": "sha512-Cm819WBj/s5K5DGw55EwbXDtx+EZzM0YR5AZbq9XE3u0xvXwvX2JnWoFpWIcdzISBHqy9H1UiSIUmXyXqWsQRQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "pinia": "^2.0.0"
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.47",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+ "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.0",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-prefix-selector": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.16.1.tgz",
+ "integrity": "sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "postcss": ">4 <9"
+ }
+ },
+ "node_modules/posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz",
+ "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "posthtml-parser": "^0.2.0",
+ "posthtml-render": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/posthtml-parser": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+ "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "htmlparser2": "^3.8.3",
+ "isobject": "^2.1.0"
+ }
+ },
+ "node_modules/posthtml-parser/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/posthtml-rename-id": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+ "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "node_modules/posthtml-render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz",
+ "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/posthtml-svg-mode": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+ "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
+ "node_modules/preact": {
+ "version": "10.24.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz",
+ "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
+ },
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "license": "ISC"
+ },
+ "node_modules/promise-retry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/quick-lru": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "license": "ISC"
+ },
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/read-pkg/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/read-pkg/node_modules/type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.1.6"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "license": "MIT",
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
+ "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "license": "MIT"
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
+ "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz",
+ "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.2.0",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.11.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/regjsparser": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz",
+ "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~3.0.2"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/remove-bom-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
+ "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5",
+ "is-utf8": "^0.2.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/remove-bom-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
+ "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "remove-bom-buffer": "^3.0.0",
+ "safe-buffer": "^5.1.0",
+ "through2": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/replace-ext": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+ "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/replace-homedir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
+ "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1",
+ "is-absolute": "^1.0.0",
+ "remove-trailing-separator": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-options": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
+ "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "value-or-function": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "3.29.5",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
+ "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
+ "license": "MIT",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-array-concat/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/sass": {
+ "version": "1.80.4",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.4.tgz",
+ "integrity": "sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "@parcel/watcher": "^2.4.1",
+ "chokidar": "^4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-graph": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz",
+ "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==",
+ "license": "MIT",
+ "dependencies": {
+ "glob": "^7.0.0",
+ "lodash": "^4.17.11",
+ "scss-tokenizer": "^0.4.3",
+ "yargs": "^17.2.1"
+ },
+ "bin": {
+ "sassgraph": "bin/sassgraph"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sass-graph/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sass-graph/node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/sass-graph/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/sass-graph/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sass-graph/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sass-graph/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+ "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "2.2.31",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+ "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+ "license": "MIT",
+ "dependencies": {
+ "compute-scroll-into-view": "^1.0.20"
+ }
+ },
+ "node_modules/scss-tokenizer": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz",
+ "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==",
+ "license": "MIT",
+ "dependencies": {
+ "js-base64": "^2.4.9",
+ "source-map": "^0.7.3"
+ }
+ },
+ "node_modules/scss-tokenizer/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/semver-greatest-satisfied-range": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
+ "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sver-compat": "^1.5.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/sentence-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
+ "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "license": "ISC"
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/slate": {
+ "version": "0.72.8",
+ "resolved": "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz",
+ "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
+ "license": "MIT",
+ "dependencies": {
+ "immer": "^9.0.6",
+ "is-plain-object": "^5.0.0",
+ "tiny-warning": "^1.0.3"
+ }
+ },
+ "node_modules/slate-history": {
+ "version": "0.66.0",
+ "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz",
+ "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-object": "^5.0.0"
+ },
+ "peerDependencies": {
+ "slate": ">=0.65.3"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/snabbdom": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.2.tgz",
+ "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.17.0"
+ }
+ },
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "kind-of": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/snapdragon/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
+ "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^9.0.5",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.3.tgz",
+ "integrity": "sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg==",
+ "license": "MIT"
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sparkles": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
+ "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
+ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ssr-window": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
+ "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
+ "license": "MIT"
+ },
+ "node_modules/ssri": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+ "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "node_modules/stream-exhaust": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
+ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-utf8": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supercluster": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz",
+ "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==",
+ "license": "ISC",
+ "dependencies": {
+ "kdbush": "^4.0.2"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sver-compat": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
+ "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es6-iterator": "^2.0.1",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/svg-baker": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz",
+ "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "clone": "^2.1.1",
+ "he": "^1.1.1",
+ "image-size": "^0.5.1",
+ "loader-utils": "^1.1.0",
+ "merge-options": "1.0.1",
+ "micromatch": "3.1.0",
+ "postcss": "^5.2.17",
+ "postcss-prefix-selector": "^1.6.0",
+ "posthtml-rename-id": "^1.0",
+ "posthtml-svg-mode": "^1.0.3",
+ "query-string": "^4.3.2",
+ "traverse": "^0.6.6"
+ }
+ },
+ "node_modules/svg-baker-runtime": {
+ "version": "1.4.7",
+ "resolved": "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz",
+ "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deepmerge": "1.3.2",
+ "mitt": "1.1.2",
+ "svg-baker": "^1.7.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/svg-baker/node_modules/loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz",
+ "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.2.2",
+ "define-property": "^1.0.0",
+ "extend-shallow": "^2.0.1",
+ "extglob": "^2.0.2",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^5.0.2",
+ "nanomatch": "^1.2.1",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/svg-baker/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-sprite-loader": {
+ "version": "6.0.11",
+ "resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.11.tgz",
+ "integrity": "sha512-TedsTf8wsHH6HgdwKjUveDZRC6q5gPloYV8A8/zZaRWP929J7x6TzQ6MvZFl+YYDJuJ0Akyuu/vNVJ+fbPuYXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "deepmerge": "1.3.2",
+ "domready": "1.0.8",
+ "escape-string-regexp": "1.0.5",
+ "loader-utils": "^1.1.0",
+ "svg-baker": "^1.5.0",
+ "svg-baker-runtime": "^1.4.7",
+ "url-slug": "2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/svg-sprite-loader/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/svg-sprite-loader/node_modules/loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/terser": {
+ "version": "5.36.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz",
+ "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+ "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.20",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.26.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/throttle-debounce": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.0.tgz",
+ "integrity": "sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.22"
+ }
+ },
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/through2-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
+ "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "through2": "~2.0.0",
+ "xtend": "~4.0.0"
+ }
+ },
+ "node_modules/time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
+ "license": "MIT"
+ },
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
+ "license": "MIT"
+ },
+ "node_modules/to-absolute-glob": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
+ "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-absolute": "^1.0.0",
+ "is-negated-glob": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/to-regex-range/node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/to-through": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
+ "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "through2": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.10",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.10.tgz",
+ "integrity": "sha512-hN4uFRxbK+PX56DxYiGHsTn2dME3TVr9vbNqlQGcGcPhJAn+tdP126iA+TArMpI4YSgnTkMWyoLl5bf81Hi5TA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "gopd": "^1.0.1",
+ "typedarray.prototype.slice": "^1.0.3",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/trim-newlines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
+ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/true-case-path": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz",
+ "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
+ "license": "0BSD"
+ },
+ "node_modules/type": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
+ "license": "ISC"
+ },
+ "node_modules/type-fest": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
+ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/typedarray.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-errors": "^1.3.0",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-offset": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/undertaker": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
+ "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-flatten": "^1.0.1",
+ "arr-map": "^2.0.0",
+ "bach": "^1.0.0",
+ "collection-map": "^1.0.0",
+ "es6-weak-map": "^2.0.1",
+ "fast-levenshtein": "^1.0.0",
+ "last-run": "^1.1.0",
+ "object.defaults": "^1.0.0",
+ "object.reduce": "^1.0.0",
+ "undertaker-registry": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/undertaker-registry": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
+ "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "license": "MIT"
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unidecode": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz",
+ "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.12"
+ }
+ },
+ "node_modules/union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/union-value/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unique-filename": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+ "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
+ "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/unique-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
+ "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "through2-filter": "^3.0.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4",
+ "yarn": "*"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/upper-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
+ "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/upper-case-first": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
+ "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/uppercamelcase": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/uppercamelcase/-/uppercamelcase-1.1.0.tgz",
+ "integrity": "sha512-C7YEMvhgrvTEKEEVqA7LXNID/1TvvIwYZqNIKLquS6y/MGSkRQAav9LnTTILlC1RqUM8eTVBOe1U/fnB652PRA==",
+ "license": "MIT",
+ "dependencies": {
+ "camelcase": "^1.2.1"
+ }
+ },
+ "node_modules/uppercamelcase/node_modules/camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/url-slug": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/url-slug/-/url-slug-2.0.0.tgz",
+ "integrity": "sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "unidecode": "0.1.8"
+ }
+ },
+ "node_modules/use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/value-or-function": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
+ "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+ "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^2.1.1",
+ "clone-buffer": "^1.0.0",
+ "clone-stats": "^1.0.0",
+ "cloneable-readable": "^1.0.0",
+ "remove-trailing-separator": "^1.0.1",
+ "replace-ext": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl-fs": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
+ "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fs-mkdirp-stream": "^1.0.0",
+ "glob-stream": "^6.1.0",
+ "graceful-fs": "^4.0.0",
+ "is-valid-glob": "^1.0.0",
+ "lazystream": "^1.0.0",
+ "lead": "^1.0.0",
+ "object.assign": "^4.0.4",
+ "pumpify": "^1.3.5",
+ "readable-stream": "^2.3.3",
+ "remove-bom-buffer": "^3.0.0",
+ "remove-bom-stream": "^1.2.0",
+ "resolve-options": "^1.1.0",
+ "through2": "^2.0.0",
+ "to-through": "^2.0.0",
+ "value-or-function": "^3.0.0",
+ "vinyl": "^2.0.0",
+ "vinyl-sourcemap": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl-sourcemap": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
+ "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "append-buffer": "^1.0.2",
+ "convert-source-map": "^1.5.0",
+ "graceful-fs": "^4.1.6",
+ "normalize-path": "^2.1.1",
+ "now-and-later": "^2.0.0",
+ "remove-bom-buffer": "^3.0.0",
+ "vinyl": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl-sourcemap/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vinyl-sourcemap/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "4.5.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz",
+ "integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.18.10",
+ "postcss": "^8.4.27",
+ "rollup": "^3.27.1"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-style-import": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-style-import/-/vite-plugin-style-import-2.0.0.tgz",
+ "integrity": "sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^4.1.2",
+ "change-case": "^4.1.2",
+ "console": "^0.7.2",
+ "es-module-lexer": "^0.9.3",
+ "fs-extra": "^10.0.0",
+ "magic-string": "^0.25.7",
+ "pathe": "^0.2.0"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-style-import/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz",
+ "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/compiler-sfc": "3.5.12",
+ "@vue/runtime-dom": "3.5.12",
+ "@vue/server-renderer": "3.5.12",
+ "@vue/shared": "3.5.12"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-amap": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/vue-amap/-/vue-amap-0.5.10.tgz",
+ "integrity": "sha512-9ViNCev1vx32+zZ5RvF/TmUZNbwL9QrdA2/OnD2GlXMfQBkJy7D08Vb7379t6guqnopDPtWJ8K6gg72h9+4GUg==",
+ "license": "MIT",
+ "dependencies": {
+ "uppercamelcase": "^1.1.0"
+ },
+ "engines": {
+ "core-js": "^2.5.0",
+ "node": ">= 4.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/vue-i18n": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.1.tgz",
+ "integrity": "sha512-xjxV0LYc1xQ8TbAVfIyZiOSS8qoU1R0YwV7V5I8I6Fd64+zvsTsdPgtylPsie3Vdt9wekeYhr+smKDeaK6RBuA==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/core-base": "9.14.1",
+ "@intlify/shared": "9.14.1",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-loading-overlay": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/vue-loading-overlay/-/vue-loading-overlay-6.0.6.tgz",
+ "integrity": "sha512-ZPrWawjCoNKGbCG9z4nePgbs/K9KXPa1j1oAJXP6T8FQho3NO+/chhjx4MLYFzfpwr+xkiQ8SNrV1kUG1bZPAw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.13.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz",
+ "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.6.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-seamless-scroll": {
+ "version": "1.1.23",
+ "resolved": "https://registry.npmjs.org/vue-seamless-scroll/-/vue-seamless-scroll-1.1.23.tgz",
+ "integrity": "sha512-HBjUub8WwsKJzbFCrwKPDrZn4e+SSbkKgwWtjKtfLwesiFGwSsVxP44/Z6d3kpXy94qIFOiflJH6l0/9pj7SGA==",
+ "license": "ISC",
+ "dependencies": {
+ "comutils": "^1.1.9"
+ }
+ },
+ "node_modules/vue3-amap": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/vue3-amap/-/vue3-amap-1.0.5.tgz",
+ "integrity": "sha512-Gynfy4m8WW55lV2GdMemtEPWOlGN+EC6V5UmQZ8mN4aJWQp5ZoOSHbSlokl6NPzZz3/tJ5UkHFXKZni5qnVF1g==",
+ "workspaces": [
+ "packages/*"
+ ],
+ "dependencies": {
+ "uppercamelcase": "^3.0.0",
+ "vue": "^3.0.9"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.9"
+ }
+ },
+ "node_modules/vue3-amap/node_modules/camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/vue3-amap/node_modules/uppercamelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/uppercamelcase/-/uppercamelcase-3.0.0.tgz",
+ "integrity": "sha512-zTWmRiOJACCdFGWjzye3L5cjSuVdZ/c8C0iHIwVbfORFD8IhGNAO6BOWkZ+fj+SI6/aFbdjGXE6gwPG780H4gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "camelcase": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/vue3-google-map": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/vue3-google-map/-/vue3-google-map-0.18.0.tgz",
+ "integrity": "sha512-dhDlXK5XxKxH3Mj6n6C7y99M5LRwPDHlgGWgfLkmzVMpwlxBhaSxDhSTaduAFUjeHVusEfYdPxJSSP7yPJr8sg==",
+ "license": "MIT",
+ "dependencies": {
+ "@googlemaps/js-api-loader": "^1.16.2",
+ "@googlemaps/markerclusterer": "^2.4.0",
+ "fast-deep-equal": "^3.1.3"
+ },
+ "engines": {
+ "node": ">=16.11.0"
+ },
+ "peerDependencies": {
+ "vue": "^3"
+ }
+ },
+ "node_modules/vue3-i18n": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/vue3-i18n/-/vue3-i18n-1.1.5.tgz",
+ "integrity": "sha512-DN5XfE0z6BnFxjbP/qW8AKI5QCex97L2l8z7G76ccTkfTsJ18n4mXGCy4K9H2rm4FlzDx/USPlPqQK64yXQqDg==",
+ "license": "MIT",
+ "workspaces": [
+ "packages/*"
+ ],
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue3-json-viewer": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/vue3-json-viewer/-/vue3-json-viewer-2.2.2.tgz",
+ "integrity": "sha512-56l3XDGggnpwEqZieXsSMhNT4NhtO6d7zuSAxHo4i0UVxymyY2jRb7UMQOU1ztChKALZCAzX7DlgrsnEhxu77A==",
+ "license": "ISC",
+ "dependencies": {
+ "clipboard": "^2.0.10"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue3-seamless-scroll": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/vue3-seamless-scroll/-/vue3-seamless-scroll-2.0.1.tgz",
+ "integrity": "sha512-mI3BaDU3pjcPUhVSw3/xNKdfPBDABTi/OdZaZqKysx4cSdNfGRbVvGNDzzptBbJ5S7imv5T55l6x/SqgnxKreg==",
+ "license": "MIT",
+ "dependencies": {
+ "throttle-debounce": "5.0.0"
+ }
+ },
+ "node_modules/vue3-tree-org": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/vue3-tree-org/-/vue3-tree-org-4.2.2.tgz",
+ "integrity": "sha512-AG2SykyD6dw0jIyqBm8iuF9j9GWli6KrwudxR1RjULCCBTDFsoNm7MmP/weKT7wowN/sPk+e2RsnvEJMw2OJMw==",
+ "license": "MIT",
+ "dependencies": {
+ "core-js": "^3.6.5"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.95.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz",
+ "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "^1.0.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
+ "acorn": "^8.7.1",
+ "acorn-import-attributes": "^1.9.5",
+ "browserslist": "^4.21.10",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.17.1",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.11",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.1",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/es-module-lexer": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/webpack/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/weixin-js-sdk": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.5.tgz",
+ "integrity": "sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ==",
+ "license": "MIT"
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+ "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wide-align": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
+ "node_modules/wildcard": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz",
+ "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==",
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yargs": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
+ "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "camelcase": "^3.0.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^1.4.0",
+ "read-pkg-up": "^1.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^1.0.2",
+ "which-module": "^1.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^5.0.1"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/yargs/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yargs/node_modules/yargs-parser": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
+ "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "camelcase": "^3.0.0",
+ "object.assign": "^4.1.0"
+ }
+ },
+ "node_modules/zrender": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz",
+ "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tslib": "2.3.0"
+ }
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/package.json b/04-Development/02-Code/bwf/com.farriver.bwf.webui/package.json
new file mode 100644
index 0000000..59bafed
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "bwf",
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build"
+ },
+ "dependencies": {
+ "@amap/amap-jsapi-loader": "^1.0.1",
+ "@babel/plugin-transform-class-properties": "^7.22.5",
+ "@babel/runtime": "^7.23.2",
+ "@element-plus/icons-vue": "^2.1.0",
+ "@vitejs/plugin-vue": "^4.4.0",
+ "@wangeditor/editor": "^5.1.23",
+ "@wangeditor/editor-for-vue": "^5.1.12",
+ "@wangeditor/plugin-formula": "^1.0.11",
+ "axios": "^1.5.1",
+ "babel-loader": "^8.0.4",
+ "default-passive-events": "^2.0.0",
+ "echarts": "^5.4.3",
+ "echarts-liquidfill": "^3.1.0",
+ "element-plus": "^2.7.3",
+ "element-resize-detector": "^1.2.4",
+ "es6-promise": "^4.2.8",
+ "global": "^4.4.0",
+ "jquery": "^3.7.1",
+ "js-cookie": "^3.0.5",
+ "moment": "^2.29.4",
+ "net": "^1.0.2",
+ "node-sass": "^9.0.0",
+ "nprogress": "^0.2.0",
+ "pdf": "^0.1.0",
+ "pinia": "^2.1.6",
+ "pinia-plugin-persistedstate": "^3.2.0",
+ "sortablejs": "^1.15.0",
+ "util": "^0.12.5",
+ "vite": "^4.4.11",
+ "vue": "^3.3.4",
+ "vue-amap": "^0.5.10",
+ "vue-i18n": "^9.5.0",
+ "vue-loading-overlay": "^6.0.3",
+ "vue-router": "^4.2.5",
+ "vue-seamless-scroll": "^1.1.23",
+ "vue3-amap": "^1.0.5",
+ "vue3-google-map": "^0.18.0",
+ "vue3-i18n": "^1.1.5",
+ "vue3-json-viewer": "^2.2.2",
+ "vue3-seamless-scroll": "^2.0.1",
+ "vue3-tree-org": "^4.2.2",
+ "weixin-js-sdk": "^1.6.5"
+ },
+ "devDependencies": {
+ "@babel/cli": "^7.23.0",
+ "@babel/core": "^7.23.2",
+ "@babel/plugin-transform-classes": "^7.22.15",
+ "@babel/plugin-transform-runtime": "^7.23.2",
+ "@babel/preset-env": "^7.23.2",
+ "@types/node": "^20.8.3",
+ "@vue/compiler-sfc": "^3.2.26",
+ "@vue/runtime-core": "^3.2.37",
+ "consola": "^3.2.3",
+ "element-theme-chalk": "^2.15.14",
+ "gulp": "^4.0.2",
+ "less": "^4.2.0",
+ "sass": "^1.69.0",
+ "svg-sprite-loader": "^6.0.11",
+ "vite-plugin-style-import": "^2.0.0"
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/pom.xml b/04-Development/02-Code/bwf/com.farriver.bwf.webui/pom.xml
new file mode 100644
index 0000000..d60753f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+ <groupId>com.farriver.bwf.webui</groupId>
+ <artifactId>com.farriver.bwf.webui</artifactId>
+ <version>${revision}</version>
+ <parent>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <dependencies>
+
+ </dependencies>
+</project>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/config.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/config.js
new file mode 100644
index 0000000..921d2bc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/config.js
@@ -0,0 +1,11 @@
+var WGURL = {
+ UseSSO: false,
+ namespace: "",
+ cookieDomain: "localhost",
+ routeKey: "bwf-router",
+ SSOLoginUri: "http://rbac.farriver.top/ssologin",
+ ifcDomain: "http://ifc.farriver.top",
+ staticDomain: "http://bwf.farriver.top/static/",
+ appDomain: "http://bwf.farriver.top/",
+ // appDomain: "http://localhost:8080/",
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-awesome-all.css b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-awesome-all.css
new file mode 100644
index 0000000..8d51776
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-awesome-all.css
@@ -0,0 +1,7937 @@
+/*!
+ * Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2022 Fonticons, Inc.
+ */
+.fa {
+ font-family: var(--fa-style-family, "Font Awesome 6 Free");
+ font-weight: var(--fa-style, 900); }
+
+.fa,
+.fa-classic,
+.fa-sharp,
+.fas,
+.fa-solid,
+.far,
+.fa-regular,
+.fab,
+.fa-brands {
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ display: var(--fa-display, inline-block);
+ font-style: normal;
+ font-variant: normal;
+ line-height: 1;
+ text-rendering: auto; }
+
+.fas,
+.fa-classic,
+.fa-solid,
+.far,
+.fa-regular {
+ font-family: 'Font Awesome 6 Free'; }
+
+.fab,
+.fa-brands {
+ font-family: 'Font Awesome 6 Brands'; }
+
+.fa-1x {
+ font-size: 1em; }
+
+.fa-2x {
+ font-size: 2em; }
+
+.fa-3x {
+ font-size: 3em; }
+
+.fa-4x {
+ font-size: 4em; }
+
+.fa-5x {
+ font-size: 5em; }
+
+.fa-6x {
+ font-size: 6em; }
+
+.fa-7x {
+ font-size: 7em; }
+
+.fa-8x {
+ font-size: 8em; }
+
+.fa-9x {
+ font-size: 9em; }
+
+.fa-10x {
+ font-size: 10em; }
+
+.fa-2xs {
+ font-size: 0.625em;
+ line-height: 0.1em;
+ vertical-align: 0.225em; }
+
+.fa-xs {
+ font-size: 0.75em;
+ line-height: 0.08333em;
+ vertical-align: 0.125em; }
+
+.fa-sm {
+ font-size: 0.875em;
+ line-height: 0.07143em;
+ vertical-align: 0.05357em; }
+
+.fa-lg {
+ font-size: 1.25em;
+ line-height: 0.05em;
+ vertical-align: -0.075em; }
+
+.fa-xl {
+ font-size: 1.5em;
+ line-height: 0.04167em;
+ vertical-align: -0.125em; }
+
+.fa-2xl {
+ font-size: 2em;
+ line-height: 0.03125em;
+ vertical-align: -0.1875em; }
+
+.fa-fw {
+ text-align: center;
+ width: 1.25em; }
+
+.fa-ul {
+ list-style-type: none;
+ margin-left: var(--fa-li-margin, 2.5em);
+ padding-left: 0; }
+ .fa-ul > li {
+ position: relative; }
+
+.fa-li {
+ left: calc(var(--fa-li-width, 2em) * -1);
+ position: absolute;
+ text-align: center;
+ width: var(--fa-li-width, 2em);
+ line-height: inherit; }
+
+.fa-border {
+ border-color: var(--fa-border-color, #eee);
+ border-radius: var(--fa-border-radius, 0.1em);
+ border-style: var(--fa-border-style, solid);
+ border-width: var(--fa-border-width, 0.08em);
+ padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
+
+.fa-pull-left {
+ float: left;
+ margin-right: var(--fa-pull-margin, 0.3em); }
+
+.fa-pull-right {
+ float: right;
+ margin-left: var(--fa-pull-margin, 0.3em); }
+
+.fa-beat {
+ -webkit-animation-name: fa-beat;
+ animation-name: fa-beat;
+ -webkit-animation-delay: var(--fa-animation-delay, 0s);
+ animation-delay: var(--fa-animation-delay, 0s);
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
+ animation-duration: var(--fa-animation-duration, 1s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out); }
+
+.fa-bounce {
+ -webkit-animation-name: fa-bounce;
+ animation-name: fa-bounce;
+ -webkit-animation-delay: var(--fa-animation-delay, 0s);
+ animation-delay: var(--fa-animation-delay, 0s);
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
+ animation-duration: var(--fa-animation-duration, 1s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
+
+.fa-fade {
+ -webkit-animation-name: fa-fade;
+ animation-name: fa-fade;
+ -webkit-animation-delay: var(--fa-animation-delay, 0s);
+ animation-delay: var(--fa-animation-delay, 0s);
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
+ animation-duration: var(--fa-animation-duration, 1s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
+
+.fa-beat-fade {
+ -webkit-animation-name: fa-beat-fade;
+ animation-name: fa-beat-fade;
+ -webkit-animation-delay: var(--fa-animation-delay, 0s);
+ animation-delay: var(--fa-animation-delay, 0s);
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
+ animation-duration: var(--fa-animation-duration, 1s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
+ animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
+
+.fa-flip {
+ -webkit-animation-name: fa-flip;
+ animation-name: fa-flip;
+ -webkit-animation-delay: var(--fa-animation-delay, 0s);
+ animation-delay: var(--fa-animation-delay, 0s);
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
+ animation-duration: var(--fa-animation-duration, 1s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
+ animation-timing-function: var(--fa-animation-timing, ease-in-out); }
+
+.fa-shake {
+ -webkit-animation-name: fa-shake;
+ animation-name: fa-shake;
+ -webkit-animation-delay: var(--fa-animation-delay, 0s);
+ animation-delay: var(--fa-animation-delay, 0s);
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
+ animation-duration: var(--fa-animation-duration, 1s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, linear);
+ animation-timing-function: var(--fa-animation-timing, linear); }
+
+.fa-spin {
+ -webkit-animation-name: fa-spin;
+ animation-name: fa-spin;
+ -webkit-animation-delay: var(--fa-animation-delay, 0s);
+ animation-delay: var(--fa-animation-delay, 0s);
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 2s);
+ animation-duration: var(--fa-animation-duration, 2s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, linear);
+ animation-timing-function: var(--fa-animation-timing, linear); }
+
+.fa-spin-reverse {
+ --fa-animation-direction: reverse; }
+
+.fa-pulse,
+.fa-spin-pulse {
+ -webkit-animation-name: fa-spin;
+ animation-name: fa-spin;
+ -webkit-animation-direction: var(--fa-animation-direction, normal);
+ animation-direction: var(--fa-animation-direction, normal);
+ -webkit-animation-duration: var(--fa-animation-duration, 1s);
+ animation-duration: var(--fa-animation-duration, 1s);
+ -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ animation-iteration-count: var(--fa-animation-iteration-count, infinite);
+ -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
+ animation-timing-function: var(--fa-animation-timing, steps(8)); }
+
+@media (prefers-reduced-motion: reduce) {
+ .fa-beat,
+ .fa-bounce,
+ .fa-fade,
+ .fa-beat-fade,
+ .fa-flip,
+ .fa-pulse,
+ .fa-shake,
+ .fa-spin,
+ .fa-spin-pulse {
+ -webkit-animation-delay: -1ms;
+ animation-delay: -1ms;
+ -webkit-animation-duration: 1ms;
+ animation-duration: 1ms;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+ transition-delay: 0s;
+ transition-duration: 0s; } }
+
+@-webkit-keyframes fa-beat {
+ 0%, 90% {
+ -webkit-transform: scale(1);
+ transform: scale(1); }
+ 45% {
+ -webkit-transform: scale(var(--fa-beat-scale, 1.25));
+ transform: scale(var(--fa-beat-scale, 1.25)); } }
+
+@keyframes fa-beat {
+ 0%, 90% {
+ -webkit-transform: scale(1);
+ transform: scale(1); }
+ 45% {
+ -webkit-transform: scale(var(--fa-beat-scale, 1.25));
+ transform: scale(var(--fa-beat-scale, 1.25)); } }
+
+@-webkit-keyframes fa-bounce {
+ 0% {
+ -webkit-transform: scale(1, 1) translateY(0);
+ transform: scale(1, 1) translateY(0); }
+ 10% {
+ -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
+ transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
+ 30% {
+ -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
+ 50% {
+ -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
+ transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
+ 57% {
+ -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
+ transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
+ 64% {
+ -webkit-transform: scale(1, 1) translateY(0);
+ transform: scale(1, 1) translateY(0); }
+ 100% {
+ -webkit-transform: scale(1, 1) translateY(0);
+ transform: scale(1, 1) translateY(0); } }
+
+@keyframes fa-bounce {
+ 0% {
+ -webkit-transform: scale(1, 1) translateY(0);
+ transform: scale(1, 1) translateY(0); }
+ 10% {
+ -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
+ transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
+ 30% {
+ -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
+ transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
+ 50% {
+ -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
+ transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
+ 57% {
+ -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
+ transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
+ 64% {
+ -webkit-transform: scale(1, 1) translateY(0);
+ transform: scale(1, 1) translateY(0); }
+ 100% {
+ -webkit-transform: scale(1, 1) translateY(0);
+ transform: scale(1, 1) translateY(0); } }
+
+@-webkit-keyframes fa-fade {
+ 50% {
+ opacity: var(--fa-fade-opacity, 0.4); } }
+
+@keyframes fa-fade {
+ 50% {
+ opacity: var(--fa-fade-opacity, 0.4); } }
+
+@-webkit-keyframes fa-beat-fade {
+ 0%, 100% {
+ opacity: var(--fa-beat-fade-opacity, 0.4);
+ -webkit-transform: scale(1);
+ transform: scale(1); }
+ 50% {
+ opacity: 1;
+ -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
+ transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
+
+@keyframes fa-beat-fade {
+ 0%, 100% {
+ opacity: var(--fa-beat-fade-opacity, 0.4);
+ -webkit-transform: scale(1);
+ transform: scale(1); }
+ 50% {
+ opacity: 1;
+ -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
+ transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
+
+@-webkit-keyframes fa-flip {
+ 50% {
+ -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
+ transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
+
+@keyframes fa-flip {
+ 50% {
+ -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
+ transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
+
+@-webkit-keyframes fa-shake {
+ 0% {
+ -webkit-transform: rotate(-15deg);
+ transform: rotate(-15deg); }
+ 4% {
+ -webkit-transform: rotate(15deg);
+ transform: rotate(15deg); }
+ 8%, 24% {
+ -webkit-transform: rotate(-18deg);
+ transform: rotate(-18deg); }
+ 12%, 28% {
+ -webkit-transform: rotate(18deg);
+ transform: rotate(18deg); }
+ 16% {
+ -webkit-transform: rotate(-22deg);
+ transform: rotate(-22deg); }
+ 20% {
+ -webkit-transform: rotate(22deg);
+ transform: rotate(22deg); }
+ 32% {
+ -webkit-transform: rotate(-12deg);
+ transform: rotate(-12deg); }
+ 36% {
+ -webkit-transform: rotate(12deg);
+ transform: rotate(12deg); }
+ 40%, 100% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg); } }
+
+@keyframes fa-shake {
+ 0% {
+ -webkit-transform: rotate(-15deg);
+ transform: rotate(-15deg); }
+ 4% {
+ -webkit-transform: rotate(15deg);
+ transform: rotate(15deg); }
+ 8%, 24% {
+ -webkit-transform: rotate(-18deg);
+ transform: rotate(-18deg); }
+ 12%, 28% {
+ -webkit-transform: rotate(18deg);
+ transform: rotate(18deg); }
+ 16% {
+ -webkit-transform: rotate(-22deg);
+ transform: rotate(-22deg); }
+ 20% {
+ -webkit-transform: rotate(22deg);
+ transform: rotate(22deg); }
+ 32% {
+ -webkit-transform: rotate(-12deg);
+ transform: rotate(-12deg); }
+ 36% {
+ -webkit-transform: rotate(12deg);
+ transform: rotate(12deg); }
+ 40%, 100% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg); } }
+
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg); }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg); } }
+
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg); }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg); } }
+
+.fa-rotate-90 {
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg); }
+
+.fa-rotate-180 {
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg); }
+
+.fa-rotate-270 {
+ -webkit-transform: rotate(270deg);
+ transform: rotate(270deg); }
+
+.fa-flip-horizontal {
+ -webkit-transform: scale(-1, 1);
+ transform: scale(-1, 1); }
+
+.fa-flip-vertical {
+ -webkit-transform: scale(1, -1);
+ transform: scale(1, -1); }
+
+.fa-flip-both,
+.fa-flip-horizontal.fa-flip-vertical {
+ -webkit-transform: scale(-1, -1);
+ transform: scale(-1, -1); }
+
+.fa-rotate-by {
+ -webkit-transform: rotate(var(--fa-rotate-angle, none));
+ transform: rotate(var(--fa-rotate-angle, none)); }
+
+.fa-stack {
+ display: inline-block;
+ height: 2em;
+ line-height: 2em;
+ position: relative;
+ vertical-align: middle;
+ width: 2.5em; }
+
+.fa-stack-1x,
+.fa-stack-2x {
+ left: 0;
+ position: absolute;
+ text-align: center;
+ width: 100%;
+ z-index: var(--fa-stack-z-index, auto); }
+
+.fa-stack-1x {
+ line-height: inherit; }
+
+.fa-stack-2x {
+ font-size: 2em; }
+
+.fa-inverse {
+ color: var(--fa-inverse, #fff); }
+
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+readers do not read off random characters that represent icons */
+.fa-0::before {
+ content: "\30"; }
+
+.fa-1::before {
+ content: "\31"; }
+
+.fa-2::before {
+ content: "\32"; }
+
+.fa-3::before {
+ content: "\33"; }
+
+.fa-4::before {
+ content: "\34"; }
+
+.fa-5::before {
+ content: "\35"; }
+
+.fa-6::before {
+ content: "\36"; }
+
+.fa-7::before {
+ content: "\37"; }
+
+.fa-8::before {
+ content: "\38"; }
+
+.fa-9::before {
+ content: "\39"; }
+
+.fa-fill-drip::before {
+ content: "\f576"; }
+
+.fa-arrows-to-circle::before {
+ content: "\e4bd"; }
+
+.fa-circle-chevron-right::before {
+ content: "\f138"; }
+
+.fa-chevron-circle-right::before {
+ content: "\f138"; }
+
+.fa-at::before {
+ content: "\40"; }
+
+.fa-trash-can::before {
+ content: "\f2ed"; }
+
+.fa-trash-alt::before {
+ content: "\f2ed"; }
+
+.fa-text-height::before {
+ content: "\f034"; }
+
+.fa-user-xmark::before {
+ content: "\f235"; }
+
+.fa-user-times::before {
+ content: "\f235"; }
+
+.fa-stethoscope::before {
+ content: "\f0f1"; }
+
+.fa-message::before {
+ content: "\f27a"; }
+
+.fa-comment-alt::before {
+ content: "\f27a"; }
+
+.fa-info::before {
+ content: "\f129"; }
+
+.fa-down-left-and-up-right-to-center::before {
+ content: "\f422"; }
+
+.fa-compress-alt::before {
+ content: "\f422"; }
+
+.fa-explosion::before {
+ content: "\e4e9"; }
+
+.fa-file-lines::before {
+ content: "\f15c"; }
+
+.fa-file-alt::before {
+ content: "\f15c"; }
+
+.fa-file-text::before {
+ content: "\f15c"; }
+
+.fa-wave-square::before {
+ content: "\f83e"; }
+
+.fa-ring::before {
+ content: "\f70b"; }
+
+.fa-building-un::before {
+ content: "\e4d9"; }
+
+.fa-dice-three::before {
+ content: "\f527"; }
+
+.fa-calendar-days::before {
+ content: "\f073"; }
+
+.fa-calendar-alt::before {
+ content: "\f073"; }
+
+.fa-anchor-circle-check::before {
+ content: "\e4aa"; }
+
+.fa-building-circle-arrow-right::before {
+ content: "\e4d1"; }
+
+.fa-volleyball::before {
+ content: "\f45f"; }
+
+.fa-volleyball-ball::before {
+ content: "\f45f"; }
+
+.fa-arrows-up-to-line::before {
+ content: "\e4c2"; }
+
+.fa-sort-down::before {
+ content: "\f0dd"; }
+
+.fa-sort-desc::before {
+ content: "\f0dd"; }
+
+.fa-circle-minus::before {
+ content: "\f056"; }
+
+.fa-minus-circle::before {
+ content: "\f056"; }
+
+.fa-door-open::before {
+ content: "\f52b"; }
+
+.fa-right-from-bracket::before {
+ content: "\f2f5"; }
+
+.fa-sign-out-alt::before {
+ content: "\f2f5"; }
+
+.fa-atom::before {
+ content: "\f5d2"; }
+
+.fa-soap::before {
+ content: "\e06e"; }
+
+.fa-icons::before {
+ content: "\f86d"; }
+
+.fa-heart-music-camera-bolt::before {
+ content: "\f86d"; }
+
+.fa-microphone-lines-slash::before {
+ content: "\f539"; }
+
+.fa-microphone-alt-slash::before {
+ content: "\f539"; }
+
+.fa-bridge-circle-check::before {
+ content: "\e4c9"; }
+
+.fa-pump-medical::before {
+ content: "\e06a"; }
+
+.fa-fingerprint::before {
+ content: "\f577"; }
+
+.fa-hand-point-right::before {
+ content: "\f0a4"; }
+
+.fa-magnifying-glass-location::before {
+ content: "\f689"; }
+
+.fa-search-location::before {
+ content: "\f689"; }
+
+.fa-forward-step::before {
+ content: "\f051"; }
+
+.fa-step-forward::before {
+ content: "\f051"; }
+
+.fa-face-smile-beam::before {
+ content: "\f5b8"; }
+
+.fa-smile-beam::before {
+ content: "\f5b8"; }
+
+.fa-flag-checkered::before {
+ content: "\f11e"; }
+
+.fa-football::before {
+ content: "\f44e"; }
+
+.fa-football-ball::before {
+ content: "\f44e"; }
+
+.fa-school-circle-exclamation::before {
+ content: "\e56c"; }
+
+.fa-crop::before {
+ content: "\f125"; }
+
+.fa-angles-down::before {
+ content: "\f103"; }
+
+.fa-angle-double-down::before {
+ content: "\f103"; }
+
+.fa-users-rectangle::before {
+ content: "\e594"; }
+
+.fa-people-roof::before {
+ content: "\e537"; }
+
+.fa-people-line::before {
+ content: "\e534"; }
+
+.fa-beer-mug-empty::before {
+ content: "\f0fc"; }
+
+.fa-beer::before {
+ content: "\f0fc"; }
+
+.fa-diagram-predecessor::before {
+ content: "\e477"; }
+
+.fa-arrow-up-long::before {
+ content: "\f176"; }
+
+.fa-long-arrow-up::before {
+ content: "\f176"; }
+
+.fa-fire-flame-simple::before {
+ content: "\f46a"; }
+
+.fa-burn::before {
+ content: "\f46a"; }
+
+.fa-person::before {
+ content: "\f183"; }
+
+.fa-male::before {
+ content: "\f183"; }
+
+.fa-laptop::before {
+ content: "\f109"; }
+
+.fa-file-csv::before {
+ content: "\f6dd"; }
+
+.fa-menorah::before {
+ content: "\f676"; }
+
+.fa-truck-plane::before {
+ content: "\e58f"; }
+
+.fa-record-vinyl::before {
+ content: "\f8d9"; }
+
+.fa-face-grin-stars::before {
+ content: "\f587"; }
+
+.fa-grin-stars::before {
+ content: "\f587"; }
+
+.fa-bong::before {
+ content: "\f55c"; }
+
+.fa-spaghetti-monster-flying::before {
+ content: "\f67b"; }
+
+.fa-pastafarianism::before {
+ content: "\f67b"; }
+
+.fa-arrow-down-up-across-line::before {
+ content: "\e4af"; }
+
+.fa-spoon::before {
+ content: "\f2e5"; }
+
+.fa-utensil-spoon::before {
+ content: "\f2e5"; }
+
+.fa-jar-wheat::before {
+ content: "\e517"; }
+
+.fa-envelopes-bulk::before {
+ content: "\f674"; }
+
+.fa-mail-bulk::before {
+ content: "\f674"; }
+
+.fa-file-circle-exclamation::before {
+ content: "\e4eb"; }
+
+.fa-circle-h::before {
+ content: "\f47e"; }
+
+.fa-hospital-symbol::before {
+ content: "\f47e"; }
+
+.fa-pager::before {
+ content: "\f815"; }
+
+.fa-address-book::before {
+ content: "\f2b9"; }
+
+.fa-contact-book::before {
+ content: "\f2b9"; }
+
+.fa-strikethrough::before {
+ content: "\f0cc"; }
+
+.fa-k::before {
+ content: "\4b"; }
+
+.fa-landmark-flag::before {
+ content: "\e51c"; }
+
+.fa-pencil::before {
+ content: "\f303"; }
+
+.fa-pencil-alt::before {
+ content: "\f303"; }
+
+.fa-backward::before {
+ content: "\f04a"; }
+
+.fa-caret-right::before {
+ content: "\f0da"; }
+
+.fa-comments::before {
+ content: "\f086"; }
+
+.fa-paste::before {
+ content: "\f0ea"; }
+
+.fa-file-clipboard::before {
+ content: "\f0ea"; }
+
+.fa-code-pull-request::before {
+ content: "\e13c"; }
+
+.fa-clipboard-list::before {
+ content: "\f46d"; }
+
+.fa-truck-ramp-box::before {
+ content: "\f4de"; }
+
+.fa-truck-loading::before {
+ content: "\f4de"; }
+
+.fa-user-check::before {
+ content: "\f4fc"; }
+
+.fa-vial-virus::before {
+ content: "\e597"; }
+
+.fa-sheet-plastic::before {
+ content: "\e571"; }
+
+.fa-blog::before {
+ content: "\f781"; }
+
+.fa-user-ninja::before {
+ content: "\f504"; }
+
+.fa-person-arrow-up-from-line::before {
+ content: "\e539"; }
+
+.fa-scroll-torah::before {
+ content: "\f6a0"; }
+
+.fa-torah::before {
+ content: "\f6a0"; }
+
+.fa-broom-ball::before {
+ content: "\f458"; }
+
+.fa-quidditch::before {
+ content: "\f458"; }
+
+.fa-quidditch-broom-ball::before {
+ content: "\f458"; }
+
+.fa-toggle-off::before {
+ content: "\f204"; }
+
+.fa-box-archive::before {
+ content: "\f187"; }
+
+.fa-archive::before {
+ content: "\f187"; }
+
+.fa-person-drowning::before {
+ content: "\e545"; }
+
+.fa-arrow-down-9-1::before {
+ content: "\f886"; }
+
+.fa-sort-numeric-desc::before {
+ content: "\f886"; }
+
+.fa-sort-numeric-down-alt::before {
+ content: "\f886"; }
+
+.fa-face-grin-tongue-squint::before {
+ content: "\f58a"; }
+
+.fa-grin-tongue-squint::before {
+ content: "\f58a"; }
+
+.fa-spray-can::before {
+ content: "\f5bd"; }
+
+.fa-truck-monster::before {
+ content: "\f63b"; }
+
+.fa-w::before {
+ content: "\57"; }
+
+.fa-earth-africa::before {
+ content: "\f57c"; }
+
+.fa-globe-africa::before {
+ content: "\f57c"; }
+
+.fa-rainbow::before {
+ content: "\f75b"; }
+
+.fa-circle-notch::before {
+ content: "\f1ce"; }
+
+.fa-tablet-screen-button::before {
+ content: "\f3fa"; }
+
+.fa-tablet-alt::before {
+ content: "\f3fa"; }
+
+.fa-paw::before {
+ content: "\f1b0"; }
+
+.fa-cloud::before {
+ content: "\f0c2"; }
+
+.fa-trowel-bricks::before {
+ content: "\e58a"; }
+
+.fa-face-flushed::before {
+ content: "\f579"; }
+
+.fa-flushed::before {
+ content: "\f579"; }
+
+.fa-hospital-user::before {
+ content: "\f80d"; }
+
+.fa-tent-arrow-left-right::before {
+ content: "\e57f"; }
+
+.fa-gavel::before {
+ content: "\f0e3"; }
+
+.fa-legal::before {
+ content: "\f0e3"; }
+
+.fa-binoculars::before {
+ content: "\f1e5"; }
+
+.fa-microphone-slash::before {
+ content: "\f131"; }
+
+.fa-box-tissue::before {
+ content: "\e05b"; }
+
+.fa-motorcycle::before {
+ content: "\f21c"; }
+
+.fa-bell-concierge::before {
+ content: "\f562"; }
+
+.fa-concierge-bell::before {
+ content: "\f562"; }
+
+.fa-pen-ruler::before {
+ content: "\f5ae"; }
+
+.fa-pencil-ruler::before {
+ content: "\f5ae"; }
+
+.fa-people-arrows::before {
+ content: "\e068"; }
+
+.fa-people-arrows-left-right::before {
+ content: "\e068"; }
+
+.fa-mars-and-venus-burst::before {
+ content: "\e523"; }
+
+.fa-square-caret-right::before {
+ content: "\f152"; }
+
+.fa-caret-square-right::before {
+ content: "\f152"; }
+
+.fa-scissors::before {
+ content: "\f0c4"; }
+
+.fa-cut::before {
+ content: "\f0c4"; }
+
+.fa-sun-plant-wilt::before {
+ content: "\e57a"; }
+
+.fa-toilets-portable::before {
+ content: "\e584"; }
+
+.fa-hockey-puck::before {
+ content: "\f453"; }
+
+.fa-table::before {
+ content: "\f0ce"; }
+
+.fa-magnifying-glass-arrow-right::before {
+ content: "\e521"; }
+
+.fa-tachograph-digital::before {
+ content: "\f566"; }
+
+.fa-digital-tachograph::before {
+ content: "\f566"; }
+
+.fa-users-slash::before {
+ content: "\e073"; }
+
+.fa-clover::before {
+ content: "\e139"; }
+
+.fa-reply::before {
+ content: "\f3e5"; }
+
+.fa-mail-reply::before {
+ content: "\f3e5"; }
+
+.fa-star-and-crescent::before {
+ content: "\f699"; }
+
+.fa-house-fire::before {
+ content: "\e50c"; }
+
+.fa-square-minus::before {
+ content: "\f146"; }
+
+.fa-minus-square::before {
+ content: "\f146"; }
+
+.fa-helicopter::before {
+ content: "\f533"; }
+
+.fa-compass::before {
+ content: "\f14e"; }
+
+.fa-square-caret-down::before {
+ content: "\f150"; }
+
+.fa-caret-square-down::before {
+ content: "\f150"; }
+
+.fa-file-circle-question::before {
+ content: "\e4ef"; }
+
+.fa-laptop-code::before {
+ content: "\f5fc"; }
+
+.fa-swatchbook::before {
+ content: "\f5c3"; }
+
+.fa-prescription-bottle::before {
+ content: "\f485"; }
+
+.fa-bars::before {
+ content: "\f0c9"; }
+
+.fa-navicon::before {
+ content: "\f0c9"; }
+
+.fa-people-group::before {
+ content: "\e533"; }
+
+.fa-hourglass-end::before {
+ content: "\f253"; }
+
+.fa-hourglass-3::before {
+ content: "\f253"; }
+
+.fa-heart-crack::before {
+ content: "\f7a9"; }
+
+.fa-heart-broken::before {
+ content: "\f7a9"; }
+
+.fa-square-up-right::before {
+ content: "\f360"; }
+
+.fa-external-link-square-alt::before {
+ content: "\f360"; }
+
+.fa-face-kiss-beam::before {
+ content: "\f597"; }
+
+.fa-kiss-beam::before {
+ content: "\f597"; }
+
+.fa-film::before {
+ content: "\f008"; }
+
+.fa-ruler-horizontal::before {
+ content: "\f547"; }
+
+.fa-people-robbery::before {
+ content: "\e536"; }
+
+.fa-lightbulb::before {
+ content: "\f0eb"; }
+
+.fa-caret-left::before {
+ content: "\f0d9"; }
+
+.fa-circle-exclamation::before {
+ content: "\f06a"; }
+
+.fa-exclamation-circle::before {
+ content: "\f06a"; }
+
+.fa-school-circle-xmark::before {
+ content: "\e56d"; }
+
+.fa-arrow-right-from-bracket::before {
+ content: "\f08b"; }
+
+.fa-sign-out::before {
+ content: "\f08b"; }
+
+.fa-circle-chevron-down::before {
+ content: "\f13a"; }
+
+.fa-chevron-circle-down::before {
+ content: "\f13a"; }
+
+.fa-unlock-keyhole::before {
+ content: "\f13e"; }
+
+.fa-unlock-alt::before {
+ content: "\f13e"; }
+
+.fa-cloud-showers-heavy::before {
+ content: "\f740"; }
+
+.fa-headphones-simple::before {
+ content: "\f58f"; }
+
+.fa-headphones-alt::before {
+ content: "\f58f"; }
+
+.fa-sitemap::before {
+ content: "\f0e8"; }
+
+.fa-circle-dollar-to-slot::before {
+ content: "\f4b9"; }
+
+.fa-donate::before {
+ content: "\f4b9"; }
+
+.fa-memory::before {
+ content: "\f538"; }
+
+.fa-road-spikes::before {
+ content: "\e568"; }
+
+.fa-fire-burner::before {
+ content: "\e4f1"; }
+
+.fa-flag::before {
+ content: "\f024"; }
+
+.fa-hanukiah::before {
+ content: "\f6e6"; }
+
+.fa-feather::before {
+ content: "\f52d"; }
+
+.fa-volume-low::before {
+ content: "\f027"; }
+
+.fa-volume-down::before {
+ content: "\f027"; }
+
+.fa-comment-slash::before {
+ content: "\f4b3"; }
+
+.fa-cloud-sun-rain::before {
+ content: "\f743"; }
+
+.fa-compress::before {
+ content: "\f066"; }
+
+.fa-wheat-awn::before {
+ content: "\e2cd"; }
+
+.fa-wheat-alt::before {
+ content: "\e2cd"; }
+
+.fa-ankh::before {
+ content: "\f644"; }
+
+.fa-hands-holding-child::before {
+ content: "\e4fa"; }
+
+.fa-asterisk::before {
+ content: "\2a"; }
+
+.fa-square-check::before {
+ content: "\f14a"; }
+
+.fa-check-square::before {
+ content: "\f14a"; }
+
+.fa-peseta-sign::before {
+ content: "\e221"; }
+
+.fa-heading::before {
+ content: "\f1dc"; }
+
+.fa-header::before {
+ content: "\f1dc"; }
+
+.fa-ghost::before {
+ content: "\f6e2"; }
+
+.fa-list::before {
+ content: "\f03a"; }
+
+.fa-list-squares::before {
+ content: "\f03a"; }
+
+.fa-square-phone-flip::before {
+ content: "\f87b"; }
+
+.fa-phone-square-alt::before {
+ content: "\f87b"; }
+
+.fa-cart-plus::before {
+ content: "\f217"; }
+
+.fa-gamepad::before {
+ content: "\f11b"; }
+
+.fa-circle-dot::before {
+ content: "\f192"; }
+
+.fa-dot-circle::before {
+ content: "\f192"; }
+
+.fa-face-dizzy::before {
+ content: "\f567"; }
+
+.fa-dizzy::before {
+ content: "\f567"; }
+
+.fa-egg::before {
+ content: "\f7fb"; }
+
+.fa-house-medical-circle-xmark::before {
+ content: "\e513"; }
+
+.fa-campground::before {
+ content: "\f6bb"; }
+
+.fa-folder-plus::before {
+ content: "\f65e"; }
+
+.fa-futbol::before {
+ content: "\f1e3"; }
+
+.fa-futbol-ball::before {
+ content: "\f1e3"; }
+
+.fa-soccer-ball::before {
+ content: "\f1e3"; }
+
+.fa-paintbrush::before {
+ content: "\f1fc"; }
+
+.fa-paint-brush::before {
+ content: "\f1fc"; }
+
+.fa-lock::before {
+ content: "\f023"; }
+
+.fa-gas-pump::before {
+ content: "\f52f"; }
+
+.fa-hot-tub-person::before {
+ content: "\f593"; }
+
+.fa-hot-tub::before {
+ content: "\f593"; }
+
+.fa-map-location::before {
+ content: "\f59f"; }
+
+.fa-map-marked::before {
+ content: "\f59f"; }
+
+.fa-house-flood-water::before {
+ content: "\e50e"; }
+
+.fa-tree::before {
+ content: "\f1bb"; }
+
+.fa-bridge-lock::before {
+ content: "\e4cc"; }
+
+.fa-sack-dollar::before {
+ content: "\f81d"; }
+
+.fa-pen-to-square::before {
+ content: "\f044"; }
+
+.fa-edit::before {
+ content: "\f044"; }
+
+.fa-car-side::before {
+ content: "\f5e4"; }
+
+.fa-share-nodes::before {
+ content: "\f1e0"; }
+
+.fa-share-alt::before {
+ content: "\f1e0"; }
+
+.fa-heart-circle-minus::before {
+ content: "\e4ff"; }
+
+.fa-hourglass-half::before {
+ content: "\f252"; }
+
+.fa-hourglass-2::before {
+ content: "\f252"; }
+
+.fa-microscope::before {
+ content: "\f610"; }
+
+.fa-sink::before {
+ content: "\e06d"; }
+
+.fa-bag-shopping::before {
+ content: "\f290"; }
+
+.fa-shopping-bag::before {
+ content: "\f290"; }
+
+.fa-arrow-down-z-a::before {
+ content: "\f881"; }
+
+.fa-sort-alpha-desc::before {
+ content: "\f881"; }
+
+.fa-sort-alpha-down-alt::before {
+ content: "\f881"; }
+
+.fa-mitten::before {
+ content: "\f7b5"; }
+
+.fa-person-rays::before {
+ content: "\e54d"; }
+
+.fa-users::before {
+ content: "\f0c0"; }
+
+.fa-eye-slash::before {
+ content: "\f070"; }
+
+.fa-flask-vial::before {
+ content: "\e4f3"; }
+
+.fa-hand::before {
+ content: "\f256"; }
+
+.fa-hand-paper::before {
+ content: "\f256"; }
+
+.fa-om::before {
+ content: "\f679"; }
+
+.fa-worm::before {
+ content: "\e599"; }
+
+.fa-house-circle-xmark::before {
+ content: "\e50b"; }
+
+.fa-plug::before {
+ content: "\f1e6"; }
+
+.fa-chevron-up::before {
+ content: "\f077"; }
+
+.fa-hand-spock::before {
+ content: "\f259"; }
+
+.fa-stopwatch::before {
+ content: "\f2f2"; }
+
+.fa-face-kiss::before {
+ content: "\f596"; }
+
+.fa-kiss::before {
+ content: "\f596"; }
+
+.fa-bridge-circle-xmark::before {
+ content: "\e4cb"; }
+
+.fa-face-grin-tongue::before {
+ content: "\f589"; }
+
+.fa-grin-tongue::before {
+ content: "\f589"; }
+
+.fa-chess-bishop::before {
+ content: "\f43a"; }
+
+.fa-face-grin-wink::before {
+ content: "\f58c"; }
+
+.fa-grin-wink::before {
+ content: "\f58c"; }
+
+.fa-ear-deaf::before {
+ content: "\f2a4"; }
+
+.fa-deaf::before {
+ content: "\f2a4"; }
+
+.fa-deafness::before {
+ content: "\f2a4"; }
+
+.fa-hard-of-hearing::before {
+ content: "\f2a4"; }
+
+.fa-road-circle-check::before {
+ content: "\e564"; }
+
+.fa-dice-five::before {
+ content: "\f523"; }
+
+.fa-square-rss::before {
+ content: "\f143"; }
+
+.fa-rss-square::before {
+ content: "\f143"; }
+
+.fa-land-mine-on::before {
+ content: "\e51b"; }
+
+.fa-i-cursor::before {
+ content: "\f246"; }
+
+.fa-stamp::before {
+ content: "\f5bf"; }
+
+.fa-stairs::before {
+ content: "\e289"; }
+
+.fa-i::before {
+ content: "\49"; }
+
+.fa-hryvnia-sign::before {
+ content: "\f6f2"; }
+
+.fa-hryvnia::before {
+ content: "\f6f2"; }
+
+.fa-pills::before {
+ content: "\f484"; }
+
+.fa-face-grin-wide::before {
+ content: "\f581"; }
+
+.fa-grin-alt::before {
+ content: "\f581"; }
+
+.fa-tooth::before {
+ content: "\f5c9"; }
+
+.fa-v::before {
+ content: "\56"; }
+
+.fa-bicycle::before {
+ content: "\f206"; }
+
+.fa-staff-snake::before {
+ content: "\e579"; }
+
+.fa-rod-asclepius::before {
+ content: "\e579"; }
+
+.fa-rod-snake::before {
+ content: "\e579"; }
+
+.fa-staff-aesculapius::before {
+ content: "\e579"; }
+
+.fa-head-side-cough-slash::before {
+ content: "\e062"; }
+
+.fa-truck-medical::before {
+ content: "\f0f9"; }
+
+.fa-ambulance::before {
+ content: "\f0f9"; }
+
+.fa-wheat-awn-circle-exclamation::before {
+ content: "\e598"; }
+
+.fa-snowman::before {
+ content: "\f7d0"; }
+
+.fa-mortar-pestle::before {
+ content: "\f5a7"; }
+
+.fa-road-barrier::before {
+ content: "\e562"; }
+
+.fa-school::before {
+ content: "\f549"; }
+
+.fa-igloo::before {
+ content: "\f7ae"; }
+
+.fa-joint::before {
+ content: "\f595"; }
+
+.fa-angle-right::before {
+ content: "\f105"; }
+
+.fa-horse::before {
+ content: "\f6f0"; }
+
+.fa-q::before {
+ content: "\51"; }
+
+.fa-g::before {
+ content: "\47"; }
+
+.fa-notes-medical::before {
+ content: "\f481"; }
+
+.fa-temperature-half::before {
+ content: "\f2c9"; }
+
+.fa-temperature-2::before {
+ content: "\f2c9"; }
+
+.fa-thermometer-2::before {
+ content: "\f2c9"; }
+
+.fa-thermometer-half::before {
+ content: "\f2c9"; }
+
+.fa-dong-sign::before {
+ content: "\e169"; }
+
+.fa-capsules::before {
+ content: "\f46b"; }
+
+.fa-poo-storm::before {
+ content: "\f75a"; }
+
+.fa-poo-bolt::before {
+ content: "\f75a"; }
+
+.fa-face-frown-open::before {
+ content: "\f57a"; }
+
+.fa-frown-open::before {
+ content: "\f57a"; }
+
+.fa-hand-point-up::before {
+ content: "\f0a6"; }
+
+.fa-money-bill::before {
+ content: "\f0d6"; }
+
+.fa-bookmark::before {
+ content: "\f02e"; }
+
+.fa-align-justify::before {
+ content: "\f039"; }
+
+.fa-umbrella-beach::before {
+ content: "\f5ca"; }
+
+.fa-helmet-un::before {
+ content: "\e503"; }
+
+.fa-bullseye::before {
+ content: "\f140"; }
+
+.fa-bacon::before {
+ content: "\f7e5"; }
+
+.fa-hand-point-down::before {
+ content: "\f0a7"; }
+
+.fa-arrow-up-from-bracket::before {
+ content: "\e09a"; }
+
+.fa-folder::before {
+ content: "\f07b"; }
+
+.fa-folder-blank::before {
+ content: "\f07b"; }
+
+.fa-file-waveform::before {
+ content: "\f478"; }
+
+.fa-file-medical-alt::before {
+ content: "\f478"; }
+
+.fa-radiation::before {
+ content: "\f7b9"; }
+
+.fa-chart-simple::before {
+ content: "\e473"; }
+
+.fa-mars-stroke::before {
+ content: "\f229"; }
+
+.fa-vial::before {
+ content: "\f492"; }
+
+.fa-gauge::before {
+ content: "\f624"; }
+
+.fa-dashboard::before {
+ content: "\f624"; }
+
+.fa-gauge-med::before {
+ content: "\f624"; }
+
+.fa-tachometer-alt-average::before {
+ content: "\f624"; }
+
+.fa-wand-magic-sparkles::before {
+ content: "\e2ca"; }
+
+.fa-magic-wand-sparkles::before {
+ content: "\e2ca"; }
+
+.fa-e::before {
+ content: "\45"; }
+
+.fa-pen-clip::before {
+ content: "\f305"; }
+
+.fa-pen-alt::before {
+ content: "\f305"; }
+
+.fa-bridge-circle-exclamation::before {
+ content: "\e4ca"; }
+
+.fa-user::before {
+ content: "\f007"; }
+
+.fa-school-circle-check::before {
+ content: "\e56b"; }
+
+.fa-dumpster::before {
+ content: "\f793"; }
+
+.fa-van-shuttle::before {
+ content: "\f5b6"; }
+
+.fa-shuttle-van::before {
+ content: "\f5b6"; }
+
+.fa-building-user::before {
+ content: "\e4da"; }
+
+.fa-square-caret-left::before {
+ content: "\f191"; }
+
+.fa-caret-square-left::before {
+ content: "\f191"; }
+
+.fa-highlighter::before {
+ content: "\f591"; }
+
+.fa-key::before {
+ content: "\f084"; }
+
+.fa-bullhorn::before {
+ content: "\f0a1"; }
+
+.fa-globe::before {
+ content: "\f0ac"; }
+
+.fa-synagogue::before {
+ content: "\f69b"; }
+
+.fa-person-half-dress::before {
+ content: "\e548"; }
+
+.fa-road-bridge::before {
+ content: "\e563"; }
+
+.fa-location-arrow::before {
+ content: "\f124"; }
+
+.fa-c::before {
+ content: "\43"; }
+
+.fa-tablet-button::before {
+ content: "\f10a"; }
+
+.fa-building-lock::before {
+ content: "\e4d6"; }
+
+.fa-pizza-slice::before {
+ content: "\f818"; }
+
+.fa-money-bill-wave::before {
+ content: "\f53a"; }
+
+.fa-chart-area::before {
+ content: "\f1fe"; }
+
+.fa-area-chart::before {
+ content: "\f1fe"; }
+
+.fa-house-flag::before {
+ content: "\e50d"; }
+
+.fa-person-circle-minus::before {
+ content: "\e540"; }
+
+.fa-ban::before {
+ content: "\f05e"; }
+
+.fa-cancel::before {
+ content: "\f05e"; }
+
+.fa-camera-rotate::before {
+ content: "\e0d8"; }
+
+.fa-spray-can-sparkles::before {
+ content: "\f5d0"; }
+
+.fa-air-freshener::before {
+ content: "\f5d0"; }
+
+.fa-star::before {
+ content: "\f005"; }
+
+.fa-repeat::before {
+ content: "\f363"; }
+
+.fa-cross::before {
+ content: "\f654"; }
+
+.fa-box::before {
+ content: "\f466"; }
+
+.fa-venus-mars::before {
+ content: "\f228"; }
+
+.fa-arrow-pointer::before {
+ content: "\f245"; }
+
+.fa-mouse-pointer::before {
+ content: "\f245"; }
+
+.fa-maximize::before {
+ content: "\f31e"; }
+
+.fa-expand-arrows-alt::before {
+ content: "\f31e"; }
+
+.fa-charging-station::before {
+ content: "\f5e7"; }
+
+.fa-shapes::before {
+ content: "\f61f"; }
+
+.fa-triangle-circle-square::before {
+ content: "\f61f"; }
+
+.fa-shuffle::before {
+ content: "\f074"; }
+
+.fa-random::before {
+ content: "\f074"; }
+
+.fa-person-running::before {
+ content: "\f70c"; }
+
+.fa-running::before {
+ content: "\f70c"; }
+
+.fa-mobile-retro::before {
+ content: "\e527"; }
+
+.fa-grip-lines-vertical::before {
+ content: "\f7a5"; }
+
+.fa-spider::before {
+ content: "\f717"; }
+
+.fa-hands-bound::before {
+ content: "\e4f9"; }
+
+.fa-file-invoice-dollar::before {
+ content: "\f571"; }
+
+.fa-plane-circle-exclamation::before {
+ content: "\e556"; }
+
+.fa-x-ray::before {
+ content: "\f497"; }
+
+.fa-spell-check::before {
+ content: "\f891"; }
+
+.fa-slash::before {
+ content: "\f715"; }
+
+.fa-computer-mouse::before {
+ content: "\f8cc"; }
+
+.fa-mouse::before {
+ content: "\f8cc"; }
+
+.fa-arrow-right-to-bracket::before {
+ content: "\f090"; }
+
+.fa-sign-in::before {
+ content: "\f090"; }
+
+.fa-shop-slash::before {
+ content: "\e070"; }
+
+.fa-store-alt-slash::before {
+ content: "\e070"; }
+
+.fa-server::before {
+ content: "\f233"; }
+
+.fa-virus-covid-slash::before {
+ content: "\e4a9"; }
+
+.fa-shop-lock::before {
+ content: "\e4a5"; }
+
+.fa-hourglass-start::before {
+ content: "\f251"; }
+
+.fa-hourglass-1::before {
+ content: "\f251"; }
+
+.fa-blender-phone::before {
+ content: "\f6b6"; }
+
+.fa-building-wheat::before {
+ content: "\e4db"; }
+
+.fa-person-breastfeeding::before {
+ content: "\e53a"; }
+
+.fa-right-to-bracket::before {
+ content: "\f2f6"; }
+
+.fa-sign-in-alt::before {
+ content: "\f2f6"; }
+
+.fa-venus::before {
+ content: "\f221"; }
+
+.fa-passport::before {
+ content: "\f5ab"; }
+
+.fa-heart-pulse::before {
+ content: "\f21e"; }
+
+.fa-heartbeat::before {
+ content: "\f21e"; }
+
+.fa-people-carry-box::before {
+ content: "\f4ce"; }
+
+.fa-people-carry::before {
+ content: "\f4ce"; }
+
+.fa-temperature-high::before {
+ content: "\f769"; }
+
+.fa-microchip::before {
+ content: "\f2db"; }
+
+.fa-crown::before {
+ content: "\f521"; }
+
+.fa-weight-hanging::before {
+ content: "\f5cd"; }
+
+.fa-xmarks-lines::before {
+ content: "\e59a"; }
+
+.fa-file-prescription::before {
+ content: "\f572"; }
+
+.fa-weight-scale::before {
+ content: "\f496"; }
+
+.fa-weight::before {
+ content: "\f496"; }
+
+.fa-user-group::before {
+ content: "\f500"; }
+
+.fa-user-friends::before {
+ content: "\f500"; }
+
+.fa-arrow-up-a-z::before {
+ content: "\f15e"; }
+
+.fa-sort-alpha-up::before {
+ content: "\f15e"; }
+
+.fa-chess-knight::before {
+ content: "\f441"; }
+
+.fa-face-laugh-squint::before {
+ content: "\f59b"; }
+
+.fa-laugh-squint::before {
+ content: "\f59b"; }
+
+.fa-wheelchair::before {
+ content: "\f193"; }
+
+.fa-circle-arrow-up::before {
+ content: "\f0aa"; }
+
+.fa-arrow-circle-up::before {
+ content: "\f0aa"; }
+
+.fa-toggle-on::before {
+ content: "\f205"; }
+
+.fa-person-walking::before {
+ content: "\f554"; }
+
+.fa-walking::before {
+ content: "\f554"; }
+
+.fa-l::before {
+ content: "\4c"; }
+
+.fa-fire::before {
+ content: "\f06d"; }
+
+.fa-bed-pulse::before {
+ content: "\f487"; }
+
+.fa-procedures::before {
+ content: "\f487"; }
+
+.fa-shuttle-space::before {
+ content: "\f197"; }
+
+.fa-space-shuttle::before {
+ content: "\f197"; }
+
+.fa-face-laugh::before {
+ content: "\f599"; }
+
+.fa-laugh::before {
+ content: "\f599"; }
+
+.fa-folder-open::before {
+ content: "\f07c"; }
+
+.fa-heart-circle-plus::before {
+ content: "\e500"; }
+
+.fa-code-fork::before {
+ content: "\e13b"; }
+
+.fa-city::before {
+ content: "\f64f"; }
+
+.fa-microphone-lines::before {
+ content: "\f3c9"; }
+
+.fa-microphone-alt::before {
+ content: "\f3c9"; }
+
+.fa-pepper-hot::before {
+ content: "\f816"; }
+
+.fa-unlock::before {
+ content: "\f09c"; }
+
+.fa-colon-sign::before {
+ content: "\e140"; }
+
+.fa-headset::before {
+ content: "\f590"; }
+
+.fa-store-slash::before {
+ content: "\e071"; }
+
+.fa-road-circle-xmark::before {
+ content: "\e566"; }
+
+.fa-user-minus::before {
+ content: "\f503"; }
+
+.fa-mars-stroke-up::before {
+ content: "\f22a"; }
+
+.fa-mars-stroke-v::before {
+ content: "\f22a"; }
+
+.fa-champagne-glasses::before {
+ content: "\f79f"; }
+
+.fa-glass-cheers::before {
+ content: "\f79f"; }
+
+.fa-clipboard::before {
+ content: "\f328"; }
+
+.fa-house-circle-exclamation::before {
+ content: "\e50a"; }
+
+.fa-file-arrow-up::before {
+ content: "\f574"; }
+
+.fa-file-upload::before {
+ content: "\f574"; }
+
+.fa-wifi::before {
+ content: "\f1eb"; }
+
+.fa-wifi-3::before {
+ content: "\f1eb"; }
+
+.fa-wifi-strong::before {
+ content: "\f1eb"; }
+
+.fa-bath::before {
+ content: "\f2cd"; }
+
+.fa-bathtub::before {
+ content: "\f2cd"; }
+
+.fa-underline::before {
+ content: "\f0cd"; }
+
+.fa-user-pen::before {
+ content: "\f4ff"; }
+
+.fa-user-edit::before {
+ content: "\f4ff"; }
+
+.fa-signature::before {
+ content: "\f5b7"; }
+
+.fa-stroopwafel::before {
+ content: "\f551"; }
+
+.fa-bold::before {
+ content: "\f032"; }
+
+.fa-anchor-lock::before {
+ content: "\e4ad"; }
+
+.fa-building-ngo::before {
+ content: "\e4d7"; }
+
+.fa-manat-sign::before {
+ content: "\e1d5"; }
+
+.fa-not-equal::before {
+ content: "\f53e"; }
+
+.fa-border-top-left::before {
+ content: "\f853"; }
+
+.fa-border-style::before {
+ content: "\f853"; }
+
+.fa-map-location-dot::before {
+ content: "\f5a0"; }
+
+.fa-map-marked-alt::before {
+ content: "\f5a0"; }
+
+.fa-jedi::before {
+ content: "\f669"; }
+
+.fa-square-poll-vertical::before {
+ content: "\f681"; }
+
+.fa-poll::before {
+ content: "\f681"; }
+
+.fa-mug-hot::before {
+ content: "\f7b6"; }
+
+.fa-car-battery::before {
+ content: "\f5df"; }
+
+.fa-battery-car::before {
+ content: "\f5df"; }
+
+.fa-gift::before {
+ content: "\f06b"; }
+
+.fa-dice-two::before {
+ content: "\f528"; }
+
+.fa-chess-queen::before {
+ content: "\f445"; }
+
+.fa-glasses::before {
+ content: "\f530"; }
+
+.fa-chess-board::before {
+ content: "\f43c"; }
+
+.fa-building-circle-check::before {
+ content: "\e4d2"; }
+
+.fa-person-chalkboard::before {
+ content: "\e53d"; }
+
+.fa-mars-stroke-right::before {
+ content: "\f22b"; }
+
+.fa-mars-stroke-h::before {
+ content: "\f22b"; }
+
+.fa-hand-back-fist::before {
+ content: "\f255"; }
+
+.fa-hand-rock::before {
+ content: "\f255"; }
+
+.fa-square-caret-up::before {
+ content: "\f151"; }
+
+.fa-caret-square-up::before {
+ content: "\f151"; }
+
+.fa-cloud-showers-water::before {
+ content: "\e4e4"; }
+
+.fa-chart-bar::before {
+ content: "\f080"; }
+
+.fa-bar-chart::before {
+ content: "\f080"; }
+
+.fa-hands-bubbles::before {
+ content: "\e05e"; }
+
+.fa-hands-wash::before {
+ content: "\e05e"; }
+
+.fa-less-than-equal::before {
+ content: "\f537"; }
+
+.fa-train::before {
+ content: "\f238"; }
+
+.fa-eye-low-vision::before {
+ content: "\f2a8"; }
+
+.fa-low-vision::before {
+ content: "\f2a8"; }
+
+.fa-crow::before {
+ content: "\f520"; }
+
+.fa-sailboat::before {
+ content: "\e445"; }
+
+.fa-window-restore::before {
+ content: "\f2d2"; }
+
+.fa-square-plus::before {
+ content: "\f0fe"; }
+
+.fa-plus-square::before {
+ content: "\f0fe"; }
+
+.fa-torii-gate::before {
+ content: "\f6a1"; }
+
+.fa-frog::before {
+ content: "\f52e"; }
+
+.fa-bucket::before {
+ content: "\e4cf"; }
+
+.fa-image::before {
+ content: "\f03e"; }
+
+.fa-microphone::before {
+ content: "\f130"; }
+
+.fa-cow::before {
+ content: "\f6c8"; }
+
+.fa-caret-up::before {
+ content: "\f0d8"; }
+
+.fa-screwdriver::before {
+ content: "\f54a"; }
+
+.fa-folder-closed::before {
+ content: "\e185"; }
+
+.fa-house-tsunami::before {
+ content: "\e515"; }
+
+.fa-square-nfi::before {
+ content: "\e576"; }
+
+.fa-arrow-up-from-ground-water::before {
+ content: "\e4b5"; }
+
+.fa-martini-glass::before {
+ content: "\f57b"; }
+
+.fa-glass-martini-alt::before {
+ content: "\f57b"; }
+
+.fa-rotate-left::before {
+ content: "\f2ea"; }
+
+.fa-rotate-back::before {
+ content: "\f2ea"; }
+
+.fa-rotate-backward::before {
+ content: "\f2ea"; }
+
+.fa-undo-alt::before {
+ content: "\f2ea"; }
+
+.fa-table-columns::before {
+ content: "\f0db"; }
+
+.fa-columns::before {
+ content: "\f0db"; }
+
+.fa-lemon::before {
+ content: "\f094"; }
+
+.fa-head-side-mask::before {
+ content: "\e063"; }
+
+.fa-handshake::before {
+ content: "\f2b5"; }
+
+.fa-gem::before {
+ content: "\f3a5"; }
+
+.fa-dolly::before {
+ content: "\f472"; }
+
+.fa-dolly-box::before {
+ content: "\f472"; }
+
+.fa-smoking::before {
+ content: "\f48d"; }
+
+.fa-minimize::before {
+ content: "\f78c"; }
+
+.fa-compress-arrows-alt::before {
+ content: "\f78c"; }
+
+.fa-monument::before {
+ content: "\f5a6"; }
+
+.fa-snowplow::before {
+ content: "\f7d2"; }
+
+.fa-angles-right::before {
+ content: "\f101"; }
+
+.fa-angle-double-right::before {
+ content: "\f101"; }
+
+.fa-cannabis::before {
+ content: "\f55f"; }
+
+.fa-circle-play::before {
+ content: "\f144"; }
+
+.fa-play-circle::before {
+ content: "\f144"; }
+
+.fa-tablets::before {
+ content: "\f490"; }
+
+.fa-ethernet::before {
+ content: "\f796"; }
+
+.fa-euro-sign::before {
+ content: "\f153"; }
+
+.fa-eur::before {
+ content: "\f153"; }
+
+.fa-euro::before {
+ content: "\f153"; }
+
+.fa-chair::before {
+ content: "\f6c0"; }
+
+.fa-circle-check::before {
+ content: "\f058"; }
+
+.fa-check-circle::before {
+ content: "\f058"; }
+
+.fa-circle-stop::before {
+ content: "\f28d"; }
+
+.fa-stop-circle::before {
+ content: "\f28d"; }
+
+.fa-compass-drafting::before {
+ content: "\f568"; }
+
+.fa-drafting-compass::before {
+ content: "\f568"; }
+
+.fa-plate-wheat::before {
+ content: "\e55a"; }
+
+.fa-icicles::before {
+ content: "\f7ad"; }
+
+.fa-person-shelter::before {
+ content: "\e54f"; }
+
+.fa-neuter::before {
+ content: "\f22c"; }
+
+.fa-id-badge::before {
+ content: "\f2c1"; }
+
+.fa-marker::before {
+ content: "\f5a1"; }
+
+.fa-face-laugh-beam::before {
+ content: "\f59a"; }
+
+.fa-laugh-beam::before {
+ content: "\f59a"; }
+
+.fa-helicopter-symbol::before {
+ content: "\e502"; }
+
+.fa-universal-access::before {
+ content: "\f29a"; }
+
+.fa-circle-chevron-up::before {
+ content: "\f139"; }
+
+.fa-chevron-circle-up::before {
+ content: "\f139"; }
+
+.fa-lari-sign::before {
+ content: "\e1c8"; }
+
+.fa-volcano::before {
+ content: "\f770"; }
+
+.fa-person-walking-dashed-line-arrow-right::before {
+ content: "\e553"; }
+
+.fa-sterling-sign::before {
+ content: "\f154"; }
+
+.fa-gbp::before {
+ content: "\f154"; }
+
+.fa-pound-sign::before {
+ content: "\f154"; }
+
+.fa-viruses::before {
+ content: "\e076"; }
+
+.fa-square-person-confined::before {
+ content: "\e577"; }
+
+.fa-user-tie::before {
+ content: "\f508"; }
+
+.fa-arrow-down-long::before {
+ content: "\f175"; }
+
+.fa-long-arrow-down::before {
+ content: "\f175"; }
+
+.fa-tent-arrow-down-to-line::before {
+ content: "\e57e"; }
+
+.fa-certificate::before {
+ content: "\f0a3"; }
+
+.fa-reply-all::before {
+ content: "\f122"; }
+
+.fa-mail-reply-all::before {
+ content: "\f122"; }
+
+.fa-suitcase::before {
+ content: "\f0f2"; }
+
+.fa-person-skating::before {
+ content: "\f7c5"; }
+
+.fa-skating::before {
+ content: "\f7c5"; }
+
+.fa-filter-circle-dollar::before {
+ content: "\f662"; }
+
+.fa-funnel-dollar::before {
+ content: "\f662"; }
+
+.fa-camera-retro::before {
+ content: "\f083"; }
+
+.fa-circle-arrow-down::before {
+ content: "\f0ab"; }
+
+.fa-arrow-circle-down::before {
+ content: "\f0ab"; }
+
+.fa-file-import::before {
+ content: "\f56f"; }
+
+.fa-arrow-right-to-file::before {
+ content: "\f56f"; }
+
+.fa-square-arrow-up-right::before {
+ content: "\f14c"; }
+
+.fa-external-link-square::before {
+ content: "\f14c"; }
+
+.fa-box-open::before {
+ content: "\f49e"; }
+
+.fa-scroll::before {
+ content: "\f70e"; }
+
+.fa-spa::before {
+ content: "\f5bb"; }
+
+.fa-location-pin-lock::before {
+ content: "\e51f"; }
+
+.fa-pause::before {
+ content: "\f04c"; }
+
+.fa-hill-avalanche::before {
+ content: "\e507"; }
+
+.fa-temperature-empty::before {
+ content: "\f2cb"; }
+
+.fa-temperature-0::before {
+ content: "\f2cb"; }
+
+.fa-thermometer-0::before {
+ content: "\f2cb"; }
+
+.fa-thermometer-empty::before {
+ content: "\f2cb"; }
+
+.fa-bomb::before {
+ content: "\f1e2"; }
+
+.fa-registered::before {
+ content: "\f25d"; }
+
+.fa-address-card::before {
+ content: "\f2bb"; }
+
+.fa-contact-card::before {
+ content: "\f2bb"; }
+
+.fa-vcard::before {
+ content: "\f2bb"; }
+
+.fa-scale-unbalanced-flip::before {
+ content: "\f516"; }
+
+.fa-balance-scale-right::before {
+ content: "\f516"; }
+
+.fa-subscript::before {
+ content: "\f12c"; }
+
+.fa-diamond-turn-right::before {
+ content: "\f5eb"; }
+
+.fa-directions::before {
+ content: "\f5eb"; }
+
+.fa-burst::before {
+ content: "\e4dc"; }
+
+.fa-house-laptop::before {
+ content: "\e066"; }
+
+.fa-laptop-house::before {
+ content: "\e066"; }
+
+.fa-face-tired::before {
+ content: "\f5c8"; }
+
+.fa-tired::before {
+ content: "\f5c8"; }
+
+.fa-money-bills::before {
+ content: "\e1f3"; }
+
+.fa-smog::before {
+ content: "\f75f"; }
+
+.fa-crutch::before {
+ content: "\f7f7"; }
+
+.fa-cloud-arrow-up::before {
+ content: "\f0ee"; }
+
+.fa-cloud-upload::before {
+ content: "\f0ee"; }
+
+.fa-cloud-upload-alt::before {
+ content: "\f0ee"; }
+
+.fa-palette::before {
+ content: "\f53f"; }
+
+.fa-arrows-turn-right::before {
+ content: "\e4c0"; }
+
+.fa-vest::before {
+ content: "\e085"; }
+
+.fa-ferry::before {
+ content: "\e4ea"; }
+
+.fa-arrows-down-to-people::before {
+ content: "\e4b9"; }
+
+.fa-seedling::before {
+ content: "\f4d8"; }
+
+.fa-sprout::before {
+ content: "\f4d8"; }
+
+.fa-left-right::before {
+ content: "\f337"; }
+
+.fa-arrows-alt-h::before {
+ content: "\f337"; }
+
+.fa-boxes-packing::before {
+ content: "\e4c7"; }
+
+.fa-circle-arrow-left::before {
+ content: "\f0a8"; }
+
+.fa-arrow-circle-left::before {
+ content: "\f0a8"; }
+
+.fa-group-arrows-rotate::before {
+ content: "\e4f6"; }
+
+.fa-bowl-food::before {
+ content: "\e4c6"; }
+
+.fa-candy-cane::before {
+ content: "\f786"; }
+
+.fa-arrow-down-wide-short::before {
+ content: "\f160"; }
+
+.fa-sort-amount-asc::before {
+ content: "\f160"; }
+
+.fa-sort-amount-down::before {
+ content: "\f160"; }
+
+.fa-cloud-bolt::before {
+ content: "\f76c"; }
+
+.fa-thunderstorm::before {
+ content: "\f76c"; }
+
+.fa-text-slash::before {
+ content: "\f87d"; }
+
+.fa-remove-format::before {
+ content: "\f87d"; }
+
+.fa-face-smile-wink::before {
+ content: "\f4da"; }
+
+.fa-smile-wink::before {
+ content: "\f4da"; }
+
+.fa-file-word::before {
+ content: "\f1c2"; }
+
+.fa-file-powerpoint::before {
+ content: "\f1c4"; }
+
+.fa-arrows-left-right::before {
+ content: "\f07e"; }
+
+.fa-arrows-h::before {
+ content: "\f07e"; }
+
+.fa-house-lock::before {
+ content: "\e510"; }
+
+.fa-cloud-arrow-down::before {
+ content: "\f0ed"; }
+
+.fa-cloud-download::before {
+ content: "\f0ed"; }
+
+.fa-cloud-download-alt::before {
+ content: "\f0ed"; }
+
+.fa-children::before {
+ content: "\e4e1"; }
+
+.fa-chalkboard::before {
+ content: "\f51b"; }
+
+.fa-blackboard::before {
+ content: "\f51b"; }
+
+.fa-user-large-slash::before {
+ content: "\f4fa"; }
+
+.fa-user-alt-slash::before {
+ content: "\f4fa"; }
+
+.fa-envelope-open::before {
+ content: "\f2b6"; }
+
+.fa-handshake-simple-slash::before {
+ content: "\e05f"; }
+
+.fa-handshake-alt-slash::before {
+ content: "\e05f"; }
+
+.fa-mattress-pillow::before {
+ content: "\e525"; }
+
+.fa-guarani-sign::before {
+ content: "\e19a"; }
+
+.fa-arrows-rotate::before {
+ content: "\f021"; }
+
+.fa-refresh::before {
+ content: "\f021"; }
+
+.fa-sync::before {
+ content: "\f021"; }
+
+.fa-fire-extinguisher::before {
+ content: "\f134"; }
+
+.fa-cruzeiro-sign::before {
+ content: "\e152"; }
+
+.fa-greater-than-equal::before {
+ content: "\f532"; }
+
+.fa-shield-halved::before {
+ content: "\f3ed"; }
+
+.fa-shield-alt::before {
+ content: "\f3ed"; }
+
+.fa-book-atlas::before {
+ content: "\f558"; }
+
+.fa-atlas::before {
+ content: "\f558"; }
+
+.fa-virus::before {
+ content: "\e074"; }
+
+.fa-envelope-circle-check::before {
+ content: "\e4e8"; }
+
+.fa-layer-group::before {
+ content: "\f5fd"; }
+
+.fa-arrows-to-dot::before {
+ content: "\e4be"; }
+
+.fa-archway::before {
+ content: "\f557"; }
+
+.fa-heart-circle-check::before {
+ content: "\e4fd"; }
+
+.fa-house-chimney-crack::before {
+ content: "\f6f1"; }
+
+.fa-house-damage::before {
+ content: "\f6f1"; }
+
+.fa-file-zipper::before {
+ content: "\f1c6"; }
+
+.fa-file-archive::before {
+ content: "\f1c6"; }
+
+.fa-square::before {
+ content: "\f0c8"; }
+
+.fa-martini-glass-empty::before {
+ content: "\f000"; }
+
+.fa-glass-martini::before {
+ content: "\f000"; }
+
+.fa-couch::before {
+ content: "\f4b8"; }
+
+.fa-cedi-sign::before {
+ content: "\e0df"; }
+
+.fa-italic::before {
+ content: "\f033"; }
+
+.fa-church::before {
+ content: "\f51d"; }
+
+.fa-comments-dollar::before {
+ content: "\f653"; }
+
+.fa-democrat::before {
+ content: "\f747"; }
+
+.fa-z::before {
+ content: "\5a"; }
+
+.fa-person-skiing::before {
+ content: "\f7c9"; }
+
+.fa-skiing::before {
+ content: "\f7c9"; }
+
+.fa-road-lock::before {
+ content: "\e567"; }
+
+.fa-a::before {
+ content: "\41"; }
+
+.fa-temperature-arrow-down::before {
+ content: "\e03f"; }
+
+.fa-temperature-down::before {
+ content: "\e03f"; }
+
+.fa-feather-pointed::before {
+ content: "\f56b"; }
+
+.fa-feather-alt::before {
+ content: "\f56b"; }
+
+.fa-p::before {
+ content: "\50"; }
+
+.fa-snowflake::before {
+ content: "\f2dc"; }
+
+.fa-newspaper::before {
+ content: "\f1ea"; }
+
+.fa-rectangle-ad::before {
+ content: "\f641"; }
+
+.fa-ad::before {
+ content: "\f641"; }
+
+.fa-circle-arrow-right::before {
+ content: "\f0a9"; }
+
+.fa-arrow-circle-right::before {
+ content: "\f0a9"; }
+
+.fa-filter-circle-xmark::before {
+ content: "\e17b"; }
+
+.fa-locust::before {
+ content: "\e520"; }
+
+.fa-sort::before {
+ content: "\f0dc"; }
+
+.fa-unsorted::before {
+ content: "\f0dc"; }
+
+.fa-list-ol::before {
+ content: "\f0cb"; }
+
+.fa-list-1-2::before {
+ content: "\f0cb"; }
+
+.fa-list-numeric::before {
+ content: "\f0cb"; }
+
+.fa-person-dress-burst::before {
+ content: "\e544"; }
+
+.fa-money-check-dollar::before {
+ content: "\f53d"; }
+
+.fa-money-check-alt::before {
+ content: "\f53d"; }
+
+.fa-vector-square::before {
+ content: "\f5cb"; }
+
+.fa-bread-slice::before {
+ content: "\f7ec"; }
+
+.fa-language::before {
+ content: "\f1ab"; }
+
+.fa-face-kiss-wink-heart::before {
+ content: "\f598"; }
+
+.fa-kiss-wink-heart::before {
+ content: "\f598"; }
+
+.fa-filter::before {
+ content: "\f0b0"; }
+
+.fa-question::before {
+ content: "\3f"; }
+
+.fa-file-signature::before {
+ content: "\f573"; }
+
+.fa-up-down-left-right::before {
+ content: "\f0b2"; }
+
+.fa-arrows-alt::before {
+ content: "\f0b2"; }
+
+.fa-house-chimney-user::before {
+ content: "\e065"; }
+
+.fa-hand-holding-heart::before {
+ content: "\f4be"; }
+
+.fa-puzzle-piece::before {
+ content: "\f12e"; }
+
+.fa-money-check::before {
+ content: "\f53c"; }
+
+.fa-star-half-stroke::before {
+ content: "\f5c0"; }
+
+.fa-star-half-alt::before {
+ content: "\f5c0"; }
+
+.fa-code::before {
+ content: "\f121"; }
+
+.fa-whiskey-glass::before {
+ content: "\f7a0"; }
+
+.fa-glass-whiskey::before {
+ content: "\f7a0"; }
+
+.fa-building-circle-exclamation::before {
+ content: "\e4d3"; }
+
+.fa-magnifying-glass-chart::before {
+ content: "\e522"; }
+
+.fa-arrow-up-right-from-square::before {
+ content: "\f08e"; }
+
+.fa-external-link::before {
+ content: "\f08e"; }
+
+.fa-cubes-stacked::before {
+ content: "\e4e6"; }
+
+.fa-won-sign::before {
+ content: "\f159"; }
+
+.fa-krw::before {
+ content: "\f159"; }
+
+.fa-won::before {
+ content: "\f159"; }
+
+.fa-virus-covid::before {
+ content: "\e4a8"; }
+
+.fa-austral-sign::before {
+ content: "\e0a9"; }
+
+.fa-f::before {
+ content: "\46"; }
+
+.fa-leaf::before {
+ content: "\f06c"; }
+
+.fa-road::before {
+ content: "\f018"; }
+
+.fa-taxi::before {
+ content: "\f1ba"; }
+
+.fa-cab::before {
+ content: "\f1ba"; }
+
+.fa-person-circle-plus::before {
+ content: "\e541"; }
+
+.fa-chart-pie::before {
+ content: "\f200"; }
+
+.fa-pie-chart::before {
+ content: "\f200"; }
+
+.fa-bolt-lightning::before {
+ content: "\e0b7"; }
+
+.fa-sack-xmark::before {
+ content: "\e56a"; }
+
+.fa-file-excel::before {
+ content: "\f1c3"; }
+
+.fa-file-contract::before {
+ content: "\f56c"; }
+
+.fa-fish-fins::before {
+ content: "\e4f2"; }
+
+.fa-building-flag::before {
+ content: "\e4d5"; }
+
+.fa-face-grin-beam::before {
+ content: "\f582"; }
+
+.fa-grin-beam::before {
+ content: "\f582"; }
+
+.fa-object-ungroup::before {
+ content: "\f248"; }
+
+.fa-poop::before {
+ content: "\f619"; }
+
+.fa-location-pin::before {
+ content: "\f041"; }
+
+.fa-map-marker::before {
+ content: "\f041"; }
+
+.fa-kaaba::before {
+ content: "\f66b"; }
+
+.fa-toilet-paper::before {
+ content: "\f71e"; }
+
+.fa-helmet-safety::before {
+ content: "\f807"; }
+
+.fa-hard-hat::before {
+ content: "\f807"; }
+
+.fa-hat-hard::before {
+ content: "\f807"; }
+
+.fa-eject::before {
+ content: "\f052"; }
+
+.fa-circle-right::before {
+ content: "\f35a"; }
+
+.fa-arrow-alt-circle-right::before {
+ content: "\f35a"; }
+
+.fa-plane-circle-check::before {
+ content: "\e555"; }
+
+.fa-face-rolling-eyes::before {
+ content: "\f5a5"; }
+
+.fa-meh-rolling-eyes::before {
+ content: "\f5a5"; }
+
+.fa-object-group::before {
+ content: "\f247"; }
+
+.fa-chart-line::before {
+ content: "\f201"; }
+
+.fa-line-chart::before {
+ content: "\f201"; }
+
+.fa-mask-ventilator::before {
+ content: "\e524"; }
+
+.fa-arrow-right::before {
+ content: "\f061"; }
+
+.fa-signs-post::before {
+ content: "\f277"; }
+
+.fa-map-signs::before {
+ content: "\f277"; }
+
+.fa-cash-register::before {
+ content: "\f788"; }
+
+.fa-person-circle-question::before {
+ content: "\e542"; }
+
+.fa-h::before {
+ content: "\48"; }
+
+.fa-tarp::before {
+ content: "\e57b"; }
+
+.fa-screwdriver-wrench::before {
+ content: "\f7d9"; }
+
+.fa-tools::before {
+ content: "\f7d9"; }
+
+.fa-arrows-to-eye::before {
+ content: "\e4bf"; }
+
+.fa-plug-circle-bolt::before {
+ content: "\e55b"; }
+
+.fa-heart::before {
+ content: "\f004"; }
+
+.fa-mars-and-venus::before {
+ content: "\f224"; }
+
+.fa-house-user::before {
+ content: "\e1b0"; }
+
+.fa-home-user::before {
+ content: "\e1b0"; }
+
+.fa-dumpster-fire::before {
+ content: "\f794"; }
+
+.fa-house-crack::before {
+ content: "\e3b1"; }
+
+.fa-martini-glass-citrus::before {
+ content: "\f561"; }
+
+.fa-cocktail::before {
+ content: "\f561"; }
+
+.fa-face-surprise::before {
+ content: "\f5c2"; }
+
+.fa-surprise::before {
+ content: "\f5c2"; }
+
+.fa-bottle-water::before {
+ content: "\e4c5"; }
+
+.fa-circle-pause::before {
+ content: "\f28b"; }
+
+.fa-pause-circle::before {
+ content: "\f28b"; }
+
+.fa-toilet-paper-slash::before {
+ content: "\e072"; }
+
+.fa-apple-whole::before {
+ content: "\f5d1"; }
+
+.fa-apple-alt::before {
+ content: "\f5d1"; }
+
+.fa-kitchen-set::before {
+ content: "\e51a"; }
+
+.fa-r::before {
+ content: "\52"; }
+
+.fa-temperature-quarter::before {
+ content: "\f2ca"; }
+
+.fa-temperature-1::before {
+ content: "\f2ca"; }
+
+.fa-thermometer-1::before {
+ content: "\f2ca"; }
+
+.fa-thermometer-quarter::before {
+ content: "\f2ca"; }
+
+.fa-cube::before {
+ content: "\f1b2"; }
+
+.fa-bitcoin-sign::before {
+ content: "\e0b4"; }
+
+.fa-shield-dog::before {
+ content: "\e573"; }
+
+.fa-solar-panel::before {
+ content: "\f5ba"; }
+
+.fa-lock-open::before {
+ content: "\f3c1"; }
+
+.fa-elevator::before {
+ content: "\e16d"; }
+
+.fa-money-bill-transfer::before {
+ content: "\e528"; }
+
+.fa-money-bill-trend-up::before {
+ content: "\e529"; }
+
+.fa-house-flood-water-circle-arrow-right::before {
+ content: "\e50f"; }
+
+.fa-square-poll-horizontal::before {
+ content: "\f682"; }
+
+.fa-poll-h::before {
+ content: "\f682"; }
+
+.fa-circle::before {
+ content: "\f111"; }
+
+.fa-backward-fast::before {
+ content: "\f049"; }
+
+.fa-fast-backward::before {
+ content: "\f049"; }
+
+.fa-recycle::before {
+ content: "\f1b8"; }
+
+.fa-user-astronaut::before {
+ content: "\f4fb"; }
+
+.fa-plane-slash::before {
+ content: "\e069"; }
+
+.fa-trademark::before {
+ content: "\f25c"; }
+
+.fa-basketball::before {
+ content: "\f434"; }
+
+.fa-basketball-ball::before {
+ content: "\f434"; }
+
+.fa-satellite-dish::before {
+ content: "\f7c0"; }
+
+.fa-circle-up::before {
+ content: "\f35b"; }
+
+.fa-arrow-alt-circle-up::before {
+ content: "\f35b"; }
+
+.fa-mobile-screen-button::before {
+ content: "\f3cd"; }
+
+.fa-mobile-alt::before {
+ content: "\f3cd"; }
+
+.fa-volume-high::before {
+ content: "\f028"; }
+
+.fa-volume-up::before {
+ content: "\f028"; }
+
+.fa-users-rays::before {
+ content: "\e593"; }
+
+.fa-wallet::before {
+ content: "\f555"; }
+
+.fa-clipboard-check::before {
+ content: "\f46c"; }
+
+.fa-file-audio::before {
+ content: "\f1c7"; }
+
+.fa-burger::before {
+ content: "\f805"; }
+
+.fa-hamburger::before {
+ content: "\f805"; }
+
+.fa-wrench::before {
+ content: "\f0ad"; }
+
+.fa-bugs::before {
+ content: "\e4d0"; }
+
+.fa-rupee-sign::before {
+ content: "\f156"; }
+
+.fa-rupee::before {
+ content: "\f156"; }
+
+.fa-file-image::before {
+ content: "\f1c5"; }
+
+.fa-circle-question::before {
+ content: "\f059"; }
+
+.fa-question-circle::before {
+ content: "\f059"; }
+
+.fa-plane-departure::before {
+ content: "\f5b0"; }
+
+.fa-handshake-slash::before {
+ content: "\e060"; }
+
+.fa-book-bookmark::before {
+ content: "\e0bb"; }
+
+.fa-code-branch::before {
+ content: "\f126"; }
+
+.fa-hat-cowboy::before {
+ content: "\f8c0"; }
+
+.fa-bridge::before {
+ content: "\e4c8"; }
+
+.fa-phone-flip::before {
+ content: "\f879"; }
+
+.fa-phone-alt::before {
+ content: "\f879"; }
+
+.fa-truck-front::before {
+ content: "\e2b7"; }
+
+.fa-cat::before {
+ content: "\f6be"; }
+
+.fa-anchor-circle-exclamation::before {
+ content: "\e4ab"; }
+
+.fa-truck-field::before {
+ content: "\e58d"; }
+
+.fa-route::before {
+ content: "\f4d7"; }
+
+.fa-clipboard-question::before {
+ content: "\e4e3"; }
+
+.fa-panorama::before {
+ content: "\e209"; }
+
+.fa-comment-medical::before {
+ content: "\f7f5"; }
+
+.fa-teeth-open::before {
+ content: "\f62f"; }
+
+.fa-file-circle-minus::before {
+ content: "\e4ed"; }
+
+.fa-tags::before {
+ content: "\f02c"; }
+
+.fa-wine-glass::before {
+ content: "\f4e3"; }
+
+.fa-forward-fast::before {
+ content: "\f050"; }
+
+.fa-fast-forward::before {
+ content: "\f050"; }
+
+.fa-face-meh-blank::before {
+ content: "\f5a4"; }
+
+.fa-meh-blank::before {
+ content: "\f5a4"; }
+
+.fa-square-parking::before {
+ content: "\f540"; }
+
+.fa-parking::before {
+ content: "\f540"; }
+
+.fa-house-signal::before {
+ content: "\e012"; }
+
+.fa-bars-progress::before {
+ content: "\f828"; }
+
+.fa-tasks-alt::before {
+ content: "\f828"; }
+
+.fa-faucet-drip::before {
+ content: "\e006"; }
+
+.fa-cart-flatbed::before {
+ content: "\f474"; }
+
+.fa-dolly-flatbed::before {
+ content: "\f474"; }
+
+.fa-ban-smoking::before {
+ content: "\f54d"; }
+
+.fa-smoking-ban::before {
+ content: "\f54d"; }
+
+.fa-terminal::before {
+ content: "\f120"; }
+
+.fa-mobile-button::before {
+ content: "\f10b"; }
+
+.fa-house-medical-flag::before {
+ content: "\e514"; }
+
+.fa-basket-shopping::before {
+ content: "\f291"; }
+
+.fa-shopping-basket::before {
+ content: "\f291"; }
+
+.fa-tape::before {
+ content: "\f4db"; }
+
+.fa-bus-simple::before {
+ content: "\f55e"; }
+
+.fa-bus-alt::before {
+ content: "\f55e"; }
+
+.fa-eye::before {
+ content: "\f06e"; }
+
+.fa-face-sad-cry::before {
+ content: "\f5b3"; }
+
+.fa-sad-cry::before {
+ content: "\f5b3"; }
+
+.fa-audio-description::before {
+ content: "\f29e"; }
+
+.fa-person-military-to-person::before {
+ content: "\e54c"; }
+
+.fa-file-shield::before {
+ content: "\e4f0"; }
+
+.fa-user-slash::before {
+ content: "\f506"; }
+
+.fa-pen::before {
+ content: "\f304"; }
+
+.fa-tower-observation::before {
+ content: "\e586"; }
+
+.fa-file-code::before {
+ content: "\f1c9"; }
+
+.fa-signal::before {
+ content: "\f012"; }
+
+.fa-signal-5::before {
+ content: "\f012"; }
+
+.fa-signal-perfect::before {
+ content: "\f012"; }
+
+.fa-bus::before {
+ content: "\f207"; }
+
+.fa-heart-circle-xmark::before {
+ content: "\e501"; }
+
+.fa-house-chimney::before {
+ content: "\e3af"; }
+
+.fa-home-lg::before {
+ content: "\e3af"; }
+
+.fa-window-maximize::before {
+ content: "\f2d0"; }
+
+.fa-face-frown::before {
+ content: "\f119"; }
+
+.fa-frown::before {
+ content: "\f119"; }
+
+.fa-prescription::before {
+ content: "\f5b1"; }
+
+.fa-shop::before {
+ content: "\f54f"; }
+
+.fa-store-alt::before {
+ content: "\f54f"; }
+
+.fa-floppy-disk::before {
+ content: "\f0c7"; }
+
+.fa-save::before {
+ content: "\f0c7"; }
+
+.fa-vihara::before {
+ content: "\f6a7"; }
+
+.fa-scale-unbalanced::before {
+ content: "\f515"; }
+
+.fa-balance-scale-left::before {
+ content: "\f515"; }
+
+.fa-sort-up::before {
+ content: "\f0de"; }
+
+.fa-sort-asc::before {
+ content: "\f0de"; }
+
+.fa-comment-dots::before {
+ content: "\f4ad"; }
+
+.fa-commenting::before {
+ content: "\f4ad"; }
+
+.fa-plant-wilt::before {
+ content: "\e5aa"; }
+
+.fa-diamond::before {
+ content: "\f219"; }
+
+.fa-face-grin-squint::before {
+ content: "\f585"; }
+
+.fa-grin-squint::before {
+ content: "\f585"; }
+
+.fa-hand-holding-dollar::before {
+ content: "\f4c0"; }
+
+.fa-hand-holding-usd::before {
+ content: "\f4c0"; }
+
+.fa-bacterium::before {
+ content: "\e05a"; }
+
+.fa-hand-pointer::before {
+ content: "\f25a"; }
+
+.fa-drum-steelpan::before {
+ content: "\f56a"; }
+
+.fa-hand-scissors::before {
+ content: "\f257"; }
+
+.fa-hands-praying::before {
+ content: "\f684"; }
+
+.fa-praying-hands::before {
+ content: "\f684"; }
+
+.fa-arrow-rotate-right::before {
+ content: "\f01e"; }
+
+.fa-arrow-right-rotate::before {
+ content: "\f01e"; }
+
+.fa-arrow-rotate-forward::before {
+ content: "\f01e"; }
+
+.fa-redo::before {
+ content: "\f01e"; }
+
+.fa-biohazard::before {
+ content: "\f780"; }
+
+.fa-location-crosshairs::before {
+ content: "\f601"; }
+
+.fa-location::before {
+ content: "\f601"; }
+
+.fa-mars-double::before {
+ content: "\f227"; }
+
+.fa-child-dress::before {
+ content: "\e59c"; }
+
+.fa-users-between-lines::before {
+ content: "\e591"; }
+
+.fa-lungs-virus::before {
+ content: "\e067"; }
+
+.fa-face-grin-tears::before {
+ content: "\f588"; }
+
+.fa-grin-tears::before {
+ content: "\f588"; }
+
+.fa-phone::before {
+ content: "\f095"; }
+
+.fa-calendar-xmark::before {
+ content: "\f273"; }
+
+.fa-calendar-times::before {
+ content: "\f273"; }
+
+.fa-child-reaching::before {
+ content: "\e59d"; }
+
+.fa-head-side-virus::before {
+ content: "\e064"; }
+
+.fa-user-gear::before {
+ content: "\f4fe"; }
+
+.fa-user-cog::before {
+ content: "\f4fe"; }
+
+.fa-arrow-up-1-9::before {
+ content: "\f163"; }
+
+.fa-sort-numeric-up::before {
+ content: "\f163"; }
+
+.fa-door-closed::before {
+ content: "\f52a"; }
+
+.fa-shield-virus::before {
+ content: "\e06c"; }
+
+.fa-dice-six::before {
+ content: "\f526"; }
+
+.fa-mosquito-net::before {
+ content: "\e52c"; }
+
+.fa-bridge-water::before {
+ content: "\e4ce"; }
+
+.fa-person-booth::before {
+ content: "\f756"; }
+
+.fa-text-width::before {
+ content: "\f035"; }
+
+.fa-hat-wizard::before {
+ content: "\f6e8"; }
+
+.fa-pen-fancy::before {
+ content: "\f5ac"; }
+
+.fa-person-digging::before {
+ content: "\f85e"; }
+
+.fa-digging::before {
+ content: "\f85e"; }
+
+.fa-trash::before {
+ content: "\f1f8"; }
+
+.fa-gauge-simple::before {
+ content: "\f629"; }
+
+.fa-gauge-simple-med::before {
+ content: "\f629"; }
+
+.fa-tachometer-average::before {
+ content: "\f629"; }
+
+.fa-book-medical::before {
+ content: "\f7e6"; }
+
+.fa-poo::before {
+ content: "\f2fe"; }
+
+.fa-quote-right::before {
+ content: "\f10e"; }
+
+.fa-quote-right-alt::before {
+ content: "\f10e"; }
+
+.fa-shirt::before {
+ content: "\f553"; }
+
+.fa-t-shirt::before {
+ content: "\f553"; }
+
+.fa-tshirt::before {
+ content: "\f553"; }
+
+.fa-cubes::before {
+ content: "\f1b3"; }
+
+.fa-divide::before {
+ content: "\f529"; }
+
+.fa-tenge-sign::before {
+ content: "\f7d7"; }
+
+.fa-tenge::before {
+ content: "\f7d7"; }
+
+.fa-headphones::before {
+ content: "\f025"; }
+
+.fa-hands-holding::before {
+ content: "\f4c2"; }
+
+.fa-hands-clapping::before {
+ content: "\e1a8"; }
+
+.fa-republican::before {
+ content: "\f75e"; }
+
+.fa-arrow-left::before {
+ content: "\f060"; }
+
+.fa-person-circle-xmark::before {
+ content: "\e543"; }
+
+.fa-ruler::before {
+ content: "\f545"; }
+
+.fa-align-left::before {
+ content: "\f036"; }
+
+.fa-dice-d6::before {
+ content: "\f6d1"; }
+
+.fa-restroom::before {
+ content: "\f7bd"; }
+
+.fa-j::before {
+ content: "\4a"; }
+
+.fa-users-viewfinder::before {
+ content: "\e595"; }
+
+.fa-file-video::before {
+ content: "\f1c8"; }
+
+.fa-up-right-from-square::before {
+ content: "\f35d"; }
+
+.fa-external-link-alt::before {
+ content: "\f35d"; }
+
+.fa-table-cells::before {
+ content: "\f00a"; }
+
+.fa-th::before {
+ content: "\f00a"; }
+
+.fa-file-pdf::before {
+ content: "\f1c1"; }
+
+.fa-book-bible::before {
+ content: "\f647"; }
+
+.fa-bible::before {
+ content: "\f647"; }
+
+.fa-o::before {
+ content: "\4f"; }
+
+.fa-suitcase-medical::before {
+ content: "\f0fa"; }
+
+.fa-medkit::before {
+ content: "\f0fa"; }
+
+.fa-user-secret::before {
+ content: "\f21b"; }
+
+.fa-otter::before {
+ content: "\f700"; }
+
+.fa-person-dress::before {
+ content: "\f182"; }
+
+.fa-female::before {
+ content: "\f182"; }
+
+.fa-comment-dollar::before {
+ content: "\f651"; }
+
+.fa-business-time::before {
+ content: "\f64a"; }
+
+.fa-briefcase-clock::before {
+ content: "\f64a"; }
+
+.fa-table-cells-large::before {
+ content: "\f009"; }
+
+.fa-th-large::before {
+ content: "\f009"; }
+
+.fa-book-tanakh::before {
+ content: "\f827"; }
+
+.fa-tanakh::before {
+ content: "\f827"; }
+
+.fa-phone-volume::before {
+ content: "\f2a0"; }
+
+.fa-volume-control-phone::before {
+ content: "\f2a0"; }
+
+.fa-hat-cowboy-side::before {
+ content: "\f8c1"; }
+
+.fa-clipboard-user::before {
+ content: "\f7f3"; }
+
+.fa-child::before {
+ content: "\f1ae"; }
+
+.fa-lira-sign::before {
+ content: "\f195"; }
+
+.fa-satellite::before {
+ content: "\f7bf"; }
+
+.fa-plane-lock::before {
+ content: "\e558"; }
+
+.fa-tag::before {
+ content: "\f02b"; }
+
+.fa-comment::before {
+ content: "\f075"; }
+
+.fa-cake-candles::before {
+ content: "\f1fd"; }
+
+.fa-birthday-cake::before {
+ content: "\f1fd"; }
+
+.fa-cake::before {
+ content: "\f1fd"; }
+
+.fa-envelope::before {
+ content: "\f0e0"; }
+
+.fa-angles-up::before {
+ content: "\f102"; }
+
+.fa-angle-double-up::before {
+ content: "\f102"; }
+
+.fa-paperclip::before {
+ content: "\f0c6"; }
+
+.fa-arrow-right-to-city::before {
+ content: "\e4b3"; }
+
+.fa-ribbon::before {
+ content: "\f4d6"; }
+
+.fa-lungs::before {
+ content: "\f604"; }
+
+.fa-arrow-up-9-1::before {
+ content: "\f887"; }
+
+.fa-sort-numeric-up-alt::before {
+ content: "\f887"; }
+
+.fa-litecoin-sign::before {
+ content: "\e1d3"; }
+
+.fa-border-none::before {
+ content: "\f850"; }
+
+.fa-circle-nodes::before {
+ content: "\e4e2"; }
+
+.fa-parachute-box::before {
+ content: "\f4cd"; }
+
+.fa-indent::before {
+ content: "\f03c"; }
+
+.fa-truck-field-un::before {
+ content: "\e58e"; }
+
+.fa-hourglass::before {
+ content: "\f254"; }
+
+.fa-hourglass-empty::before {
+ content: "\f254"; }
+
+.fa-mountain::before {
+ content: "\f6fc"; }
+
+.fa-user-doctor::before {
+ content: "\f0f0"; }
+
+.fa-user-md::before {
+ content: "\f0f0"; }
+
+.fa-circle-info::before {
+ content: "\f05a"; }
+
+.fa-info-circle::before {
+ content: "\f05a"; }
+
+.fa-cloud-meatball::before {
+ content: "\f73b"; }
+
+.fa-camera::before {
+ content: "\f030"; }
+
+.fa-camera-alt::before {
+ content: "\f030"; }
+
+.fa-square-virus::before {
+ content: "\e578"; }
+
+.fa-meteor::before {
+ content: "\f753"; }
+
+.fa-car-on::before {
+ content: "\e4dd"; }
+
+.fa-sleigh::before {
+ content: "\f7cc"; }
+
+.fa-arrow-down-1-9::before {
+ content: "\f162"; }
+
+.fa-sort-numeric-asc::before {
+ content: "\f162"; }
+
+.fa-sort-numeric-down::before {
+ content: "\f162"; }
+
+.fa-hand-holding-droplet::before {
+ content: "\f4c1"; }
+
+.fa-hand-holding-water::before {
+ content: "\f4c1"; }
+
+.fa-water::before {
+ content: "\f773"; }
+
+.fa-calendar-check::before {
+ content: "\f274"; }
+
+.fa-braille::before {
+ content: "\f2a1"; }
+
+.fa-prescription-bottle-medical::before {
+ content: "\f486"; }
+
+.fa-prescription-bottle-alt::before {
+ content: "\f486"; }
+
+.fa-landmark::before {
+ content: "\f66f"; }
+
+.fa-truck::before {
+ content: "\f0d1"; }
+
+.fa-crosshairs::before {
+ content: "\f05b"; }
+
+.fa-person-cane::before {
+ content: "\e53c"; }
+
+.fa-tent::before {
+ content: "\e57d"; }
+
+.fa-vest-patches::before {
+ content: "\e086"; }
+
+.fa-check-double::before {
+ content: "\f560"; }
+
+.fa-arrow-down-a-z::before {
+ content: "\f15d"; }
+
+.fa-sort-alpha-asc::before {
+ content: "\f15d"; }
+
+.fa-sort-alpha-down::before {
+ content: "\f15d"; }
+
+.fa-money-bill-wheat::before {
+ content: "\e52a"; }
+
+.fa-cookie::before {
+ content: "\f563"; }
+
+.fa-arrow-rotate-left::before {
+ content: "\f0e2"; }
+
+.fa-arrow-left-rotate::before {
+ content: "\f0e2"; }
+
+.fa-arrow-rotate-back::before {
+ content: "\f0e2"; }
+
+.fa-arrow-rotate-backward::before {
+ content: "\f0e2"; }
+
+.fa-undo::before {
+ content: "\f0e2"; }
+
+.fa-hard-drive::before {
+ content: "\f0a0"; }
+
+.fa-hdd::before {
+ content: "\f0a0"; }
+
+.fa-face-grin-squint-tears::before {
+ content: "\f586"; }
+
+.fa-grin-squint-tears::before {
+ content: "\f586"; }
+
+.fa-dumbbell::before {
+ content: "\f44b"; }
+
+.fa-rectangle-list::before {
+ content: "\f022"; }
+
+.fa-list-alt::before {
+ content: "\f022"; }
+
+.fa-tarp-droplet::before {
+ content: "\e57c"; }
+
+.fa-house-medical-circle-check::before {
+ content: "\e511"; }
+
+.fa-person-skiing-nordic::before {
+ content: "\f7ca"; }
+
+.fa-skiing-nordic::before {
+ content: "\f7ca"; }
+
+.fa-calendar-plus::before {
+ content: "\f271"; }
+
+.fa-plane-arrival::before {
+ content: "\f5af"; }
+
+.fa-circle-left::before {
+ content: "\f359"; }
+
+.fa-arrow-alt-circle-left::before {
+ content: "\f359"; }
+
+.fa-train-subway::before {
+ content: "\f239"; }
+
+.fa-subway::before {
+ content: "\f239"; }
+
+.fa-chart-gantt::before {
+ content: "\e0e4"; }
+
+.fa-indian-rupee-sign::before {
+ content: "\e1bc"; }
+
+.fa-indian-rupee::before {
+ content: "\e1bc"; }
+
+.fa-inr::before {
+ content: "\e1bc"; }
+
+.fa-crop-simple::before {
+ content: "\f565"; }
+
+.fa-crop-alt::before {
+ content: "\f565"; }
+
+.fa-money-bill-1::before {
+ content: "\f3d1"; }
+
+.fa-money-bill-alt::before {
+ content: "\f3d1"; }
+
+.fa-left-long::before {
+ content: "\f30a"; }
+
+.fa-long-arrow-alt-left::before {
+ content: "\f30a"; }
+
+.fa-dna::before {
+ content: "\f471"; }
+
+.fa-virus-slash::before {
+ content: "\e075"; }
+
+.fa-minus::before {
+ content: "\f068"; }
+
+.fa-subtract::before {
+ content: "\f068"; }
+
+.fa-child-rifle::before {
+ content: "\e4e0"; }
+
+.fa-chess::before {
+ content: "\f439"; }
+
+.fa-arrow-left-long::before {
+ content: "\f177"; }
+
+.fa-long-arrow-left::before {
+ content: "\f177"; }
+
+.fa-plug-circle-check::before {
+ content: "\e55c"; }
+
+.fa-street-view::before {
+ content: "\f21d"; }
+
+.fa-franc-sign::before {
+ content: "\e18f"; }
+
+.fa-volume-off::before {
+ content: "\f026"; }
+
+.fa-hands-asl-interpreting::before {
+ content: "\f2a3"; }
+
+.fa-american-sign-language-interpreting::before {
+ content: "\f2a3"; }
+
+.fa-asl-interpreting::before {
+ content: "\f2a3"; }
+
+.fa-hands-american-sign-language-interpreting::before {
+ content: "\f2a3"; }
+
+.fa-gear::before {
+ content: "\f013"; }
+
+.fa-cog::before {
+ content: "\f013"; }
+
+.fa-droplet-slash::before {
+ content: "\f5c7"; }
+
+.fa-tint-slash::before {
+ content: "\f5c7"; }
+
+.fa-mosque::before {
+ content: "\f678"; }
+
+.fa-mosquito::before {
+ content: "\e52b"; }
+
+.fa-star-of-david::before {
+ content: "\f69a"; }
+
+.fa-person-military-rifle::before {
+ content: "\e54b"; }
+
+.fa-cart-shopping::before {
+ content: "\f07a"; }
+
+.fa-shopping-cart::before {
+ content: "\f07a"; }
+
+.fa-vials::before {
+ content: "\f493"; }
+
+.fa-plug-circle-plus::before {
+ content: "\e55f"; }
+
+.fa-place-of-worship::before {
+ content: "\f67f"; }
+
+.fa-grip-vertical::before {
+ content: "\f58e"; }
+
+.fa-arrow-turn-up::before {
+ content: "\f148"; }
+
+.fa-level-up::before {
+ content: "\f148"; }
+
+.fa-u::before {
+ content: "\55"; }
+
+.fa-square-root-variable::before {
+ content: "\f698"; }
+
+.fa-square-root-alt::before {
+ content: "\f698"; }
+
+.fa-clock::before {
+ content: "\f017"; }
+
+.fa-clock-four::before {
+ content: "\f017"; }
+
+.fa-backward-step::before {
+ content: "\f048"; }
+
+.fa-step-backward::before {
+ content: "\f048"; }
+
+.fa-pallet::before {
+ content: "\f482"; }
+
+.fa-faucet::before {
+ content: "\e005"; }
+
+.fa-baseball-bat-ball::before {
+ content: "\f432"; }
+
+.fa-s::before {
+ content: "\53"; }
+
+.fa-timeline::before {
+ content: "\e29c"; }
+
+.fa-keyboard::before {
+ content: "\f11c"; }
+
+.fa-caret-down::before {
+ content: "\f0d7"; }
+
+.fa-house-chimney-medical::before {
+ content: "\f7f2"; }
+
+.fa-clinic-medical::before {
+ content: "\f7f2"; }
+
+.fa-temperature-three-quarters::before {
+ content: "\f2c8"; }
+
+.fa-temperature-3::before {
+ content: "\f2c8"; }
+
+.fa-thermometer-3::before {
+ content: "\f2c8"; }
+
+.fa-thermometer-three-quarters::before {
+ content: "\f2c8"; }
+
+.fa-mobile-screen::before {
+ content: "\f3cf"; }
+
+.fa-mobile-android-alt::before {
+ content: "\f3cf"; }
+
+.fa-plane-up::before {
+ content: "\e22d"; }
+
+.fa-piggy-bank::before {
+ content: "\f4d3"; }
+
+.fa-battery-half::before {
+ content: "\f242"; }
+
+.fa-battery-3::before {
+ content: "\f242"; }
+
+.fa-mountain-city::before {
+ content: "\e52e"; }
+
+.fa-coins::before {
+ content: "\f51e"; }
+
+.fa-khanda::before {
+ content: "\f66d"; }
+
+.fa-sliders::before {
+ content: "\f1de"; }
+
+.fa-sliders-h::before {
+ content: "\f1de"; }
+
+.fa-folder-tree::before {
+ content: "\f802"; }
+
+.fa-network-wired::before {
+ content: "\f6ff"; }
+
+.fa-map-pin::before {
+ content: "\f276"; }
+
+.fa-hamsa::before {
+ content: "\f665"; }
+
+.fa-cent-sign::before {
+ content: "\e3f5"; }
+
+.fa-flask::before {
+ content: "\f0c3"; }
+
+.fa-person-pregnant::before {
+ content: "\e31e"; }
+
+.fa-wand-sparkles::before {
+ content: "\f72b"; }
+
+.fa-ellipsis-vertical::before {
+ content: "\f142"; }
+
+.fa-ellipsis-v::before {
+ content: "\f142"; }
+
+.fa-ticket::before {
+ content: "\f145"; }
+
+.fa-power-off::before {
+ content: "\f011"; }
+
+.fa-right-long::before {
+ content: "\f30b"; }
+
+.fa-long-arrow-alt-right::before {
+ content: "\f30b"; }
+
+.fa-flag-usa::before {
+ content: "\f74d"; }
+
+.fa-laptop-file::before {
+ content: "\e51d"; }
+
+.fa-tty::before {
+ content: "\f1e4"; }
+
+.fa-teletype::before {
+ content: "\f1e4"; }
+
+.fa-diagram-next::before {
+ content: "\e476"; }
+
+.fa-person-rifle::before {
+ content: "\e54e"; }
+
+.fa-house-medical-circle-exclamation::before {
+ content: "\e512"; }
+
+.fa-closed-captioning::before {
+ content: "\f20a"; }
+
+.fa-person-hiking::before {
+ content: "\f6ec"; }
+
+.fa-hiking::before {
+ content: "\f6ec"; }
+
+.fa-venus-double::before {
+ content: "\f226"; }
+
+.fa-images::before {
+ content: "\f302"; }
+
+.fa-calculator::before {
+ content: "\f1ec"; }
+
+.fa-people-pulling::before {
+ content: "\e535"; }
+
+.fa-n::before {
+ content: "\4e"; }
+
+.fa-cable-car::before {
+ content: "\f7da"; }
+
+.fa-tram::before {
+ content: "\f7da"; }
+
+.fa-cloud-rain::before {
+ content: "\f73d"; }
+
+.fa-building-circle-xmark::before {
+ content: "\e4d4"; }
+
+.fa-ship::before {
+ content: "\f21a"; }
+
+.fa-arrows-down-to-line::before {
+ content: "\e4b8"; }
+
+.fa-download::before {
+ content: "\f019"; }
+
+.fa-face-grin::before {
+ content: "\f580"; }
+
+.fa-grin::before {
+ content: "\f580"; }
+
+.fa-delete-left::before {
+ content: "\f55a"; }
+
+.fa-backspace::before {
+ content: "\f55a"; }
+
+.fa-eye-dropper::before {
+ content: "\f1fb"; }
+
+.fa-eye-dropper-empty::before {
+ content: "\f1fb"; }
+
+.fa-eyedropper::before {
+ content: "\f1fb"; }
+
+.fa-file-circle-check::before {
+ content: "\e5a0"; }
+
+.fa-forward::before {
+ content: "\f04e"; }
+
+.fa-mobile::before {
+ content: "\f3ce"; }
+
+.fa-mobile-android::before {
+ content: "\f3ce"; }
+
+.fa-mobile-phone::before {
+ content: "\f3ce"; }
+
+.fa-face-meh::before {
+ content: "\f11a"; }
+
+.fa-meh::before {
+ content: "\f11a"; }
+
+.fa-align-center::before {
+ content: "\f037"; }
+
+.fa-book-skull::before {
+ content: "\f6b7"; }
+
+.fa-book-dead::before {
+ content: "\f6b7"; }
+
+.fa-id-card::before {
+ content: "\f2c2"; }
+
+.fa-drivers-license::before {
+ content: "\f2c2"; }
+
+.fa-outdent::before {
+ content: "\f03b"; }
+
+.fa-dedent::before {
+ content: "\f03b"; }
+
+.fa-heart-circle-exclamation::before {
+ content: "\e4fe"; }
+
+.fa-house::before {
+ content: "\f015"; }
+
+.fa-home::before {
+ content: "\f015"; }
+
+.fa-home-alt::before {
+ content: "\f015"; }
+
+.fa-home-lg-alt::before {
+ content: "\f015"; }
+
+.fa-calendar-week::before {
+ content: "\f784"; }
+
+.fa-laptop-medical::before {
+ content: "\f812"; }
+
+.fa-b::before {
+ content: "\42"; }
+
+.fa-file-medical::before {
+ content: "\f477"; }
+
+.fa-dice-one::before {
+ content: "\f525"; }
+
+.fa-kiwi-bird::before {
+ content: "\f535"; }
+
+.fa-arrow-right-arrow-left::before {
+ content: "\f0ec"; }
+
+.fa-exchange::before {
+ content: "\f0ec"; }
+
+.fa-rotate-right::before {
+ content: "\f2f9"; }
+
+.fa-redo-alt::before {
+ content: "\f2f9"; }
+
+.fa-rotate-forward::before {
+ content: "\f2f9"; }
+
+.fa-utensils::before {
+ content: "\f2e7"; }
+
+.fa-cutlery::before {
+ content: "\f2e7"; }
+
+.fa-arrow-up-wide-short::before {
+ content: "\f161"; }
+
+.fa-sort-amount-up::before {
+ content: "\f161"; }
+
+.fa-mill-sign::before {
+ content: "\e1ed"; }
+
+.fa-bowl-rice::before {
+ content: "\e2eb"; }
+
+.fa-skull::before {
+ content: "\f54c"; }
+
+.fa-tower-broadcast::before {
+ content: "\f519"; }
+
+.fa-broadcast-tower::before {
+ content: "\f519"; }
+
+.fa-truck-pickup::before {
+ content: "\f63c"; }
+
+.fa-up-long::before {
+ content: "\f30c"; }
+
+.fa-long-arrow-alt-up::before {
+ content: "\f30c"; }
+
+.fa-stop::before {
+ content: "\f04d"; }
+
+.fa-code-merge::before {
+ content: "\f387"; }
+
+.fa-upload::before {
+ content: "\f093"; }
+
+.fa-hurricane::before {
+ content: "\f751"; }
+
+.fa-mound::before {
+ content: "\e52d"; }
+
+.fa-toilet-portable::before {
+ content: "\e583"; }
+
+.fa-compact-disc::before {
+ content: "\f51f"; }
+
+.fa-file-arrow-down::before {
+ content: "\f56d"; }
+
+.fa-file-download::before {
+ content: "\f56d"; }
+
+.fa-caravan::before {
+ content: "\f8ff"; }
+
+.fa-shield-cat::before {
+ content: "\e572"; }
+
+.fa-bolt::before {
+ content: "\f0e7"; }
+
+.fa-zap::before {
+ content: "\f0e7"; }
+
+.fa-glass-water::before {
+ content: "\e4f4"; }
+
+.fa-oil-well::before {
+ content: "\e532"; }
+
+.fa-vault::before {
+ content: "\e2c5"; }
+
+.fa-mars::before {
+ content: "\f222"; }
+
+.fa-toilet::before {
+ content: "\f7d8"; }
+
+.fa-plane-circle-xmark::before {
+ content: "\e557"; }
+
+.fa-yen-sign::before {
+ content: "\f157"; }
+
+.fa-cny::before {
+ content: "\f157"; }
+
+.fa-jpy::before {
+ content: "\f157"; }
+
+.fa-rmb::before {
+ content: "\f157"; }
+
+.fa-yen::before {
+ content: "\f157"; }
+
+.fa-ruble-sign::before {
+ content: "\f158"; }
+
+.fa-rouble::before {
+ content: "\f158"; }
+
+.fa-rub::before {
+ content: "\f158"; }
+
+.fa-ruble::before {
+ content: "\f158"; }
+
+.fa-sun::before {
+ content: "\f185"; }
+
+.fa-guitar::before {
+ content: "\f7a6"; }
+
+.fa-face-laugh-wink::before {
+ content: "\f59c"; }
+
+.fa-laugh-wink::before {
+ content: "\f59c"; }
+
+.fa-horse-head::before {
+ content: "\f7ab"; }
+
+.fa-bore-hole::before {
+ content: "\e4c3"; }
+
+.fa-industry::before {
+ content: "\f275"; }
+
+.fa-circle-down::before {
+ content: "\f358"; }
+
+.fa-arrow-alt-circle-down::before {
+ content: "\f358"; }
+
+.fa-arrows-turn-to-dots::before {
+ content: "\e4c1"; }
+
+.fa-florin-sign::before {
+ content: "\e184"; }
+
+.fa-arrow-down-short-wide::before {
+ content: "\f884"; }
+
+.fa-sort-amount-desc::before {
+ content: "\f884"; }
+
+.fa-sort-amount-down-alt::before {
+ content: "\f884"; }
+
+.fa-less-than::before {
+ content: "\3c"; }
+
+.fa-angle-down::before {
+ content: "\f107"; }
+
+.fa-car-tunnel::before {
+ content: "\e4de"; }
+
+.fa-head-side-cough::before {
+ content: "\e061"; }
+
+.fa-grip-lines::before {
+ content: "\f7a4"; }
+
+.fa-thumbs-down::before {
+ content: "\f165"; }
+
+.fa-user-lock::before {
+ content: "\f502"; }
+
+.fa-arrow-right-long::before {
+ content: "\f178"; }
+
+.fa-long-arrow-right::before {
+ content: "\f178"; }
+
+.fa-anchor-circle-xmark::before {
+ content: "\e4ac"; }
+
+.fa-ellipsis::before {
+ content: "\f141"; }
+
+.fa-ellipsis-h::before {
+ content: "\f141"; }
+
+.fa-chess-pawn::before {
+ content: "\f443"; }
+
+.fa-kit-medical::before {
+ content: "\f479"; }
+
+.fa-first-aid::before {
+ content: "\f479"; }
+
+.fa-person-through-window::before {
+ content: "\e5a9"; }
+
+.fa-toolbox::before {
+ content: "\f552"; }
+
+.fa-hands-holding-circle::before {
+ content: "\e4fb"; }
+
+.fa-bug::before {
+ content: "\f188"; }
+
+.fa-credit-card::before {
+ content: "\f09d"; }
+
+.fa-credit-card-alt::before {
+ content: "\f09d"; }
+
+.fa-car::before {
+ content: "\f1b9"; }
+
+.fa-automobile::before {
+ content: "\f1b9"; }
+
+.fa-hand-holding-hand::before {
+ content: "\e4f7"; }
+
+.fa-book-open-reader::before {
+ content: "\f5da"; }
+
+.fa-book-reader::before {
+ content: "\f5da"; }
+
+.fa-mountain-sun::before {
+ content: "\e52f"; }
+
+.fa-arrows-left-right-to-line::before {
+ content: "\e4ba"; }
+
+.fa-dice-d20::before {
+ content: "\f6cf"; }
+
+.fa-truck-droplet::before {
+ content: "\e58c"; }
+
+.fa-file-circle-xmark::before {
+ content: "\e5a1"; }
+
+.fa-temperature-arrow-up::before {
+ content: "\e040"; }
+
+.fa-temperature-up::before {
+ content: "\e040"; }
+
+.fa-medal::before {
+ content: "\f5a2"; }
+
+.fa-bed::before {
+ content: "\f236"; }
+
+.fa-square-h::before {
+ content: "\f0fd"; }
+
+.fa-h-square::before {
+ content: "\f0fd"; }
+
+.fa-podcast::before {
+ content: "\f2ce"; }
+
+.fa-temperature-full::before {
+ content: "\f2c7"; }
+
+.fa-temperature-4::before {
+ content: "\f2c7"; }
+
+.fa-thermometer-4::before {
+ content: "\f2c7"; }
+
+.fa-thermometer-full::before {
+ content: "\f2c7"; }
+
+.fa-bell::before {
+ content: "\f0f3"; }
+
+.fa-superscript::before {
+ content: "\f12b"; }
+
+.fa-plug-circle-xmark::before {
+ content: "\e560"; }
+
+.fa-star-of-life::before {
+ content: "\f621"; }
+
+.fa-phone-slash::before {
+ content: "\f3dd"; }
+
+.fa-paint-roller::before {
+ content: "\f5aa"; }
+
+.fa-handshake-angle::before {
+ content: "\f4c4"; }
+
+.fa-hands-helping::before {
+ content: "\f4c4"; }
+
+.fa-location-dot::before {
+ content: "\f3c5"; }
+
+.fa-map-marker-alt::before {
+ content: "\f3c5"; }
+
+.fa-file::before {
+ content: "\f15b"; }
+
+.fa-greater-than::before {
+ content: "\3e"; }
+
+.fa-person-swimming::before {
+ content: "\f5c4"; }
+
+.fa-swimmer::before {
+ content: "\f5c4"; }
+
+.fa-arrow-down::before {
+ content: "\f063"; }
+
+.fa-droplet::before {
+ content: "\f043"; }
+
+.fa-tint::before {
+ content: "\f043"; }
+
+.fa-eraser::before {
+ content: "\f12d"; }
+
+.fa-earth-americas::before {
+ content: "\f57d"; }
+
+.fa-earth::before {
+ content: "\f57d"; }
+
+.fa-earth-america::before {
+ content: "\f57d"; }
+
+.fa-globe-americas::before {
+ content: "\f57d"; }
+
+.fa-person-burst::before {
+ content: "\e53b"; }
+
+.fa-dove::before {
+ content: "\f4ba"; }
+
+.fa-battery-empty::before {
+ content: "\f244"; }
+
+.fa-battery-0::before {
+ content: "\f244"; }
+
+.fa-socks::before {
+ content: "\f696"; }
+
+.fa-inbox::before {
+ content: "\f01c"; }
+
+.fa-section::before {
+ content: "\e447"; }
+
+.fa-gauge-high::before {
+ content: "\f625"; }
+
+.fa-tachometer-alt::before {
+ content: "\f625"; }
+
+.fa-tachometer-alt-fast::before {
+ content: "\f625"; }
+
+.fa-envelope-open-text::before {
+ content: "\f658"; }
+
+.fa-hospital::before {
+ content: "\f0f8"; }
+
+.fa-hospital-alt::before {
+ content: "\f0f8"; }
+
+.fa-hospital-wide::before {
+ content: "\f0f8"; }
+
+.fa-wine-bottle::before {
+ content: "\f72f"; }
+
+.fa-chess-rook::before {
+ content: "\f447"; }
+
+.fa-bars-staggered::before {
+ content: "\f550"; }
+
+.fa-reorder::before {
+ content: "\f550"; }
+
+.fa-stream::before {
+ content: "\f550"; }
+
+.fa-dharmachakra::before {
+ content: "\f655"; }
+
+.fa-hotdog::before {
+ content: "\f80f"; }
+
+.fa-person-walking-with-cane::before {
+ content: "\f29d"; }
+
+.fa-blind::before {
+ content: "\f29d"; }
+
+.fa-drum::before {
+ content: "\f569"; }
+
+.fa-ice-cream::before {
+ content: "\f810"; }
+
+.fa-heart-circle-bolt::before {
+ content: "\e4fc"; }
+
+.fa-fax::before {
+ content: "\f1ac"; }
+
+.fa-paragraph::before {
+ content: "\f1dd"; }
+
+.fa-check-to-slot::before {
+ content: "\f772"; }
+
+.fa-vote-yea::before {
+ content: "\f772"; }
+
+.fa-star-half::before {
+ content: "\f089"; }
+
+.fa-boxes-stacked::before {
+ content: "\f468"; }
+
+.fa-boxes::before {
+ content: "\f468"; }
+
+.fa-boxes-alt::before {
+ content: "\f468"; }
+
+.fa-link::before {
+ content: "\f0c1"; }
+
+.fa-chain::before {
+ content: "\f0c1"; }
+
+.fa-ear-listen::before {
+ content: "\f2a2"; }
+
+.fa-assistive-listening-systems::before {
+ content: "\f2a2"; }
+
+.fa-tree-city::before {
+ content: "\e587"; }
+
+.fa-play::before {
+ content: "\f04b"; }
+
+.fa-font::before {
+ content: "\f031"; }
+
+.fa-rupiah-sign::before {
+ content: "\e23d"; }
+
+.fa-magnifying-glass::before {
+ content: "\f002"; }
+
+.fa-search::before {
+ content: "\f002"; }
+
+.fa-table-tennis-paddle-ball::before {
+ content: "\f45d"; }
+
+.fa-ping-pong-paddle-ball::before {
+ content: "\f45d"; }
+
+.fa-table-tennis::before {
+ content: "\f45d"; }
+
+.fa-person-dots-from-line::before {
+ content: "\f470"; }
+
+.fa-diagnoses::before {
+ content: "\f470"; }
+
+.fa-trash-can-arrow-up::before {
+ content: "\f82a"; }
+
+.fa-trash-restore-alt::before {
+ content: "\f82a"; }
+
+.fa-naira-sign::before {
+ content: "\e1f6"; }
+
+.fa-cart-arrow-down::before {
+ content: "\f218"; }
+
+.fa-walkie-talkie::before {
+ content: "\f8ef"; }
+
+.fa-file-pen::before {
+ content: "\f31c"; }
+
+.fa-file-edit::before {
+ content: "\f31c"; }
+
+.fa-receipt::before {
+ content: "\f543"; }
+
+.fa-square-pen::before {
+ content: "\f14b"; }
+
+.fa-pen-square::before {
+ content: "\f14b"; }
+
+.fa-pencil-square::before {
+ content: "\f14b"; }
+
+.fa-suitcase-rolling::before {
+ content: "\f5c1"; }
+
+.fa-person-circle-exclamation::before {
+ content: "\e53f"; }
+
+.fa-chevron-down::before {
+ content: "\f078"; }
+
+.fa-battery-full::before {
+ content: "\f240"; }
+
+.fa-battery::before {
+ content: "\f240"; }
+
+.fa-battery-5::before {
+ content: "\f240"; }
+
+.fa-skull-crossbones::before {
+ content: "\f714"; }
+
+.fa-code-compare::before {
+ content: "\e13a"; }
+
+.fa-list-ul::before {
+ content: "\f0ca"; }
+
+.fa-list-dots::before {
+ content: "\f0ca"; }
+
+.fa-school-lock::before {
+ content: "\e56f"; }
+
+.fa-tower-cell::before {
+ content: "\e585"; }
+
+.fa-down-long::before {
+ content: "\f309"; }
+
+.fa-long-arrow-alt-down::before {
+ content: "\f309"; }
+
+.fa-ranking-star::before {
+ content: "\e561"; }
+
+.fa-chess-king::before {
+ content: "\f43f"; }
+
+.fa-person-harassing::before {
+ content: "\e549"; }
+
+.fa-brazilian-real-sign::before {
+ content: "\e46c"; }
+
+.fa-landmark-dome::before {
+ content: "\f752"; }
+
+.fa-landmark-alt::before {
+ content: "\f752"; }
+
+.fa-arrow-up::before {
+ content: "\f062"; }
+
+.fa-tv::before {
+ content: "\f26c"; }
+
+.fa-television::before {
+ content: "\f26c"; }
+
+.fa-tv-alt::before {
+ content: "\f26c"; }
+
+.fa-shrimp::before {
+ content: "\e448"; }
+
+.fa-list-check::before {
+ content: "\f0ae"; }
+
+.fa-tasks::before {
+ content: "\f0ae"; }
+
+.fa-jug-detergent::before {
+ content: "\e519"; }
+
+.fa-circle-user::before {
+ content: "\f2bd"; }
+
+.fa-user-circle::before {
+ content: "\f2bd"; }
+
+.fa-user-shield::before {
+ content: "\f505"; }
+
+.fa-wind::before {
+ content: "\f72e"; }
+
+.fa-car-burst::before {
+ content: "\f5e1"; }
+
+.fa-car-crash::before {
+ content: "\f5e1"; }
+
+.fa-y::before {
+ content: "\59"; }
+
+.fa-person-snowboarding::before {
+ content: "\f7ce"; }
+
+.fa-snowboarding::before {
+ content: "\f7ce"; }
+
+.fa-truck-fast::before {
+ content: "\f48b"; }
+
+.fa-shipping-fast::before {
+ content: "\f48b"; }
+
+.fa-fish::before {
+ content: "\f578"; }
+
+.fa-user-graduate::before {
+ content: "\f501"; }
+
+.fa-circle-half-stroke::before {
+ content: "\f042"; }
+
+.fa-adjust::before {
+ content: "\f042"; }
+
+.fa-clapperboard::before {
+ content: "\e131"; }
+
+.fa-circle-radiation::before {
+ content: "\f7ba"; }
+
+.fa-radiation-alt::before {
+ content: "\f7ba"; }
+
+.fa-baseball::before {
+ content: "\f433"; }
+
+.fa-baseball-ball::before {
+ content: "\f433"; }
+
+.fa-jet-fighter-up::before {
+ content: "\e518"; }
+
+.fa-diagram-project::before {
+ content: "\f542"; }
+
+.fa-project-diagram::before {
+ content: "\f542"; }
+
+.fa-copy::before {
+ content: "\f0c5"; }
+
+.fa-volume-xmark::before {
+ content: "\f6a9"; }
+
+.fa-volume-mute::before {
+ content: "\f6a9"; }
+
+.fa-volume-times::before {
+ content: "\f6a9"; }
+
+.fa-hand-sparkles::before {
+ content: "\e05d"; }
+
+.fa-grip::before {
+ content: "\f58d"; }
+
+.fa-grip-horizontal::before {
+ content: "\f58d"; }
+
+.fa-share-from-square::before {
+ content: "\f14d"; }
+
+.fa-share-square::before {
+ content: "\f14d"; }
+
+.fa-gun::before {
+ content: "\e19b"; }
+
+.fa-square-phone::before {
+ content: "\f098"; }
+
+.fa-phone-square::before {
+ content: "\f098"; }
+
+.fa-plus::before {
+ content: "\2b"; }
+
+.fa-add::before {
+ content: "\2b"; }
+
+.fa-expand::before {
+ content: "\f065"; }
+
+.fa-computer::before {
+ content: "\e4e5"; }
+
+.fa-xmark::before {
+ content: "\f00d"; }
+
+.fa-close::before {
+ content: "\f00d"; }
+
+.fa-multiply::before {
+ content: "\f00d"; }
+
+.fa-remove::before {
+ content: "\f00d"; }
+
+.fa-times::before {
+ content: "\f00d"; }
+
+.fa-arrows-up-down-left-right::before {
+ content: "\f047"; }
+
+.fa-arrows::before {
+ content: "\f047"; }
+
+.fa-chalkboard-user::before {
+ content: "\f51c"; }
+
+.fa-chalkboard-teacher::before {
+ content: "\f51c"; }
+
+.fa-peso-sign::before {
+ content: "\e222"; }
+
+.fa-building-shield::before {
+ content: "\e4d8"; }
+
+.fa-baby::before {
+ content: "\f77c"; }
+
+.fa-users-line::before {
+ content: "\e592"; }
+
+.fa-quote-left::before {
+ content: "\f10d"; }
+
+.fa-quote-left-alt::before {
+ content: "\f10d"; }
+
+.fa-tractor::before {
+ content: "\f722"; }
+
+.fa-trash-arrow-up::before {
+ content: "\f829"; }
+
+.fa-trash-restore::before {
+ content: "\f829"; }
+
+.fa-arrow-down-up-lock::before {
+ content: "\e4b0"; }
+
+.fa-lines-leaning::before {
+ content: "\e51e"; }
+
+.fa-ruler-combined::before {
+ content: "\f546"; }
+
+.fa-copyright::before {
+ content: "\f1f9"; }
+
+.fa-equals::before {
+ content: "\3d"; }
+
+.fa-blender::before {
+ content: "\f517"; }
+
+.fa-teeth::before {
+ content: "\f62e"; }
+
+.fa-shekel-sign::before {
+ content: "\f20b"; }
+
+.fa-ils::before {
+ content: "\f20b"; }
+
+.fa-shekel::before {
+ content: "\f20b"; }
+
+.fa-sheqel::before {
+ content: "\f20b"; }
+
+.fa-sheqel-sign::before {
+ content: "\f20b"; }
+
+.fa-map::before {
+ content: "\f279"; }
+
+.fa-rocket::before {
+ content: "\f135"; }
+
+.fa-photo-film::before {
+ content: "\f87c"; }
+
+.fa-photo-video::before {
+ content: "\f87c"; }
+
+.fa-folder-minus::before {
+ content: "\f65d"; }
+
+.fa-store::before {
+ content: "\f54e"; }
+
+.fa-arrow-trend-up::before {
+ content: "\e098"; }
+
+.fa-plug-circle-minus::before {
+ content: "\e55e"; }
+
+.fa-sign-hanging::before {
+ content: "\f4d9"; }
+
+.fa-sign::before {
+ content: "\f4d9"; }
+
+.fa-bezier-curve::before {
+ content: "\f55b"; }
+
+.fa-bell-slash::before {
+ content: "\f1f6"; }
+
+.fa-tablet::before {
+ content: "\f3fb"; }
+
+.fa-tablet-android::before {
+ content: "\f3fb"; }
+
+.fa-school-flag::before {
+ content: "\e56e"; }
+
+.fa-fill::before {
+ content: "\f575"; }
+
+.fa-angle-up::before {
+ content: "\f106"; }
+
+.fa-drumstick-bite::before {
+ content: "\f6d7"; }
+
+.fa-holly-berry::before {
+ content: "\f7aa"; }
+
+.fa-chevron-left::before {
+ content: "\f053"; }
+
+.fa-bacteria::before {
+ content: "\e059"; }
+
+.fa-hand-lizard::before {
+ content: "\f258"; }
+
+.fa-disease::before {
+ content: "\f7fa"; }
+
+.fa-briefcase-medical::before {
+ content: "\f469"; }
+
+.fa-genderless::before {
+ content: "\f22d"; }
+
+.fa-chevron-right::before {
+ content: "\f054"; }
+
+.fa-retweet::before {
+ content: "\f079"; }
+
+.fa-car-rear::before {
+ content: "\f5de"; }
+
+.fa-car-alt::before {
+ content: "\f5de"; }
+
+.fa-pump-soap::before {
+ content: "\e06b"; }
+
+.fa-video-slash::before {
+ content: "\f4e2"; }
+
+.fa-battery-quarter::before {
+ content: "\f243"; }
+
+.fa-battery-2::before {
+ content: "\f243"; }
+
+.fa-radio::before {
+ content: "\f8d7"; }
+
+.fa-baby-carriage::before {
+ content: "\f77d"; }
+
+.fa-carriage-baby::before {
+ content: "\f77d"; }
+
+.fa-traffic-light::before {
+ content: "\f637"; }
+
+.fa-thermometer::before {
+ content: "\f491"; }
+
+.fa-vr-cardboard::before {
+ content: "\f729"; }
+
+.fa-hand-middle-finger::before {
+ content: "\f806"; }
+
+.fa-percent::before {
+ content: "\25"; }
+
+.fa-percentage::before {
+ content: "\25"; }
+
+.fa-truck-moving::before {
+ content: "\f4df"; }
+
+.fa-glass-water-droplet::before {
+ content: "\e4f5"; }
+
+.fa-display::before {
+ content: "\e163"; }
+
+.fa-face-smile::before {
+ content: "\f118"; }
+
+.fa-smile::before {
+ content: "\f118"; }
+
+.fa-thumbtack::before {
+ content: "\f08d"; }
+
+.fa-thumb-tack::before {
+ content: "\f08d"; }
+
+.fa-trophy::before {
+ content: "\f091"; }
+
+.fa-person-praying::before {
+ content: "\f683"; }
+
+.fa-pray::before {
+ content: "\f683"; }
+
+.fa-hammer::before {
+ content: "\f6e3"; }
+
+.fa-hand-peace::before {
+ content: "\f25b"; }
+
+.fa-rotate::before {
+ content: "\f2f1"; }
+
+.fa-sync-alt::before {
+ content: "\f2f1"; }
+
+.fa-spinner::before {
+ content: "\f110"; }
+
+.fa-robot::before {
+ content: "\f544"; }
+
+.fa-peace::before {
+ content: "\f67c"; }
+
+.fa-gears::before {
+ content: "\f085"; }
+
+.fa-cogs::before {
+ content: "\f085"; }
+
+.fa-warehouse::before {
+ content: "\f494"; }
+
+.fa-arrow-up-right-dots::before {
+ content: "\e4b7"; }
+
+.fa-splotch::before {
+ content: "\f5bc"; }
+
+.fa-face-grin-hearts::before {
+ content: "\f584"; }
+
+.fa-grin-hearts::before {
+ content: "\f584"; }
+
+.fa-dice-four::before {
+ content: "\f524"; }
+
+.fa-sim-card::before {
+ content: "\f7c4"; }
+
+.fa-transgender::before {
+ content: "\f225"; }
+
+.fa-transgender-alt::before {
+ content: "\f225"; }
+
+.fa-mercury::before {
+ content: "\f223"; }
+
+.fa-arrow-turn-down::before {
+ content: "\f149"; }
+
+.fa-level-down::before {
+ content: "\f149"; }
+
+.fa-person-falling-burst::before {
+ content: "\e547"; }
+
+.fa-award::before {
+ content: "\f559"; }
+
+.fa-ticket-simple::before {
+ content: "\f3ff"; }
+
+.fa-ticket-alt::before {
+ content: "\f3ff"; }
+
+.fa-building::before {
+ content: "\f1ad"; }
+
+.fa-angles-left::before {
+ content: "\f100"; }
+
+.fa-angle-double-left::before {
+ content: "\f100"; }
+
+.fa-qrcode::before {
+ content: "\f029"; }
+
+.fa-clock-rotate-left::before {
+ content: "\f1da"; }
+
+.fa-history::before {
+ content: "\f1da"; }
+
+.fa-face-grin-beam-sweat::before {
+ content: "\f583"; }
+
+.fa-grin-beam-sweat::before {
+ content: "\f583"; }
+
+.fa-file-export::before {
+ content: "\f56e"; }
+
+.fa-arrow-right-from-file::before {
+ content: "\f56e"; }
+
+.fa-shield::before {
+ content: "\f132"; }
+
+.fa-shield-blank::before {
+ content: "\f132"; }
+
+.fa-arrow-up-short-wide::before {
+ content: "\f885"; }
+
+.fa-sort-amount-up-alt::before {
+ content: "\f885"; }
+
+.fa-house-medical::before {
+ content: "\e3b2"; }
+
+.fa-golf-ball-tee::before {
+ content: "\f450"; }
+
+.fa-golf-ball::before {
+ content: "\f450"; }
+
+.fa-circle-chevron-left::before {
+ content: "\f137"; }
+
+.fa-chevron-circle-left::before {
+ content: "\f137"; }
+
+.fa-house-chimney-window::before {
+ content: "\e00d"; }
+
+.fa-pen-nib::before {
+ content: "\f5ad"; }
+
+.fa-tent-arrow-turn-left::before {
+ content: "\e580"; }
+
+.fa-tents::before {
+ content: "\e582"; }
+
+.fa-wand-magic::before {
+ content: "\f0d0"; }
+
+.fa-magic::before {
+ content: "\f0d0"; }
+
+.fa-dog::before {
+ content: "\f6d3"; }
+
+.fa-carrot::before {
+ content: "\f787"; }
+
+.fa-moon::before {
+ content: "\f186"; }
+
+.fa-wine-glass-empty::before {
+ content: "\f5ce"; }
+
+.fa-wine-glass-alt::before {
+ content: "\f5ce"; }
+
+.fa-cheese::before {
+ content: "\f7ef"; }
+
+.fa-yin-yang::before {
+ content: "\f6ad"; }
+
+.fa-music::before {
+ content: "\f001"; }
+
+.fa-code-commit::before {
+ content: "\f386"; }
+
+.fa-temperature-low::before {
+ content: "\f76b"; }
+
+.fa-person-biking::before {
+ content: "\f84a"; }
+
+.fa-biking::before {
+ content: "\f84a"; }
+
+.fa-broom::before {
+ content: "\f51a"; }
+
+.fa-shield-heart::before {
+ content: "\e574"; }
+
+.fa-gopuram::before {
+ content: "\f664"; }
+
+.fa-earth-oceania::before {
+ content: "\e47b"; }
+
+.fa-globe-oceania::before {
+ content: "\e47b"; }
+
+.fa-square-xmark::before {
+ content: "\f2d3"; }
+
+.fa-times-square::before {
+ content: "\f2d3"; }
+
+.fa-xmark-square::before {
+ content: "\f2d3"; }
+
+.fa-hashtag::before {
+ content: "\23"; }
+
+.fa-up-right-and-down-left-from-center::before {
+ content: "\f424"; }
+
+.fa-expand-alt::before {
+ content: "\f424"; }
+
+.fa-oil-can::before {
+ content: "\f613"; }
+
+.fa-t::before {
+ content: "\54"; }
+
+.fa-hippo::before {
+ content: "\f6ed"; }
+
+.fa-chart-column::before {
+ content: "\e0e3"; }
+
+.fa-infinity::before {
+ content: "\f534"; }
+
+.fa-vial-circle-check::before {
+ content: "\e596"; }
+
+.fa-person-arrow-down-to-line::before {
+ content: "\e538"; }
+
+.fa-voicemail::before {
+ content: "\f897"; }
+
+.fa-fan::before {
+ content: "\f863"; }
+
+.fa-person-walking-luggage::before {
+ content: "\e554"; }
+
+.fa-up-down::before {
+ content: "\f338"; }
+
+.fa-arrows-alt-v::before {
+ content: "\f338"; }
+
+.fa-cloud-moon-rain::before {
+ content: "\f73c"; }
+
+.fa-calendar::before {
+ content: "\f133"; }
+
+.fa-trailer::before {
+ content: "\e041"; }
+
+.fa-bahai::before {
+ content: "\f666"; }
+
+.fa-haykal::before {
+ content: "\f666"; }
+
+.fa-sd-card::before {
+ content: "\f7c2"; }
+
+.fa-dragon::before {
+ content: "\f6d5"; }
+
+.fa-shoe-prints::before {
+ content: "\f54b"; }
+
+.fa-circle-plus::before {
+ content: "\f055"; }
+
+.fa-plus-circle::before {
+ content: "\f055"; }
+
+.fa-face-grin-tongue-wink::before {
+ content: "\f58b"; }
+
+.fa-grin-tongue-wink::before {
+ content: "\f58b"; }
+
+.fa-hand-holding::before {
+ content: "\f4bd"; }
+
+.fa-plug-circle-exclamation::before {
+ content: "\e55d"; }
+
+.fa-link-slash::before {
+ content: "\f127"; }
+
+.fa-chain-broken::before {
+ content: "\f127"; }
+
+.fa-chain-slash::before {
+ content: "\f127"; }
+
+.fa-unlink::before {
+ content: "\f127"; }
+
+.fa-clone::before {
+ content: "\f24d"; }
+
+.fa-person-walking-arrow-loop-left::before {
+ content: "\e551"; }
+
+.fa-arrow-up-z-a::before {
+ content: "\f882"; }
+
+.fa-sort-alpha-up-alt::before {
+ content: "\f882"; }
+
+.fa-fire-flame-curved::before {
+ content: "\f7e4"; }
+
+.fa-fire-alt::before {
+ content: "\f7e4"; }
+
+.fa-tornado::before {
+ content: "\f76f"; }
+
+.fa-file-circle-plus::before {
+ content: "\e494"; }
+
+.fa-book-quran::before {
+ content: "\f687"; }
+
+.fa-quran::before {
+ content: "\f687"; }
+
+.fa-anchor::before {
+ content: "\f13d"; }
+
+.fa-border-all::before {
+ content: "\f84c"; }
+
+.fa-face-angry::before {
+ content: "\f556"; }
+
+.fa-angry::before {
+ content: "\f556"; }
+
+.fa-cookie-bite::before {
+ content: "\f564"; }
+
+.fa-arrow-trend-down::before {
+ content: "\e097"; }
+
+.fa-rss::before {
+ content: "\f09e"; }
+
+.fa-feed::before {
+ content: "\f09e"; }
+
+.fa-draw-polygon::before {
+ content: "\f5ee"; }
+
+.fa-scale-balanced::before {
+ content: "\f24e"; }
+
+.fa-balance-scale::before {
+ content: "\f24e"; }
+
+.fa-gauge-simple-high::before {
+ content: "\f62a"; }
+
+.fa-tachometer::before {
+ content: "\f62a"; }
+
+.fa-tachometer-fast::before {
+ content: "\f62a"; }
+
+.fa-shower::before {
+ content: "\f2cc"; }
+
+.fa-desktop::before {
+ content: "\f390"; }
+
+.fa-desktop-alt::before {
+ content: "\f390"; }
+
+.fa-m::before {
+ content: "\4d"; }
+
+.fa-table-list::before {
+ content: "\f00b"; }
+
+.fa-th-list::before {
+ content: "\f00b"; }
+
+.fa-comment-sms::before {
+ content: "\f7cd"; }
+
+.fa-sms::before {
+ content: "\f7cd"; }
+
+.fa-book::before {
+ content: "\f02d"; }
+
+.fa-user-plus::before {
+ content: "\f234"; }
+
+.fa-check::before {
+ content: "\f00c"; }
+
+.fa-battery-three-quarters::before {
+ content: "\f241"; }
+
+.fa-battery-4::before {
+ content: "\f241"; }
+
+.fa-house-circle-check::before {
+ content: "\e509"; }
+
+.fa-angle-left::before {
+ content: "\f104"; }
+
+.fa-diagram-successor::before {
+ content: "\e47a"; }
+
+.fa-truck-arrow-right::before {
+ content: "\e58b"; }
+
+.fa-arrows-split-up-and-left::before {
+ content: "\e4bc"; }
+
+.fa-hand-fist::before {
+ content: "\f6de"; }
+
+.fa-fist-raised::before {
+ content: "\f6de"; }
+
+.fa-cloud-moon::before {
+ content: "\f6c3"; }
+
+.fa-briefcase::before {
+ content: "\f0b1"; }
+
+.fa-person-falling::before {
+ content: "\e546"; }
+
+.fa-image-portrait::before {
+ content: "\f3e0"; }
+
+.fa-portrait::before {
+ content: "\f3e0"; }
+
+.fa-user-tag::before {
+ content: "\f507"; }
+
+.fa-rug::before {
+ content: "\e569"; }
+
+.fa-earth-europe::before {
+ content: "\f7a2"; }
+
+.fa-globe-europe::before {
+ content: "\f7a2"; }
+
+.fa-cart-flatbed-suitcase::before {
+ content: "\f59d"; }
+
+.fa-luggage-cart::before {
+ content: "\f59d"; }
+
+.fa-rectangle-xmark::before {
+ content: "\f410"; }
+
+.fa-rectangle-times::before {
+ content: "\f410"; }
+
+.fa-times-rectangle::before {
+ content: "\f410"; }
+
+.fa-window-close::before {
+ content: "\f410"; }
+
+.fa-baht-sign::before {
+ content: "\e0ac"; }
+
+.fa-book-open::before {
+ content: "\f518"; }
+
+.fa-book-journal-whills::before {
+ content: "\f66a"; }
+
+.fa-journal-whills::before {
+ content: "\f66a"; }
+
+.fa-handcuffs::before {
+ content: "\e4f8"; }
+
+.fa-triangle-exclamation::before {
+ content: "\f071"; }
+
+.fa-exclamation-triangle::before {
+ content: "\f071"; }
+
+.fa-warning::before {
+ content: "\f071"; }
+
+.fa-database::before {
+ content: "\f1c0"; }
+
+.fa-share::before {
+ content: "\f064"; }
+
+.fa-arrow-turn-right::before {
+ content: "\f064"; }
+
+.fa-mail-forward::before {
+ content: "\f064"; }
+
+.fa-bottle-droplet::before {
+ content: "\e4c4"; }
+
+.fa-mask-face::before {
+ content: "\e1d7"; }
+
+.fa-hill-rockslide::before {
+ content: "\e508"; }
+
+.fa-right-left::before {
+ content: "\f362"; }
+
+.fa-exchange-alt::before {
+ content: "\f362"; }
+
+.fa-paper-plane::before {
+ content: "\f1d8"; }
+
+.fa-road-circle-exclamation::before {
+ content: "\e565"; }
+
+.fa-dungeon::before {
+ content: "\f6d9"; }
+
+.fa-align-right::before {
+ content: "\f038"; }
+
+.fa-money-bill-1-wave::before {
+ content: "\f53b"; }
+
+.fa-money-bill-wave-alt::before {
+ content: "\f53b"; }
+
+.fa-life-ring::before {
+ content: "\f1cd"; }
+
+.fa-hands::before {
+ content: "\f2a7"; }
+
+.fa-sign-language::before {
+ content: "\f2a7"; }
+
+.fa-signing::before {
+ content: "\f2a7"; }
+
+.fa-calendar-day::before {
+ content: "\f783"; }
+
+.fa-water-ladder::before {
+ content: "\f5c5"; }
+
+.fa-ladder-water::before {
+ content: "\f5c5"; }
+
+.fa-swimming-pool::before {
+ content: "\f5c5"; }
+
+.fa-arrows-up-down::before {
+ content: "\f07d"; }
+
+.fa-arrows-v::before {
+ content: "\f07d"; }
+
+.fa-face-grimace::before {
+ content: "\f57f"; }
+
+.fa-grimace::before {
+ content: "\f57f"; }
+
+.fa-wheelchair-move::before {
+ content: "\e2ce"; }
+
+.fa-wheelchair-alt::before {
+ content: "\e2ce"; }
+
+.fa-turn-down::before {
+ content: "\f3be"; }
+
+.fa-level-down-alt::before {
+ content: "\f3be"; }
+
+.fa-person-walking-arrow-right::before {
+ content: "\e552"; }
+
+.fa-square-envelope::before {
+ content: "\f199"; }
+
+.fa-envelope-square::before {
+ content: "\f199"; }
+
+.fa-dice::before {
+ content: "\f522"; }
+
+.fa-bowling-ball::before {
+ content: "\f436"; }
+
+.fa-brain::before {
+ content: "\f5dc"; }
+
+.fa-bandage::before {
+ content: "\f462"; }
+
+.fa-band-aid::before {
+ content: "\f462"; }
+
+.fa-calendar-minus::before {
+ content: "\f272"; }
+
+.fa-circle-xmark::before {
+ content: "\f057"; }
+
+.fa-times-circle::before {
+ content: "\f057"; }
+
+.fa-xmark-circle::before {
+ content: "\f057"; }
+
+.fa-gifts::before {
+ content: "\f79c"; }
+
+.fa-hotel::before {
+ content: "\f594"; }
+
+.fa-earth-asia::before {
+ content: "\f57e"; }
+
+.fa-globe-asia::before {
+ content: "\f57e"; }
+
+.fa-id-card-clip::before {
+ content: "\f47f"; }
+
+.fa-id-card-alt::before {
+ content: "\f47f"; }
+
+.fa-magnifying-glass-plus::before {
+ content: "\f00e"; }
+
+.fa-search-plus::before {
+ content: "\f00e"; }
+
+.fa-thumbs-up::before {
+ content: "\f164"; }
+
+.fa-user-clock::before {
+ content: "\f4fd"; }
+
+.fa-hand-dots::before {
+ content: "\f461"; }
+
+.fa-allergies::before {
+ content: "\f461"; }
+
+.fa-file-invoice::before {
+ content: "\f570"; }
+
+.fa-window-minimize::before {
+ content: "\f2d1"; }
+
+.fa-mug-saucer::before {
+ content: "\f0f4"; }
+
+.fa-coffee::before {
+ content: "\f0f4"; }
+
+.fa-brush::before {
+ content: "\f55d"; }
+
+.fa-mask::before {
+ content: "\f6fa"; }
+
+.fa-magnifying-glass-minus::before {
+ content: "\f010"; }
+
+.fa-search-minus::before {
+ content: "\f010"; }
+
+.fa-ruler-vertical::before {
+ content: "\f548"; }
+
+.fa-user-large::before {
+ content: "\f406"; }
+
+.fa-user-alt::before {
+ content: "\f406"; }
+
+.fa-train-tram::before {
+ content: "\e5b4"; }
+
+.fa-user-nurse::before {
+ content: "\f82f"; }
+
+.fa-syringe::before {
+ content: "\f48e"; }
+
+.fa-cloud-sun::before {
+ content: "\f6c4"; }
+
+.fa-stopwatch-20::before {
+ content: "\e06f"; }
+
+.fa-square-full::before {
+ content: "\f45c"; }
+
+.fa-magnet::before {
+ content: "\f076"; }
+
+.fa-jar::before {
+ content: "\e516"; }
+
+.fa-note-sticky::before {
+ content: "\f249"; }
+
+.fa-sticky-note::before {
+ content: "\f249"; }
+
+.fa-bug-slash::before {
+ content: "\e490"; }
+
+.fa-arrow-up-from-water-pump::before {
+ content: "\e4b6"; }
+
+.fa-bone::before {
+ content: "\f5d7"; }
+
+.fa-user-injured::before {
+ content: "\f728"; }
+
+.fa-face-sad-tear::before {
+ content: "\f5b4"; }
+
+.fa-sad-tear::before {
+ content: "\f5b4"; }
+
+.fa-plane::before {
+ content: "\f072"; }
+
+.fa-tent-arrows-down::before {
+ content: "\e581"; }
+
+.fa-exclamation::before {
+ content: "\21"; }
+
+.fa-arrows-spin::before {
+ content: "\e4bb"; }
+
+.fa-print::before {
+ content: "\f02f"; }
+
+.fa-turkish-lira-sign::before {
+ content: "\e2bb"; }
+
+.fa-try::before {
+ content: "\e2bb"; }
+
+.fa-turkish-lira::before {
+ content: "\e2bb"; }
+
+.fa-dollar-sign::before {
+ content: "\24"; }
+
+.fa-dollar::before {
+ content: "\24"; }
+
+.fa-usd::before {
+ content: "\24"; }
+
+.fa-x::before {
+ content: "\58"; }
+
+.fa-magnifying-glass-dollar::before {
+ content: "\f688"; }
+
+.fa-search-dollar::before {
+ content: "\f688"; }
+
+.fa-users-gear::before {
+ content: "\f509"; }
+
+.fa-users-cog::before {
+ content: "\f509"; }
+
+.fa-person-military-pointing::before {
+ content: "\e54a"; }
+
+.fa-building-columns::before {
+ content: "\f19c"; }
+
+.fa-bank::before {
+ content: "\f19c"; }
+
+.fa-institution::before {
+ content: "\f19c"; }
+
+.fa-museum::before {
+ content: "\f19c"; }
+
+.fa-university::before {
+ content: "\f19c"; }
+
+.fa-umbrella::before {
+ content: "\f0e9"; }
+
+.fa-trowel::before {
+ content: "\e589"; }
+
+.fa-d::before {
+ content: "\44"; }
+
+.fa-stapler::before {
+ content: "\e5af"; }
+
+.fa-masks-theater::before {
+ content: "\f630"; }
+
+.fa-theater-masks::before {
+ content: "\f630"; }
+
+.fa-kip-sign::before {
+ content: "\e1c4"; }
+
+.fa-hand-point-left::before {
+ content: "\f0a5"; }
+
+.fa-handshake-simple::before {
+ content: "\f4c6"; }
+
+.fa-handshake-alt::before {
+ content: "\f4c6"; }
+
+.fa-jet-fighter::before {
+ content: "\f0fb"; }
+
+.fa-fighter-jet::before {
+ content: "\f0fb"; }
+
+.fa-square-share-nodes::before {
+ content: "\f1e1"; }
+
+.fa-share-alt-square::before {
+ content: "\f1e1"; }
+
+.fa-barcode::before {
+ content: "\f02a"; }
+
+.fa-plus-minus::before {
+ content: "\e43c"; }
+
+.fa-video::before {
+ content: "\f03d"; }
+
+.fa-video-camera::before {
+ content: "\f03d"; }
+
+.fa-graduation-cap::before {
+ content: "\f19d"; }
+
+.fa-mortar-board::before {
+ content: "\f19d"; }
+
+.fa-hand-holding-medical::before {
+ content: "\e05c"; }
+
+.fa-person-circle-check::before {
+ content: "\e53e"; }
+
+.fa-turn-up::before {
+ content: "\f3bf"; }
+
+.fa-level-up-alt::before {
+ content: "\f3bf"; }
+
+.sr-only,
+.fa-sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0; }
+
+.sr-only-focusable:not(:focus),
+.fa-sr-only-focusable:not(:focus) {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0; }
+:root, :host {
+ --fa-style-family-brands: 'Font Awesome 6 Brands';
+ --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
+
+@font-face {
+ font-family: 'Font Awesome 6 Brands';
+ font-style: normal;
+ font-weight: 400;
+ font-display: block;
+ src: url("../fonts/font-awesome/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
+
+.fab,
+.fa-brands {
+ font-weight: 400; }
+
+.fa-monero:before {
+ content: "\f3d0"; }
+
+.fa-hooli:before {
+ content: "\f427"; }
+
+.fa-yelp:before {
+ content: "\f1e9"; }
+
+.fa-cc-visa:before {
+ content: "\f1f0"; }
+
+.fa-lastfm:before {
+ content: "\f202"; }
+
+.fa-shopware:before {
+ content: "\f5b5"; }
+
+.fa-creative-commons-nc:before {
+ content: "\f4e8"; }
+
+.fa-aws:before {
+ content: "\f375"; }
+
+.fa-redhat:before {
+ content: "\f7bc"; }
+
+.fa-yoast:before {
+ content: "\f2b1"; }
+
+.fa-cloudflare:before {
+ content: "\e07d"; }
+
+.fa-ups:before {
+ content: "\f7e0"; }
+
+.fa-wpexplorer:before {
+ content: "\f2de"; }
+
+.fa-dyalog:before {
+ content: "\f399"; }
+
+.fa-bity:before {
+ content: "\f37a"; }
+
+.fa-stackpath:before {
+ content: "\f842"; }
+
+.fa-buysellads:before {
+ content: "\f20d"; }
+
+.fa-first-order:before {
+ content: "\f2b0"; }
+
+.fa-modx:before {
+ content: "\f285"; }
+
+.fa-guilded:before {
+ content: "\e07e"; }
+
+.fa-vnv:before {
+ content: "\f40b"; }
+
+.fa-square-js:before {
+ content: "\f3b9"; }
+
+.fa-js-square:before {
+ content: "\f3b9"; }
+
+.fa-microsoft:before {
+ content: "\f3ca"; }
+
+.fa-qq:before {
+ content: "\f1d6"; }
+
+.fa-orcid:before {
+ content: "\f8d2"; }
+
+.fa-java:before {
+ content: "\f4e4"; }
+
+.fa-invision:before {
+ content: "\f7b0"; }
+
+.fa-creative-commons-pd-alt:before {
+ content: "\f4ed"; }
+
+.fa-centercode:before {
+ content: "\f380"; }
+
+.fa-glide-g:before {
+ content: "\f2a6"; }
+
+.fa-drupal:before {
+ content: "\f1a9"; }
+
+.fa-hire-a-helper:before {
+ content: "\f3b0"; }
+
+.fa-creative-commons-by:before {
+ content: "\f4e7"; }
+
+.fa-unity:before {
+ content: "\e049"; }
+
+.fa-whmcs:before {
+ content: "\f40d"; }
+
+.fa-rocketchat:before {
+ content: "\f3e8"; }
+
+.fa-vk:before {
+ content: "\f189"; }
+
+.fa-untappd:before {
+ content: "\f405"; }
+
+.fa-mailchimp:before {
+ content: "\f59e"; }
+
+.fa-css3-alt:before {
+ content: "\f38b"; }
+
+.fa-square-reddit:before {
+ content: "\f1a2"; }
+
+.fa-reddit-square:before {
+ content: "\f1a2"; }
+
+.fa-vimeo-v:before {
+ content: "\f27d"; }
+
+.fa-contao:before {
+ content: "\f26d"; }
+
+.fa-square-font-awesome:before {
+ content: "\e5ad"; }
+
+.fa-deskpro:before {
+ content: "\f38f"; }
+
+.fa-sistrix:before {
+ content: "\f3ee"; }
+
+.fa-square-instagram:before {
+ content: "\e055"; }
+
+.fa-instagram-square:before {
+ content: "\e055"; }
+
+.fa-battle-net:before {
+ content: "\f835"; }
+
+.fa-the-red-yeti:before {
+ content: "\f69d"; }
+
+.fa-square-hacker-news:before {
+ content: "\f3af"; }
+
+.fa-hacker-news-square:before {
+ content: "\f3af"; }
+
+.fa-edge:before {
+ content: "\f282"; }
+
+.fa-napster:before {
+ content: "\f3d2"; }
+
+.fa-square-snapchat:before {
+ content: "\f2ad"; }
+
+.fa-snapchat-square:before {
+ content: "\f2ad"; }
+
+.fa-google-plus-g:before {
+ content: "\f0d5"; }
+
+.fa-artstation:before {
+ content: "\f77a"; }
+
+.fa-markdown:before {
+ content: "\f60f"; }
+
+.fa-sourcetree:before {
+ content: "\f7d3"; }
+
+.fa-google-plus:before {
+ content: "\f2b3"; }
+
+.fa-diaspora:before {
+ content: "\f791"; }
+
+.fa-foursquare:before {
+ content: "\f180"; }
+
+.fa-stack-overflow:before {
+ content: "\f16c"; }
+
+.fa-github-alt:before {
+ content: "\f113"; }
+
+.fa-phoenix-squadron:before {
+ content: "\f511"; }
+
+.fa-pagelines:before {
+ content: "\f18c"; }
+
+.fa-algolia:before {
+ content: "\f36c"; }
+
+.fa-red-river:before {
+ content: "\f3e3"; }
+
+.fa-creative-commons-sa:before {
+ content: "\f4ef"; }
+
+.fa-safari:before {
+ content: "\f267"; }
+
+.fa-google:before {
+ content: "\f1a0"; }
+
+.fa-square-font-awesome-stroke:before {
+ content: "\f35c"; }
+
+.fa-font-awesome-alt:before {
+ content: "\f35c"; }
+
+.fa-atlassian:before {
+ content: "\f77b"; }
+
+.fa-linkedin-in:before {
+ content: "\f0e1"; }
+
+.fa-digital-ocean:before {
+ content: "\f391"; }
+
+.fa-nimblr:before {
+ content: "\f5a8"; }
+
+.fa-chromecast:before {
+ content: "\f838"; }
+
+.fa-evernote:before {
+ content: "\f839"; }
+
+.fa-hacker-news:before {
+ content: "\f1d4"; }
+
+.fa-creative-commons-sampling:before {
+ content: "\f4f0"; }
+
+.fa-adversal:before {
+ content: "\f36a"; }
+
+.fa-creative-commons:before {
+ content: "\f25e"; }
+
+.fa-watchman-monitoring:before {
+ content: "\e087"; }
+
+.fa-fonticons:before {
+ content: "\f280"; }
+
+.fa-weixin:before {
+ content: "\f1d7"; }
+
+.fa-shirtsinbulk:before {
+ content: "\f214"; }
+
+.fa-codepen:before {
+ content: "\f1cb"; }
+
+.fa-git-alt:before {
+ content: "\f841"; }
+
+.fa-lyft:before {
+ content: "\f3c3"; }
+
+.fa-rev:before {
+ content: "\f5b2"; }
+
+.fa-windows:before {
+ content: "\f17a"; }
+
+.fa-wizards-of-the-coast:before {
+ content: "\f730"; }
+
+.fa-square-viadeo:before {
+ content: "\f2aa"; }
+
+.fa-viadeo-square:before {
+ content: "\f2aa"; }
+
+.fa-meetup:before {
+ content: "\f2e0"; }
+
+.fa-centos:before {
+ content: "\f789"; }
+
+.fa-adn:before {
+ content: "\f170"; }
+
+.fa-cloudsmith:before {
+ content: "\f384"; }
+
+.fa-pied-piper-alt:before {
+ content: "\f1a8"; }
+
+.fa-square-dribbble:before {
+ content: "\f397"; }
+
+.fa-dribbble-square:before {
+ content: "\f397"; }
+
+.fa-codiepie:before {
+ content: "\f284"; }
+
+.fa-node:before {
+ content: "\f419"; }
+
+.fa-mix:before {
+ content: "\f3cb"; }
+
+.fa-steam:before {
+ content: "\f1b6"; }
+
+.fa-cc-apple-pay:before {
+ content: "\f416"; }
+
+.fa-scribd:before {
+ content: "\f28a"; }
+
+.fa-openid:before {
+ content: "\f19b"; }
+
+.fa-instalod:before {
+ content: "\e081"; }
+
+.fa-expeditedssl:before {
+ content: "\f23e"; }
+
+.fa-sellcast:before {
+ content: "\f2da"; }
+
+.fa-square-twitter:before {
+ content: "\f081"; }
+
+.fa-twitter-square:before {
+ content: "\f081"; }
+
+.fa-r-project:before {
+ content: "\f4f7"; }
+
+.fa-delicious:before {
+ content: "\f1a5"; }
+
+.fa-freebsd:before {
+ content: "\f3a4"; }
+
+.fa-vuejs:before {
+ content: "\f41f"; }
+
+.fa-accusoft:before {
+ content: "\f369"; }
+
+.fa-ioxhost:before {
+ content: "\f208"; }
+
+.fa-fonticons-fi:before {
+ content: "\f3a2"; }
+
+.fa-app-store:before {
+ content: "\f36f"; }
+
+.fa-cc-mastercard:before {
+ content: "\f1f1"; }
+
+.fa-itunes-note:before {
+ content: "\f3b5"; }
+
+.fa-golang:before {
+ content: "\e40f"; }
+
+.fa-kickstarter:before {
+ content: "\f3bb"; }
+
+.fa-grav:before {
+ content: "\f2d6"; }
+
+.fa-weibo:before {
+ content: "\f18a"; }
+
+.fa-uncharted:before {
+ content: "\e084"; }
+
+.fa-firstdraft:before {
+ content: "\f3a1"; }
+
+.fa-square-youtube:before {
+ content: "\f431"; }
+
+.fa-youtube-square:before {
+ content: "\f431"; }
+
+.fa-wikipedia-w:before {
+ content: "\f266"; }
+
+.fa-wpressr:before {
+ content: "\f3e4"; }
+
+.fa-rendact:before {
+ content: "\f3e4"; }
+
+.fa-angellist:before {
+ content: "\f209"; }
+
+.fa-galactic-republic:before {
+ content: "\f50c"; }
+
+.fa-nfc-directional:before {
+ content: "\e530"; }
+
+.fa-skype:before {
+ content: "\f17e"; }
+
+.fa-joget:before {
+ content: "\f3b7"; }
+
+.fa-fedora:before {
+ content: "\f798"; }
+
+.fa-stripe-s:before {
+ content: "\f42a"; }
+
+.fa-meta:before {
+ content: "\e49b"; }
+
+.fa-laravel:before {
+ content: "\f3bd"; }
+
+.fa-hotjar:before {
+ content: "\f3b1"; }
+
+.fa-bluetooth-b:before {
+ content: "\f294"; }
+
+.fa-sticker-mule:before {
+ content: "\f3f7"; }
+
+.fa-creative-commons-zero:before {
+ content: "\f4f3"; }
+
+.fa-hips:before {
+ content: "\f452"; }
+
+.fa-behance:before {
+ content: "\f1b4"; }
+
+.fa-reddit:before {
+ content: "\f1a1"; }
+
+.fa-discord:before {
+ content: "\f392"; }
+
+.fa-chrome:before {
+ content: "\f268"; }
+
+.fa-app-store-ios:before {
+ content: "\f370"; }
+
+.fa-cc-discover:before {
+ content: "\f1f2"; }
+
+.fa-wpbeginner:before {
+ content: "\f297"; }
+
+.fa-confluence:before {
+ content: "\f78d"; }
+
+.fa-mdb:before {
+ content: "\f8ca"; }
+
+.fa-dochub:before {
+ content: "\f394"; }
+
+.fa-accessible-icon:before {
+ content: "\f368"; }
+
+.fa-ebay:before {
+ content: "\f4f4"; }
+
+.fa-amazon:before {
+ content: "\f270"; }
+
+.fa-unsplash:before {
+ content: "\e07c"; }
+
+.fa-yarn:before {
+ content: "\f7e3"; }
+
+.fa-square-steam:before {
+ content: "\f1b7"; }
+
+.fa-steam-square:before {
+ content: "\f1b7"; }
+
+.fa-500px:before {
+ content: "\f26e"; }
+
+.fa-square-vimeo:before {
+ content: "\f194"; }
+
+.fa-vimeo-square:before {
+ content: "\f194"; }
+
+.fa-asymmetrik:before {
+ content: "\f372"; }
+
+.fa-font-awesome:before {
+ content: "\f2b4"; }
+
+.fa-font-awesome-flag:before {
+ content: "\f2b4"; }
+
+.fa-font-awesome-logo-full:before {
+ content: "\f2b4"; }
+
+.fa-gratipay:before {
+ content: "\f184"; }
+
+.fa-apple:before {
+ content: "\f179"; }
+
+.fa-hive:before {
+ content: "\e07f"; }
+
+.fa-gitkraken:before {
+ content: "\f3a6"; }
+
+.fa-keybase:before {
+ content: "\f4f5"; }
+
+.fa-apple-pay:before {
+ content: "\f415"; }
+
+.fa-padlet:before {
+ content: "\e4a0"; }
+
+.fa-amazon-pay:before {
+ content: "\f42c"; }
+
+.fa-square-github:before {
+ content: "\f092"; }
+
+.fa-github-square:before {
+ content: "\f092"; }
+
+.fa-stumbleupon:before {
+ content: "\f1a4"; }
+
+.fa-fedex:before {
+ content: "\f797"; }
+
+.fa-phoenix-framework:before {
+ content: "\f3dc"; }
+
+.fa-shopify:before {
+ content: "\e057"; }
+
+.fa-neos:before {
+ content: "\f612"; }
+
+.fa-hackerrank:before {
+ content: "\f5f7"; }
+
+.fa-researchgate:before {
+ content: "\f4f8"; }
+
+.fa-swift:before {
+ content: "\f8e1"; }
+
+.fa-angular:before {
+ content: "\f420"; }
+
+.fa-speakap:before {
+ content: "\f3f3"; }
+
+.fa-angrycreative:before {
+ content: "\f36e"; }
+
+.fa-y-combinator:before {
+ content: "\f23b"; }
+
+.fa-empire:before {
+ content: "\f1d1"; }
+
+.fa-envira:before {
+ content: "\f299"; }
+
+.fa-square-gitlab:before {
+ content: "\e5ae"; }
+
+.fa-gitlab-square:before {
+ content: "\e5ae"; }
+
+.fa-studiovinari:before {
+ content: "\f3f8"; }
+
+.fa-pied-piper:before {
+ content: "\f2ae"; }
+
+.fa-wordpress:before {
+ content: "\f19a"; }
+
+.fa-product-hunt:before {
+ content: "\f288"; }
+
+.fa-firefox:before {
+ content: "\f269"; }
+
+.fa-linode:before {
+ content: "\f2b8"; }
+
+.fa-goodreads:before {
+ content: "\f3a8"; }
+
+.fa-square-odnoklassniki:before {
+ content: "\f264"; }
+
+.fa-odnoklassniki-square:before {
+ content: "\f264"; }
+
+.fa-jsfiddle:before {
+ content: "\f1cc"; }
+
+.fa-sith:before {
+ content: "\f512"; }
+
+.fa-themeisle:before {
+ content: "\f2b2"; }
+
+.fa-page4:before {
+ content: "\f3d7"; }
+
+.fa-hashnode:before {
+ content: "\e499"; }
+
+.fa-react:before {
+ content: "\f41b"; }
+
+.fa-cc-paypal:before {
+ content: "\f1f4"; }
+
+.fa-squarespace:before {
+ content: "\f5be"; }
+
+.fa-cc-stripe:before {
+ content: "\f1f5"; }
+
+.fa-creative-commons-share:before {
+ content: "\f4f2"; }
+
+.fa-bitcoin:before {
+ content: "\f379"; }
+
+.fa-keycdn:before {
+ content: "\f3ba"; }
+
+.fa-opera:before {
+ content: "\f26a"; }
+
+.fa-itch-io:before {
+ content: "\f83a"; }
+
+.fa-umbraco:before {
+ content: "\f8e8"; }
+
+.fa-galactic-senate:before {
+ content: "\f50d"; }
+
+.fa-ubuntu:before {
+ content: "\f7df"; }
+
+.fa-draft2digital:before {
+ content: "\f396"; }
+
+.fa-stripe:before {
+ content: "\f429"; }
+
+.fa-houzz:before {
+ content: "\f27c"; }
+
+.fa-gg:before {
+ content: "\f260"; }
+
+.fa-dhl:before {
+ content: "\f790"; }
+
+.fa-square-pinterest:before {
+ content: "\f0d3"; }
+
+.fa-pinterest-square:before {
+ content: "\f0d3"; }
+
+.fa-xing:before {
+ content: "\f168"; }
+
+.fa-blackberry:before {
+ content: "\f37b"; }
+
+.fa-creative-commons-pd:before {
+ content: "\f4ec"; }
+
+.fa-playstation:before {
+ content: "\f3df"; }
+
+.fa-quinscape:before {
+ content: "\f459"; }
+
+.fa-less:before {
+ content: "\f41d"; }
+
+.fa-blogger-b:before {
+ content: "\f37d"; }
+
+.fa-opencart:before {
+ content: "\f23d"; }
+
+.fa-vine:before {
+ content: "\f1ca"; }
+
+.fa-paypal:before {
+ content: "\f1ed"; }
+
+.fa-gitlab:before {
+ content: "\f296"; }
+
+.fa-typo3:before {
+ content: "\f42b"; }
+
+.fa-reddit-alien:before {
+ content: "\f281"; }
+
+.fa-yahoo:before {
+ content: "\f19e"; }
+
+.fa-dailymotion:before {
+ content: "\e052"; }
+
+.fa-affiliatetheme:before {
+ content: "\f36b"; }
+
+.fa-pied-piper-pp:before {
+ content: "\f1a7"; }
+
+.fa-bootstrap:before {
+ content: "\f836"; }
+
+.fa-odnoklassniki:before {
+ content: "\f263"; }
+
+.fa-nfc-symbol:before {
+ content: "\e531"; }
+
+.fa-ethereum:before {
+ content: "\f42e"; }
+
+.fa-speaker-deck:before {
+ content: "\f83c"; }
+
+.fa-creative-commons-nc-eu:before {
+ content: "\f4e9"; }
+
+.fa-patreon:before {
+ content: "\f3d9"; }
+
+.fa-avianex:before {
+ content: "\f374"; }
+
+.fa-ello:before {
+ content: "\f5f1"; }
+
+.fa-gofore:before {
+ content: "\f3a7"; }
+
+.fa-bimobject:before {
+ content: "\f378"; }
+
+.fa-facebook-f:before {
+ content: "\f39e"; }
+
+.fa-square-google-plus:before {
+ content: "\f0d4"; }
+
+.fa-google-plus-square:before {
+ content: "\f0d4"; }
+
+.fa-mandalorian:before {
+ content: "\f50f"; }
+
+.fa-first-order-alt:before {
+ content: "\f50a"; }
+
+.fa-osi:before {
+ content: "\f41a"; }
+
+.fa-google-wallet:before {
+ content: "\f1ee"; }
+
+.fa-d-and-d-beyond:before {
+ content: "\f6ca"; }
+
+.fa-periscope:before {
+ content: "\f3da"; }
+
+.fa-fulcrum:before {
+ content: "\f50b"; }
+
+.fa-cloudscale:before {
+ content: "\f383"; }
+
+.fa-forumbee:before {
+ content: "\f211"; }
+
+.fa-mizuni:before {
+ content: "\f3cc"; }
+
+.fa-schlix:before {
+ content: "\f3ea"; }
+
+.fa-square-xing:before {
+ content: "\f169"; }
+
+.fa-xing-square:before {
+ content: "\f169"; }
+
+.fa-bandcamp:before {
+ content: "\f2d5"; }
+
+.fa-wpforms:before {
+ content: "\f298"; }
+
+.fa-cloudversify:before {
+ content: "\f385"; }
+
+.fa-usps:before {
+ content: "\f7e1"; }
+
+.fa-megaport:before {
+ content: "\f5a3"; }
+
+.fa-magento:before {
+ content: "\f3c4"; }
+
+.fa-spotify:before {
+ content: "\f1bc"; }
+
+.fa-optin-monster:before {
+ content: "\f23c"; }
+
+.fa-fly:before {
+ content: "\f417"; }
+
+.fa-aviato:before {
+ content: "\f421"; }
+
+.fa-itunes:before {
+ content: "\f3b4"; }
+
+.fa-cuttlefish:before {
+ content: "\f38c"; }
+
+.fa-blogger:before {
+ content: "\f37c"; }
+
+.fa-flickr:before {
+ content: "\f16e"; }
+
+.fa-viber:before {
+ content: "\f409"; }
+
+.fa-soundcloud:before {
+ content: "\f1be"; }
+
+.fa-digg:before {
+ content: "\f1a6"; }
+
+.fa-tencent-weibo:before {
+ content: "\f1d5"; }
+
+.fa-symfony:before {
+ content: "\f83d"; }
+
+.fa-maxcdn:before {
+ content: "\f136"; }
+
+.fa-etsy:before {
+ content: "\f2d7"; }
+
+.fa-facebook-messenger:before {
+ content: "\f39f"; }
+
+.fa-audible:before {
+ content: "\f373"; }
+
+.fa-think-peaks:before {
+ content: "\f731"; }
+
+.fa-bilibili:before {
+ content: "\e3d9"; }
+
+.fa-erlang:before {
+ content: "\f39d"; }
+
+.fa-cotton-bureau:before {
+ content: "\f89e"; }
+
+.fa-dashcube:before {
+ content: "\f210"; }
+
+.fa-42-group:before {
+ content: "\e080"; }
+
+.fa-innosoft:before {
+ content: "\e080"; }
+
+.fa-stack-exchange:before {
+ content: "\f18d"; }
+
+.fa-elementor:before {
+ content: "\f430"; }
+
+.fa-square-pied-piper:before {
+ content: "\e01e"; }
+
+.fa-pied-piper-square:before {
+ content: "\e01e"; }
+
+.fa-creative-commons-nd:before {
+ content: "\f4eb"; }
+
+.fa-palfed:before {
+ content: "\f3d8"; }
+
+.fa-superpowers:before {
+ content: "\f2dd"; }
+
+.fa-resolving:before {
+ content: "\f3e7"; }
+
+.fa-xbox:before {
+ content: "\f412"; }
+
+.fa-searchengin:before {
+ content: "\f3eb"; }
+
+.fa-tiktok:before {
+ content: "\e07b"; }
+
+.fa-square-facebook:before {
+ content: "\f082"; }
+
+.fa-facebook-square:before {
+ content: "\f082"; }
+
+.fa-renren:before {
+ content: "\f18b"; }
+
+.fa-linux:before {
+ content: "\f17c"; }
+
+.fa-glide:before {
+ content: "\f2a5"; }
+
+.fa-linkedin:before {
+ content: "\f08c"; }
+
+.fa-hubspot:before {
+ content: "\f3b2"; }
+
+.fa-deploydog:before {
+ content: "\f38e"; }
+
+.fa-twitch:before {
+ content: "\f1e8"; }
+
+.fa-ravelry:before {
+ content: "\f2d9"; }
+
+.fa-mixer:before {
+ content: "\e056"; }
+
+.fa-square-lastfm:before {
+ content: "\f203"; }
+
+.fa-lastfm-square:before {
+ content: "\f203"; }
+
+.fa-vimeo:before {
+ content: "\f40a"; }
+
+.fa-mendeley:before {
+ content: "\f7b3"; }
+
+.fa-uniregistry:before {
+ content: "\f404"; }
+
+.fa-figma:before {
+ content: "\f799"; }
+
+.fa-creative-commons-remix:before {
+ content: "\f4ee"; }
+
+.fa-cc-amazon-pay:before {
+ content: "\f42d"; }
+
+.fa-dropbox:before {
+ content: "\f16b"; }
+
+.fa-instagram:before {
+ content: "\f16d"; }
+
+.fa-cmplid:before {
+ content: "\e360"; }
+
+.fa-facebook:before {
+ content: "\f09a"; }
+
+.fa-gripfire:before {
+ content: "\f3ac"; }
+
+.fa-jedi-order:before {
+ content: "\f50e"; }
+
+.fa-uikit:before {
+ content: "\f403"; }
+
+.fa-fort-awesome-alt:before {
+ content: "\f3a3"; }
+
+.fa-phabricator:before {
+ content: "\f3db"; }
+
+.fa-ussunnah:before {
+ content: "\f407"; }
+
+.fa-earlybirds:before {
+ content: "\f39a"; }
+
+.fa-trade-federation:before {
+ content: "\f513"; }
+
+.fa-autoprefixer:before {
+ content: "\f41c"; }
+
+.fa-whatsapp:before {
+ content: "\f232"; }
+
+.fa-slideshare:before {
+ content: "\f1e7"; }
+
+.fa-google-play:before {
+ content: "\f3ab"; }
+
+.fa-viadeo:before {
+ content: "\f2a9"; }
+
+.fa-line:before {
+ content: "\f3c0"; }
+
+.fa-google-drive:before {
+ content: "\f3aa"; }
+
+.fa-servicestack:before {
+ content: "\f3ec"; }
+
+.fa-simplybuilt:before {
+ content: "\f215"; }
+
+.fa-bitbucket:before {
+ content: "\f171"; }
+
+.fa-imdb:before {
+ content: "\f2d8"; }
+
+.fa-deezer:before {
+ content: "\e077"; }
+
+.fa-raspberry-pi:before {
+ content: "\f7bb"; }
+
+.fa-jira:before {
+ content: "\f7b1"; }
+
+.fa-docker:before {
+ content: "\f395"; }
+
+.fa-screenpal:before {
+ content: "\e570"; }
+
+.fa-bluetooth:before {
+ content: "\f293"; }
+
+.fa-gitter:before {
+ content: "\f426"; }
+
+.fa-d-and-d:before {
+ content: "\f38d"; }
+
+.fa-microblog:before {
+ content: "\e01a"; }
+
+.fa-cc-diners-club:before {
+ content: "\f24c"; }
+
+.fa-gg-circle:before {
+ content: "\f261"; }
+
+.fa-pied-piper-hat:before {
+ content: "\f4e5"; }
+
+.fa-kickstarter-k:before {
+ content: "\f3bc"; }
+
+.fa-yandex:before {
+ content: "\f413"; }
+
+.fa-readme:before {
+ content: "\f4d5"; }
+
+.fa-html5:before {
+ content: "\f13b"; }
+
+.fa-sellsy:before {
+ content: "\f213"; }
+
+.fa-sass:before {
+ content: "\f41e"; }
+
+.fa-wirsindhandwerk:before {
+ content: "\e2d0"; }
+
+.fa-wsh:before {
+ content: "\e2d0"; }
+
+.fa-buromobelexperte:before {
+ content: "\f37f"; }
+
+.fa-salesforce:before {
+ content: "\f83b"; }
+
+.fa-octopus-deploy:before {
+ content: "\e082"; }
+
+.fa-medapps:before {
+ content: "\f3c6"; }
+
+.fa-ns8:before {
+ content: "\f3d5"; }
+
+.fa-pinterest-p:before {
+ content: "\f231"; }
+
+.fa-apper:before {
+ content: "\f371"; }
+
+.fa-fort-awesome:before {
+ content: "\f286"; }
+
+.fa-waze:before {
+ content: "\f83f"; }
+
+.fa-cc-jcb:before {
+ content: "\f24b"; }
+
+.fa-snapchat:before {
+ content: "\f2ab"; }
+
+.fa-snapchat-ghost:before {
+ content: "\f2ab"; }
+
+.fa-fantasy-flight-games:before {
+ content: "\f6dc"; }
+
+.fa-rust:before {
+ content: "\e07a"; }
+
+.fa-wix:before {
+ content: "\f5cf"; }
+
+.fa-square-behance:before {
+ content: "\f1b5"; }
+
+.fa-behance-square:before {
+ content: "\f1b5"; }
+
+.fa-supple:before {
+ content: "\f3f9"; }
+
+.fa-rebel:before {
+ content: "\f1d0"; }
+
+.fa-css3:before {
+ content: "\f13c"; }
+
+.fa-staylinked:before {
+ content: "\f3f5"; }
+
+.fa-kaggle:before {
+ content: "\f5fa"; }
+
+.fa-space-awesome:before {
+ content: "\e5ac"; }
+
+.fa-deviantart:before {
+ content: "\f1bd"; }
+
+.fa-cpanel:before {
+ content: "\f388"; }
+
+.fa-goodreads-g:before {
+ content: "\f3a9"; }
+
+.fa-square-git:before {
+ content: "\f1d2"; }
+
+.fa-git-square:before {
+ content: "\f1d2"; }
+
+.fa-square-tumblr:before {
+ content: "\f174"; }
+
+.fa-tumblr-square:before {
+ content: "\f174"; }
+
+.fa-trello:before {
+ content: "\f181"; }
+
+.fa-creative-commons-nc-jp:before {
+ content: "\f4ea"; }
+
+.fa-get-pocket:before {
+ content: "\f265"; }
+
+.fa-perbyte:before {
+ content: "\e083"; }
+
+.fa-grunt:before {
+ content: "\f3ad"; }
+
+.fa-weebly:before {
+ content: "\f5cc"; }
+
+.fa-connectdevelop:before {
+ content: "\f20e"; }
+
+.fa-leanpub:before {
+ content: "\f212"; }
+
+.fa-black-tie:before {
+ content: "\f27e"; }
+
+.fa-themeco:before {
+ content: "\f5c6"; }
+
+.fa-python:before {
+ content: "\f3e2"; }
+
+.fa-android:before {
+ content: "\f17b"; }
+
+.fa-bots:before {
+ content: "\e340"; }
+
+.fa-free-code-camp:before {
+ content: "\f2c5"; }
+
+.fa-hornbill:before {
+ content: "\f592"; }
+
+.fa-js:before {
+ content: "\f3b8"; }
+
+.fa-ideal:before {
+ content: "\e013"; }
+
+.fa-git:before {
+ content: "\f1d3"; }
+
+.fa-dev:before {
+ content: "\f6cc"; }
+
+.fa-sketch:before {
+ content: "\f7c6"; }
+
+.fa-yandex-international:before {
+ content: "\f414"; }
+
+.fa-cc-amex:before {
+ content: "\f1f3"; }
+
+.fa-uber:before {
+ content: "\f402"; }
+
+.fa-github:before {
+ content: "\f09b"; }
+
+.fa-php:before {
+ content: "\f457"; }
+
+.fa-alipay:before {
+ content: "\f642"; }
+
+.fa-youtube:before {
+ content: "\f167"; }
+
+.fa-skyatlas:before {
+ content: "\f216"; }
+
+.fa-firefox-browser:before {
+ content: "\e007"; }
+
+.fa-replyd:before {
+ content: "\f3e6"; }
+
+.fa-suse:before {
+ content: "\f7d6"; }
+
+.fa-jenkins:before {
+ content: "\f3b6"; }
+
+.fa-twitter:before {
+ content: "\f099"; }
+
+.fa-rockrms:before {
+ content: "\f3e9"; }
+
+.fa-pinterest:before {
+ content: "\f0d2"; }
+
+.fa-buffer:before {
+ content: "\f837"; }
+
+.fa-npm:before {
+ content: "\f3d4"; }
+
+.fa-yammer:before {
+ content: "\f840"; }
+
+.fa-btc:before {
+ content: "\f15a"; }
+
+.fa-dribbble:before {
+ content: "\f17d"; }
+
+.fa-stumbleupon-circle:before {
+ content: "\f1a3"; }
+
+.fa-internet-explorer:before {
+ content: "\f26b"; }
+
+.fa-telegram:before {
+ content: "\f2c6"; }
+
+.fa-telegram-plane:before {
+ content: "\f2c6"; }
+
+.fa-old-republic:before {
+ content: "\f510"; }
+
+.fa-square-whatsapp:before {
+ content: "\f40c"; }
+
+.fa-whatsapp-square:before {
+ content: "\f40c"; }
+
+.fa-node-js:before {
+ content: "\f3d3"; }
+
+.fa-edge-legacy:before {
+ content: "\e078"; }
+
+.fa-slack:before {
+ content: "\f198"; }
+
+.fa-slack-hash:before {
+ content: "\f198"; }
+
+.fa-medrt:before {
+ content: "\f3c8"; }
+
+.fa-usb:before {
+ content: "\f287"; }
+
+.fa-tumblr:before {
+ content: "\f173"; }
+
+.fa-vaadin:before {
+ content: "\f408"; }
+
+.fa-quora:before {
+ content: "\f2c4"; }
+
+.fa-reacteurope:before {
+ content: "\f75d"; }
+
+.fa-medium:before {
+ content: "\f23a"; }
+
+.fa-medium-m:before {
+ content: "\f23a"; }
+
+.fa-amilia:before {
+ content: "\f36d"; }
+
+.fa-mixcloud:before {
+ content: "\f289"; }
+
+.fa-flipboard:before {
+ content: "\f44d"; }
+
+.fa-viacoin:before {
+ content: "\f237"; }
+
+.fa-critical-role:before {
+ content: "\f6c9"; }
+
+.fa-sitrox:before {
+ content: "\e44a"; }
+
+.fa-discourse:before {
+ content: "\f393"; }
+
+.fa-joomla:before {
+ content: "\f1aa"; }
+
+.fa-mastodon:before {
+ content: "\f4f6"; }
+
+.fa-airbnb:before {
+ content: "\f834"; }
+
+.fa-wolf-pack-battalion:before {
+ content: "\f514"; }
+
+.fa-buy-n-large:before {
+ content: "\f8a6"; }
+
+.fa-gulp:before {
+ content: "\f3ae"; }
+
+.fa-creative-commons-sampling-plus:before {
+ content: "\f4f1"; }
+
+.fa-strava:before {
+ content: "\f428"; }
+
+.fa-ember:before {
+ content: "\f423"; }
+
+.fa-canadian-maple-leaf:before {
+ content: "\f785"; }
+
+.fa-teamspeak:before {
+ content: "\f4f9"; }
+
+.fa-pushed:before {
+ content: "\f3e1"; }
+
+.fa-wordpress-simple:before {
+ content: "\f411"; }
+
+.fa-nutritionix:before {
+ content: "\f3d6"; }
+
+.fa-wodu:before {
+ content: "\e088"; }
+
+.fa-google-pay:before {
+ content: "\e079"; }
+
+.fa-intercom:before {
+ content: "\f7af"; }
+
+.fa-zhihu:before {
+ content: "\f63f"; }
+
+.fa-korvue:before {
+ content: "\f42f"; }
+
+.fa-pix:before {
+ content: "\e43a"; }
+
+.fa-steam-symbol:before {
+ content: "\f3f6"; }
+:root, :host {
+ --fa-style-family-classic: 'Font Awesome 6 Free';
+ --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
+
+@font-face {
+ font-family: 'Font Awesome 6 Free';
+ font-style: normal;
+ font-weight: 400;
+ font-display: block;
+ src: url("../fonts/font-awesome/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
+
+.far,
+.fa-regular {
+ font-weight: 400; }
+:root, :host {
+ --fa-style-family-classic: 'Font Awesome 6 Free';
+ --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
+
+@font-face {
+ font-family: 'Font Awesome 6 Free';
+ font-style: normal;
+ font-weight: 900;
+ font-display: block;
+ src: url("../fonts/font-awesome/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
+
+.fas,
+.fa-solid {
+ font-weight: 900; }
+@font-face {
+ font-family: 'Font Awesome 5 Brands';
+ font-display: block;
+ font-weight: 400;
+ src: url("../fonts/font-awesome/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
+
+@font-face {
+ font-family: 'Font Awesome 5 Free';
+ font-display: block;
+ font-weight: 900;
+ src: url("../fonts/font-awesome/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
+
+@font-face {
+ font-family: 'Font Awesome 5 Free';
+ font-display: block;
+ font-weight: 400;
+ src: url("../fonts/font-awesome/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
+@font-face {
+ font-family: 'FontAwesome';
+ font-display: block;
+ src: url("../fonts/font-awesome/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
+
+@font-face {
+ font-family: 'FontAwesome';
+ font-display: block;
+ src: url("../fonts/font-awesome/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
+
+@font-face {
+ font-family: 'FontAwesome';
+ font-display: block;
+ src: url("../fonts/font-awesome/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
+ unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
+
+@font-face {
+ font-family: 'FontAwesome';
+ font-display: block;
+ src: url("../fonts/font-awesome/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
+ unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-youshe.css b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-youshe.css
new file mode 100644
index 0000000..76f803c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-youshe.css
@@ -0,0 +1,6 @@
+@font-face {
+ font-family: "YSHaoShenTi";
+ src: url('../fonts/youshe/YSHaoShenTi.ttf');
+ font-weight: normal;
+ font-style: normal;
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-zhanku.css b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-zhanku.css
new file mode 100644
index 0000000..2ff0e3c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/css/font-zhanku.css
@@ -0,0 +1,6 @@
+@font-face {
+ font-family: "ZKHY";
+ src: url('../fonts/zhanku/站酷庆科黄油体.ttf');
+ font-weight: normal;
+ font-style: normal;
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/favicon.ico b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/favicon.ico
new file mode 100644
index 0000000..728e5a1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/favicon.ico
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-brands-400.woff2 b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-brands-400.woff2
new file mode 100644
index 0000000..d801b51
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-brands-400.woff2
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-regular-400.woff2 b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-regular-400.woff2
new file mode 100644
index 0000000..d736e4b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-regular-400.woff2
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-solid-900.woff2 b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-solid-900.woff2
new file mode 100644
index 0000000..3516fdb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-solid-900.woff2
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-v4compatibility.woff2 b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-v4compatibility.woff2
new file mode 100644
index 0000000..28d46b1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/font-awesome/fa-v4compatibility.woff2
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/youshe/YSHaoShenTi.ttf b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/youshe/YSHaoShenTi.ttf
new file mode 100644
index 0000000..a67764a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/youshe/YSHaoShenTi.ttf
Binary files differ
diff --git "a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/zhanku/\347\253\231\351\205\267\345\272\206\347\247\221\351\273\204\346\262\271\344\275\223.ttf" "b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/zhanku/\347\253\231\351\205\267\345\272\206\347\247\221\351\273\204\346\262\271\344\275\223.ttf"
new file mode 100644
index 0000000..f8f46ee
--- /dev/null
+++ "b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/fonts/zhanku/\347\253\231\351\205\267\345\272\206\347\247\221\351\273\204\346\262\271\344\275\223.ttf"
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/i18n.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/i18n.js
new file mode 100644
index 0000000..c32a03d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/i18n.js
@@ -0,0 +1,116 @@
+import { createI18n } from "vue3-i18n";
+import Cookies from 'js-cookie'
+import { getRequest } from "../../../src/utils/axioshttp";
+
+let appDomain = WGURL.appDomain;
+
+function getDevelopmentLanguages() {
+ const LanguageSources =
+ import.meta.globEager(`./lang/*.json`, {
+ as: 'raw',
+ eager: true
+ })
+ let languagemessages = {};
+ Object.keys(LanguageSources).forEach(key => {
+ const reg = /.*lang\/(.*)\.(js?|jsx|json)/
+ const regMatch = key.match(reg)
+ if (!regMatch)
+ return
+
+ const langKey = regMatch[1] || ''
+ const suffix = regMatch[2] || ''
+ if (!langKey || !suffix)
+ return
+ languagemessages[langKey] = JSON.parse(LanguageSources[key]);
+ let languages = localStorage.getItem("languages") ? JSON.parse(localStorage.getItem("languages")) : []
+ languages.push({ key: langKey, value: langKey });
+ localStorage.setItem("languages", JSON.stringify(languages))
+ })
+ return languagemessages;
+}
+
+function getDefaultLanguageKey() {
+ let languagekey = 'zh_cn';
+
+ //根据浏览器设置语言
+ let defaultlanguage = Cookies.get("language", { domain: WGURL.cookieDomain });
+ if (!defaultlanguage) {
+ let language = (navigator.language || navigator.browserLanguage).toLowerCase();
+
+ switch (language) {
+ case "zh":
+ case "zh-cn":
+ Cookies.set("language", "zh_cn", { domain: WGURL.cookieDomain });
+ languagekey = 'zh_cn';
+ break;
+ case "ru":
+ case "ru-mo":
+ Cookies.set("language", "ru", { domain: WGURL.cookieDomain });
+ languagekey = 'ru';
+ break;
+ case "en":
+ case "en-us":
+ case "en-gb":
+ Cookies.set("language", "en_us", { domain: WGURL.cookieDomain });
+ languagekey = "en_us";
+ break;
+ case "ja":
+ case "ja-jp":
+ Cookies.set("language", "ja", { domain: WGURL.cookieDomain });
+ languagekey = 'ja';
+ break;
+ default:
+ Cookies.set("language", "en_us", { domain: WGURL.cookieDomain });
+ languagekey = "en_us";
+ break;
+ }
+ } else {
+ languagekey = defaultlanguage;
+ }
+
+ return languagekey;
+}
+
+function getLanguages(url) {
+ let languagekey = getDefaultLanguageKey();
+
+ getRequest(url).then((response) => {
+ let languages = localStorage.getItem("languages") ? JSON.parse(localStorage.getItem("languages")) : []
+ i18n.setLocale(languagekey);
+ i18n.messages[languagekey] = response.data;
+ let ex = languages.filter(e => e.key === languagekey);
+ if (ex === null && ex.length <= 0) {
+ languages.push({ key: languagekey, value: languagekey });
+ localStorage.setItem("languages", JSON.stringify(languages))
+ }
+ }).catch(error => {
+ console.error(error);
+ i18n.setLocale('en_us');
+ });
+}
+
+const localeData = {
+ legacy: false,
+ locale: getDefaultLanguageKey(),
+ messages: getDevelopmentLanguages(),
+}
+
+const i18n = createI18n(localeData);
+
+export async function setLanguage() {
+ let languagekey = getDefaultLanguageKey();
+
+ if (!
+ import.meta.env.DEV) {
+ const localLang = `${appDomain}assets/i18n/lang/${languagekey}.json`;
+ await getLanguages(localLang);
+ } else {
+ if (languagekey !== 'zh_cn' && languagekey !== 'en_us') {
+ i18n.setLocale('ru');
+ }
+ }
+
+ return i18n;
+}
+
+export default i18n;
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/en_us.json b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/en_us.json
new file mode 100644
index 0000000..3e0c336
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/en_us.json
@@ -0,0 +1,775 @@
+{
+ "title": "BWF Application",
+ "copyright": "Copyright © {name} www.farrriver.top 版权所有 | 津ICP备2021008314号-1 ",
+ "ServiceAgreement": "Service Agreement",
+ "PrivacyPolicy": "Privacy Policy",
+ "AgreementStatement": "Logging in implies that you have agreed.",
+ "menu": {
+ "Home": "Home",
+ "Profile": "Profile",
+ "SystemSettings": "System Settings",
+ "MenuList": "Menu Settings",
+ "MasterData": "Basic List",
+ "Monitor": "Monitor",
+ "Log": "Log",
+ "Config": "Config",
+ "AuditTrail": "Audit Trail",
+ "Notification": "Notification",
+ "MailSendLog": "Mail Log",
+ "Organization": "Organization",
+ "OrganizationClass": "Class List",
+ "OrganizationDepartment": "College List",
+ "OrganizationGrade": "Grade List",
+ "OrganizationGradeSubjectRelation": "Grade Subject Relation",
+ "OrganizationMajor": "Major List",
+ "OrganizationMaster": "University List",
+ "Question": "Question",
+ "QuestionCategory": "Question Category",
+ "QuestionMaster": "Question List",
+ "QuestionPaper": "Paper List",
+ "QuestionPaperQuestionList": "Question List",
+ "QuestionPaperCategory": "Paper Category",
+ "QuestionSubject": "Subject",
+ "QuestionSubjectKnowledgePoint": "Knowledge Point",
+ "VIP": "VIP",
+ "VIPMaster": "VIP List",
+ "VIPMasterWallet": "VIP Wallet",
+ "VIPCouponActive": "Active Coupon",
+ "VIPCouponHistory": "History Coupon",
+ "VIPDepositActivity": "VIP Deposit Activity",
+ "Order": "Order",
+ "ActiveOrder": "Active Order List",
+ "HistoryOrder": "History Order List",
+ "ActiveOrderDetail": "Active Order Detail",
+ "HistoryOrderDetail": "History Order Detail",
+ "OrderProduct": "Order Product",
+ "Product": "Product",
+ "ProductCategory": "Product Category",
+ "ProductMaster": "Product List",
+ "ProductBrand": "Product Brand",
+ "ProductSupplier": "Product Supplier",
+ "ProductAttribute": "Product Attribute",
+ "ProductAttributeKey": "Product Attribute Key",
+ "ProductAttributeValue": "Product Attribute Value",
+ "ProductSupplierProductRelation": "Supplier Product Relation"
+ },
+ "label": {
+ "CoverImage": "Cover Image",
+ "Supplier": "Supplier",
+ "Product": "Product",
+ "ProductList": "Product List",
+ "ProductAttribute": "Product Attribute",
+ "Logo": "Logo",
+ "FoundedYear": "Founded Year",
+ "CountryOfOrigin": "Country Of Origin",
+ "ProductModel": "Model",
+ "ProductFormation": "Formation",
+ "ProductImage": "Product Image",
+ "ProductName": "Product Name",
+ "ProductColor": "Product Color",
+ "ProductSize": "Product Size",
+ "SellPrice": "Sell Price (¥)",
+ "ProductCode": "Product Code",
+ "ProductType": "Product Type",
+ "Timesheet": "Timesheet",
+ "VIPInfo": "VIP Info",
+ "AccountBalancePay": "Balance",
+ "AliPay": "AliPay",
+ "WeChatPay": "WeChat Pay",
+ "BankPay": "Bank Pay",
+ "OrderNo": "No.",
+ "Language": "Language",
+ "Delivered": "Delivered",
+ "Received": "Received",
+ "Paid": "Paid",
+ "DiamondType": "Diamond Type",
+ "SilverMember": "Silver Member",
+ "GoldMember": "Gold Member",
+ "DiamondMember": "Diamond Type",
+ "ExclusiveMember": "Exclusive Member",
+ "idcard": "ID Card No.",
+ "City": "City",
+ "Province": "Province",
+ "Nickname": "Nickname",
+ "IssuingTime": "Issuing Time",
+ "UsageTime": "Usage Time",
+ "OrderTime": "Order Time",
+ "PayTime": "Pay Time",
+ "CommentTime": "Comment Time",
+ "ReceiveTime": "Receive Time",
+ "CompleteTime": "Complete Time",
+ "ActivityName": "Activity Name",
+ "VIPName": "VIP Name",
+ "VIPCode": "VIP Code",
+ "VIPPhone": "VIP Cellphone",
+ "VIPDiamondType": "VIP Diamond Type",
+ "Amount": "Amount(¥)",
+ "PayedMoney": "Payed Money(¥)",
+ "PaymentMethod": "Payment Method",
+ "DiscountMoney": "Discount Money(¥)",
+ "Discount": "Discount(¥)",
+ "DiscountRate": "Dis.Rate(%)",
+ "DistributionCondition": "Use Condition",
+ "ByDiscountRate": "By Rate",
+ "ByFullDiscount": "By Full Discount",
+ "ByVoucher": "By Voucher",
+ "Present": "Present(¥)",
+ "Wallet": "Wallet",
+ "Stem": "Stem",
+ "SequenceNo": "Sequence No.",
+ "Option": "Option",
+ "Answer": "Answer",
+ "Analysis": "Analysis",
+ "Score": "Score",
+ "FREE": "Free",
+ "VIP_FREE": "VIP Free",
+ "CHARGE": "Charge",
+ "University": "University",
+ "College": "College",
+ "Major": "Major",
+ "Grade": "Grade",
+ "Class": "Class",
+ "Subject": "Subject",
+ "Paper": "Paper",
+ "Question": "Question",
+ "QuestionPaperList": "Paper List",
+ "QuestionList": "Question List",
+ "KnowledgePoint": "Knowledge Point",
+ "Applications": "My Applications",
+ "Admin404": "404",
+ "IFCNavigation": "Quick Navigation",
+ "QuickNavigation": "Quick Navigation",
+ "MyTask": "Tasks",
+ "MyNotification": "Notifications",
+ "MyMeeting": "Meetings",
+ "To-dos": "To-dos",
+ "StartDatetime": "Start Datetime",
+ "EndDatetime": "End Datetime",
+ "TaskTitle": "Title",
+ "TaskSource": "Source",
+ "TaskSourceDepartment": "Source Department",
+ "TaskTarget": "Target",
+ "TaskTargetDepartment": "Target Department",
+ "PhaseName": "Phase Name",
+ "JobContent": "Job Content",
+ "DatetimeFrom": "Datetime From",
+ "DatetimeTo": "Datetime To",
+ "ProjectCode": "Project Code",
+ "BidderNo": "Bidder No.",
+ "BidderName": "Bidder Name",
+ "BiddingDate": "Bidding Date",
+ "CourseWare": "Course Ware",
+ "Objective": "Objective",
+ "Outline": "Outline",
+ "Deadline": "Deadline",
+ "PreparatoryKnowledge": "Preparatory Knowledge",
+ "ReferenceMaterial": "Reference Material",
+ "CoverPicture": "Cover Picture",
+ "TeacherName": "Teacher Name",
+ "TeacherTitle": "Teacher Title",
+ "CourseCategoryName": "Category Name",
+ "CourseCategoryCode": "Category Code",
+ "CourseName": "Course Name",
+ "CourseCode": "Course Code",
+ "BlogNo": "Blog No.",
+ "Content": "Content",
+ "PublisherName": "Publisher Name",
+ "PublishedDatetime": "Published Datetime",
+ "DRAFT": "Draft",
+ "REVIEWING": "Reviewing",
+ "PUBLISHED": "Published",
+ "REMOVED": "Removed",
+ "CANCELED": "Canceled",
+ "InvitationCode": "Invitation Code",
+ "SupervisorInvitationCode": "Supervisor Code",
+ "Setting": "Setting",
+ "Loading": "Loading...",
+ "Avatar": "Avatar",
+ "CreateTime": "Create Time",
+ "Remark": "Remark",
+ "Code": "Code",
+ "All": "All",
+ "Status": "Status",
+ "Search": "Search",
+ "Notification": "Notification",
+ "Category": "Category",
+ "Level": "Level",
+ "Key": "Key",
+ "Value": "Value",
+ "Tags": "Tags",
+ "Website": "Website",
+ "OwnerBy": "Owner By",
+ "Source": "Source",
+ "District": "District",
+ "Country": "Country",
+ "Image": "Image",
+ "ImagePicker": "Image Picker",
+ "ImageName": "Image Name",
+ "DisplayDataMode": "Data List Mode",
+ "DisplayCardMode": "Card Mode",
+ "AccessIp": "Access Ip",
+ "AccessDevice": "Access Device",
+ "AccessContent": "Access Content",
+ "AccessTime": "Access Time",
+ "RandomCode": "SMS Code",
+ "LoginByUsernamePassword": "With Password",
+ "LoginBySMSCode": "With SMS Code",
+ "ActiveUsage": "Active Usage",
+ "LatestMonthVisitsCount": "Latest Month Visits",
+ "LatestYearVisitsCount": "Latest Year Visits",
+ "LatestMonthEnquiryCount": "Latest Month Enquiry",
+ "LatestYearEnquiryCount": "Latest Year Enquiry",
+ "VisitsMonthTrendDataList": "Monthly Visits Trend",
+ "VisitsYearTrendDataList": "Year Visits Trend",
+ "EnquiryMonthTrendDataList": "Monthly Enquiry Trend",
+ "EnquiryYearTrendDataList": "Year Enquiry Trend",
+ "elevatorescalatorConfigurations": "Elevator/Escalator Configurations",
+ "DeviceTypeConfigRanking": "Device Type Config Ranking",
+ "ElevatorAnnualTrend": "Elevator Annual Visit Proportion",
+ "EscalatorAnnualTrend": "Escalator Annual Visit Proportion",
+ "YourEnquiry": "Your Enquiry",
+ "Description": "Description",
+ "AllUserCount": "All User Count",
+ "SystemCount": "System Count",
+ "AdministratorCount": "Administrator Count",
+ "GeneralUserCount": "General User Count",
+ "UserDistribution": "User Distribution",
+ "PermissionDistribution": "Permission Distribution",
+ "RoleDistribution": "Role Distribution",
+ "Birthday": "Birthday",
+ "SystemCode": "System Code",
+ "SystemName": "System Name",
+ "Profile": "User Profile",
+ "SSOLogin": "SSO Login",
+ "AutoSignIn": "Remember user",
+ "RememberPassword": "Remember Password",
+ "UserName": "User Name",
+ "Gender": "Gender",
+ "Man": "Man",
+ "Woman": "Woman",
+ "FirstName": "First Name",
+ "LastName": "Last Name",
+ "Age": "Age",
+ "RegisterTime": "Register Time",
+ "Address": "Address",
+ "Email": "E-mail",
+ "VerifyCode": "Verify Code",
+ "Password": "Password",
+ "NewPassword": "New Password",
+ "OriginalPassword": "Original Password",
+ "ConfirmPassword": "Confirm Password",
+ "Verify": "Verify",
+ "Account": "Account",
+ "SecurityVerification": "Security Verification",
+ "DateFrom": "Date From",
+ "DateTo": "Date To",
+ "User": "User",
+ "Role": "Role",
+ "RoleGroup": "Role Group",
+ "Permission": "Permission",
+ "PermissionGroup": "Permission Group",
+ "Index": "Index",
+ "Name": "Name",
+ "Parent": "Parent",
+ "Type": "Type",
+ "LinkUrl": "Link Url",
+ "ComponentPath": "Component Path",
+ "ComponentName": "Component Name",
+ "LanguageKey": "Language Key",
+ "Icon": "Icon",
+ "Button": "Button",
+ "Menu": "Menu",
+ "Page": "Page",
+ "Undefined": "Undefined",
+ "UploadFile": "Upload File",
+ "Component": "Component",
+ "Enabled": "Enabled",
+ "Disabled": "Disabled",
+ "Operation": "Operation",
+ "ProvinceName": "Province Name",
+ "BrandName": "Brand Name",
+ "Cellphone": "Cellphone",
+ "Telephone": "Telephone",
+ "CityName": "City Name",
+ "CarSeriesName": "Car Series Name",
+ "ConsultDateTime": "Consult Date Time",
+ "BasicInformation": "Basic Information",
+ "SystemInfo": "System Info",
+ "SystemConfirm": "System Confirm",
+ "TargetBaseUri": "Target Base Uri",
+ "PhotoAndFileAccess": "Photo And File Access",
+ "LanguageSetting": "Language Setting",
+ "SystemAndPerformance": "System And Performance",
+ "TrackingPrevention": "Tracking Prevention",
+ "GrantPermission": "Grant Permission",
+ "GrantedPermission": "Granted Permission",
+ "UngrantedPermission": "Un-granted Permission",
+ "GrantPermissionGroup": "Grant Permission Group",
+ "GrantedPermissionGroup": "Granted Group",
+ "UngrantedPermissionGroup": "Un-granted Group",
+ "UserDetail": "User Detail",
+ "AssignRole": "Assign Role",
+ "UngrantedRole": "Un-granted Role",
+ "GrantedRole": "Granted Role",
+ "Module": "Module",
+ "ActionType": "Action Type",
+ "ActionTime": "Action Time",
+ "ActionBy": "Action By",
+ "ActionIP": "Action IP",
+ "Message": "Message",
+ "BeforeTarget": "Before Target",
+ "AfterTarget": "After Target",
+ "JobCode": "Job Code",
+ "JobName": "Job Name",
+ "JobCategory": "Category",
+ "RecruiterNumber": "Recruiter Number",
+ "JobResponsibility": "Job Responsibility",
+ "JobRequirement": "Job Requirement",
+ "Organization": "Organization",
+ "WorkRegion": "Work Region",
+ "Location": "Location",
+ "ApplicationCode": "Application Code",
+ "AccessLevel": "Access Level",
+ "Engineer": "Engineer",
+ "SuperAdministrator": "Super Administrator",
+ "Administrator": "Administrator",
+ "Other": "Other",
+ "ValidDate": "Valid Date",
+ "ValidDateFrom": "Valid Date From",
+ "ValidDateTo": "Valid Date To",
+ "VALID": "VALID",
+ "LOCKED": "LOCKED",
+ "EXPIRED": "EXPIRED",
+ "totaluser": "Count Of Users",
+ "totalapplication": "Count Of Applications",
+ "totalrole": "Count Of Roles",
+ "totalpermissiongroup": "Count Of Perm. Group",
+ "totalpermission": "Count Of Permission",
+ "totaladministrator": "Count Of Administrator",
+ "userdistribution": "User Distribution",
+ "permissiondistribution": "Permission Distribution",
+ "roledistribution": "Role Distribution",
+ "usergrowthtrend": "User Growth Trend",
+ "applicationaccesstrend": "Application Usage",
+ "Skill": "Skill",
+ "ComputerLevel": "Computer Level",
+ "EnglishLevel": "English Level",
+ "DriverLicenseType": "Driver License Type",
+ "HouseholdType": "Household Type",
+ "HomeAddress": "Home Address",
+ "ResidenceAddress": "Residence Address",
+ "FertilityStatus": "Fertility Status",
+ "MaritalStatus": "Marital Status",
+ "Politics": "Politics",
+ "Nation": "Nation",
+ "NativePlace": "Native Place",
+ "IdCard": "ID Card No.",
+ "PreferredLanguages": "Preferred languages",
+ "Title": "Title",
+ "Department": "Department",
+ "Keywords": "Keywords",
+ "Publisher": "Publisher",
+ "PublishDateTime": "Publish DateTime",
+ "Context": "Context",
+ "Info": "Info",
+ "Warning": "Warning",
+ "Danger": "Danger",
+ "Fatal": "Fatal",
+ "Defined": "Defined",
+ "Pending": "Pending",
+ "Active": "Active",
+ "Delayed": "Delayed",
+ "Reviewing": "Reviewing",
+ "Bidding": "Bidding",
+ "SuccessBid": "Success Bid",
+ "FailedBid": "Failed Bid",
+ "MidPendingToPay": "Pending To Mid-Pay",
+ "Accepted": "Accepted",
+ "FinalPendingToPay": "Pending To Final Pay",
+ "Billing": "Billing",
+ "Commented": "Commented",
+ "Canceled": "Canceled",
+ "Unpublished": "Unpublished",
+ "Published": "Published",
+ "Expired": "Expired",
+ "Phone": "Phone",
+ "Contacts": "Contacts",
+ "ContactAddress": "Contact Address",
+ "Slogan": "BUILD YOUR ELEVATOR",
+ "CustomerName": "Customer Name",
+ "CustomerCode": "Customer Code",
+ "EmployeeName": "Employee Name",
+ "EmployeeCode": "Employee Code",
+ "SupplierName": "Supplier Name",
+ "SupplierCode": "Supplier Code",
+ "Price": "Price(¥)",
+ "RateCode": "Rate Code",
+ "RateCategory": "Rate Category",
+ "RateValue": "Rate Value",
+ "UnsubmittedQuotes": "Un-submitted Quotes",
+ "QuotesSubmitted": "Quotes Submitted",
+ "QuotationNumber": "No.",
+ "ProjectName": "Project Name",
+ "ContactPerson": "Contact Person",
+ "AmountRMB": "Amount CNY(¥)",
+ "AmountUSD": "Amount USD($)",
+ "CreateProject": "Create Project",
+ "ContactNo": "Contact No.",
+ "ProjectAddress": "Project Address",
+ "Model": "Model",
+ "Quantity": "Quantity",
+ "CurrentConfigurationPrice": "Current Configuration Price",
+ "TotalPrice": "Total Price",
+ "RMBPrice": "CNY Price(¥)",
+ "USDPrice": "USD Price($)",
+ "ExchangeRate": "Exchange Rate",
+ "ExchangeRateRMB-USD": "E.Rate(CNY-USD)",
+ "Speed": "Speed",
+ "Saved": "Saved",
+ "Submitted": "Submitted",
+ "Approved": "Approved",
+ "Rejected": "Rejected",
+ "Cancelled": "Cancelled",
+ "Completed": "Completed",
+ "ProjectInfo": "Project Info",
+ "Yes": "Yes",
+ "No": "No",
+ "AssociatedCustomer": "Associated Customer",
+ "Config": "Config",
+ "TryCount": "Try Count",
+ "TryTime": "Try Time",
+ "routekey": "Route key",
+ "exchange": "Exchange",
+ "PENDING": "PENDING",
+ "QUEUING": "QUEUING",
+ "SUCCESSFUL": "SUCCESSFUL",
+ "FAILED": "FAILED",
+ "AnnualDataStatistics": "Annual Data Statistics",
+ "WorkingCalendar": "Working Calendar",
+ "Work": "Work",
+ "Free": "Free",
+ "Example": "Example",
+ "Weekday": "Weekday",
+ "NonWorkingDay": "Non-Working Day",
+ "Festival": "Festival",
+ "SpecialWorkingDays": "Special Working Days",
+ "WorkWeek": "Work Week",
+ "ProjectLibrary": "Project Library",
+ "Project": "Project",
+ "NewTag": "New Tag",
+ "ProjectManager": "Project Manager",
+ "ProjectClient": "Project Client",
+ "ProjectCycle": "Project Cycle",
+ "NotStarted": "Not Started",
+ "InProgress": "In Progress",
+ "Delay": "Delay",
+ "DelayInProgress": "Delay In Progress",
+ "Complete": "Complete",
+ "ProjectNo": "Project No",
+ "ProjectType": "Project Type",
+ "ProjectLeader": "Project Leader",
+ "ApprovalDate": "Approval Date",
+ "CustomerContact": "Customer Contact",
+ "EndUser": "End User",
+ "ProjectIntroduction": "Introduction",
+ "Start": "Start",
+ "Current": "Current",
+ "Baseline": "Baseline",
+ "Reality": "Reality",
+ "Difference": "Difference",
+ "Duration": "Duration",
+ "TaskTime": "Task Time",
+ "Cost": "Cost",
+ "Residue": "Residue",
+ "CompletionPercentage": "Completion Percentage",
+ "WorkStartTime": "Work Start Time",
+ "WorkEndTime": "Work End Time",
+ "To": "To",
+ "StartTime": "Start Time",
+ "EndTime": "End Time",
+ "PickADate": "Pick a Date",
+ "SetCalendar": "Set Calendar",
+ "ProjectOverview": "Project Overview",
+ "TaskMGT": "Task MGT",
+ "ResourceMGT": "Resource MGT",
+ "Projectmembers": "Project members",
+ "StakeholderMGT": "Stakeholder MGT",
+ "CostMGT": "Cost MGT",
+ "QualityMGT": "Quality MGT",
+ "RiskMGT": "Risk MGT",
+ "CommunicationMGT": "Communication MGT",
+ "OverallOverview": "Overall Overview"
+ },
+ "status": {
+ "Returned": "Returned",
+ "TradeOff": "Trade-off",
+ "Enabled": "Enabled",
+ "Disabled": "Disabled",
+ "Outbound": "Outbound",
+ "Shipped": "Shipped",
+ "Received": "Received",
+ "Weighed": "Weighed",
+ "Stocked": "Stocked",
+ "Ongoing": "Ongoing",
+ "All": "All",
+ "Active": "Active",
+ "LoadingEnd": "LoadingEnd",
+ "Billed": "Billed",
+ "Billing": "Billing",
+ "Suspended": "Suspended",
+ "Shipping": "Shipping",
+ "Delivering": "Delivering",
+ "AwaitOrders":"Await Orders",
+ "Weighting": "Weighting",
+ "Warehousing": "Warehousing",
+ "Delivered": "Delivered",
+ "Paid": "Paid",
+ "Online": "Online",
+ "Idle": "Idle",
+ "Offline": "Offline",
+ "Defined": "Defined",
+ "Unpublished": "Unpublished",
+ "Published": "Published",
+ "Expired": "Expired",
+ "VALID": "Valid",
+ "LOCKED": "Locked",
+ "EXPIRED": "Expired",
+ "Open": "Open",
+ "InProgress": "In Progress",
+ "Interviewing": "Interviewing",
+ "Pending": "Pending",
+ "Offered": "Offered",
+ "Accepted": "Accepted",
+ "Rejected": "Rejected",
+ "Commented": "Commented",
+ "Completed": "Completed",
+ "Delayed": "Delayed",
+ "Closed": "Closed",
+ "Canceled": "Canceled",
+ "Filled": "Filled",
+ "Rotated": "Rotated",
+ "OnLeave": "On Leave",
+ "Terminated": "Terminated",
+ "NoDifference": "No Difference",
+ "Inconsistent": "Inconsistent",
+ "Consistent": "Consistent",
+ "Reviewing": "Reviewing",
+ "NotPass": "Not Pass",
+ "Changed": "Changed",
+ "UrgentAndImportant": "Urgent and Important",
+ "ImportantButNotUrgent": "Important but Not Urgent",
+ "UrgentButNotImportant": "Urgent but Not Important",
+ "NeitherUrgentNorImportant": "Neither Urgent nor Important",
+ "Undefined": "Undefined",
+ "Settlement": "Settlement"
+ },
+ "button": {
+ "Pick": "Pick",
+ "Lock": "Lock",
+ "Unlock": "Unlock",
+ "Review": "Review",
+ "Approve": "Approve",
+ "Reject": "Reject",
+ "Check": "Check",
+ "AssociatedCustomer": "Associated Customer",
+ "AssociatedSupplier": "Associated Supplier",
+ "SelectCustomer": "Select Customer",
+ "SelectSupplier": "Select Supplier",
+ "Back": "Back",
+ "Done": "Done",
+ "Publish": "Publish",
+ "Dismiss": "Dismiss",
+ "Upload": "Upload",
+ "Download": "Download",
+ "Import": "Import",
+ "Export": "Export",
+ "Print": "Print",
+ "New": "New",
+ "Edit": "Edit",
+ "Remove": "Remove",
+ "Detail": "Detail",
+ "View": "View",
+ "Delete": "Delete",
+ "Create": "Create",
+ "Add": "Add",
+ "Change": "Change",
+ "Send": "Send",
+ "Resend": "Resend",
+ "Reset": "Reset",
+ "Save": "Save",
+ "Clear": "Clear",
+ "Submit": "Submit",
+ "Close": "Close",
+ "Search": "Search",
+ "AdvancedSearch": "Advanced Search",
+ "Assign": "Assign",
+ "Grant": "Grant",
+ "Revoke": "Revoke",
+ "Ok": "Ok",
+ "Cancel": "Cancel",
+ "Yes": "Yes",
+ "No": "No",
+ "ChangePassword": "Change Password",
+ "RetrievePassword": "Retrieve Password",
+ "DeleteAccount": "Delete Account",
+ "SendSMSCode": "Send Code",
+ "ReSendSMSCode": "Resend",
+ "SignIn": "Sign In",
+ "SignOut": "Sign Out",
+ "ReLogin": "Re-Login",
+ "ReturnToLogin": "Return To Login",
+ "AddLanguage": "Add Language",
+ "DeleteLanguage": "Delete Language",
+ "DisplayLanguage": "Display in this language",
+ "StartConfiguration": "Start Configuration",
+ "LastWeekQuotation": "Last Week's Quotation",
+ "HistoricalQuote": "Historical Quote",
+ "Today": "Today",
+ "ThisWeek": "This Week",
+ "ThisMonth": "This Month",
+ "ThisYear": "This Year",
+ "Return": "Return",
+ "PreviousStep": "Previous Step",
+ "NextStep": "Next Step",
+ "SaveAsNewQuote": "Save As New Quote",
+ "SaveQuote": "Save Quote",
+ "Reconfigure": "Reconfigure",
+ "AddNewConfig": "Add New Config",
+ "ExportQuotation": "Export Quotation",
+ "ViewProject": "View Project",
+ "ViewQuotation": "View Quotation"
+ },
+ "unit": {
+ "Spring": "Spring",
+ "Summer": "Summer",
+ "Autumn": "Autumn",
+ "Winter": "Winter",
+ "January": "January",
+ "February": "February",
+ "March": "March",
+ "April": "April",
+ "May": "May",
+ "June": "June",
+ "July": "July",
+ "August": "August",
+ "September": "September",
+ "October": "October",
+ "November": "November",
+ "December": "December",
+ "Monday": "Monday",
+ "Tuesday": "Tuesday",
+ "Wednesday": "Wednesday",
+ "Thursday": "Thursday",
+ "Friday": "Friday",
+ "Saturday": "Saturday",
+ "Sunday": "Sunday",
+ "AM": "AM",
+ "PM": "PM",
+ "Morning": "Morning",
+ "Evening": "Evening",
+ "Year": "year",
+ "Month": "month",
+ "Day": "day",
+ "Minute": "min",
+ "Years": "years",
+ "Months": "months",
+ "Days": "days",
+ "Minutes": "mins",
+ "Persons": "pers"
+ },
+ "message": {
+ "WelcomeBack": "WELCOME BACK!",
+ "HelloWords": "Hello, {name}, welcome back!",
+ "MSG_INFO_SUCCESS": "Operation successful!",
+ "MSG_INFO_FAILED": "Operation failed!",
+ "MSG_INFO_LOGIN_SUCCESS": "Login in successful!",
+ "MSG_ERROR_SYSTEM": "System internal error!",
+ "MSG_ERROR_PARAMETERS": "Parameter has error!",
+ "MSG_NAME_EXISTED": "Specified name existed in system already!",
+ "MSG_CODE_EXISTED": "Specified code existed in system already!",
+ "MSG_NAME_REQUIRED": "Name is required!",
+ "MSG_ERROR_VERIFY_CODE": "Invalid verify code!",
+ "MSG_EXPIRED_VERIFY_CODE": "Verify code expired!",
+ "MSG_ACCOUNT_PASSWORD_REQUIRED": "Account and password are required!",
+ "MSG_ERROR_ACCOUNT_PASSWORD": "Account or password is invalid!",
+ "MSG_ERROR_ACCOUNT_LOCKED": "Account is locked, access is denied!",
+ "MSG_ERROR_ACCOUNT_EXPIRED": "Account expired, access is denied!",
+ "MSG_ERROR_ACCOUNT_LOW_PERMISSION": "Low permission for account, access is denied!",
+ "MSG_INFO_LOGIN_OUT_SUCCESS": "Login out successful!",
+ "MSG_ERROR_URL_PERMISSION_EXISTED": "Specified url permission existed in system already!",
+ "MSG_ERROR_EMAIL_EXISTED": "Specified email existed in system already!",
+ "MSG_ERROR_EMAIL_NOT_EXISTED": "Specified email doesn't existed in system, please check it!",
+ "MSG_ERROR_CELLPHONE_EXISTED": "Specified cellphone existed in system already!",
+ "MSG_ERROR_USER_NOT_EXISTED": "Specified user doesn't existed in system!",
+ "MSG_ERROR_PASSWORD_INVALID": "Invalid password!",
+ "MSG_ERROR_OLD_PASSWORD_INVALID": "Invalid old password!",
+ "MSG_ERROR_PRINT": "Printing failed!",
+ "MSG_ERROR_QUOTATION_PROJECT_STATUS": "This quotation project can not be update, due to error status!",
+ "MSG_ERROR_QUOTATION_PROJECT_NOT_EXISTED": "Can not find specified quotation project!",
+ "Theme": "Theme",
+ "NoData": "No Data!",
+ "ConfirmPasswordNotMatchNewPassword": "Confirm password not match new password!",
+ "IsRequired": "{name} is required!",
+ "DataFormatHasError": "{name} format mismatch!",
+ "IsInvalid": "{name} format is invalid!",
+ "LengthFromAToB": "Length from {min} to {max}",
+ "PleaseInput": "Please input",
+ "PleaseSelect": "Please Select",
+ "PleaseSelectOrEnter": "Please Select Or Enter",
+ "AllRightReserved": "All Right Reserved",
+ "PleaseInputKeyWords": "Please input key words...",
+ "AreYouSureToSave": "Are you sure to save?",
+ "AreYouSureToLock": "Are you sure to lock?",
+ "AreYouSureToUnlock": "Are you sure to unlock?",
+ "AreYouSureToReview": "Are you sure to review?",
+ "AreYouSureToReviewApprove": "Are you sure to approve?",
+ "AreYouSureToReviewReject": "Are you sure to reject?",
+ "AreYouSureToSubmit": "Are you sure to submit?",
+ "AreYouSureToRemove": "Are you sure to remove?",
+ "AreYouSureToImport": "Are you sure to import?",
+ "AreYouSureToExport": "Are you sure to export?",
+ "AreYouSureToReload": "Are you sure to reload system?",
+ "AreYouSureToApprove": "Are you sure to approve?",
+ "AreYouSureToReject": "Are you sure to reject?",
+ "AreYouSureToCancel": "Are you sure to cancel?",
+ "AreYouSureToSignOut": "Are you sure to sign out system?",
+ "AreYouSureToLockAccount": "Are you sure to lock specify account?",
+ "AreYouSureToUnlockAccount": "Are you sure to unlock specify account?",
+ "TrackingPreventionMessage": "Allow sites to check whether you have payment methods saved",
+ "PleaseWaitAMoment": "Please wait a moment...",
+ "SearchResource": "Search resource...",
+ "NotSignedIn": "Not signed in",
+ "SignedInFailed": "Login failed,please resign in system!",
+ "GetDataFailed": "Failed to get data!",
+ "AccessIsDenied": "Access is denied!",
+ "SessionTimeOut": "Session time-out,please resign in system!",
+ "UnknownSystemMessage": "Unknown system message!",
+ "NetworkError": "can't connect to server, please check your network or connect to site administrator!",
+ "UserNoteTitle": "Note:",
+ "UserNoteDescription": "1. The name cannot be duplicate; \t\n 2. To add the left menu, select the menu type; \t\n 3. The icon is an SVG type picture, which needs to be created into the system in advance; \t\n 4. The link address may not be filled in the type menu, or it may be consistent with the component path; \t\n 5. The component path is the relative path of the Vue page component; \t\n 6. Component is the name of the page component file!",
+ "ImagePickerDescription": "Here you can select photos that have already been uploaded in your library!",
+ "PreferredLanguagesNote": "Websites will appear in the first language in the list that they support. To re-order your preferences, offer translations and see Website displayed in a language, select More actions … next to a language.",
+ "DefaultLanguagesNote": "Websites is displayed in this language.",
+ "AddLanguagesNote": "Please place this language json file in the website directory './Assets/lang/', and file name is this language code!",
+ "ResetSucceeded": "Reset Succeeded!",
+ "ResetFailed": "Reset Failed!",
+ "SendSuccessful": "Send Successful!",
+ "FailInSend": "Fail In Send!",
+ "SendEmailTo": "A password reset message has been sent to",
+ "CheckEmail": "If you have not received an email, please check whether the email is filled in correctly",
+ "PleaseCheck": "Please check the authenticity of the mailbox",
+ "PasswordResetCompleted": "Password reset completed",
+ "ReturnToTheLoginPageAndLogin": "Please return to the login page and log in to the system again",
+ "ResettingPasswordAgainFromEmail": "Please try resetting your password again from the message",
+ "SuccessfullyAdded": "Successfully Added",
+ "QuotationAddInfo": "Your quotation has been added to the project. Please view it in the project details list or click the View Quotation button to view it!",
+ "SuccessfullySubmitted": "Successfully Submitted",
+ "SuccessfullySaved": "Successfully Saved",
+ "QuotationSubmitInfo": "Your quotation has been saved and submitted to the system. The system is currently processing it, please be patient!",
+ "PleaseCompleteInfo": "Please complete the following information",
+ "Nothing": "Nothing",
+ "ProjectStatistics": "{name}Project Statistics",
+ "MoreInfoContactUs": "For mare information, please contact us",
+ "TagQuantityReachedUpperLimit": "The quantity of tag has reached the upper limit"
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/zh_cn.json b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/zh_cn.json
new file mode 100644
index 0000000..e2aff78
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/i18n/lang/zh_cn.json
@@ -0,0 +1,775 @@
+{
+ "title": "BWF Application",
+ "copyright": "Copyright © {name} www.farrriver.top | 津ICP备2021008314号-1",
+ "ServiceAgreement": "服务协议",
+ "PrivacyPolicy": "隐私政策",
+ "AgreementStatement": "登录视为您已同意",
+ "menu": {
+ "Home": "首页",
+ "Profile": "个人中心",
+ "SystemSettings": "系统设置",
+ "MenuList": "菜单设置",
+ "MasterData": "基础数据",
+ "Monitor": "系统监控",
+ "Log": "日志",
+ "Config": "配置管理",
+ "AuditTrail": "审计追踪",
+ "Notification": "系统通知",
+ "MailSendLog": "邮件日志",
+ "Organization": "组织结构管理",
+ "OrganizationClass": "班级管理",
+ "OrganizationDepartment": "院系管理",
+ "OrganizationGrade": "年级管理",
+ "OrganizationGradeSubjectRelation": "年级科目管理",
+ "OrganizationMajor": "专业管理",
+ "OrganizationMaster": "学校管理",
+ "Question": "试题管理",
+ "QuestionCategory": "题型管理",
+ "QuestionMaster": "试题库",
+ "QuestionPaper": "试卷管理",
+ "QuestionPaperQuestionList": "试题列表",
+ "QuestionPaperCategory": "试卷类别",
+ "QuestionSubject": "科目管理",
+ "QuestionSubjectKnowledgePoint": "知识点",
+ "VIP": "会员管理",
+ "VIPMaster": "会员列表",
+ "VIPMasterWallet": "会员钱包",
+ "VIPCouponActive": "优惠券列表",
+ "VIPCouponHistory": "历史优惠券列表",
+ "VIPDepositActivity": "充值活动",
+ "Order": "订单管理",
+ "ActiveOrder": "活动订单",
+ "HistoryOrder": "历史订单",
+ "ActiveOrderDetail": "订单详情",
+ "HistoryOrderDetail": "订单详情",
+ "OrderProduct": "订单产品列表",
+ "Product": "产品管理",
+ "ProductCategory": "产品类别",
+ "ProductMaster": "产品列表",
+ "ProductBrand": "品牌管理",
+ "ProductSupplier": "供应商管理",
+ "ProductAttribute": "产品规格",
+ "ProductAttributeKey": "产品规格名称",
+ "ProductAttributeValue": "产品规格详情",
+ "ProductSupplierProductRelation": "供应商产品列表"
+ },
+ "label": {
+ "CoverImage": "封面",
+ "Supplier": "供应商",
+ "Product": "产品",
+ "ProductList": "产品列表",
+ "ProductAttribute": "产品规格",
+ "Logo": "品牌logo",
+ "FoundedYear": "创立年份",
+ "CountryOfOrigin": "原产地国家",
+ "ProductModel": "产品型号",
+ "ProductFormation": "产品成分",
+ "ProductImage": "产品图片",
+ "ProductName": "产品名称",
+ "ProductColor": "颜色",
+ "ProductSize": "尺码",
+ "SellPrice": "售价 (元)",
+ "ProductCode": "产品编号",
+ "ProductType": "产品类型",
+ "Timesheet": "时间表",
+ "VIPInfo": "会员信息",
+ "AccountBalancePay": "余额支付",
+ "AliPay": "支付宝支付",
+ "WeChatPay": "微信支付",
+ "BankPay": "银行卡支付",
+ "OrderNo": "订单编号",
+ "Language": "语言",
+ "Delivered": "已寄送",
+ "Received": "已签收",
+ "Paid": "已支付",
+ "DiamondType": "会员等级",
+ "SilverMember": "银牌会员",
+ "GoldMember": "金牌会员",
+ "DiamondMember": "钻石会员",
+ "ExclusiveMember": "至尊会员",
+ "idcard": "身份证号",
+ "City": "城市",
+ "Province": "省份",
+ "Nickname": "昵称",
+ "IssuingTime": "发布时间",
+ "UsageTime": "使用时间",
+ "OrderTime": "下单时间",
+ "PayTime": "支付时间",
+ "CommentTime": "评论时间",
+ "ReceiveTime": "签收时间",
+ "CompleteTime": "完成时间",
+ "ActivityName": "活动名称",
+ "VIPName": "会员名称",
+ "VIPCode": "会员编号",
+ "VIPPhone": "会员联系电话",
+ "VIPDiamondType": "会员等级",
+ "Amount": "金额(元)",
+ "PayedMoney": "支付金额(元)",
+ "PaymentMethod": "支付方式",
+ "DiscountMoney": "折扣金额(元)",
+ "Discount": "折扣金额(元)",
+ "DiscountRate": "折扣率",
+ "DistributionCondition": "使用条件",
+ "ByDiscountRate": "折扣券",
+ "ByFullDiscount": "满减券",
+ "ByVoucher": "代金券",
+ "Present": "赠送金额(元)",
+ "Wallet": "钱包",
+ "Option": "选项",
+ "SequenceNo": "序列号",
+ "Stem": "题干",
+ "Answer": "答案",
+ "Analysis": "解析",
+ "Score": "分值",
+ "FREE": "免费",
+ "VIP_FREE": "会员免费",
+ "CHARGE": "付费",
+ "University": "学校",
+ "College": "学院",
+ "Major": "专业",
+ "Grade": "年级",
+ "Class": "班级",
+ "Subject": "科目",
+ "Paper": "试卷",
+ "Question": "试题",
+ "QuestionPaperList": "试卷列表",
+ "QuestionList": "试题列表",
+ "KnowledgePoint": "知识点",
+ "Applications": "我的应用",
+ "Admin404": "404",
+ "IFCNavigation": "快捷导航",
+ "QuickNavigation": "快捷导航",
+ "MyTask": "我的任务",
+ "MyNotification": "消息通知",
+ "MyMeeting": "我的会议",
+ "To-dos": "待办事项",
+ "StartDatetime": "开始时间",
+ "EndDatetime": "结束时间",
+ "TaskTitle": "标题",
+ "TaskSource": "创建人",
+ "TaskSourceDepartment": "创建人部门",
+ "TaskTarget": "责任人",
+ "TaskTargetDepartment": "责任人部门",
+ "PhaseName": "阶段名称",
+ "JobContent": "工作内容",
+ "DatetimeFrom": "开始时间",
+ "DatetimeTo": "结束时间",
+ "ProjectCode": "项目编号",
+ "BidderNo": "竞价编号",
+ "BidderName": "竞价人",
+ "BiddingDate": "竞价日期",
+ "CourseWare": "课件",
+ "Objective": "教学目标",
+ "Outline": "教学大纲",
+ "Deadline": "截止日期",
+ "PreparatoryKnowledge": "预备知识",
+ "ReferenceMaterial": "参考资料",
+ "CoverPicture": "封面",
+ "TeacherName": "教师名称",
+ "TeacherTitle": "教师头衔",
+ "CourseCategoryName": "类别名称",
+ "CourseCategoryCode": "类别编号",
+ "CourseName": "课程名称",
+ "CourseCode": "课程编号",
+ "BlogNo": "博文编号",
+ "Content": "内容",
+ "PublisherName": "发布人",
+ "PublishedDatetime": "发布时间",
+ "DRAFT": "已保存",
+ "REVIEWING": "审查中",
+ "PUBLISHED": "已发布",
+ "REMOVED": "已移除",
+ "CANCELED": "已取消",
+ "InvitationCode": "邀请码",
+ "SupervisorInvitationCode": "上级邀请码",
+ "Setting": "设置",
+ "Loading": "请稍后...",
+ "Avatar": "肖像",
+ "CreateTime": "创建时间",
+ "Remark": "备注",
+ "Code": "编号",
+ "All": "全部",
+ "Status": "状态",
+ "Search": "搜索",
+ "Notification": "通知",
+ "Category": "类别",
+ "Level": "级别",
+ "Key": "键",
+ "Value": "值",
+ "Tags": "标签",
+ "Website": "网站",
+ "OwnerBy": "负责人",
+ "Source": "来源",
+ "District": "地区",
+ "Country": "国家",
+ "Image": "图片",
+ "ImagePicker": "图片选择器",
+ "ImageName": "图片名称",
+ "DisplayDataMode": "数据列表模式",
+ "DisplayCardMode": "卡片模式",
+ "AccessIp": "访问IP地址",
+ "AccessDevice": "访问设备",
+ "AccessContent": "访问内容",
+ "AccessTime": "访问时间",
+ "RandomCode": "短信验证码",
+ "LoginByUsernamePassword": "用户密码登录",
+ "LoginBySMSCode": "手机验证码登录",
+ "ActiveUsage": "活跃用户",
+ "LatestMonthVisitsCount": "月访问量",
+ "LatestYearVisitsCount": "年访问量",
+ "LatestMonthEnquiryCount": "月咨询量",
+ "LatestYearEnquiryCount": "年咨询量",
+ "VisitsMonthTrendDataList": "月访问量趋势",
+ "VisitsYearTrendDataList": "年访问量趋势",
+ "EnquiryMonthTrendDataList": "月咨询趋势",
+ "EnquiryYearTrendDataList": "年咨询趋势",
+ "elevatorescalatorConfigurations": "电梯/扶梯配置数量",
+ "DeviceTypeConfigRanking": "梯种配置排名",
+ "ElevatorAnnualTrend": "电梯年度访问占比",
+ "EscalatorAnnualTrend": "扶梯年度访问占比",
+ "YourEnquiry": "咨询内容",
+ "Description": "简介",
+ "AllUserCount": "用户数量",
+ "SystemCount": "系统数量",
+ "AdministratorCount": "超级管理员数量",
+ "GeneralUserCount": "一般用户数量",
+ "UserDistribution": "用户分布",
+ "PermissionDistribution": "权限分布",
+ "RoleDistribution": "角色分布",
+ "Birthday": "出生日期",
+ "SystemCode": "系统代码",
+ "SystemName": "系统名称",
+ "Profile": "个人中心",
+ "SSOLogin": "统一身份认证平台",
+ "AutoSignIn": "自动登录",
+ "RememberPassword": "记住密码",
+ "UserName": "用户名称",
+ "Gender": "性别",
+ "Man": "男",
+ "Woman": "女",
+ "FirstName": "名",
+ "LastName": "姓",
+ "Age": "年龄",
+ "RegisterTime": "注册时间",
+ "Address": "联系地址",
+ "Email": "电子邮箱",
+ "VerifyCode": "验证码",
+ "Password": "密码",
+ "NewPassword": "设置新密码",
+ "OriginalPassword": "原始密码",
+ "ConfirmPassword": "确认密码",
+ "Verify": "验证",
+ "Account": "账户",
+ "SecurityVerification": "安全验证",
+ "DateFrom": "开始时间",
+ "DateTo": "结束时间",
+ "User": "用户",
+ "Role": "角色",
+ "RoleGroup": "角色组",
+ "Permission": "权限",
+ "PermissionGroup": "权限组",
+ "Index": "序号",
+ "Name": "名称",
+ "Parent": "父级",
+ "Type": "类型",
+ "LinkUrl": "链接地址",
+ "ComponentPath": "组件路径",
+ "ComponentName": "组件名称",
+ "LanguageKey": "多语言KEY",
+ "Icon": "图标",
+ "Button": "按钮",
+ "Menu": "菜单",
+ "Page": "页面",
+ "Undefined": "未定义",
+ "UploadFile": "上传文件",
+ "Component": "组件",
+ "Enabled": "启用",
+ "Disabled": "禁用",
+ "Operation": "操作",
+ "ProvinceName": "身份名称",
+ "BrandName": "品牌名称",
+ "Cellphone": "手机号",
+ "Telephone": "座机号",
+ "CityName": "城市名称",
+ "CarSeriesName": "车系名称",
+ "ConsultDateTime": "咨询时间",
+ "BasicInformation": "基本信息",
+ "SystemInfo": "系统信息",
+ "SystemConfirm": "系统确认",
+ "TargetBaseUri": "目标基础链接地址",
+ "PhotoAndFileAccess": "图片和文件访问设置",
+ "LanguageSetting": "系统显示语言设置",
+ "SystemAndPerformance": "系统资源监视",
+ "TrackingPrevention": "跟踪预防",
+ "GrantPermission": "分配权限",
+ "GrantedPermission": "已分配权限",
+ "UngrantedPermission": "未分配权限",
+ "GrantPermissionGroup": "分配权限组",
+ "GrantedPermissionGroup": "已分配权限组",
+ "UngrantedPermissionGroup": "未分配权限组",
+ "UserDetail": "用户详情",
+ "AssignRole": "分配角色",
+ "UngrantedRole": "未分配角色",
+ "GrantedRole": "已分配角色",
+ "Module": "模块",
+ "ActionType": "操作类型",
+ "ActionTime": "操作时间",
+ "ActionBy": "操作人",
+ "ActionIP": "IP",
+ "Message": "操作内容",
+ "BeforeTarget": "原始值",
+ "AfterTarget": "修改后",
+ "JobCode": "职位编码",
+ "JobName": "职位名称",
+ "JobCategory": "职位类别",
+ "RecruiterNumber": "招聘人数",
+ "JobResponsibility": "工作职责",
+ "JobRequirement": "职责要求",
+ "Organization": "组织",
+ "WorkRegion": "工作地点",
+ "Location": "部署位置",
+ "ApplicationCode": "系统代码",
+ "AccessLevel": "访问级别",
+ "Engineer": "工程师",
+ "SuperAdministrator": "超级管理员",
+ "Administrator": "管理员",
+ "Other": "其他",
+ "ValidDate": "验证时间",
+ "ValidDateFrom": "验证开始时间",
+ "ValidDateTo": "验证结束时间",
+ "VALID": "正常",
+ "LOCKED": "已锁定",
+ "EXPIRED": "已过期",
+ "totaluser": "用户总数",
+ "totalapplication": "应用总数",
+ "totalrole": "角色总数",
+ "totalpermissiongroup": "权限组数量",
+ "totalpermission": "权限数量",
+ "totaladministrator": "管理员数量",
+ "userdistribution": "用户分布",
+ "permissiondistribution": "权限分布",
+ "roledistribution": "角色分布",
+ "usergrowthtrend": "用户增长趋势",
+ "applicationaccesstrend": "应用使用情况",
+ "Skill": "相关技能",
+ "ComputerLevel": "计算机等级",
+ "EnglishLevel": "英语级别",
+ "DriverLicenseType": "驾照类型",
+ "HouseholdType": "户口类型",
+ "HomeAddress": "家庭住址",
+ "ResidenceAddress": "户口地址",
+ "FertilityStatus": "生育状况",
+ "MaritalStatus": "婚姻状况",
+ "Politics": "政治面貌",
+ "Nation": "民族",
+ "NativePlace": "籍贯",
+ "IdCard": "身份证号",
+ "PreferredLanguages": "首选语言",
+ "Title": "标题",
+ "Department": "部门",
+ "Keywords": "关键词",
+ "Publisher": "发布人",
+ "PublishDateTime": "发布时间",
+ "Context": "详情",
+ "Info": "信息",
+ "Warning": "警告",
+ "Danger": "严重警告",
+ "Fatal": "致命警告",
+ "Defined": "已定义",
+ "Pending": "等待中",
+ "Active": "进行中",
+ "Delayed": "已延误",
+ "Reviewing": "审核中",
+ "Bidding": "竞价中",
+ "SuccessBid": "竞价成功",
+ "FailedBid": "竞价失败",
+ "MidPendingToPay": "等待中期付款",
+ "Accepted": "已签收",
+ "FinalPendingToPay": "等待最终付款",
+ "Billing": "结算中",
+ "Commented": "已评论",
+ "Canceled": "已取消",
+ "Unpublished": "未发布",
+ "Published": "已发布",
+ "Expired": "已过期",
+ "Phone": "手机号码",
+ "Contacts": "联系人",
+ "ContactAddress": "联系地址",
+ "Slogan": "BUILD YOUR ELEVATOR",
+ "CustomerName": "客户名称",
+ "CustomerCode": "客户编号",
+ "EmployeeName": "员工名称",
+ "EmployeeCode": "员工编号",
+ "SupplierName": "供应商名称",
+ "SupplierCode": "供应商编号",
+ "Price": "价格(元)",
+ "RateCode": "汇率编号",
+ "RateCategory": "汇率类型",
+ "RateValue": "汇率值",
+ "UnsubmittedQuotes": "未提交的报价",
+ "QuotesSubmitted": "已提交的报价",
+ "QuotationNumber": "报价编号",
+ "ProjectName": "项目名称",
+ "ContactPerson": "项目联系人",
+ "AmountRMB": "人民币总价(元)",
+ "AmountUSD": "美元总价($)",
+ "CreateProject": "创建项目",
+ "ContactNo": "联系电话",
+ "ProjectAddress": "项目地址",
+ "Model": "型号",
+ "Quantity": "台数",
+ "CurrentConfigurationPrice": "当前配置价格",
+ "TotalPrice": "总价",
+ "RMBPrice": "RMB价格(元)",
+ "USDPrice": "USD价格($)",
+ "ExchangeRate": "汇率",
+ "ExchangeRateRMB-USD": "汇率",
+ "Speed": "速度",
+ "Saved": "已保存",
+ "Submitted": "已提交",
+ "Approved": "已确认",
+ "Rejected": "已退回",
+ "Cancelled": "已取消",
+ "Completed": "已完成",
+ "ProjectInfo": "项目基本信息",
+ "Yes": "是",
+ "No": "否",
+ "AssociatedCustomer": "关联客户",
+ "Config": "配置",
+ "TryCount": "重试次数",
+ "TryTime": "重试时间",
+ "routekey": "Route Key",
+ "exchange": "Exchange",
+ "PENDING": "等待中",
+ "QUEUING": "队列中",
+ "SUCCESSFUL": "成功",
+ "FAILED": "失败",
+ "AnnualDataStatistics": "年度数据统计",
+ "WorkingCalendar": "工作日历",
+ "Work": "班",
+ "Free": "休",
+ "Example": "示例",
+ "Weekday": "工作日",
+ "NonWorkingDay": "非工作日",
+ "Festival": "节假日",
+ "SpecialWorkingDays": "特殊工作日",
+ "WorkWeek": "工作周",
+ "ProjectLibrary": "项目库",
+ "Project": "项目",
+ "NewTag": "新标签",
+ "ProjectManager": "项目经理",
+ "ProjectClient": "项目客户",
+ "ProjectCycle": "项目周期",
+ "NotStarted": "未开始",
+ "InProgress": "正在进行中",
+ "Delay": "延误",
+ "DelayInProgress": "延误进行中",
+ "Complete": "完成",
+ "ProjectNo": "项目编号",
+ "ProjectType": "项目类型",
+ "ProjectLeader": "项目负责人",
+ "ApprovalDate": "批准日期",
+ "CustomerContact": "客户联系人",
+ "EndUser": "最终用户",
+ "ProjectIntroduction": "项目简介",
+ "Start": "开始",
+ "Current": "当前",
+ "Baseline": "基线",
+ "Reality": "实际",
+ "Difference": "差异",
+ "Duration": "工期",
+ "TaskTime": "工时",
+ "Cost": "成本",
+ "Residue": "剩余",
+ "CompletionPercentage": "完成百分比",
+ "WorkStartTime": "工作开始时间",
+ "WorkEndTime": "工作结束时间",
+ "To": "到",
+ "StartTime": "开始时间",
+ "EndTime": "结束时间",
+ "PickADate": "选择一个日期",
+ "SetCalendar": "设置日历",
+ "ProjectOverview": "项目概览",
+ "TaskMGT": "任务管理",
+ "ResourceMGT": "资源管理",
+ "Projectmembers": "项目成员",
+ "StakeholderMGT": "干系人管理",
+ "CostMGT": "成本管理",
+ "QualityMGT": "质量管理",
+ "RiskMGT": "风险管理",
+ "CommunicationMGT": "沟通管理",
+ "OverallOverview": "总体概览"
+ },
+ "status": {
+ "Returned": "已退回",
+ "TradeOff": "已折抵",
+ "Enabled": "启用",
+ "Disabled": "禁用",
+ "Outbound": "已出库",
+ "Shipped": "已发货",
+ "Received": "已收货",
+ "Weighed": "已称重",
+ "Stocked": "已入库",
+ "Ongoing": "进行中",
+ "All": "全部",
+ "Active": "活动中",
+ "LoadingEnd": "装载结束",
+ "Billed": "已结算",
+ "Billing": "结算中",
+ "Suspended": "已暂停",
+ "Shipping": "出库中",
+ "Delivering": "运输中",
+ "AwaitOrders":"待命",
+ "Weighting": "称重中",
+ "Warehousing": "入库中",
+ "Delivered": "已寄送",
+ "Paid": "已支付",
+ "Online": "在线",
+ "Idle": "挂起",
+ "Offline": "离线",
+ "Defined": "已定义",
+ "Unpublished": "未发布",
+ "Published": "已发布",
+ "Expired": "已过期",
+ "VALID": "已验证",
+ "LOCKED": "已锁定",
+ "EXPIRED": "已过期",
+ "Open": "空缺",
+ "InProgress": "进行中",
+ "Interviewing": "面试中",
+ "Pending": "待定",
+ "Offered": "已录用",
+ "Accepted": "已接受",
+ "Rejected": "已拒绝",
+ "Commented": "已评论",
+ "Completed": "已完成",
+ "Delayed": "已延误",
+ "Closed": "已关闭",
+ "Canceled": "已取消",
+ "Filled": "已占用",
+ "Rotated": "已轮换",
+ "OnLeave": "休假中",
+ "Terminated": "已终止",
+ "NoDifference": "无差异",
+ "Inconsistent": "不一致",
+ "Consistent": "一致",
+ "Reviewing": "审核中",
+ "NotPass": "未通过",
+ "Changed": "已变更",
+ "UrgentAndImportant": "紧急且重要",
+ "ImportantButNotUrgent": "重要但不紧急",
+ "UrgentButNotImportant": "紧急但不重要",
+ "NeitherUrgentNorImportant": "既不紧急也不重要",
+ "Undefined": "未定义",
+ "Settlement": "结算中"
+ },
+ "button": {
+ "Pick": "选择",
+ "Lock": "确认",
+ "Unlock": "确认",
+ "Review": "确认",
+ "Approve": "确认",
+ "Reject": "拒绝",
+ "Check": "查看",
+ "AssocictedCustomer": "关联客户",
+ "AssociatedSupplier": "关联供应商",
+ "SelectCustomer": "选择客户",
+ "SelectSupplier": "选择供应商",
+ "Back": "返回",
+ "Done": "完成",
+ "Publish": "发布",
+ "Dismiss": "不予考虑",
+ "Upload": "上传",
+ "Download": "下载",
+ "Import": "导入",
+ "Export": "导出",
+ "Print": "打印",
+ "New": "新建",
+ "Edit": "编辑",
+ "Remove": "移除",
+ "Detail": "详细信息",
+ "View": "查看",
+ "Delete": "删除",
+ "Create": "创建",
+ "Add": "添加",
+ "Change": "修改",
+ "Send": "发送",
+ "Resend": "重新发送",
+ "Reset": "重置",
+ "Save": "保存",
+ "Clear": "清除",
+ "Submit": "提交",
+ "Close": "关闭",
+ "Search": "搜索",
+ "AdvancedSearch": "高级搜索",
+ "Assign": "分配",
+ "Grant": "分配",
+ "Revoke": "回收",
+ "Ok": "确定",
+ "Cancel": "取消",
+ "Yes": "是",
+ "No": "否",
+ "ChangePassword": "修改密码",
+ "RetrievePassword": "找回密码",
+ "DeleteAccount": "Delete Account",
+ "SendSMSCode": "发送验证码",
+ "ReSendSMSCode": "重新发送",
+ "SignIn": "登录",
+ "SignOut": "注销登录",
+ "ReLogin": "重新登录",
+ "ReturnToLogin": "返回登录",
+ "AddLanguage": "添加语言",
+ "DeleteLanguage": "删除语言",
+ "DisplayLanguage": "设为显示语言",
+ "StartConfiguration": "开始配置",
+ "LastWeekQuotation": "最近一周的报价",
+ "HistoricalQuote": "历史报价",
+ "Today": "今日",
+ "ThisWeek": "本周",
+ "ThisMonth": "本月",
+ "ThisYear": "本年",
+ "Return": "返回",
+ "PreviousStep": "上一步",
+ "NextStep": "下一步",
+ "SaveAsNewQuote": "保存为新报价",
+ "SaveQuote": "保存报价",
+ "Reconfigure": "重新配置",
+ "AddNewConfig": "添加新配置",
+ "ExportQuotation": "导出报价",
+ "ViewProject": "查看项目",
+ "ViewQuotation": "查看报价"
+ },
+ "unit": {
+ "Spring": "春天",
+ "Summer": "夏天",
+ "Autumn": "秋天",
+ "Winter": "冬天",
+ "January": "一月",
+ "February": "二月",
+ "March": "三月",
+ "April": "四月",
+ "May": "五月",
+ "June": "六月",
+ "July": "七月",
+ "August": "八月",
+ "September": "九月",
+ "October": "十月",
+ "November": "十一月",
+ "December": "十二月",
+ "Monday": "星期一",
+ "Tuesday": "星期二",
+ "Wednesday": "星期三",
+ "Thursday": "星期四",
+ "Friday": "星期五",
+ "Saturday": "星期六",
+ "Sunday": "星期天",
+ "AM": "上午",
+ "PM": "下午",
+ "Morning": "早晨",
+ "Evening": "晚上",
+ "Year": "年",
+ "Month": "月",
+ "Day": "日",
+ "Minute": "分钟",
+ "Years": "年",
+ "Months": "月",
+ "Days": "天",
+ "Minutes": "分钟",
+ "Persons": "人"
+ },
+ "message": {
+ "WelcomeBack": "欢迎登录系统!",
+ "HelloWords": "您好,{name},欢迎回来!",
+ "MSG_INFO_SUCCESS": "操作成功!",
+ "MSG_INFO_FAILED": "操作失败!",
+ "MSG_INFO_LOGIN_SUCCESS": "登陆成功!",
+ "MSG_ERROR_SYSTEM": "服务器异常,请联系管理员!",
+ "MSG_ERROR_PARAMETERS": "参数错误!",
+ "MSG_NAME_EXISTED": "名称已经存在!",
+ "MSG_CODE_EXISTED": "编号已经存在!",
+ "MSG_NAME_REQUIRED": "名称不能为空!",
+ "MSG_ERROR_VERIFY_CODE": "验证码错误!",
+ "MSG_EXPIRED_VERIFY_CODE": "验证码过期!",
+ "MSG_ACCOUNT_PASSWORD_REQUIRED": "用户账户和密码不能为空!",
+ "MSG_ERROR_ACCOUNT_PASSWORD": "用户账户或者密码错误!",
+ "MSG_ERROR_ACCOUNT_LOCKED": "账户已被禁用,访问受限!",
+ "MSG_ERROR_ACCOUNT_EXPIRED": "账户已过期,访问受限!",
+ "MSG_ERROR_ACCOUNT_LOW_PERMISSION": "账户权限不足,访问受限!",
+ "MSG_INFO_LOGIN_OUT_SUCCESS": "注销成功",
+ "MSG_ERROR_URL_PERMISSION_EXISTED": "路径的权限已经存在!",
+ "MSG_ERROR_EMAIL_EXISTED": "电子邮件已经存在!",
+ "MSG_ERROR_EMAIL_NOT_EXISTED": "电子邮件在系统中不存在!",
+ "MSG_ERROR_CELLPHONE_EXISTED": "手机号已经存在!",
+ "MSG_ERROR_USER_NOT_EXISTED": "用户不存在!",
+ "MSG_ERROR_PASSWORD_INVALID": "密码不正确!",
+ "MSG_ERROR_OLD_PASSWORD_INVALID": "旧密码不正确!",
+ "MSG_ERROR_PRINT": "打印失败!",
+ "MSG_ERROR_QUOTATION_PROJECT_STATUS": "由于报价项目的状态不正确,更新报价项目失败!",
+ "MSG_ERROR_QUOTATION_PROJECT_NOT_EXISTED": "报价项目在系统中不存在!",
+ "Theme": "主题",
+ "NoData": "没有数据!",
+ "ConfirmPasswordNotMatchNewPassword": "两次输入密码不一致!",
+ "IsRequired": "{name}是必填项!",
+ "DataFormatHasError": "{name}的格式错误",
+ "IsInvalid": "{name}输入格式不正确!",
+ "LengthFromAToB": "长度在 {min} 到 {max} 个字符",
+ "PleaseInput": "请输入",
+ "PleaseSelect": "请选择",
+ "PleaseSelectOrEnter": "请选择或输入",
+ "AllRightReserved": "版权所有",
+ "PleaseInputKeyWords": "请输入关键词...",
+ "AreYouSureToSave": "你确定要保存吗?",
+ "AreYouSureToLock": "你确定要锁定吗?",
+ "AreYouSureToUnlock": "你确定要解锁吗?",
+ "AreYouSureToReview": "你确定要审核吗?",
+ "AreYouSureToReviewApprove": "你确定要通过审核吗?",
+ "AreYouSureToReviewReject": "你确定要拒绝审核吗?",
+ "AreYouSureToSubmit": "你确定要提交吗?",
+ "AreYouSureToRemove": "你确定要移除吗?",
+ "AreYouSureToImport": "你确定要导入吗?",
+ "AreYouSureToExport": "你确定要导出吗?",
+ "AreYouSureToReload": "你确定要重新加载系统吗?",
+ "AreYouSureToApprove": "你确定要通过吗?",
+ "AreYouSureToReject": "你确定要拒绝吗?",
+ "AreYouSureToCancel": "你确定要取消吗?",
+ "AreYouSureToSignOut": "你确定要注销登录吗?",
+ "AreYouSureToLockAccount": "你确定要锁定这个账户吗?",
+ "AreYouSureToUnlockAccount": "你确定要解锁这个账户吗?",
+ "TrackingPreventionMessage": "允许网站检查您是否保存了付款方式",
+ "PleaseWaitAMoment": "请稍后...",
+ "SearchResource": "搜索资源...",
+ "NotSignedIn": "未登录",
+ "SignedInFailed": "登录失败,请重新登录!",
+ "GetDataFailed": "获取数据失败!",
+ "AccessIsDenied": "访问被拒绝!",
+ "SessionTimeOut": "会话已过期,请重新登录!",
+ "UnknownSystemMessage": "服务器返回未知信息!",
+ "NetworkError": "网络异常!",
+ "UserNoteTitle": "使用提示!",
+ "UserNoteDescription": "1. 名称不能重复; \t\n 2. 如需添加左侧菜单,选择菜单类型; \t\n 3. 图标为SVG类型图片,需要提前创建到系统中; \t\n 4. 链接地址在类型菜单的时候可以不填,或与组件路径保持一致; \t\n 5. 组件路径为vue页面组件的相对路径; \t\n 6. Component 为页面组件文件的名称!",
+ "ImagePickerDescription": "您可以在这里选择图片库中已经上传的照片!",
+ "PreferredLanguagesNote": "网站将以受支持语言列表中的第一种语言进行显示。若要重新排序首选项、提供翻译并以某种语言显示网站,请选择语言旁的“更多操作...”。",
+ "DefaultLanguagesNote": "网站以此语言显示.",
+ "AddLanguagesNote": "请将该语言json文件置于网站目录./assets/lang/目录下. 文件名为语言编号!",
+ "ResetSucceeded": "重置成功!",
+ "ResetFailed": "重置失败!",
+ "SendSuccessful": "发送成功!",
+ "FailInSend": "发送失败!",
+ "SendEmailTo": "密码重置邮件已发送至",
+ "CheckEmail": "若未收到邮件,请检查邮箱是否填写正确",
+ "PleaseCheck": "请检查邮箱是否真实存在",
+ "PasswordResetCompleted": "密码重置已完成",
+ "ReturnToTheLoginPageAndLogin": "请返回登录页面重新登录系统",
+ "ResettingPasswordAgainFromEmail": "请从邮件中再次尝试重置密码",
+ "SuccessfullyAdded": "添加成功",
+ "QuotationAddInfo": "您的报价已经添加到了项目中,请在项目详情列表中查看,或者点击查看报价按钮进行查看!",
+ "SuccessfullySubmitted": "提交成功",
+ "SuccessfullySaved": "保存成功",
+ "QuotationSubmitInfo": "您的报价保存并提交到系统,系统正在处理中,请耐心等待!",
+ "PleaseCompleteInfo": "请完善以下信息",
+ "Nothing": "无",
+ "ProjectStatistics": "{name}项目统计",
+ "MoreInfoContactUs": "了解更多信息,请联系我们",
+ "TagQuantityReachedUpperLimit": "标签的数量已达到上限!"
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/js/babel.min.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/js/babel.min.js
new file mode 100644
index 0000000..ad35b7a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/public/assets/js/babel.min.js
@@ -0,0 +1,43 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Babel=t():e.Babel=t()}(this,function(){return function(e){function t(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return e[i].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}(function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))switch(typeof e[t]){case"function":break;case"object":e[t]=function(t){var r=t.slice(1),i=e[t[0]];return function(e,t,n){i.apply(this,[e,t,n].concat(r))}}(e[t]);break;default:e[t]=e[e[t]]}return e}([function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e,t){return g(t)&&"string"==typeof t[0]?e.hasOwnProperty(t[0])?[e[t[0]]].concat(t.slice(1)):void 0:"string"==typeof t?e[t]:t}function s(e){var t=(e.presets||[]).map(function(e){var t=n(x,e);if(!t)throw new Error('Invalid preset specified in Babel options: "'+e+'"');return g(t)&&"object"===d(t[0])&&t[0].hasOwnProperty("buildPreset")&&(t[0]=h({},t[0],{buildPreset:t[0].buildPreset})),t}),r=(e.plugins||[]).map(function(e){var t=n(b,e);if(!t)throw new Error('Invalid plugin specified in Babel options: "'+e+'"');return t});return h({},e,{presets:t,plugins:r})}function a(e,t){return v.transform(e,s(t))}function o(e,t,r){return v.transformFromAst(e,t,s(r))}function u(e,t){b.hasOwnProperty(e)&&console.warn('A plugin named "'+e+'" is already registered, it will be overridden'),b[e]=t}function l(e){Object.keys(e).forEach(function(t){return u(t,e[t])})}function p(e,t){x.hasOwnProperty(e)&&console.warn('A preset named "'+e+'" is already registered, it will be overridden'),x[e]=t}function c(e){Object.keys(e).forEach(function(t){return p(t,e[t])})}function f(){window.removeEventListener("DOMContentLoaded",E)}Object.defineProperty(t,"__esModule",{value:!0}),t.version=t.availablePresets=t.availablePlugins=void 0;var h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};t.transform=a,t.transformFromAst=o,t.registerPlugin=u,t.registerPlugins=l,t.registerPreset=p,t.registerPresets=c,t.disableScriptTags=f;var y=r(2492),v=i(y),m=r(2604),g=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},b=t.availablePlugins={},x=t.availablePresets={};l({"check-es2015-constants":r(692),"external-helpers-2":r(2635),"syntax-async-functions":r(697),"syntax-async-generators":r(2636),"syntax-class-constructor-call":r(1643),"syntax-class-properties":r(1644),"syntax-decorators":r(1064),"syntax-do-expressions":r(1645),"syntax-exponentiation-operator":r(1646),"syntax-export-extensions":r(1647),"syntax-flow":r(698),"syntax-function-bind":r(1648),"syntax-function-sent":r(2637),"syntax-jsx":r(1065),"syntax-object-rest-spread":r(1649),"syntax-trailing-function-commas":r(1066),"transform-async-functions":r(2638),"transform-async-to-generator":r(1067),"transform-async-to-module-method":r(2884),"transform-class-constructor-call":r(1760),"transform-class-properties":r(1800),"transform-decorators":r(1841),"transform-decorators-legacy":r(3353).default,"transform-do-expressions":r(1842),"transform-es2015-arrow-functions":r(768),"transform-es2015-block-scoped-functions":r(769),"transform-es2015-block-scoping":r(774),"transform-es2015-classes":r(777),"transform-es2015-computed-properties":r(780),"transform-es2015-destructuring":r(785),"transform-es2015-duplicate-keys":r(1227),"transform-es2015-for-of":r(790),"transform-es2015-function-name":r(791),"transform-es2015-instanceof":r(4165),"transform-es2015-literals":r(836),"transform-es2015-modules-amd":r(1279),"transform-es2015-modules-commonjs":r(852),"transform-es2015-modules-systemjs":r(2013),"transform-es2015-modules-umd":r(2020),"transform-es2015-object-super":r(858),"transform-es2015-parameters":r(876),"transform-es2015-shorthand-properties":r(878),"transform-es2015-spread":r(893),"transform-es2015-sticky-regex":r(898),"transform-es2015-template-literals":r(913),"transform-es2015-typeof-symbol":r(918),"transform-es2015-unicode-regex":r(924),"transform-es3-member-expression-literals":r(5092),"transform-es3-property-literals":r(5093),"transform-es5-property-mutators":r(5094),"transform-eval":r(5326),"transform-exponentiation-operator":r(1456),"transform-export-extensions":r(2260),"transform-flow-comments":r(5501),"transform-flow-strip-types":r(2261),"transform-function-bind":r(2262),"transform-jscript":r(5502),"transform-object-assign":r(5503),"transform-object-rest-spread":r(2263),"transform-object-set-prototype-of-to-assign":r(5534),"transform-proto-to-assign":r(5535),"transform-react-constant-elements":r(5583),"transform-react-display-name":r(2283),"transform-react-inline-elements":r(5584),"transform-react-jsx":r(2331),"transform-react-jsx-compat":r(5615),"transform-react-jsx-self":r(5789),"transform-react-jsx-source":r(5790),"transform-regenerator":r(998),"transform-runtime":r(5980),"transform-strict-mode":r(2373),"undeclared-variables-check":r(5981)}),c({es2015:r(2374),es2016:r(2375),es2017:r(2376),latest:r(5983),react:r(5984),"stage-0":r(5985),"stage-1":r(2377),"stage-2":r(2378),"stage-3":r(2379),"es2015-no-commonjs":{plugins:[r(913),r(836),r(791),r(768),r(769),r(777),r(858),r(878),r(780),r(790),r(898),r(924),r(692),r(893),r(876),r(785),r(774),r(918),[r(998),{async:!1,asyncGenerators:!1}]]},"es2015-loose":{plugins:[[r(913),{loose:!0}],r(836),r(791),r(768),r(769),[r(777),{loose:!0}],r(858),r(878),r(1227),[r(780),{loose:!0}],[r(790),{loose:!0}],r(898),r(924),r(692),[r(893),{loose:!0}],r(876),[r(785),{loose:!0}],r(774),r(918),[r(852),{loose:!0}],[r(998),{async:!1,asyncGenerators:!1}]]}});var E=(t.version=v.version,function(){return(0,m.runScripts)(a)});"undefined"!=typeof window&&window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",E,!1)},[6505,2426],function(e,t){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},[6829,1,39,17,1570,2398,6106,6096,6104,257,6190,6189,6191,6208,6101,368,6105,449],[6505,5281],[6505,3018],[6505,3947],[6634,5,589,588,1135,1736,3073,3063,3071,3178,3125,1755,3128,3127,3068,277,3072,476],[6634,4,653,652,1426,2178,5174,5164,5172,5226,5227,1434,2186,5228,5169,336,5173,535],[6829,6,616,615,1267,1933,4002,3992,4e3,4164,4140,1963,4142,4162,3997,302,4001,502],function(e,t){function r(e){if(u===setTimeout)return setTimeout(e,0);try{return u(e,0)}catch(t){try{return u.call(null,e,0)}catch(t){return u.call(this,e,0)}}}function i(e){if(l===clearTimeout)return clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function n(){h&&c&&(h=!1,c.length?f=c.concat(f):d=-1,f.length&&s())}function s(){if(!h){var e=r(n);h=!0;for(var t=f.length;t;){for(c=f,f=[];++d<t;)c&&c[d].run();d=-1,t=f.length}c=null,h=!1,i(e)}}function a(e,t){this.fun=e,this.array=t}function o(){}var u,l,p=e.exports={};!function(){try{u=setTimeout}catch(e){u=function(){throw new Error("setTimeout is not defined")}}try{l=clearTimeout}catch(e){l=function(){throw new Error("clearTimeout is not defined")}}}();var c,f=[],h=!1,d=-1;p.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)t[i-1]=arguments[i];f.push(new a(e,t)),1!==f.length||h||r(s)},a.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=o,p.addListener=o,p.once=o,p.off=o,p.removeListener=o,p.removeAllListeners=o,p.emit=o,p.binding=function(e){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(e){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},[6821,5988,98],2,2,2,[6471,248,1,39,17,1052,1623,2530,2520,2528,2525,260,2529],[6669,2430],[6667,2427],[6634,19,1084,710,1079,1667,2777,2767,2775,2831,2781,2821,2784,2783,2772,264,2776,376],[6505,2839],[6504,17],[6471,248,1,39,17,1210,1855,3588,3578,3586,3583,296,3587],[6471,248,1,39,17,1212,1862,3631,3621,3629,3626,297,3630],[6471,248,1,39,17,1310,2010,4369,4359,4367,4364,312,4368],[6634,34,1326,868,1321,2033,4528,4518,4526,4582,4532,4572,4535,4534,4523,314,4527,513],[6634,43,1381,899,1400,2129,4931,4921,4929,5036,4983,2148,4986,4985,4926,333,4930,525],[6634,44,1465,950,1457,2221,5339,5329,5337,5444,5391,2240,5394,5393,5334,344,5338,540],function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},[6505,3189],[6634,28,1143,738,1165,1780,3284,3274,3282,3288,3301,1796,3303,3302,3279,284,3283,390],[6634,40,1173,753,1194,1821,3459,3449,3457,3463,3476,1837,3478,3477,3454,292,3458,395],[6634,41,1280,837,1301,1987,4271,4261,4269,4275,4288,2003,4290,4289,4266,308,4270,408],[6505,2426],[6471,4385,32,1312,1311,1315,2017,4422,4412,4420,4417,313,4421],[6505,4593],[6634,42,1347,879,1366,2081,4725,4715,4723,4830,4777,2100,4780,4779,4720,326,4724,519],[6634,45,1514,976,1505,2293,5627,5617,5625,5677,5680,2311,5683,5682,5622,351,5626,550],[6634,38,1542,990,1533,2332,5802,5792,5800,5852,5855,2350,5858,5857,5797,358,5801,554],[6505,5919],[6673,2434],[6505,3364],[6505,4176],[6505,4670],[6505,4876],[6505,5456],[6505,5744],2,[6818,5986],function(e,t,r){(function(e,i){function n(e,r){var i={seen:[],stylize:a};return arguments.length>=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),y(r)?i.showHidden=r:r&&t._extend(i,r),E(i.showHidden)&&(i.showHidden=!1),E(i.depth)&&(i.depth=2),E(i.colors)&&(i.colors=!1),E(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=s),u(i,e,i.depth)}function s(e,t){var r=n.styles[t];return r?"["+n.colors[r][0]+"m"+e+"["+n.colors[r][1]+"m":e}function a(e,t){return e}function o(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}function u(e,r,i){if(e.customInspect&&r&&P(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,e);return b(n)||(n=u(e,n,i)),n}var s=l(e,r);if(s)return s;var a=Object.keys(r),y=o(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(r)),T(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return p(r);if(0===a.length){if(P(r)){var v=r.name?": "+r.name:"";return e.stylize("[Function"+v+"]","special")}if(A(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(_(r))return e.stylize(Date.prototype.toString.call(r),"date");if(T(r))return p(r)}var m="",g=!1,x=["{","}"];if(d(r)&&(g=!0,x=["[","]"]),P(r)){var E=r.name?": "+r.name:"";m=" [Function"+E+"]"}if(A(r)&&(m=" "+RegExp.prototype.toString.call(r)),_(r)&&(m=" "+Date.prototype.toUTCString.call(r)),T(r)&&(m=" "+p(r)),0===a.length&&(!g||0==r.length))return x[0]+m+x[1];if(i<0)return A(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special");e.seen.push(r);var S;return S=g?c(e,r,i,y,a):a.map(function(t){return f(e,r,i,y,t,g)}),e.seen.pop(),h(S,m,x)}function l(e,t){if(E(t))return e.stylize("undefined","undefined");if(b(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return g(t)?e.stylize(""+t,"number"):y(t)?e.stylize(""+t,"boolean"):v(t)?e.stylize("null","null"):void 0}function p(e){return"["+Error.prototype.toString.call(e)+"]"}function c(e,t,r,i,n){for(var s=[],a=0,o=t.length;a<o;++a)O(t,String(a))?s.push(f(e,t,r,i,String(a),!0)):s.push("");return n.forEach(function(n){n.match(/^\d+$/)||s.push(f(e,t,r,i,n,!0))}),s}function f(e,t,r,i,n,s){var a,o,l;if(l=Object.getOwnPropertyDescriptor(t,n)||{value:t[n]},l.get?o=l.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):l.set&&(o=e.stylize("[Setter]","special")),O(i,n)||(a="["+n+"]"),o||(e.seen.indexOf(l.value)<0?(o=v(r)?u(e,l.value,null):u(e,l.value,r-1),o.indexOf("\n")>-1&&(o=s?o.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+o.split("\n").map(function(e){return" "+e}).join("\n"))):o=e.stylize("[Circular]","special")),E(a)){if(s&&n.match(/^\d+$/))return o;a=JSON.stringify(""+n),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+o}function h(e,t,r){var i=0,n=e.reduce(function(e,t){return i++,t.indexOf("\n")>=0&&i++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return n>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function d(e){return Array.isArray(e)}function y(e){return"boolean"==typeof e}function v(e){return null===e}function m(e){return null==e}function g(e){return"number"==typeof e}function b(e){return"string"==typeof e}function x(e){return"symbol"==typeof e}function E(e){return void 0===e}function A(e){return S(e)&&"[object RegExp]"===k(e)}function S(e){return"object"==typeof e&&null!==e}function _(e){return S(e)&&"[object Date]"===k(e)}function T(e){return S(e)&&("[object Error]"===k(e)||e instanceof Error)}function P(e){return"function"==typeof e}function w(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function k(e){return Object.prototype.toString.call(e)}function C(e){return e<10?"0"+e.toString(10):e.toString(10)}function D(){var e=new Date,t=[C(e.getHours()),C(e.getMinutes()),C(e.getSeconds())].join(":");return[e.getDate(),B[e.getMonth()],t].join(" ")}function O(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var N=/%[sdj%]/g;t.format=function(e){if(!b(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(n(arguments[r]));return t.join(" ")}for(var r=1,i=arguments,s=i.length,a=String(e).replace(N,function(e){if("%%"===e)return"%";if(r>=s)return e;switch(e){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(e){return"[Circular]"}default:return e}}),o=i[r];r<s;o=i[++r])a+=v(o)||!S(o)?" "+o:" "+n(o);return a},t.deprecate=function(r,n){function s(){if(!a){if(i.throwDeprecation)throw new Error(n);i.traceDeprecation?console.trace(n):console.error(n),a=!0}return r.apply(this,arguments)}if(E(e.process))return function(){return t.deprecate(r,n).apply(this,arguments)};if(i.noDeprecation===!0)return r;var a=!1;return s};var I,F={};t.debuglog=function(e){if(E(I)&&(I=i.env.NODE_DEBUG||""),e=e.toUpperCase(),!F[e])if(new RegExp("\\b"+e+"\\b","i").test(I)){var r=i.pid;F[e]=function(){var i=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,i)}}else F[e]=function(){};return F[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=d,t.isBoolean=y,t.isNull=v,t.isNullOrUndefined=m,t.isNumber=g,t.isString=b,t.isSymbol=x,t.isUndefined=E,t.isRegExp=A,t.isObject=S,t.isDate=_,t.isError=T,t.isFunction=P,t.isPrimitive=w,t.isBuffer=r(6435);var B=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];t.log=function(){console.log("%s - %s",D(),t.format.apply(t,arguments))},t.inherits=r(6271),t._extend=function(e,t){if(!t||!S(t))return e;for(var r=Object.keys(t),i=r.length;i--;)e[r[i]]=t[r[i]];return e}}).call(t,function(){return this}(),r(10))},function(e,t){var r=e.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},function(e,t,r){function i(e,t,r,i){e=s(e)?e:u(e),r=r&&!i?o(r):0;var p=e.length;return r<0&&(r=l(p+r,0)),a(e)?r<=p&&e.indexOf(t,r)>-1:!!p&&n(e,t,r)>-1}var n=r(1606),s=r(252),a=r(82),o=r(571),u=r(2483),l=Math.max;e.exports=i},[6471,248,1,39,17,1055,1627,2568,2558,2566,2563,261,2567],[6812,1032],49,49,49,49,49,49,2,49,49,49,49,49,49,49,2,2,2,2,2,2,2,2,2,function(e,t){var r=Array.isArray;e.exports=r},[6471,248,1,39,17,1561,2372,5978,5968,5976,5973,365,5977],function(e,t,r){var i=r(1030),n=r(567),s=r(1033),a=r(252),o=r(681),u=r(256),l=Object.prototype,p=l.hasOwnProperty,c=l.propertyIsEnumerable,f=!c.call({valueOf:1},"valueOf"),h=s(function(e,t){if(f||o(t)||a(t))return void n(t,u(t),e);for(var r in t)p.call(t,r)&&i(e,r,t[r])});e.exports=h},[6679,3014],[6818,3943],[6679,5277],function(e,t,r){function i(e){return"string"==typeof e||!n(e)&&s(e)&&u.call(e)==a}var n=r(76),s=r(373),a="[object String]",o=Object.prototype,u=o.toString;e.exports=i},function(e,t){function r(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}e.exports=r},[6682,3017,1719],83,83,83,[6821,3946,1916],83,83,83,83,83,[6682,5280,2204],83,83,83,[6675,2437],[6819,5987,16,11],[6820,11],[6536,1592,1025,183],[6639,6398],function(e,t){function r(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}e.exports=r},[6478,1,671,2,47,100,99,575,2531,1624],[6489,2],[6478,19,1682,46,268,1685,1684,577,2643,1651],[6489,46],[6478,19,1682,46,268,1685,1684,579,2718,1659],[6489,46],[6536,1095,716,189],[6478,5,1114,12,79,1116,1115,583,2889,1702],[6489,12],[6478,5,1114,12,79,1116,1115,586,2964,1710],[6489,12],[6669,3021],[6536,1127,731,193],[6478,5,1114,12,79,1116,1115,592,3103,1740],[6489,12],[6536,1155,745,198],[6478,28,3182,67,739,3188,3187,596,3289,1783],[6489,67],[6575,749,285,286],[6536,1184,760,202],[6478,40,3357,68,754,3363,3362,601,3464,1824],[6489,68],[6575,764,293,294],[6478,1,671,2,47,100,99,605,3589,1857],[6489,2],[6478,1,671,2,47,100,99,607,3632,1864],[6489,2],[6478,6,1246,13,80,1248,1247,610,3709,1883],[6489,13],[6478,6,1246,13,80,1248,1247,612,3837,1899],[6489,13],[6786,3883],[6669,3950],[6536,1259,817,207],[6478,6,1246,13,80,1248,1247,619,4032,1937],[6489,13],[6786,4087],function(e,t){var r=Array.isArray;e.exports=r},[6536,1291,844,212],[6478,41,4169,69,838,4175,4174,622,4276,1990],[6489,69],[6575,848,309,310],[6478,1,671,2,47,100,99,626,4370,2012],[6489,2],[6478,32,4386,70,855,4392,4391,629,4423,2019],[6489,70],[6478,34,4586,59,869,4592,4591,630,4469,2025],[6489,59],[6536,1338,875,216],[6536,1358,886,220],[6478,42,4662,71,880,4669,4668,639,4755,2085],[6489,71],[6536,1392,906,225],[6478,43,4868,72,900,4875,4874,644,4961,2133],[6489,72],[6478,4,1435,14,81,1437,1436,647,5100,2172],[6489,14],[6478,4,1435,14,81,1437,1436,649,5144,2177],[6489,14],[6478,4,1435,14,81,1437,1436,650,5204,2182],[6489,14],[6575,933,337,338],[6669,5284],[6536,1448,943,230],[6478,44,5448,73,951,5455,5454,656,5369,2225],[6489,73],[6536,1476,957,235],[6478,45,5736,74,977,5743,5742,663,5657,2297],[6489,74],[6536,1525,983,240],[6478,38,5911,75,991,5918,5917,667,5832,2336],[6489,75],[6536,1553,997,245],[6786,6037],141,[6478,1,671,2,47,100,99,675,6209,2424],[6489,2],[6511,453],[6513,183,49,676,370],function(e,t){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},[6521,250,2443,1595,181],[6610,6267,2453,6268],function(e,t,r){var i=r(2470),n="object"==typeof self&&self&&self.Object===Object&&self,s=i||n||Function("return this")();e.exports=s},function(e,t,r){(function(e){function r(e,t){for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function i(e,t){if(e.filter)return e.filter(t);for(var r=[],i=0;i<e.length;i++)t(e[i],i,e)&&r.push(e[i]);return r}var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,s=function(e){return n.exec(e).slice(1)};t.resolve=function(){for(var t="",n=!1,s=arguments.length-1;s>=-1&&!n;s--){var a=s>=0?arguments[s]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(t=a+"/"+t,n="/"===a.charAt(0))}return t=r(i(t.split("/"),function(e){return!!e}),!n).join("/"),(n?"/":"")+t||"."},t.normalize=function(e){var n=t.isAbsolute(e),s="/"===a(e,-1);return e=r(i(e.split("/"),function(e){return!!e}),!n).join("/"),e||n||(e="."),e&&s&&(e+="/"),(n?"/":"")+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,r){function i(e){for(var t=0;t<e.length&&""===e[t];t++);for(var r=e.length-1;r>=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var n=i(e.split("/")),s=i(r.split("/")),a=Math.min(n.length,s.length),o=a,u=0;u<a;u++)if(n[u]!==s[u]){o=u;break}for(var l=[],u=o;u<n.length;u++)l.push("..");return l=l.concat(s.slice(o)),l.join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){var t=s(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},t.basename=function(e,t){var r=s(e)[2];return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},t.extname=function(e){return s(e)[3]};var a="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(t,r(10))},[6507,191],183,function(e,t){var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},[6507,195],183,190,191,[6575,736,386,278],[6507,200],183,190,191,[6507,204],183,190,191,[6786,3743],[6507,209],183,190,191,103,[6507,214],183,190,191,[6507,218],183,190,191,[6507,222],183,190,191,[6575,891,422,327],[6507,227],183,190,191,[6575,911,427,334],[6507,232],183,190,191,[6575,948,434,345],[6507,237],183,190,191,[6575,974,439,352],[6507,242],183,190,191,[6575,988,444,359],[6507,247],183,190,191,[6671,2432],[6786,6138],[6507,251],191,[6795,6355,682,1042],function(e,t,r){function i(e){return"number"==typeof e||n(e)&&o.call(e)==s}var n=r(373),s="[object Number]",a=Object.prototype,o=a.toString;e.exports=i},[6858,1611,1035,373],function(e,t,r){var i=r(6319),n=r(1609),s=r(2478),a=s&&s.isRegExp,o=a?n(a):i;e.exports=o},[6799,1605,6321,2474,252,1036,681],function(e,t){"use strict";e.exports=function e(t){function r(){}r.prototype=t,new r}},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){var t=o.default.matchToToken(e);if("name"===t.type&&l.default.keyword.isReservedWordES6(t.value))return"keyword";if("punctuator"===t.type)switch(t.value){case"{":case"}":return"curly";case"(":case")":return"parens";case"[":case"]":return"square"}return t.type}function s(e){return e.replace(o.default,function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=n(t),s=f[i];return s?t[0].split(h).map(function(e){return s(e)}).join("\n"):t[0]})}t.__esModule=!0,t.default=function(e,t,r){var i=arguments.length<=3||void 0===arguments[3]?{}:arguments[3];r=Math.max(r,0);var n=i.highlightCode&&c.default.supportsColor;n&&(e=s(e));var a=e.split(h),o=Math.max(t-3,0),u=Math.min(a.length,t+3);t||r||(o=0,u=a.length);var l=String(u).length,p=a.slice(o,u).map(function(e,i){var n=o+1+i,s=(" "+n).slice(-l),a=" "+s+" | ";if(n===t){var u="";if(r){var p=e.slice(0,r-1).replace(/[^\t]/g," ");u="\n "+a.replace(/\d/g," ")+p+"^"}return">"+a+e+u}return" "+a+e}).join("\n");return n?c.default.reset(p):p};var a=r(6274),o=i(a),u=r(185),l=i(u),p=r(6224),c=i(p),f={string:c.default.red,punctuator:c.default.bold,curly:c.default.green,parens:c.default.blue.bold,square:c.default.yellow,keyword:c.default.cyan,number:c.default.magenta,regex:c.default.magenta,comment:c.default.grey,invalid:c.default.inverse},h=/\r\n|[\n\r\u2028\u2029]/;e.exports=t.default},[6440,1,375,1051,1620,2502,2519,15,689,375,1051,1620],[6466,1,17,11,15],[6466,1,17,11,51],[6466,1,17,11,263],[6471,248,1,39,17,1056,1632,2602,2592,2600,2597,262,2601],[6629,19,710,379,18],function(e,t){function r(e){return!!e&&"object"==typeof e}e.exports=r},[6571,83],[6575,708,468,265],[6679,2833],[6511,380],[6513,189,53,711,271],[6514,272,714,269],[6521,188,1689,1098,269],[6511,383],[6513,193,54,726,275],[6514,276,729,273],[6521,192,1724,1130,273],[6629,5,588,84,7],265,[6571,85],[6511,388],[6513,198,55,740,282],[6514,283,743,280],[6521,197,1764,1158,280],[6629,28,738,387,29],function(e,t){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=i}var i=9007199254740991;e.exports=r},265,[6571,86],[6511,393],[6513,202,56,755,290],[6514,291,758,288],[6521,201,1805,1187,288],[6629,40,753,392,30],285,265,[6571,87],[6466,1,17,11,21],[6466,1,17,11,22],[6511,401],[6513,207,57,812,300],[6514,301,815,298],[6521,206,1921,1262,298],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return Array.isArray(e)?"array":null===e?"null":void 0===e?"undefined":"undefined"==typeof e?"undefined":(0,g.default)(e)}function a(e){function t(t,r,i){if(Array.isArray(i))for(var n=0;n<i.length;n++)e(t,r+"["+n+"]",i[n])}return t.each=e,t}function o(){function e(e,t,i){if(r.indexOf(i)<0)throw new TypeError("Property "+t+" expected value to be one of "+(0,v.default)(r)+" but got "+(0,v.default)(i))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOf=r,e}function u(){function e(e,t,i){for(var n=!1,s=r,a=Array.isArray(s),o=0,s=a?s:(0,d.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(x.is(l,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,v.default)(r)+" but instead got "+(0,v.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeTypes=r,e}function l(){function e(e,t,i){for(var n=!1,a=r,o=Array.isArray(a),u=0,a=o?a:(0,d.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var p=l;if(s(i)===p||x.is(p,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,v.default)(r)+" but instead got "+(0,v.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeOrValueTypes=r,e}function p(e){function t(t,r,i){var n=s(i)===e;if(!n)throw new TypeError("Property "+r+" expected type of "+e+" but got "+s(i))}return t.type=e,t}function c(){function e(){for(var e=r,t=Array.isArray(e),i=0,e=t?e:(0,d.default)(e);;){var n;if(t){if(i>=e.length)break;n=e[i++]}else{if(i=e.next(),i.done)break;n=i.value}var s=n;s.apply(void 0,arguments)}}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.chainOf=r,e}function f(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=t.inherits&&P[t.inherits]||{};t.fields=t.fields||r.fields||{},t.visitor=t.visitor||r.visitor||[],t.aliases=t.aliases||r.aliases||[],t.builder=t.builder||r.builder||t.visitor||[],t.deprecatedAlias&&(T[t.deprecatedAlias]=e);for(var i=t.visitor.concat(t.builder),n=Array.isArray(i),a=0,i=n?i:(0,d.default)(i);;){var o;if(n){if(a>=i.length)break;o=i[a++]}else{if(a=i.next(),a.done)break;o=a.value}var u=o;t.fields[u]=t.fields[u]||{}}for(var l in t.fields){var c=t.fields[l];void 0===c.default?c.default=null:c.validate||(c.validate=p(s(c.default)))}E[e]=t.visitor,_[e]=t.builder,S[e]=t.fields,A[e]=t.aliases,P[e]=t}t.__esModule=!0,t.DEPRECATED_KEYS=t.BUILDER_KEYS=t.NODE_FIELDS=t.ALIAS_KEYS=t.VISITOR_KEYS=void 0;var h=r(6),d=n(h),y=r(615),v=n(y),m=r(88),g=n(m);t.assertEach=a,t.assertOneOf=o,t.assertNodeType=u,t.assertNodeOrValueType=l,t.assertValueType=p,t.chain=c,t.default=f;var b=r(9),x=i(b),E=t.VISITOR_KEYS={},A=t.ALIAS_KEYS={},S=t.NODE_FIELDS={},_=t.BUILDER_KEYS={},T=t.DEPRECATED_KEYS={},P={}},[6799,1948,4076,1957,505,826,828],[6511,406],[6513,212,58,839,306],[6514,307,842,304],[6521,211,1971,1294,304],[6629,41,837,405,31],285,265,[6571,89],[6466,1,17,11,23],[6466,32,1311,411,33],[6629,34,868,414,24],265,[6571,90],[6575,866,516,315],[6511,415],[6513,216,60,870,320],[6514,321,873,318],[6521,215,2051,1341,318],[6511,419],[6513,220,61,881,324],[6514,325,884,322],[6521,219,2069,1361,322],[6629,42,879,418,35],265,[6571,91],[6511,424],[6513,225,62,901,331],[6514,332,904,329],[6521,224,2117,1395,329],[6629,43,899,423,25],265,[6571,92],[6629,4,652,94,8],285,265,[6571,93],[6511,431],[6513,230,63,938,342],[6514,343,941,340],[6521,229,2209,1451,340],[6629,44,950,435,26],265,[6571,95],[6511,436],[6513,235,64,952,349],[6514,350,955,347],[6521,234,2248,1479,347],[6629,45,976,440,36],265,[6571,96],[6511,441],[6513,240,65,978,356],[6514,357,981,354],[6521,239,2319,1528,354],[6629,38,990,445,37],265,[6571,97],[6511,446],[6513,245,66,992,363],[6514,364,995,361],[6521,244,2358,1556,361],[6466,1,17,11,77],[6668,2429],[6676,2436],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return Array.isArray(e)?"array":null===e?"null":void 0===e?"undefined":"undefined"==typeof e?"undefined":(0,g.default)(e)}function a(e){function t(t,r,i){if(Array.isArray(i))for(var n=0;n<i.length;n++)e(t,r+"["+n+"]",i[n])}return t.each=e,t}function o(){function e(e,t,i){if(r.indexOf(i)<0)throw new TypeError("Property "+t+" expected value to be one of "+(0,v.default)(r)+" but got "+(0,v.default)(i))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOf=r,e}function u(){function e(e,t,i){for(var n=!1,s=r,a=Array.isArray(s),o=0,s=a?s:(0,d.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(x.is(l,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,v.default)(r)+" but instead got "+(0,v.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeTypes=r,e}function l(){function e(e,t,i){for(var n=!1,a=r,o=Array.isArray(a),u=0,a=o?a:(0,d.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var p=l;if(s(i)===p||x.is(p,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,v.default)(r)+" but instead got "+(0,v.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeOrValueTypes=r,e}function p(e){function t(t,r,i){var n=s(i)===e;if(!n)throw new TypeError("Property "+r+" expected type of "+e+" but got "+s(i))}return t.type=e,t}function c(){function e(){for(var e=r,t=Array.isArray(e),i=0,e=t?e:(0,d.default)(e);;){var n;if(t){if(i>=e.length)break;n=e[i++]}else{if(i=e.next(),i.done)break;n=i.value}var s=n;s.apply(void 0,arguments)}}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.chainOf=r,e}function f(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=t.inherits&&P[t.inherits]||{};t.fields=t.fields||r.fields||{},t.visitor=t.visitor||r.visitor||[],t.aliases=t.aliases||r.aliases||[],t.builder=t.builder||r.builder||t.visitor||[],t.deprecatedAlias&&(T[t.deprecatedAlias]=e);for(var i=t.visitor.concat(t.builder),n=Array.isArray(i),a=0,i=n?i:(0,d.default)(i);;){var o;if(n){if(a>=i.length)break;o=i[a++]}else{if(a=i.next(),a.done)break;o=a.value}var u=o;t.fields[u]=t.fields[u]||{}}for(var l in t.fields){var c=t.fields[l];t.builder.indexOf(l)===-1&&(c.optional=!0),void 0===c.default?c.default=null:c.validate||(c.validate=p(s(c.default)))}E[e]=t.visitor,_[e]=t.builder,S[e]=t.fields,A[e]=t.aliases,P[e]=t}t.__esModule=!0,t.DEPRECATED_KEYS=t.BUILDER_KEYS=t.NODE_FIELDS=t.ALIAS_KEYS=t.VISITOR_KEYS=void 0;
+var h=r(1),d=n(h),y=r(17),v=n(y),m=r(11),g=n(m);t.assertEach=a,t.assertOneOf=o,t.assertNodeType=u,t.assertNodeOrValueType=l,t.assertValueType=p,t.chain=c,t.default=f;var b=r(3),x=i(b),E=t.VISITOR_KEYS={},A=t.ALIAS_KEYS={},S=t.NODE_FIELDS={},_=t.BUILDER_KEYS={},T=t.DEPRECATED_KEYS={},P={}},190,[6514,184,1023,181],[6611,6264],function(e,t){function r(e){for(var t=-1,r=e?e.length:0,i=0,n=[];++t<r;){var s=e[t];s&&(n[i++]=s)}return n}e.exports=r},function(e,t){function r(e){return!!e&&"object"==typeof e}e.exports=r},[6862,6333],[6446,1,2,1621,259,1051,15,689,2503,2509,2517,2507,2506,2512,2505,2516,2515,2508,2504],[6585,2834,19,377,1073,1655,2686,2703,1074,1075,18,702,377,1073,1655],[6591,19,46,1656,2730,2734,376,1666,1073,18,702,2687,2693,2701,2691,2690,2696,2689,2700,2699,2692,2688],[6669,2842],[6682,2837,1683],function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},[6532,1089,1087],[6591,5,12,1707,2976,2980,585,1717,1108,7,720,2933,2939,2947,2937,2936,2942,2935,2946,2945,2938,2934],380,[6532,1121,1119],[6591,5,12,1738,3115,3119,476,1757,1136,7,732,3075,3081,3089,3079,3078,3084,3077,3088,3087,3080,3076],285,[6682,3185,1144],380,[6532,1149,1147],[6585,3181,28,391,1163,1776,3235,3252,1164,1166,29,746,391,1163,1776],[6591,28,67,1777,3266,3270,390,1172,1163,29,746,3236,3242,3250,3240,3239,3245,3238,3249,3248,3241,3237],[6682,3360,1801],380,[6532,1178,1176],[6585,3356,40,396,1192,1817,3410,3427,1193,1195,30,761,396,1192,1817],[6591,40,68,1818,3441,3445,395,1201,1192,30,761,3411,3417,3425,3415,3414,3420,3413,3424,3423,3416,3412],[6446,1,2,1853,487,1209,21,775,3561,3567,3575,3565,3564,3570,3563,3574,3573,3566,3562],[6446,1,2,1860,489,1211,22,778,3604,3610,3618,3608,3607,3613,3606,3617,3616,3609,3605],141,[6803,1896,3849,3853,611,3927,1237,801,3806,3812,3820,3810,3809,3815,3808,3819,3818,3811,3807],380,[6532,1253,1251],[6803,1935,4044,4048,502,4138,1268,818,4004,4010,4018,4008,4007,4013,4006,4017,4016,4009,4005],373,[6682,4172,1967],380,[6532,1285,1283],[6585,4168,41,409,1299,1983,4222,4239,1300,1302,31,845,409,1299,1983],[6591,41,69,1984,4253,4257,408,1308,1299,31,845,4223,4229,4237,4227,4226,4232,4225,4236,4235,4228,4224],[6446,1,2,2008,624,1309,23,853,4342,4348,4356,4346,4345,4351,4344,4355,4354,4347,4343],[6821,4389,1313],[6446,32,70,2015,627,1314,33,856,4395,4401,4409,4399,4398,4404,4397,4408,4407,4400,4396],[6591,34,59,2022,4481,4485,513,2032,1316,24,860,4438,4444,4452,4442,4441,4447,4440,4451,4450,4443,4439],[6682,4589,1327],380,[6532,1332,1330],[6868,2064,635,78,1346,877,4642,4648,4656,4646,4645,4651,4644,4655,4654,4647,4643],[6682,4666,4664],380,[6532,1352,1350],[6591,42,71,2083,4767,4771,519,2102,1367,35,887,4727,4733,4741,4731,4730,4736,4729,4740,4739,4732,4728],285,[6682,4872,4870],380,[6532,1386,1384],[6591,43,72,2131,4973,4977,525,2150,1401,25,907,4933,4939,4947,4937,4936,4942,4935,4946,4945,4938,4934],285,183,[6591,4,14,2174,5156,5160,648,937,1424,8,927,5113,5119,5127,5117,5116,5122,5115,5126,5125,5118,5114],[6591,4,14,2180,5216,5220,535,937,1427,8,930,5176,5182,5190,5180,5179,5185,5178,5189,5188,5181,5177],380,[6532,1442,1440],[6591,44,73,2223,5381,5385,540,2242,1458,26,944,5341,5347,5355,5345,5344,5350,5343,5354,5353,5346,5342],285,[6682,5452,5450],380,[6532,1470,1468],[6591,45,74,2295,5669,5673,550,2313,1506,36,970,5629,5635,5643,5633,5632,5638,5631,5642,5641,5634,5630],285,[6682,5740,5738],380,[6532,1519,1517],[6591,38,75,2334,5844,5848,554,2352,1534,37,984,5804,5810,5818,5808,5807,5813,5806,5817,5816,5809,5805],285,[6682,5915,5913],380,[6532,1547,1545],function(e,t,r){e.exports={default:r(2428),__esModule:!0}},[6864,450,1562,2380,5990,6007,1566,1e3,450,1562,2380],[6868,2381,449,6081,1562,1e3,5991,5997,6005,5995,5994,6e3,5993,6004,6003,5996,5992],103,373,380,[6532,1585,1019],[6613,6292],function(e,t,r){"use strict";var i=function(e,t,r,i,n,s,a,o){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[r,i,n,s,a,o],p=0;u=new Error(t.replace(/%s/g,function(){return l[p++]})),u.name="Invariant Violation"}throw u.framesToPop=1,u}};e.exports=i},function(e,t,r){var i=r(2457),n=r(6305),s=r(6390),a=r(1607),o=a(function(e){return e.push(void 0,n),i(s,void 0,e)});e.exports=o},[6793,1605,2473],[6816,6329,1612,571,684],function(e,t){"use strict";function r(e){return 10===e||13===e||8232===e||8233===e}Object.defineProperty(t,"__esModule",{value:!0}),t.isNewLine=r;var i=t.lineBreak=/\r\n?|\n|\u2028|\u2029/;t.lineBreakG=new RegExp(i.source,"g"),t.nonASCIIwhitespace=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/},183,[6536,1641,1642,461],460,[6575,1654,578,1069],83,460,83,285,[6525,1695,1088],460,[6575,1705,584,1104],83,460,83,[6525,1730,1120],[6585,1718,5,385,1136,1737,3074,3091,1137,1138,7,732,385,1136,1737],460,[6580,736,1140,85,3166],[6525,1770,1148],460,[6580,749,1169,86,3339],[6525,1811,1177],460,[6580,764,1198,87,3514],183,[6536,1850,1851,485],[6440,1,397,1209,1852,3560,3577,21,775,397,1209,1852],460,[6440,1,398,1211,1859,3603,3620,22,778,398,1211,1859],460,183,[6536,1872,1873,491],183,[6536,1881,1882,493],460,[6762,3737,3758],103,460,[6762,3875,3897],103,[6525,1927,1252],[6802,403,1268,1934,4003,4020,1269,1276,818,403,1268,1934],460,[6762,4074,4106],[6795,4104,1277,833],[6669,4179],[6525,1977,1284],460,[6580,848,1305,89,4326],460,[6669,2430],460,[6585,4585,34,413,1316,2021,4437,4454,859,1317,24,860,413,1316,2021],460,83,285,[6525,2057,1331],[6525,2075,1351],[6585,4661,42,421,1367,2082,4726,4743,1368,1369,35,887,421,1367,2082],460,[6580,891,1371,91,4818],183,[6536,2112,2113,522],[6525,2123,1385],[6585,4867,43,426,1401,2130,4932,4949,1402,1403,25,907,426,1401,2130],460,[6580,911,1405,92,5024],183,[6536,2160,2161,528],[6511,920],[6521,919,2164,1421,530],[6532,5076,5072],460,460,[6585,2203,4,430,1427,2179,5175,5192,1428,537,8,930,430,1427,2179],460,[6614,2193,1430,165,935,337,2198,5274],[6580,933,1431,93,5264],[6525,2215,1441],[6585,5447,44,433,1458,2222,5340,5357,1459,1460,26,944,433,1458,2222],460,[6580,948,1462,95,5432],[6525,2254,1469],183,[6536,2271,2272,544],183,[6536,2280,2281,546],183,[6536,2291,2292,548],[6585,5735,45,438,1506,2294,5628,5645,1507,1509,36,970,438,1506,2294],460,[6580,974,1511,96,5721],[6525,2325,1518],[6585,5910,38,443,1534,2333,5803,5820,1535,1537,37,984,443,1534,2333],460,[6580,988,1539,97,5896],[6525,2364,1546],[6678,2439],[6726,98,569,78,458,449,1579,3],[6762,6029,6051],103,[6762,6128,6157],[6799,2407,6130,6164,1576,2415,2416],460,function(e,t,r){var i=r(2450),n=r(1584);e.exports=Object.keys||function(e){return i(e,n)}},[6842,6323,6324,2480,76,6407],function(e,t,r){function i(e,t,r,i){r||(r={});for(var s=-1,a=t.length;++s<a;){var o=t[s],u=i?i(r[o],e[o],o,r,e):void 0;n(r,o,void 0===u?e[o]:u)}return r}var n=r(1030);e.exports=i},[6762,6318,6357],[6792,1032],function(e,t){function r(e,t){return e===t||e!==e&&t!==t}e.exports=r},[6502,6412],function(e,t){"use strict";e.exports={filename:{type:"filename",description:"filename to use when reading from stdin - this will be used in source-maps, errors etc",default:"unknown",shorthand:"f"},filenameRelative:{hidden:!0,type:"string"},inputSourceMap:{hidden:!0},env:{hidden:!0,default:{}},mode:{description:"",hidden:!0},retainLines:{type:"boolean",default:!1,description:"retain line numbers - will result in really ugly code"},highlightCode:{description:"enable/disable ANSI syntax highlighting of code frames (on by default)",type:"boolean",default:!0},suppressDeprecationMessages:{type:"boolean",default:!1,hidden:!0},presets:{type:"list",description:"",default:[]},plugins:{type:"list",default:[],description:""},ignore:{type:"list",description:"list of glob paths to **not** compile",default:[]},only:{type:"list",description:"list of glob paths to **only** compile"},code:{hidden:!0,default:!0,type:"boolean"},metadata:{hidden:!0,default:!0,type:"boolean"},ast:{hidden:!0,default:!0,type:"boolean"},extends:{type:"string",hidden:!0},comments:{type:"boolean",default:!0,description:"write comments to generated output (true by default)"},shouldPrintComment:{hidden:!0,description:"optional callback to control whether a comment should be inserted, when this is used the comments option is ignored"},wrapPluginVisitorMethod:{hidden:!0,description:"optional callback to wrap all visitor methods"},compact:{type:"booleanString",default:"auto",description:"do not include superfluous whitespace characters and line terminators [true|false|auto]"},minified:{type:"boolean",default:!1,description:"save as much bytes when printing [true|false]"},sourceMap:{alias:"sourceMaps",hidden:!0},sourceMaps:{type:"booleanString",description:"[true|false|inline]",default:!1,shorthand:"s"},sourceMapTarget:{type:"string",description:"set `file` on returned source map"},sourceFileName:{type:"string",description:"set `sources[0]` on returned source map"},sourceRoot:{type:"filename",description:"the root from which all sources are relative"},babelrc:{description:"Whether or not to look up .babelrc and .babelignore files",type:"boolean",default:!0},sourceType:{description:"",default:"module"},auxiliaryCommentBefore:{type:"string",description:"print a comment before any injected non-user code"},auxiliaryCommentAfter:{type:"string",description:"print a comment after any injected non-user code"},resolveModuleSource:{hidden:!0},getModuleId:{hidden:!0},moduleRoot:{type:"filename",description:"optional prefix for the AMD module formatter that will be prepend to the filename on module definitions"},moduleIds:{type:"boolean",default:!1,shorthand:"M",description:"insert an explicit id for modules"},moduleId:{description:"specify a custom name for module ids",type:"string"},passPerPreset:{description:"Whether to spawn a traversal pass per a preset. By default all presets are merged.",type:"boolean",default:!1,hidden:!0}}},function(e,t,r){(function(i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var a=r(17),o=s(a),u=r(999),l=s(u),p=r(1),c=s(p),f=r(11),h=s(f),d=r(2),y=s(d),v=r(1616),m=n(v),g=r(688),b=s(g),x=r(20),E=n(x),A=r(1047),S=r(1617),_=s(S),T=r(6391),P=s(T),w=r(52),k=s(w),C=r(2493),D=s(C),O=r(572),N=s(O),I=r(1049),F=s(I),B=r(1046),R=s(B),L=r(187),M=s(L),j=function(){function e(t){(0,y.default)(this,e),this.resolvedConfigs=[],this.options=e.createBareOptions(),this.log=t}return e.memoisePluginContainer=function(t,r,i,n){for(var s=e.memoisedPlugins,a=Array.isArray(s),o=0,s=a?s:(0,c.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(l.container===t)return l.plugin}var p=void 0;if(p="function"==typeof t?t(m):t,"object"===("undefined"==typeof p?"undefined":(0,h.default)(p))){var f=new b.default(p,n);return e.memoisedPlugins.push({container:t,plugin:f}),f}throw new TypeError(E.get("pluginNotObject",r,i,"undefined"==typeof p?"undefined":(0,h.default)(p))+r+i)},e.createBareOptions=function(){var e={};for(var t in N.default){var r=N.default[t];e[t]=(0,k.default)(r.default)}return e},e.normalisePlugin=function(t,r,i,n){if(t=t.__esModule?t.default:t,!(t instanceof b.default)){if("function"!=typeof t&&"object"!==("undefined"==typeof t?"undefined":(0,h.default)(t)))throw new TypeError(E.get("pluginNotFunction",r,i,"undefined"==typeof t?"undefined":(0,h.default)(t)));t=e.memoisePluginContainer(t,r,i,n)}return t.init(r,i),t},e.normalisePlugins=function(t,i,n){return n.map(function(n,s){var a=void 0,o=void 0;if(!n)throw new TypeError("Falsy value found in plugins");Array.isArray(n)?(a=n[0],o=n[1]):a=n;var u="string"==typeof a?a:t+"$"+s;if("string"==typeof a){var l=(0,_.default)("babel-plugin-"+a,i)||(0,_.default)(a,i);if(!l)throw new ReferenceError(E.get("pluginUnknown",a,t,s,i));a=r(1618)(l)}return a=e.normalisePlugin(a,t,s,u),[a,o]})},e.prototype.mergeOptions=function(t){var r=this,n=t.options,s=t.extending,a=t.alias,o=t.loc,u=t.dirname;if(a=a||"foreign",n){("object"!==("undefined"==typeof n?"undefined":(0,h.default)(n))||Array.isArray(n))&&this.log.error("Invalid options type for "+a,TypeError);var p=(0,P.default)(n,function(e){if(e instanceof b.default)return e});u=u||i.cwd(),o=o||a;for(var c in p){var f=N.default[c];if(!f&&this.log){var d="Check out http://babeljs.io/docs/usage/options/ for more info";F.default[c]?this.log.error("Using removed Babel 5 option: "+a+"."+c+" - "+F.default[c].message,ReferenceError):this.log.error("Unknown option: "+a+"."+c+". "+d,ReferenceError)}}(0,A.normaliseOptions)(p),p.plugins&&(p.plugins=e.normalisePlugins(o,u,p.plugins)),p.presets&&(p.passPerPreset?p.presets=this.resolvePresets(p.presets,u,function(e,t){r.mergeOptions({options:e,extending:e,alias:t,loc:t,dirname:u})}):(this.mergePresets(p.presets,u),delete p.presets)),n===s?(0,l.default)(s,p):(0,D.default)(s||this.options,p)}},e.prototype.mergePresets=function(e,t){var r=this;this.resolvePresets(e,t,function(e,t){r.mergeOptions({options:e,alias:t,loc:t,dirname:M.default.dirname(t||"")})})},e.prototype.resolvePresets=function(e,t,i){return e.map(function(e){var n=void 0;if(Array.isArray(e)){if(e.length>2)throw new Error("Unexpected extra options "+(0,o.default)(e.slice(2))+" passed to preset.");var s=e;e=s[0],n=s[1]}var a=void 0;if("string"==typeof e){if(a=(0,_.default)("babel-preset-"+e,t)||(0,_.default)(e,t),!a)throw new Error("Couldn't find preset "+(0,o.default)(e)+" relative to directory "+(0,o.default)(t));e=r(1618)(a)}if("object"===("undefined"==typeof e?"undefined":(0,h.default)(e))&&e.buildPreset&&(e=e.buildPreset),"function"!=typeof e&&void 0!==n)throw new Error("Options "+(0,o.default)(n)+" passed to "+(a||"a preset")+" which does not accept options.");if("function"==typeof e&&(e=e(m,n)),"object"!==("undefined"==typeof e?"undefined":(0,h.default)(e)))throw new Error("Unsupported preset format: "+e+".");return i&&i(e),e})},e.prototype.normaliseOptions=function(){var e=this.options;for(var t in N.default){var r=N.default[t],i=e[t];!i&&r.optional||(r.alias?e[r.alias]=e[r.alias]||i:e[t]=i)}},e.prototype.init=function(){for(var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=(0,R.default)(e,this.log),r=Array.isArray(t),i=0,t=r?t:(0,c.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;this.mergeOptions(s)}return this.normaliseOptions(e),this.options},e}();t.default=j,j.memoisedPlugins=[],e.exports=t.default}).call(t,r(10))},[6486,2,105,460],function(e,t){"use strict";function r(e){return e=e.split(" "),function(t){return e.indexOf(t)>=0}}function i(e,t){for(var r=65536,i=0;i<t.length;i+=2){if(r+=t[i],r>e)return!1;if(r+=t[i+1],r>=e)return!0}}function n(e){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&u.test(String.fromCharCode(e)):i(e,p)))}function s(e){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&l.test(String.fromCharCode(e)):i(e,p)||i(e,c))))}Object.defineProperty(t,"__esModule",{value:!0}),t.isIdentifierStart=n,t.isIdentifierChar=s;var a=(t.reservedWords={6:r("enum await"),strict:r("implements interface let package private protected public static yield"),strictBind:r("eval arguments")},t.isKeyword=r("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"),"ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ"),o="·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",u=new RegExp("["+a+"]"),l=new RegExp("["+a+o+"]");a=o=null;var p=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],c=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239]},[6514,1060,1639,694],function(e,t){"use strict";function r(e){return e=e.split(" "),function(t){return e.indexOf(t)>=0}}function i(e,t){for(var r=65536,i=0;i<t.length;i+=2){if(r+=t[i],r>e)return!1;if(r+=t[i+1],r>=e)return!0}}function n(e){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&u.test(String.fromCharCode(e)):i(e,p)))}function s(e){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&l.test(String.fromCharCode(e)):i(e,p)||i(e,c))))}Object.defineProperty(t,"__esModule",{value:!0}),t.isIdentifierStart=n,t.isIdentifierChar=s;var a=(t.reservedWords={6:r("enum await"),strict:r("implements interface let package private protected public static yield"),strictBind:r("eval arguments")},t.isKeyword=r("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"),"ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢲऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ"),o="·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏ᦰ-ᧀᧈᧉ᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷼-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-꣄꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︭︳︴﹍-﹏0-9_",u=new RegExp("["+a+"]"),l=new RegExp("["+a+o+"]");a=o=null;var p=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,99,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,98,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,955,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,38,17,2,24,133,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,32,4,287,47,21,1,2,0,185,46,82,47,21,0,60,42,502,63,32,0,449,56,1288,920,104,110,2962,1070,13266,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,16481,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,1340,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,16355,541],c=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,16,9,83,11,168,11,6,9,8,2,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,316,19,13,9,214,6,3,8,112,16,16,9,82,12,9,9,535,9,20855,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,4305,6,792618,239]},285,577,285,function(e,t){e.exports={}},[6534,1087],577,285,[6585,1718,5,382,1108,1706,2932,2949,1109,1110,7,720,382,1108,1706],577,285,[6667,3019],[6673,3025],581,[6534,1119],577,[6669,3192],581,[6534,1147],577,[6561,1799],[6669,3367],581,[6534,1176],577,[6561,1840],[6514,1205,1848,771],[6486,2,128,488],575,[6486,2,130,490],575,[6514,1216,1870,782],[6514,1223,1879,787],577,[6802,400,1237,1895,3805,3822,1238,1242,801,400,1237,1895],577,[6795,3895,1243,1911],[6799,3873,3876,1907,613,1241,808],[6667,3948],[6673,3954],581,[6534,1251],577,581,[6534,1283],577,[6561,2006],[6440,1,410,1309,2007,4341,4358,23,853,410,1309,2007],[6486,2,147,510],575,[6440,32,412,1314,2014,4394,4411,33,856,412,1314,2014],[6486,70,149,512],575,577,285,[6669,4596],581,[6534,1330],[6864,417,1346,2063,4641,4658,50,877,417,1346,2063],[6669,4673],581,[6534,1350],577,[6514,1377,2110,895],[6669,4879],581,[6534,1384],577,[6514,1411,2158,915],190,577,[6585,2203,4,429,1424,2173,5112,5129,1425,537,8,927,429,1424,2173],577,577,[6561,2202],[6667,5282],[6673,5288],581,[6534,1440],577,[6669,5459],581,[6534,1468],[6514,1487,2269,959],[6514,1494,2278,963],[6514,1501,2289,967],577,[6669,5747],581,[6534,1517],577,[6669,5922],581,[6534,1545],[6672,2433],[6795,6049,1567,2394],[6799,6027,6030,2390,672,1565,1005],[6486,2,180,564],575,[6510,6229],581,[6706,1025,251,369,184,453],[6534,1019],[6541,6250,183,370,677,101],function(e,t){function r(e){var t=e&&e.constructor,r="function"==typeof t&&t.prototype||i;return e===r}var i=Object.prototype;e.exports=r},function(e,t,r){function i(e){var t=n(e)?u.call(e):"";return t==s||t==a}var n=r(103),s="[object Function]",a="[object GeneratorFunction]",o=Object.prototype,u=o.toString;e.exports=i},function(e,t,r){function i(e){return"symbol"==typeof e||n(e)&&o.call(e)==s}var n=r(373),s="[object Symbol]",a=Object.prototype,o=a.toString;e.exports=i},[6801,1608],function(e,t){},function(e,t){function r(e,t,r){if(t in e)return e[t];if(3===arguments.length)return r;throw new Error('"'+t+'" is a required argument.')}function i(e){var t=e.match(v);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function n(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function s(e){var r=e,s=i(e);if(s){if(!s.path)return e;r=s.path}for(var a,o=t.isAbsolute(r),u=r.split(/\/+/),l=0,p=u.length-1;p>=0;p--)a=u[p],"."===a?u.splice(p,1):".."===a?l++:l>0&&(""===a?(u.splice(p+1,l),l=0):(u.splice(p,2),l--));return r=u.join("/"),""===r&&(r=o?"/":"."),s?(s.path=r,n(s)):r}function a(e,t){""===e&&(e="."),""===t&&(t=".");var r=i(t),a=i(e);if(a&&(e=a.path||"/"),r&&!r.scheme)return a&&(r.scheme=a.scheme),n(r);if(r||t.match(m))return t;if(a&&!a.host&&!a.path)return a.host=t,n(a);var o="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return a?(a.path=o,n(a)):o}function o(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var i=e.lastIndexOf("/");if(i<0)return t;if(e=e.slice(0,i),e.match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)}function u(e){return e}function l(e){return c(e)?"$"+e:e}function p(e){return c(e)?e.slice(1):e}function c(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function f(e,t,r){var i=e.source-t.source;return 0!==i?i:(i=e.originalLine-t.originalLine,0!==i?i:(i=e.originalColumn-t.originalColumn,0!==i||r?i:(i=e.generatedColumn-t.generatedColumn,0!==i?i:(i=e.generatedLine-t.generatedLine,0!==i?i:e.name-t.name))))}function h(e,t,r){var i=e.generatedLine-t.generatedLine;return 0!==i?i:(i=e.generatedColumn-t.generatedColumn,0!==i||r?i:(i=e.source-t.source,0!==i?i:(i=e.originalLine-t.originalLine,0!==i?i:(i=e.originalColumn-t.originalColumn,0!==i?i:e.name-t.name))))}function d(e,t){return e===t?0:e>t?1:-1}function y(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r?r:(r=e.generatedColumn-t.generatedColumn,0!==r?r:(r=d(e.source,t.source),0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r?r:d(e.name,t.name)))))}t.getArg=r;var v=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,m=/^data:.+\,.+$/;t.urlParse=i,t.urlGenerate=n,t.normalize=s,t.join=a,t.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(v)},t.relative=o;var g=function(){var e=Object.create(null);return!("__proto__"in e)}();t.toSetString=g?u:l,t.fromSetString=g?u:p,t.compareByOriginalPositions=f,t.compareByGeneratedPositionsDeflated=h,t.compareByGeneratedPositionsInflated=y},function(e,t,r){(function(t){"use strict";function i(e,t){if(e===t)return 0;for(var r=e.length,i=t.length,n=0,s=Math.min(r,i);n<s;++n)if(e[n]!==t[n]){r=e[n],i=t[n];break}return r<i?-1:i<r?1:0}function n(e){return t.Buffer&&"function"==typeof t.Buffer.isBuffer?t.Buffer.isBuffer(e):!(null==e||!e._isBuffer)}function s(e){return Object.prototype.toString.call(e)}function a(e){return!n(e)&&("function"==typeof t.ArrayBuffer&&("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):!!e&&(e instanceof DataView||!!(e.buffer&&e.buffer instanceof ArrayBuffer))))}function o(e){if(x.isFunction(e)){if(S)return e.name;var t=e.toString(),r=t.match(T);return r&&r[1]}}function u(e,t){return"string"==typeof e?e.length<t?e:e.slice(0,t):e}function l(e){if(S||!x.isFunction(e))return x.inspect(e);var t=o(e),r=t?": "+t:"";return"[Function"+r+"]"}function p(e){return u(l(e.actual),128)+" "+e.operator+" "+u(l(e.expected),128)}function c(e,t,r,i,n){throw new _.AssertionError({message:r,actual:e,expected:t,operator:i,stackStartFunction:n})}function f(e,t){e||c(e,!0,t,"==",_.ok)}function h(e,t,r,o){if(e===t)return!0;if(n(e)&&n(t))return 0===i(e,t);if(x.isDate(e)&&x.isDate(t))return e.getTime()===t.getTime();if(x.isRegExp(e)&&x.isRegExp(t))return e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase;if(null!==e&&"object"==typeof e||null!==t&&"object"==typeof t){if(a(e)&&a(t)&&s(e)===s(t)&&!(e instanceof Float32Array||e instanceof Float64Array))return 0===i(new Uint8Array(e.buffer),new Uint8Array(t.buffer));if(n(e)!==n(t))return!1;o=o||{actual:[],expected:[]};var u=o.actual.indexOf(e);return u!==-1&&u===o.expected.indexOf(t)||(o.actual.push(e),o.expected.push(t),y(e,t,r,o))}return r?e===t:e==t}function d(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function y(e,t,r,i){if(null===e||void 0===e||null===t||void 0===t)return!1;if(x.isPrimitive(e)||x.isPrimitive(t))return e===t;if(r&&Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;var n=d(e),s=d(t);if(n&&!s||!n&&s)return!1;if(n)return e=A.call(e),t=A.call(t),h(e,t,r);var a,o,u=P(e),l=P(t);if(u.length!==l.length)return!1;for(u.sort(),l.sort(),o=u.length-1;o>=0;o--)if(u[o]!==l[o])return!1;for(o=u.length-1;o>=0;o--)if(a=u[o],!h(e[a],t[a],r,i))return!1;return!0}function v(e,t,r){h(e,t,!0)&&c(e,t,r,"notDeepStrictEqual",v)}function m(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&t.call({},e)===!0}function g(e){var t;try{e()}catch(e){t=e}return t}function b(e,t,r,i){var n;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(i=r,r=null),n=g(t),i=(r&&r.name?" ("+r.name+").":".")+(i?" "+i:"."),e&&!n&&c(n,r,"Missing expected exception"+i);var s="string"==typeof i,a=!e&&x.isError(n),o=!e&&n&&!r;if((a&&s&&m(n,r)||o)&&c(n,r,"Got unwanted exception"+i),e&&n&&r&&!m(n,r)||!e&&n)throw n}var x=r(48),E=Object.prototype.hasOwnProperty,A=Array.prototype.slice,S=function(){return"foo"===function(){}.name}(),_=e.exports=f,T=/\s*function\s+([^\(\s]*)\s*/;_.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(this),this.generatedMessage=!0);var t=e.stackStartFunction||c;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var i=r.stack,n=o(t),s=i.indexOf("\n"+n);if(s>=0){var a=i.indexOf("\n",s+1);i=i.substring(a+1)}this.stack=i}}},x.inherits(_.AssertionError,Error),_.fail=c,_.ok=f,_.equal=function(e,t,r){e!=t&&c(e,t,r,"==",_.equal)},_.notEqual=function(e,t,r){e==t&&c(e,t,r,"!=",_.notEqual)},_.deepEqual=function(e,t,r){h(e,t,!1)||c(e,t,r,"deepEqual",_.deepEqual)},_.deepStrictEqual=function(e,t,r){h(e,t,!0)||c(e,t,r,"deepStrictEqual",_.deepStrictEqual)},_.notDeepEqual=function(e,t,r){h(e,t,!1)&&c(e,t,r,"notDeepEqual",_.notDeepEqual)},_.notDeepStrictEqual=v,_.strictEqual=function(e,t,r){e!==t&&c(e,t,r,"===",_.strictEqual)},_.notStrictEqual=function(e,t,r){e===t&&c(e,t,r,"!==",_.notStrictEqual)},_.throws=function(e,t,r){b(!0,e,t,r)},_.doesNotThrow=function(e,t,r){b(!1,e,t,r)},_.ifError=function(e){if(e)throw e};var P=Object.keys||function(e){var t=[];for(var r in e)E.call(e,r)&&t.push(r);return t}}).call(t,function(){return this}())},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(1),a=n(s),o=r(2),u=n(o),l=r(100),p=n(l),c=r(99),f=n(c),h=r(573),d=n(h),y=r(20),v=i(y),m=r(1044),g=n(m),b=r(259),x=n(b),E=r(78),A=n(E),S=r(52),_=n(S),T=["enter","exit"],P=function(e){function t(r,i){
+(0,u.default)(this,t);var n=(0,p.default)(this,e.call(this));return n.initialized=!1,n.raw=(0,A.default)({},r),n.key=n.take("name")||i,n.manipulateOptions=n.take("manipulateOptions"),n.post=n.take("post"),n.pre=n.take("pre"),n.visitor=n.normaliseVisitor((0,_.default)(n.take("visitor"))||{}),n}return(0,f.default)(t,e),t.prototype.take=function(e){var t=this.raw[e];return delete this.raw[e],t},t.prototype.chain=function(e,t){if(!e[t])return this[t];if(!this[t])return e[t];var r=[e[t],this[t]];return function(){for(var e=void 0,t=arguments.length,i=Array(t),n=0;n<t;n++)i[n]=arguments[n];for(var s=r,o=Array.isArray(s),u=0,s=o?s:(0,a.default)(s);;){var l;if(o){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var p=l;if(p){var c=p.apply(this,i);null!=c&&(e=c)}}return e}},t.prototype.maybeInherit=function(e){var t=this.take("inherits");t&&(t=d.default.normalisePlugin(t,e,"inherits"),this.manipulateOptions=this.chain(t,"manipulateOptions"),this.post=this.chain(t,"post"),this.pre=this.chain(t,"pre"),this.visitor=x.default.visitors.merge([t.visitor,this.visitor]))},t.prototype.init=function(e,t){if(!this.initialized){this.initialized=!0,this.maybeInherit(e);for(var r in this.raw)throw new Error(v.get("pluginInvalidProperty",e,t,r))}},t.prototype.normaliseVisitor=function(e){for(var t=T,r=Array.isArray(t),i=0,t=r?t:(0,a.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(e[s])throw new Error("Plugins aren't allowed to specify catch-all enter/exit handlers. Please target individual nodes.")}return x.default.explode(e),e},t}(g.default);t.default=P,e.exports=t.default},[6437,558],[6490,2,460],[6491,1628,559,3],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(2605),s=i(n);t.default=function(e){var t=e.messages;return{visitor:{Scope:function(e){var r=e.scope;for(var i in r.bindings){var n=r.bindings[i];if("const"===n.kind||"module"===n.kind)for(var a=n.constantViolations,o=Array.isArray(a),u=0,a=o?a:(0,s.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var p=l;throw p.buildCodeFrameError(t.get("readOnly",i))}}}}}},e.exports=t.default},[6507,1059],[6511,1637],190,581,function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("asyncFunctions")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("flow")}}},e.exports=t.default},[6552,46,107,463],[6490,46,463],function(e,t){function r(e,t){return e="number"==typeof e||i.test(e)?+e:-1,t=null==t?n:t,e>-1&&e%1==0&&e<t}var i=/^\d+$/,n=9007199254740991;e.exports=r},[6582,2838],[6552,46,109,466],[6490,46,466],265,[6575,1664,580,705],[6580,1664,1076,467,2754],[6565,2823],[6580,708,1081,83,2819],[6667,2840],[6510,2852],[6706,716,191,190,272,380],function(e,t){t.f={}.propertyIsEnumerable},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},[6527,272,190,110],function(e,t){var r=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+i).toString(36))}},[6552,12,112,470],[6490,12,470],701,[6582,1720],[6552,12,114,473],[6490,12,473],265,[6575,1715,587,723],[6580,1715,1111,474,3e3],[6510,3031],[6706,731,195,194,276,383],713,714,[6527,276,194,116],716,[6582,1720],[6552,12,118,477],[6490,12,477],[6561,1759],[6565,3169],[6568,1140,1141,85],[6667,3190],[6679,3180],[6510,3202],[6706,745,200,199,283,388],713,714,[6527,283,199,119],716,[6582,3186],[6552,67,121,480],[6490,67,480],[6565,3343],701,[6568,1169,750,86],[6574,1169,286],[6667,3365],[6679,3355],[6510,3377],[6706,760,204,203,291,393],713,714,[6527,291,203,123],716,[6582,3361],[6552,68,125,483],[6490,68,483],[6565,3518],701,[6568,1198,765,87],[6574,1198,294],function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types;return{visitor:{ArrowFunctionExpression:function(e,r){if(r.opts.spec){var i=e.node;if(i.shadow)return;i.shadow={this:!1},i.type="FunctionExpression";var n=t.thisExpression();n._forceShadow=e,e.ensureBlock(),e.get("body").unshiftContainer("body",t.expressionStatement(t.callExpression(r.addHelper("newArrowCheck"),[t.thisExpression(),n]))),e.replaceWith(t.callExpression(t.memberExpression(i,t.identifier("bind")),[t.thisExpression()]))}else e.arrowFunctionToShadowed()}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(3528),s=i(n);t.default=function(e){function t(e,t){for(var i=t.get(e),n=i,a=Array.isArray(n),o=0,n=a?n:(0,s.default)(n);;){var u;if(a){if(o>=n.length)break;u=n[o++]}else{if(o=n.next(),o.done)break;u=o.value}var l=u,p=l.node;if(l.isFunctionDeclaration()){var c=r.variableDeclaration("let",[r.variableDeclarator(p.id,r.toExpression(p))]);c._blockHoist=2,p.id=null,l.replaceWith(c)}}}var r=e.types;return{visitor:{BlockStatement:function(e){var i=e.node,n=e.parent;r.isFunction(n,{body:i})||r.isExportDeclaration(n)||t("body",e)},SwitchCase:function(e){t("consequent",e)}}}},e.exports=t.default},[6507,1204],[6511,1846],190,581,function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return x.isLoop(e.parent)||x.isCatchClause(e.parent)}function a(e){return!!x.isVariableDeclaration(e)&&(!!e[x.BLOCK_SCOPED_SYMBOL]||("let"===e.kind||"const"===e.kind))}function o(e,t,r,i){var n=!(arguments.length<=4||void 0===arguments[4])&&arguments[4];if(t||(t=e.node),!x.isFor(r))for(var s=0;s<t.declarations.length;s++){var a=t.declarations[s];a.init=a.init||i.buildUndefinedNode()}if(t[x.BLOCK_SCOPED_SYMBOL]=!0,t.kind="var",n){var o=i.getFunctionParent(),u=e.getBindingIdentifiers();for(var l in u){var p=i.getOwnBinding(l);p&&(p.kind="var"),i.moveBindingTo(l,o)}}}function u(e){return x.isVariableDeclaration(e,{kind:"var"})&&!a(e)}function l(e){return x.isBreakStatement(e)?"break":x.isContinueStatement(e)?"continue":void 0}t.__esModule=!0;var p=r(98),c=n(p),f=r(16),h=n(f),d=r(2),y=n(d);t.default=function(){return{visitor:{VariableDeclaration:function(e,t){var r=e.node,i=e.parent,n=e.scope;if(a(r)&&(o(e,null,i,n,!0),r._tdzThis)){for(var s=[r],u=0;u<r.declarations.length;u++){var l=r.declarations[u];if(l.init){var p=x.assignmentExpression("=",l.id,l.init);p._ignoreBlockScopingTDZ=!0,s.push(x.expressionStatement(p))}l.init=t.addHelper("temporalUndefined")}r._blockHoist=2,e.isCompletionRecord()&&s.push(x.expressionStatement(n.buildUndefinedNode())),e.replaceWithMultiple(s)}},Loop:function(e,t){var r=e.node,i=e.parent,n=e.scope;x.ensureBlock(r);var s=new F(e,e.get("body"),i,n,t),a=s.run();a&&e.replaceWith(a)},CatchClause:function(e,t){var r=e.parent,i=e.scope,n=new F(null,e.get("body"),r,i,t);n.run()},"BlockStatement|SwitchStatement|Program":function(e,t){if(!s(e)){var r=new F(null,e,e.parent,e.scope,t);r.run()}}}}};var v=r(487),m=n(v),g=r(3558),b=r(21),x=i(b),E=r(2483),A=n(E),S=r(6393),_=n(S),T=r(3559),P=n(T),w=(0,P.default)('\n if (typeof RETURN === "object") return RETURN.v;\n'),k=m.default.visitors.merge([{Function:function(e,t){return e.traverse(C,t),e.skip()}},g.visitor]),C=m.default.visitors.merge([{ReferencedIdentifier:function(e,t){var r=t.letReferences[e.node.name];if(r){var i=e.scope.getBindingIdentifier(e.node.name);i&&i!==r||(t.closurify=!0)}}},g.visitor]),D={enter:function(e,t){var r=e.node,i=e.parent;if(e.isForStatement()){if(u(r.init,r)){var n=t.pushDeclar(r.init);1===n.length?r.init=n[0]:r.init=x.sequenceExpression(n)}}else if(e.isFor())u(r.left,r)&&(t.pushDeclar(r.left),r.left=r.left.declarations[0].id);else if(u(r,i))e.replaceWithMultiple(t.pushDeclar(r).map(function(e){return x.expressionStatement(e)}));else if(e.isFunction())return e.skip()}},O={LabeledStatement:function(e,t){var r=e.node;t.innerLabels.push(r.label.name)}},N={enter:function(e,t){if(e.isAssignmentExpression()||e.isUpdateExpression()){var r=e.getBindingIdentifiers();for(var i in r)t.outsideReferences[i]===e.scope.getBindingIdentifier(i)&&(t.reassignments[i]=!0)}}},I={Loop:function(e,t){var r=t.ignoreLabeless;t.ignoreLabeless=!0,e.traverse(I,t),t.ignoreLabeless=r,e.skip()},Function:function(e){e.skip()},SwitchCase:function(e,t){var r=t.inSwitchCase;t.inSwitchCase=!0,e.traverse(I,t),t.inSwitchCase=r,e.skip()},"BreakStatement|ContinueStatement|ReturnStatement":function(e,t){var r=e.node,i=e.parent,n=e.scope;if(!r[this.LOOP_IGNORE]){var s=void 0,a=l(r);if(a){if(r.label){if(t.innerLabels.indexOf(r.label.name)>=0)return;a=a+"|"+r.label.name}else{if(t.ignoreLabeless)return;if(t.inSwitchCase)return;if(x.isBreakStatement(r)&&x.isSwitchCase(i))return}t.hasBreakContinue=!0,t.map[a]=r,s=x.stringLiteral(a)}e.isReturnStatement()&&(t.hasReturn=!0,s=x.objectExpression([x.objectProperty(x.identifier("v"),r.argument||n.buildUndefinedNode())])),s&&(s=x.returnStatement(s),s[this.LOOP_IGNORE]=!0,e.skip(),e.replaceWith(x.inherits(s,r)))}}},F=function(){function e(t,r,i,n,s){(0,y.default)(this,e),this.parent=i,this.scope=n,this.file=s,this.blockPath=r,this.block=r.node,this.outsideLetReferences=(0,h.default)(null),this.hasLetReferences=!1,this.letReferences=(0,h.default)(null),this.body=[],t&&(this.loopParent=t.parent,this.loopLabel=x.isLabeledStatement(this.loopParent)&&this.loopParent.label,this.loopPath=t,this.loop=t.node)}return e.prototype.run=function(){var e=this.block;if(!e._letDone){e._letDone=!0;var t=this.getLetReferences();if(x.isFunction(this.parent)||x.isProgram(this.block))return void this.updateScopeInfo();if(this.hasLetReferences)return t?this.wrapClosure():this.remap(),this.updateScopeInfo(),this.loopLabel&&!x.isLabeledStatement(this.loopParent)?x.labeledStatement(this.loopLabel,this.loop):void 0}},e.prototype.updateScopeInfo=function(){var e=this.scope,t=e.getFunctionParent(),r=this.letReferences;for(var i in r){var n=r[i],s=e.getBinding(n.name);s&&("let"!==s.kind&&"const"!==s.kind||(s.kind="var",e.moveBindingTo(n.name,t)))}},e.prototype.remap=function(){var e=this.letReferences,t=this.scope;for(var r in e){var i=e[r];(t.parentHasBinding(r)||t.hasGlobal(r))&&(t.hasOwnBinding(r)&&t.rename(i.name),this.blockPath.scope.hasOwnBinding(r)&&this.blockPath.scope.rename(i.name))}},e.prototype.wrapClosure=function(){var e=this.block,t=this.outsideLetReferences;if(this.loop)for(var r in t){var i=t[r];(this.scope.hasGlobal(i.name)||this.scope.parentHasBinding(i.name))&&(delete t[i.name],delete this.letReferences[i.name],this.scope.rename(i.name),this.letReferences[i.name]=i,t[i.name]=i)}this.has=this.checkLoop(),this.hoistVarDeclarations();var n=(0,A.default)(t),s=(0,A.default)(t),a=this.blockPath.isSwitchStatement(),o=x.functionExpression(null,n,x.blockStatement(a?[e]:e.body));o.shadow=!0,this.addContinuations(o);var u=o;this.loop&&(u=this.scope.generateUidIdentifier("loop"),this.loopPath.insertBefore(x.variableDeclaration("var",[x.variableDeclarator(u,o)])));var l=x.callExpression(u,s),p=this.scope.generateUidIdentifier("ret"),c=m.default.hasType(o.body,this.scope,"YieldExpression",x.FUNCTION_TYPES);c&&(o.generator=!0,l=x.yieldExpression(l,!0));var f=m.default.hasType(o.body,this.scope,"AwaitExpression",x.FUNCTION_TYPES);f&&(o.async=!0,l=x.awaitExpression(l)),this.buildClosure(p,l),a?this.blockPath.replaceWithMultiple(this.body):e.body=this.body},e.prototype.buildClosure=function(e,t){var r=this.has;r.hasReturn||r.hasBreakContinue?this.buildHas(e,t):this.body.push(x.expressionStatement(t))},e.prototype.addContinuations=function(e){var t={reassignments:{},outsideReferences:this.outsideLetReferences};this.scope.traverse(e,N,t);for(var r=0;r<e.params.length;r++){var i=e.params[r];if(t.reassignments[i.name]){var n=this.scope.generateUidIdentifier(i.name);e.params[r]=n,this.scope.rename(i.name,n.name,e),e.body.body.push(x.expressionStatement(x.assignmentExpression("=",i,n)))}}},e.prototype.getLetReferences=function(){var e=this.block,t=[];if(this.loop){var r=this.loop.left||this.loop.init;a(r)&&(t.push(r),(0,_.default)(this.outsideLetReferences,x.getBindingIdentifiers(r)))}if(e.body)for(var i=0;i<e.body.length;i++){var n=e.body[i];if(x.isClassDeclaration(n)||x.isFunctionDeclaration(n)||a(n)){var s=this.blockPath.get("body")[i];a(n)&&o(s,null,e,this.scope),t=t.concat(n.declarations||n)}}if(e.cases)for(var u=0;u<e.cases.length;u++)for(var l=e.cases[u].consequent,p=0;p<l.length;p++){var c=l[p];if(x.isClassDeclaration(c)||x.isFunctionDeclaration(c)||a(c)){var f=this.blockPath.get("cases")[u];a(c)&&o(f,c,e,this.scope),t=t.concat(c.declarations||c)}}for(var h=0;h<t.length;h++){var d=t[h],y=x.getBindingIdentifiers(d);(0,_.default)(this.letReferences,y),this.hasLetReferences=!0}if(this.hasLetReferences){var v={letReferences:this.letReferences,closurify:!1,file:this.file};return this.blockPath.traverse(k,v),v.closurify}},e.prototype.checkLoop=function(){var e={hasBreakContinue:!1,ignoreLabeless:!1,inSwitchCase:!1,innerLabels:[],hasReturn:!1,isLoop:!!this.loop,map:{},LOOP_IGNORE:(0,c.default)()};return this.blockPath.traverse(O,e),this.blockPath.traverse(I,e),e},e.prototype.hoistVarDeclarations=function(){this.blockPath.traverse(D,this)},e.prototype.pushDeclar=function(e){var t=[],r=x.getBindingIdentifiers(e);for(var i in r)t.push(x.variableDeclarator(r[i]));this.body.push(x.variableDeclaration(e.kind,t));for(var n=[],s=0;s<e.declarations.length;s++){var a=e.declarations[s];if(a.init){var o=x.assignmentExpression("=",a.id,a.init);n.push(x.inherits(o,a))}}return n},e.prototype.buildHas=function(e,t){var r=this.body;r.push(x.variableDeclaration("var",[x.variableDeclarator(e,t)]));var i=void 0,n=this.has,s=[];if(n.hasReturn&&(i=w({RETURN:e})),n.hasBreakContinue){for(var a in n.map)s.push(x.switchCase(x.stringLiteral(a),[n.map[a]]));if(n.hasReturn&&s.push(x.switchCase(null,[i])),1===s.length){var o=s[0];r.push(x.ifStatement(x.binaryExpression("===",e,o.test),o.consequent[0]))}else{if(this.loop)for(var u=0;u<s.length;u++){var l=s[u].consequent[0];x.isBreakStatement(l)&&!l.label&&(l.label=this.loopLabel=this.loopLabel||this.scope.generateUidIdentifier("loop"))}r.push(x.switchStatement(e,s))}}else n.hasReturn&&r.push(i)},e}();e.exports=t.default},[6437,558],[6490,2,488],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(98),s=i(n);t.default=function(e){var t=e.types,r=(0,s.default)();return{visitor:{ExportDefaultDeclaration:function(e){if(e.get("declaration").isClassDeclaration()){var r=e.node,i=r.declaration.id||e.scope.generateUidIdentifier("class");r.declaration.id=i,e.replaceWith(r.declaration),e.insertAfter(t.exportDefaultDeclaration(i))}},ClassDeclaration:function(e){var r=e.node,i=r.id||e.scope.generateUidIdentifier("class");e.replaceWith(t.variableDeclaration("let",[t.variableDeclarator(i,t.toExpression(r))]))},ClassExpression:function(e,t){var i=e.node;if(!i[r]){var n=(0,c.default)(e);if(n&&n!==i)return e.replaceWith(n);i[r]=!0;var s=l.default;t.opts.loose&&(s=o.default),e.replaceWith(new s(e,t.file).run())}}}}};var a=r(3601),o=i(a),u=r(1858),l=i(u),p=r(691),c=i(p);e.exports=t.default},[6437,558],[6490,2,490],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(3644),s=i(n);t.default=function(e){function t(e){return o.isObjectProperty(e)?e.value:o.isObjectMethod(e)?o.functionExpression(null,e.params,e.body,e.generator,e.async):void 0}function r(e,r,n){"get"===r.kind&&"set"===r.kind?i(e,r,n):n.push(o.expressionStatement(o.assignmentExpression("=",o.memberExpression(e,r.key,r.computed||o.isLiteral(r.key)),t(r))))}function i(e,r){var i=(e.objId,e.body),n=e.getMutatorId,s=e.scope,a=!r.computed&&o.isIdentifier(r.key)?o.stringLiteral(r.key.name):r.key,u=s.maybeGenerateMemoised(a);u&&(i.push(o.expressionStatement(o.assignmentExpression("=",u,a))),a=u),i.push.apply(i,l({MUTATOR_MAP_REF:n(),KEY:a,VALUE:t(r),KIND:o.identifier(r.kind)}))}function n(e){for(var t=e.computedProps,n=Array.isArray(t),a=0,t=n?t:(0,s.default)(t);;){var o;if(n){if(a>=t.length)break;o=t[a++]}else{if(a=t.next(),a.done)break;o=a.value}var u=o;"get"===u.kind||"set"===u.kind?i(e,u):r(e.objId,u,e.body)}}function a(e){for(var n=e.objId,a=e.body,u=e.computedProps,l=e.state,p=u,c=Array.isArray(p),f=0,p=c?p:(0,s.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h,y=o.toComputedKey(d);if("get"===d.kind||"set"===d.kind)i(e,d);else if(o.isStringLiteral(y,{value:"__proto__"}))r(n,d,a);else{if(1===u.length)return o.callExpression(l.addHelper("defineProperty"),[e.initPropExpression,y,t(d)]);a.push(o.expressionStatement(o.callExpression(l.addHelper("defineProperty"),[n,y,t(d)])))}}}var o=e.types,u=e.template,l=u("\n MUTATOR_MAP_REF[KEY] = MUTATOR_MAP_REF[KEY] || {};\n MUTATOR_MAP_REF[KEY].KIND = VALUE;\n ");return{visitor:{ObjectExpression:{exit:function(e,t){for(var r=e.node,i=e.parent,u=e.scope,l=!1,p=r.properties,c=Array.isArray(p),f=0,p=c?p:(0,s.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h;if(l=d.computed===!0)break}if(l){for(var y=[],v=[],m=!1,g=r.properties,b=Array.isArray(g),x=0,g=b?g:(0,s.default)(g);;){var E;if(b){if(x>=g.length)break;E=g[x++]}else{if(x=g.next(),x.done)break;E=x.value}var A=E;A.computed&&(m=!0),m?v.push(A):y.push(A)}var S=u.generateUidIdentifierBasedOnNode(i),_=o.objectExpression(y),T=[];T.push(o.variableDeclaration("var",[o.variableDeclarator(S,_)]));var P=a;t.opts.loose&&(P=n);var w=void 0,k=function(){return w||(w=u.generateUidIdentifier("mutatorMap"),T.push(o.variableDeclaration("var",[o.variableDeclarator(w,o.objectExpression([]))]))),w},C=P({scope:u,objId:S,body:T,computedProps:v,initPropExpression:_,getMutatorId:k,state:t});w&&T.push(o.expressionStatement(o.callExpression(t.addHelper("defineEnumerableProperties"),[S,w]))),C?e.replaceWith(C):(T.push(o.expressionStatement(S)),e.replaceWithMultiple(T))}}}}}},e.exports=t.default},[6507,1215],[6511,1868],190,581,function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(3675),s=i(n),a=r(3674),o=i(a);t.default=function(e){function t(e){for(var t=e.declarations,r=Array.isArray(t),n=0,t=r?t:(0,o.default)(t);;){var s;if(r){if(n>=t.length)break;s=t[n++]}else{if(n=t.next(),n.done)break;s=n.value}var a=s;if(i.isPattern(a.id))return!0}return!1}function r(e){for(var t=e.elements,r=Array.isArray(t),n=0,t=r?t:(0,o.default)(t);;){var s;if(r){if(n>=t.length)break;s=t[n++]}else{if(n=t.next(),n.done)break;s=n.value}var a=s;if(i.isRestElement(a))return!0}return!1}var i=e.types,n={ReferencedIdentifier:function(e,t){t.bindings[e.node.name]&&(t.deopt=!0,e.stop())}},a=function(){function e(t){(0,s.default)(this,e),this.blockHoist=t.blockHoist,this.operator=t.operator,this.arrays={},this.nodes=t.nodes||[],this.scope=t.scope,this.file=t.file,this.kind=t.kind}return e.prototype.buildVariableAssignment=function(e,t){var r=this.operator;i.isMemberExpression(e)&&(r="=");var n=void 0;return n=r?i.expressionStatement(i.assignmentExpression(r,e,t)):i.variableDeclaration(this.kind,[i.variableDeclarator(e,t)]),n._blockHoist=this.blockHoist,n},e.prototype.buildVariableDeclaration=function(e,t){var r=i.variableDeclaration("var",[i.variableDeclarator(e,t)]);return r._blockHoist=this.blockHoist,r},e.prototype.push=function(e,t){i.isObjectPattern(e)?this.pushObjectPattern(e,t):i.isArrayPattern(e)?this.pushArrayPattern(e,t):i.isAssignmentPattern(e)?this.pushAssignmentPattern(e,t):this.nodes.push(this.buildVariableAssignment(e,t))},e.prototype.toArray=function(e,t){return this.file.opts.loose||i.isIdentifier(e)&&this.arrays[e.name]?e:this.scope.toArray(e,t)},e.prototype.pushAssignmentPattern=function(e,t){var r=this.scope.generateUidIdentifierBasedOnNode(t),n=i.variableDeclaration("var",[i.variableDeclarator(r,t)]);n._blockHoist=this.blockHoist,this.nodes.push(n);var s=i.conditionalExpression(i.binaryExpression("===",r,i.identifier("undefined")),e.right,r),a=e.left;if(i.isPattern(a)){var o=i.expressionStatement(i.assignmentExpression("=",r,s));o._blockHoist=this.blockHoist,this.nodes.push(o),this.push(a,r)}else this.nodes.push(this.buildVariableAssignment(a,s))},e.prototype.pushObjectRest=function(e,t,r,n){for(var s=[],a=0;a<e.properties.length;a++){var o=e.properties[a];if(a>=n)break;if(!i.isRestProperty(o)){var u=o.key;i.isIdentifier(u)&&!o.computed&&(u=i.stringLiteral(o.key.name)),s.push(u)}}s=i.arrayExpression(s);var l=i.callExpression(this.file.addHelper("objectWithoutProperties"),[t,s]);this.nodes.push(this.buildVariableAssignment(r.argument,l))},e.prototype.pushObjectProperty=function(e,t){i.isLiteral(e.key)&&(e.computed=!0);var r=e.value,n=i.memberExpression(t,e.key,e.computed);i.isPattern(r)?this.push(r,n):this.nodes.push(this.buildVariableAssignment(r,n))},e.prototype.pushObjectPattern=function(e,t){if(e.properties.length||this.nodes.push(i.expressionStatement(i.callExpression(this.file.addHelper("objectDestructuringEmpty"),[t]))),e.properties.length>1&&!this.scope.isStatic(t)){var r=this.scope.generateUidIdentifierBasedOnNode(t);this.nodes.push(this.buildVariableDeclaration(r,t)),t=r}for(var n=0;n<e.properties.length;n++){var s=e.properties[n];i.isRestProperty(s)?this.pushObjectRest(e,t,s,n):this.pushObjectProperty(s,t)}},e.prototype.canUnpackArrayPattern=function(e,t){if(!i.isArrayExpression(t))return!1;if(!(e.elements.length>t.elements.length)){if(e.elements.length<t.elements.length&&!r(e))return!1;for(var s=e.elements,a=Array.isArray(s),u=0,s=a?s:(0,o.default)(s);;){var l;if(a){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var p=l;if(!p)return!1;if(i.isMemberExpression(p))return!1}for(var c=t.elements,f=Array.isArray(c),h=0,c=f?c:(0,o.default)(c);;){var d;if(f){if(h>=c.length)break;d=c[h++]}else{if(h=c.next(),h.done)break;d=h.value}var y=d;if(i.isSpreadElement(y))return!1}var v=i.getBindingIdentifiers(e),m={deopt:!1,bindings:v};return this.scope.traverse(t,n,m),!m.deopt}},e.prototype.pushUnpackedArrayPattern=function(e,t){for(var r=0;r<e.elements.length;r++){var n=e.elements[r];i.isRestElement(n)?this.push(n.argument,i.arrayExpression(t.elements.slice(r))):this.push(n,t.elements[r])}},e.prototype.pushArrayPattern=function(e,t){if(e.elements){if(this.canUnpackArrayPattern(e,t))return this.pushUnpackedArrayPattern(e,t);var n=!r(e)&&e.elements.length,s=this.toArray(t,n);i.isIdentifier(s)?t=s:(t=this.scope.generateUidIdentifierBasedOnNode(t),this.arrays[t.name]=!0,this.nodes.push(this.buildVariableDeclaration(t,s)));for(var a=0;a<e.elements.length;a++){var o=e.elements[a];if(o){var u=void 0;i.isRestElement(o)?(u=this.toArray(t),a>0&&(u=i.callExpression(i.memberExpression(u,i.identifier("slice")),[i.numericLiteral(a)])),o=o.argument):u=i.memberExpression(t,i.numericLiteral(a),!0),this.push(o,u)}}}},e.prototype.init=function(e,t){if(!i.isArrayExpression(t)&&!i.isMemberExpression(t)){var r=this.scope.maybeGenerateMemoised(t,!0);r&&(this.nodes.push(this.buildVariableDeclaration(r,t)),t=r)}return this.push(e,t),this.nodes},e}();return{visitor:{ExportNamedDeclaration:function(e){var r=e.get("declaration");if(r.isVariableDeclaration()&&t(r.node)){var n=[];for(var s in e.getOuterBindingIdentifiers(e)){var a=i.identifier(s);n.push(i.exportSpecifier(a,a))}e.replaceWith(r.node),e.insertAfter(i.exportNamedDeclaration(null,n))}},ForXStatement:function(e,t){var r=e.node,n=e.scope,s=r.left;if(i.isPattern(s)){var o=n.generateUidIdentifier("ref");return r.left=i.variableDeclaration("var",[i.variableDeclarator(o)]),e.ensureBlock(),void r.body.body.unshift(i.variableDeclaration("var",[i.variableDeclarator(s,o)]))}if(i.isVariableDeclaration(s)){var u=s.declarations[0].id;if(i.isPattern(u)){var l=n.generateUidIdentifier("ref");r.left=i.variableDeclaration(s.kind,[i.variableDeclarator(l,null)]);var p=[],c=new a({kind:s.kind,file:t,scope:n,nodes:p});c.init(u,l),e.ensureBlock();var f=r.body;f.body=p.concat(f.body)}}},CatchClause:function(e,t){var r=e.node,n=e.scope,s=r.param;if(i.isPattern(s)){var o=n.generateUidIdentifier("ref");r.param=o;var u=[],l=new a({kind:"let",file:t,scope:n,nodes:u});l.init(s,o),r.body.body=u.concat(r.body.body)}},AssignmentExpression:function(e,t){var r=e.node,n=e.scope;if(i.isPattern(r.left)){var s=[],o=new a({operator:r.operator,file:t,scope:n,nodes:s}),u=void 0;!e.isCompletionRecord()&&e.parentPath.isExpressionStatement()||(u=n.generateUidIdentifierBasedOnNode(r.right,"ref"),s.push(i.variableDeclaration("var",[i.variableDeclarator(u,r.right)])),i.isArrayExpression(r.right)&&(o.arrays[u.name]=!0)),o.init(r.left,u||r.right),u&&s.push(i.expressionStatement(u)),e.replaceWithMultiple(s)}},VariableDeclaration:function(e,r){var n=e.node,s=e.scope,o=e.parent;if(!i.isForXStatement(o)&&o&&e.container&&t(n)){for(var u=[],l=void 0,p=0;p<n.declarations.length;p++){l=n.declarations[p];var c=l.init,f=l.id,h=new a({blockHoist:n._blockHoist,nodes:u,scope:s,kind:n.kind,file:r});i.isPattern(f)?(h.init(f,c),+p!==n.declarations.length-1&&i.inherits(u[u.length-1],l)):u.push(i.inherits(h.buildVariableAssignment(l.id,l.init),l))}e.replaceWithMultiple(u)}}}}},e.exports=t.default},[6507,1222],[6511,1877],190,581,function(e,t){"use strict";t.__esModule=!0,t.default=function(e){function t(e){var t=e.node,r=e.scope,i=[],n=t.right;if(!a.isIdentifier(n)||!r.hasBinding(n.name)){var s=r.generateUidIdentifier("arr");i.push(a.variableDeclaration("var",[a.variableDeclarator(s,n)])),n=s}var u=r.generateUidIdentifier("i"),l=o({BODY:t.body,KEY:u,ARR:n});a.inherits(l,t),a.ensureBlock(l);var p=a.memberExpression(n,u,!0),c=t.left;return a.isVariableDeclaration(c)?(c.declarations[0].init=p,l.body.body.unshift(c)):l.body.body.unshift(a.expressionStatement(a.assignmentExpression("=",c,p))),e.parentPath.isLabeledStatement()&&(l=a.labeledStatement(e.parentPath.node.label,l)),i.push(l),i}function r(e,t){var r=e.node,i=e.scope,s=r.left,o=void 0,l=void 0;if(a.isIdentifier(s)||a.isPattern(s)||a.isMemberExpression(s))l=s;else{if(!a.isVariableDeclaration(s))throw t.buildCodeFrameError(s,n.get("unknownForHead",s.type));l=i.generateUidIdentifier("ref"),o=a.variableDeclaration(s.kind,[a.variableDeclarator(s.declarations[0].id,l)])}var p=i.generateUidIdentifier("iterator"),c=i.generateUidIdentifier("isArray"),f=u({LOOP_OBJECT:p,IS_ARRAY:c,OBJECT:r.right,INDEX:i.generateUidIdentifier("i"),ID:l});return o||f.body.body.shift(),{declar:o,node:f,loop:f}}function i(e,t){var r=e.node,i=e.scope,s=e.parent,o=r.left,u=void 0,p=i.generateUidIdentifier("step"),c=a.memberExpression(p,a.identifier("value"));if(a.isIdentifier(o)||a.isPattern(o)||a.isMemberExpression(o))u=a.expressionStatement(a.assignmentExpression("=",o,c));else{if(!a.isVariableDeclaration(o))throw t.buildCodeFrameError(o,n.get("unknownForHead",o.type));u=a.variableDeclaration(o.kind,[a.variableDeclarator(o.declarations[0].id,c)])}var f=i.generateUidIdentifier("iterator"),h=l({ITERATOR_HAD_ERROR_KEY:i.generateUidIdentifier("didIteratorError"),ITERATOR_COMPLETION:i.generateUidIdentifier("iteratorNormalCompletion"),ITERATOR_ERROR_KEY:i.generateUidIdentifier("iteratorError"),ITERATOR_KEY:f,STEP_KEY:p,OBJECT:r.right,BODY:null}),d=a.isLabeledStatement(s),y=h[3].block.body,v=y[0];return d&&(y[0]=a.labeledStatement(s.label,v)),{replaceParent:d,declar:u,loop:v,node:h}}var n=e.messages,s=e.template,a=e.types,o=s("\n for (var KEY = 0; KEY < ARR.length; KEY++) BODY;\n "),u=s("\n for (var LOOP_OBJECT = OBJECT,\n IS_ARRAY = Array.isArray(LOOP_OBJECT),\n INDEX = 0,\n LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n var ID;\n if (IS_ARRAY) {\n if (INDEX >= LOOP_OBJECT.length) break;\n ID = LOOP_OBJECT[INDEX++];\n } else {\n INDEX = LOOP_OBJECT.next();\n if (INDEX.done) break;\n ID = INDEX.value;\n }\n }\n "),l=s("\n var ITERATOR_COMPLETION = true;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY = undefined;\n try {\n for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) {\n }\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {\n ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n ");return{visitor:{ForOfStatement:function(e,n){if(e.get("right").isArrayExpression())return e.replaceWithMultiple(t.call(this,e,n));var s=i;n.opts.loose&&(s=r);var o=e.node,u=s(e,n),l=u.declar,p=u.loop,c=p.body;e.ensureBlock(),l&&c.body.push(l),c.body=c.body.concat(o.body.body),a.inherits(p,o),a.inherits(p.body,o.body),u.replaceParent?(e.parentPath.replaceWithMultiple(u.node),e.remove()):e.replaceWithMultiple(u.node)}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(){return{visitor:{"ArrowFunctionExpression|FunctionExpression":{exit:function(e){if("value"!==e.key&&!e.parentPath.isObjectProperty()){var t=(0,s.default)(e);t&&e.replaceWith(t)}}},ObjectProperty:function(e){var t=e.get("value");if(t.isFunction()){var r=(0,s.default)(t);r&&t.replaceWith(r)}}}}};var n=r(3705),s=i(n);e.exports=t.default},[6552,13,132,495],[6490,13,495],[6730,3773,3774,3775,3776,3777],[6740,1233],[6761,3771],[6785,496],[6795,3756,1234,1235],[6497,1236],[6799,1888,3738,3765,798,1231,1232],[6582,1917],[6552,13,134,498],[6490,13,498],[6730,3910,3911,3912,3913,3914],[6740,810],[6755,1239],[6761,3907],681,[6785,499],function(e,t){function r(e,t){return e===t||e!==e&&t!==t}e.exports=r},141,[6510,3960],[6706,817,209,208,301,401],713,714,[6527,301,208,137],716,[6582,1917],[6552,13,139,503],[6490,13,503],[6730,4120,4121,4122,4123,4124],[6740,832],[6755,1273],[6761,4117],function(e,t){function r(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}e.exports=r},function(e,t){function r(e,t){return t=null==t?i:t,!!t&&("number"==typeof e||n.test(e))&&e>-1&&e%1==0&&e<t}var i=9007199254740991,n=/^(?:0|[1-9]\d*)$/;e.exports=r},[6774,141,835],681,[6785,504],function(e,t){function r(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}e.exports=r},[6790,835],810,function(e,t){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=i}var i=9007199254740991;e.exports=r},[6798,141,404],[6497,404],function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{visitor:{NumericLiteral:function(e){var t=e.node;t.extra&&/^0[ob]/i.test(t.extra.raw)&&(t.extra=void 0)},StringLiteral:function(e){var t=e.node;t.extra&&/\\[u]/gi.test(t.extra.raw)&&(t.extra=void 0)}}}},e.exports=t.default},[6667,4177],[6679,4167],[6510,4189],[6706,844,214,213,307,406],713,714,[6527,307,213,142],716,[6582,4173],[6552,69,144,508],[6490,69,508],[6565,4330],701,[6568,1305,849,89],[6574,1305,310],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(39),a=n(s),o=r(16),u=n(o),l=r(1),p=n(l),c=r(98),f=n(c);t.default=function(){var e=(0,f.default)(),t={ReferencedIdentifier:function(e){var t=e.node.name,r=this.remaps[t];r&&this.scope.getBinding(t)===e.scope.getBinding(t)&&(e.parentPath.isCallExpression({callee:e.node})?e.replaceWith(m.sequenceExpression([m.numericLiteral(0),r])):e.replaceWith(r),this.requeueInParent(e))},AssignmentExpression:function(t){var r=t.node;if(!r[e]){var i=t.get("left");if(i.isIdentifier()){var n=i.node.name,s=this.exports[n];if(s&&this.scope.getBinding(n)===t.scope.getBinding(n)){r[e]=!0;for(var a=s,o=Array.isArray(a),u=0,a=o?a:(0,
+p.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;r=A(c,r).expression}t.replaceWith(r),this.requeueInParent(t)}}}},UpdateExpression:function(e){var t=e.get("argument");if(t.isIdentifier()){var r=t.node.name,i=this.exports[r];if(i&&this.scope.getBinding(r)===e.scope.getBinding(r)){var n=m.assignmentExpression(e.node.operator[0]+"=",t.node,m.numericLiteral(1));if(e.parentPath.isExpressionStatement()&&!e.isCompletionRecord()||e.node.prefix)return e.replaceWith(n),void this.requeueInParent(e);var s=[];s.push(n);var a=void 0;a="--"===e.node.operator?"+":"-",s.push(m.binaryExpression(a,t.node,m.numericLiteral(1)));for(var o=e.replaceWithMultiple(m.sequenceExpression(s)),u=o,l=Array.isArray(u),c=0,u=l?u:(0,p.default)(u);;){var f;if(l){if(c>=u.length)break;f=u[c++]}else{if(c=u.next(),c.done)break;f=c.value}var h=f;this.requeueInParent(h)}}}}};return{inherits:r(2373),visitor:{ThisExpression:function(e,t){this.ranCommonJS||t.opts.allowTopLevelThis===!0||e.findParent(function(e){return!e.is("shadow")&&_.indexOf(e.type)>=0})||e.replaceWith(m.identifier("undefined"))},Program:{exit:function(e){function r(t,r){var i=T[t];if(i)return i;var n=e.scope.generateUidIdentifier((0,h.basename)(t,(0,h.extname)(t))),s=m.variableDeclaration("var",[m.variableDeclarator(n,g(m.stringLiteral(t)).expression)]);return f[t]&&(s.loc=f[t].loc),"number"==typeof r&&r>0&&(s._blockHoist=r),v.push(s),T[t]=n}function i(e,t,r){var i=e[t]||[];e[t]=i.concat(r)}this.ranCommonJS=!0;var n=!!this.opts.strict,s=e.scope;s.rename("module"),s.rename("exports"),s.rename("require");for(var o=!1,l=!1,c=e.get("body"),f=(0,u.default)(null),d=(0,u.default)(null),y=(0,u.default)(null),v=[],_=(0,u.default)(null),T=(0,u.default)(null),P=!1,w=c,k=Array.isArray(w),C=0,w=k?w:(0,p.default)(w);;){var D;if(k){if(C>=w.length)break;D=w[C++]}else{if(C=w.next(),C.done)break;D=C.value}var O=D;if(O.isExportDeclaration()){o=!0;for(var N=[].concat(O.get("declaration"),O.get("specifiers")),I=N,F=Array.isArray(I),B=0,I=F?I:(0,p.default)(I);;){var R;if(F){if(B>=I.length)break;R=I[B++]}else{if(B=I.next(),B.done)break;R=B.value}var L=R,M=L.getBindingIdentifiers();if(M.__esModule)throw L.buildCodeFrameError('Illegal export "__esModule"')}}if(O.isImportDeclaration()){var j;l=!0;var V=O.node.source.value,U=f[V]||{specifiers:[],maxBlockHoist:0,loc:O.node.loc};(j=U.specifiers).push.apply(j,O.node.specifiers),"number"==typeof O.node._blockHoist&&(U.maxBlockHoist=Math.max(O.node._blockHoist,U.maxBlockHoist)),f[V]=U,O.remove()}else if(O.isExportDefaultDeclaration()){if(P)throw O.buildCodeFrameError("Only one default export allowed per module.");var Y=O.get("declaration");if(Y.isFunctionDeclaration()){var K=Y.node.id,W=m.identifier("default");K?(i(d,K.name,W),v.push(A(W,K)),O.replaceWith(Y.node)):(v.push(A(W,m.toExpression(Y.node))),O.remove())}else if(Y.isClassDeclaration()){var G=Y.node.id,q=m.identifier("default");G?(i(d,G.name,q),O.replaceWithMultiple([Y.node,A(q,G)])):O.replaceWith(A(q,m.toExpression(Y.node)))}else O.replaceWith(A(m.identifier("default"),Y.node)),O.parentPath.requeue(O.get("expression.left"));P=!0}else if(O.isExportNamedDeclaration()){var H=O.get("declaration");if(H.node){if(H.isFunctionDeclaration()){var X=H.node.id;i(d,X.name,X),v.push(A(X,X)),O.replaceWith(H.node)}else if(H.isClassDeclaration()){var J=H.node.id;i(d,J.name,J),O.replaceWithMultiple([H.node,A(J,J)]),y[J.name]=!0}else if(H.isVariableDeclaration()){for(var $=H.get("declarations"),z=$,Q=Array.isArray(z),Z=0,z=Q?z:(0,p.default)(z);;){var ee;if(Q){if(Z>=z.length)break;ee=z[Z++]}else{if(Z=z.next(),Z.done)break;ee=Z.value}var te=ee,re=te.get("id"),ie=te.get("init");ie.node||ie.replaceWith(m.identifier("undefined")),re.isIdentifier()&&(i(d,re.node.name,re.node),ie.replaceWith(A(re.node,ie.node).expression),y[re.node.name]=!0)}O.replaceWith(H.node)}continue}var ne=O.get("specifiers"),se=[],ae=O.node.source;if(ae)for(var oe=r(ae.value,O.node._blockHoist),ue=ne,le=Array.isArray(ue),pe=0,ue=le?ue:(0,p.default)(ue);;){var ce;if(le){if(pe>=ue.length)break;ce=ue[pe++]}else{if(pe=ue.next(),pe.done)break;ce=pe.value}var fe=ce;fe.isExportNamespaceSpecifier()||fe.isExportDefaultSpecifier()||fe.isExportSpecifier()&&("default"===fe.node.local.name?v.push(x(m.stringLiteral(fe.node.exported.name),m.memberExpression(m.callExpression(this.addHelper("interopRequireDefault"),[oe]),fe.node.local))):v.push(x(m.stringLiteral(fe.node.exported.name),m.memberExpression(oe,fe.node.local))),y[fe.node.exported.name]=!0)}else for(var he=ne,de=Array.isArray(he),ye=0,he=de?he:(0,p.default)(he);;){var ve;if(de){if(ye>=he.length)break;ve=he[ye++]}else{if(ye=he.next(),ye.done)break;ve=ye.value}var me=ve;me.isExportSpecifier()&&(i(d,me.node.local.name,me.node.exported),y[me.node.exported.name]=!0,se.push(A(me.node.exported,me.node.local)))}O.replaceWithMultiple(se)}else if(O.isExportAllDeclaration()){var ge=S({OBJECT:r(O.node.source.value,O.node._blockHoist)});ge.loc=O.node.loc,v.push(ge),O.remove()}}for(var be in f){var xe=f[be],N=xe.specifiers,Ee=xe.maxBlockHoist;if(N.length){for(var Ae=r(be,Ee),Se=void 0,_e=0;_e<N.length;_e++){var Te=N[_e];if(m.isImportNamespaceSpecifier(Te)){if(n)_[Te.local.name]=Ae;else{var Pe=m.variableDeclaration("var",[m.variableDeclarator(Te.local,m.callExpression(this.addHelper("interopRequireWildcard"),[Ae]))]);Ee>0&&(Pe._blockHoist=Ee),v.push(Pe)}Se=Te.local}else m.isImportDefaultSpecifier(Te)&&(N[_e]=m.importSpecifier(Te.local,m.identifier("default")))}for(var we=N,ke=Array.isArray(we),Ce=0,we=ke?we:(0,p.default)(we);;){var De;if(ke){if(Ce>=we.length)break;De=we[Ce++]}else{if(Ce=we.next(),Ce.done)break;De=Ce.value}var Oe=De;if(m.isImportSpecifier(Oe)){var Ne=Ae;if("default"===Oe.imported.name)if(Se)Ne=Se;else{Ne=Se=e.scope.generateUidIdentifier(Ae.name);var Ie=m.variableDeclaration("var",[m.variableDeclarator(Ne,m.callExpression(this.addHelper("interopRequireDefault"),[Ae]))]);Ee>0&&(Ie._blockHoist=Ee),v.push(Ie)}_[Oe.local.name]=m.memberExpression(Ne,m.cloneWithoutLoc(Oe.imported))}}}else{var Fe=g(m.stringLiteral(be));Fe.loc=f[be].loc,v.push(Fe)}}if(l&&(0,a.default)(y).length){var Be=m.identifier("undefined");for(var Re in y)Be=A(m.identifier(Re),Be).expression;var Le=m.expressionStatement(Be);Le._blockHoist=3,v.unshift(Le)}if(o&&!n){var Me=b;this.opts.loose&&(Me=E);var je=Me();je._blockHoist=3,v.unshift(je)}e.unshiftContainer("body",v),e.traverse(t,{remaps:_,scope:s,exports:d,requeueInParent:function(t){return e.requeue(t)}})}}}}};var h=r(187),d=r(4340),y=n(d),v=r(23),m=i(v),g=(0,y.default)("\n require($0);\n"),b=(0,y.default)('\n Object.defineProperty(exports, "__esModule", {\n value: true\n });\n'),x=(0,y.default)("\n Object.defineProperty(exports, $0, {\n enumerable: true,\n get: function () {\n return $1;\n }\n });\n"),E=(0,y.default)("\n exports.__esModule = true;\n"),A=(0,y.default)("\n exports.$0 = $1;\n"),S=(0,y.default)('\n Object.keys(OBJECT).forEach(function (key) {\n if (key === "default" || key === "__esModule") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return OBJECT[key];\n }\n });\n });\n'),_=["FunctionExpression","FunctionDeclaration","ClassProperty","ClassMethod","ObjectMethod"];e.exports=t.default},[6437,558],[6490,2,510],[6818,4384],[6437,4390],[6490,70,512],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(34),s=i(n),a=r(1327),o=i(a);t.default=function(e){function t(e,t,r,i,n){var s=new l.default({getObjectRef:i,methodNode:t,methodPath:e,isStatic:!0,scope:r,file:n});s.replace()}var r=e.types,i=(0,o.default)();return{visitor:{Super:function(e){var t=e.findParent(function(e){return e.isObjectExpression()});t&&(t.node[i]=!0)},ObjectExpression:{exit:function(e,n){if(e.node[i]){for(var a=void 0,o=function(){return a=a||e.scope.generateUidIdentifier("obj")},u=e.get("properties"),l=u,p=Array.isArray(l),c=0,l=p?l:(0,s.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;h.isObjectProperty()&&(h=h.get("value")),t(h,h.node,e.scope,o,n)}a&&(e.scope.push({id:a}),e.replaceWith(r.assignmentExpression("=",a,e.node)))}}}}}};var u=r(4435),l=i(u);e.exports=t.default},[6504,868],[6582,4590],[6552,59,151,514],[6490,59,514],265,[6575,2030,631,863],[6580,2030,1318,515,4505],[6565,4574],[6580,866,1323,90,4570],[6667,4594],[6679,4584],[6510,4606],[6706,875,218,217,321,415],713,714,[6527,321,217,152],716,function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(1),a=n(s);t.default=function(){return{visitor:o.visitors.merge([{ArrowFunctionExpression:function(e){for(var t=e.get("params"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,a.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var o=s;if(o.isRestElement()||o.isAssignmentPattern()){e.arrowFunctionToShadowed();break}}}},l.visitor,h.visitor,c.visitor])}};var o=r(635),u=r(4639),l=i(u),p=r(4638),c=i(p),f=r(4640),h=i(f);e.exports=t.default},[6437,558],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.default=function(){return{visitor:{ObjectMethod:function(e){var t=e.node;"method"===t.kind&&e.replaceWith(s.objectProperty(t.key,s.functionExpression(null,t.params,t.body,t.generator,t.async),t.computed))},ObjectProperty:function(e){var t=e.node;t.shorthand&&(t.shorthand=!1)}}}};var n=r(35),s=i(n);e.exports=t.default},[6667,4671],[6679,4660],[6510,4683],[6706,886,222,221,325,419],713,714,[6527,325,221,153],716,[6582,4667],[6552,71,155,520],[6490,71,520],[6561,2104],[6565,4821],[6568,1371,1372,91],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(4831),s=i(n);t.default=function(e){function t(e,t,r){return r.opts.loose&&!n.isIdentifier(e.argument,{name:"arguments"})?e.argument:t.toArray(e.argument,!0)}function r(e){for(var t=0;t<e.length;t++)if(n.isSpreadElement(e[t]))return!0;return!1}function i(e,r,i){function a(){u.length&&(o.push(n.arrayExpression(u)),u=[])}for(var o=[],u=[],l=e,p=Array.isArray(l),c=0,l=p?l:(0,s.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;n.isSpreadElement(h)?(a(),o.push(t(h,r,i))):u.push(h)}return a(),o}var n=e.types;return{visitor:{ArrayExpression:function(e,t){var s=e.node,a=e.scope,o=s.elements;if(r(o)){var u=i(o,a,t),l=u.shift();n.isArrayExpression(l)||(u.unshift(l),l=n.arrayExpression([])),e.replaceWith(n.callExpression(n.memberExpression(l,n.identifier("concat")),u))}},CallExpression:function(e,t){var s=e.node,a=e.scope,o=s.arguments;if(r(o)){var u=e.get("callee");if(!u.isSuper()){var l=n.identifier("undefined");s.arguments=[];var p=void 0;p=1===o.length&&"arguments"===o[0].argument.name?[o[0].argument]:i(o,a,t);var c=p.shift();p.length?s.arguments.push(n.callExpression(n.memberExpression(c,n.identifier("concat")),p)):s.arguments.push(c);var f=s.callee;if(u.isMemberExpression()){var h=a.maybeGenerateMemoised(f.object);h?(f.object=n.assignmentExpression("=",h,f.object),l=h):l=f.object,n.appendToMemberExpression(f,n.identifier("apply"))}else s.callee=n.memberExpression(s.callee,n.identifier("apply"));n.isSuper(l)&&(l=n.thisExpression()),s.arguments.unshift(l)}}},NewExpression:function(e,t){var s=e.node,a=e.scope,o=s.arguments;if(r(o)){var u=i(o,a,t),l=n.arrayExpression([n.nullLiteral()]);o=n.callExpression(n.memberExpression(l,n.identifier("concat")),u),e.replaceWith(n.newExpression(n.callExpression(n.memberExpression(n.memberExpression(n.memberExpression(n.identifier("Function"),n.identifier("prototype")),n.identifier("bind")),n.identifier("apply")),[s.callee,o]),[]))}}}}},e.exports=t.default},[6507,1376],[6511,2108],190,581,function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.default=function(){return{visitor:{RegExpLiteral:function(e){var t=e.node;s.is(t,"y")&&e.replaceWith(o.newExpression(o.identifier("RegExp"),[o.stringLiteral(t.pattern),o.stringLiteral(t.flags)]))}}}};var n=r(4861),s=i(n),a=r(25),o=i(a);e.exports=t.default},[6667,4877],[6679,4866],[6510,4889],[6706,906,227,226,332,424],713,714,[6527,332,226,156],716,[6582,4873],[6552,72,158,526],[6490,72,526],[6561,2152],[6565,5027],[6568,1405,1406,92],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(5037),s=i(n);t.default=function(e){function t(e){return i.isLiteral(e)&&"string"==typeof e.value}function r(e,t){return i.binaryExpression("+",e,t)}var i=e.types;return{visitor:{TaggedTemplateExpression:function(e,t){for(var r=e.node,n=r.quasi,a=[],o=[],u=[],l=n.quasis,p=Array.isArray(l),c=0,l=p?l:(0,s.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;o.push(i.stringLiteral(h.value.cooked)),u.push(i.stringLiteral(h.value.raw))}o=i.arrayExpression(o),u=i.arrayExpression(u);var d="taggedTemplateLiteral";t.opts.loose&&(d+="Loose");var y=t.file.addTemplateObject(d,o,u);a.push(y),a=a.concat(n.expressions),e.replaceWith(i.callExpression(r.tag,a))},TemplateLiteral:function(e,n){for(var a=[],o=e.get("expressions"),u=e.node.quasis,l=Array.isArray(u),p=0,u=l?u:(0,s.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;a.push(i.stringLiteral(f.value.cooked));var h=o.shift();h&&(!n.opts.spec||h.isBaseType("string")||h.isBaseType("number")?a.push(h.node):a.push(i.callExpression(i.identifier("String"),[h.node])))}if(a=a.filter(function(e){return!i.isLiteral(e,{value:""})}),t(a[0])||t(a[1])||a.unshift(i.stringLiteral("")),a.length>1){for(var d=r(a.shift(),a.shift()),y=a,v=Array.isArray(y),m=0,y=v?y:(0,s.default)(y);;){var g;if(v){if(m>=y.length)break;g=y[m++]}else{if(m=y.next(),m.done)break;g=m.value}var b=g;d=r(d,b)}e.replaceWith(d)}else e.replaceWith(a[0])}}}},e.exports=t.default},[6507,1410],[6511,2156],190,581,function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(5067),s=i(n);t.default=function(e){var t=e.types,r=(0,s.default)();return{visitor:{Scope:function(e){var t=e.scope;t.getBinding("Symbol")&&t.rename("Symbol")},UnaryExpression:function(e){var i=e.node,n=e.parent;if(!i[r]&&!e.find(function(e){return e.node&&!!e.node._generated})){if(e.parentPath.isBinaryExpression()&&t.EQUALITY_BINARY_OPERATORS.indexOf(n.operator)>=0){var s=e.getOpposite();if(s.isLiteral()&&"symbol"!==s.node.value&&"object"!==s.node.value)return}if("typeof"===i.operator){var a=t.callExpression(this.addHelper("typeof"),[i.argument]);if(e.get("argument").isIdentifier()){var o=t.stringLiteral("undefined"),u=t.unaryExpression("typeof",i.argument);u[r]=!0,e.replaceWith(t.conditionalExpression(t.binaryExpression("===",u,o),o,a))}else e.replaceWith(a)}}}}}},e.exports=t.default},[6507,921],380,191,[6525,2168,1416],716,function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(){return{visitor:{RegExpLiteral:function(e){var t=e.node;u.is(t,"u")&&(t.pattern=(0,a.default)(t.pattern,t.flags),u.pullFlag(t,"u"))}}}};var s=r(6422),a=n(s),o=r(2573),u=i(o);e.exports=t.default},[6552,14,160,533],[6490,14,533],[6582,2205],[6552,14,162,534],[6490,14,534],[6582,2205],[6552,14,164,536],[6490,14,536],[6565,5268],701,[6568,1431,934,93],[6574,1431,338],[6578,5234,2189,5250],[6510,5294],[6706,943,232,231,343,431],713,714,[6527,343,231,167],716,[6582,5453],[6552,73,169,541],[6490,73,541],[6561,2244],[6565,5435],[6568,1462,1463,95],[6667,5457],[6679,5446],[6510,5469],[6706,957,237,236,350,436],713,714,[6527,350,236,170],716,[6507,1486],[6511,2267],190,581,[6507,1493],[6511,2276],190,581,[6507,1500],[6511,2287],190,581,[6582,5741],[6552,74,172,551],[6490,74,551],[6561,2315],[6565,5724],[6568,1511,1512,96],[6667,5745],[6679,5734],[6510,5757],[6706,983,242,241,357,441],713,714,[6527,357,241,173],716,[6582,5916],[6552,75,175,555],[6490,75,555],[6561,2354],[6565,5899],[6568,1539,1540,97],[6667,5920],[6679,5909],[6510,5932],[6706,997,247,246,364,446],713,714,[6527,364,246,176],716,function(e,t,r){"use strict";t.__esModule=!0,t.default=function(){return r(5967)},e.exports=t.default},function(e,t,r){e.exports={default:r(6227),__esModule:!0}},[6437,558],[6730,6064,6065,6066,6067,6068],[6740,1007],[6755,1563],[6761,6061],681,[6785,560],810,141,[6730,6171,6172,6173,6174,6175],[6740,2421],[6761,6169],825,[6774,178,1578],[6785,562],830,[6790,1578],833,[6490,2,564],function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},[6701,676,6240,6239,250,1594,2452],function(e,t,r){var i=r(250),n=r(6243),s=r(1584),a=r(1591)("IE_PROTO"),o=function(){},u="prototype",l=function(){var e,t=r(2442)("iframe"),i=s.length,n="<",a=">";for(t.style.display="none",r(6238).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(n+"script"+a+"document.F=Object"+n+"/script"+a),e.close(),l=e.F;i--;)delete l[u][s[i]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(o[u]=i(e),r=new o,o[u]=null,r[a]=e):r=l(),void 0===t?r:n(r,t)}},713,714,[6527,184,369,101],716,685,[6730,6370,6371,6372,6373,6374],[6735,1027,6382,6383,6384,6385,6386],[6736,186],[6739,570],[6740,570],function(e,t,r){function i(e,t,r,A,S,_,T){var k;if(A&&(k=_?A(e,S,_,T):A(e)),void 0!==k)return k;if(!b(e))return e;var C=v(e);if(C){if(k=h(e),!t)return l(e,k)}else{var O=f(e),N=O==P||O==w;if(m(e))return u(e,t);if(O==D||O==E||N&&!_){if(g(e))return _?e:{};if(k=y(N?{}:e),!t)return p(e,o(k,e))}else{if(!H[O])return _?e:{};k=d(e,O,i,t)}}T||(T=new n);var I=T.get(e);if(I)return I;if(T.set(e,k),!C)var F=r?c(e):x(e);return s(F||e,function(n,s){F&&(s=n,n=e[s]),a(k,s,i(n,t,r,A,s,e,T))}),k}var n=r(1028),s=r(1602),a=r(1030),o=r(6306),u=r(6338),l=r(2467),p=r(6347),c=r(6354),f=r(2472),h=r(6363),d=r(6364),y=r(6365),v=r(76),m=r(6401),g=r(1035),b=r(103),x=r(256),E="[object Arguments]",A="[object Array]",S="[object Boolean]",_="[object Date]",T="[object Error]",P="[object Function]",w="[object GeneratorFunction]",k="[object Map]",C="[object Number]",D="[object Object]",O="[object RegExp]",N="[object Set]",I="[object String]",F="[object Symbol]",B="[object WeakMap]",R="[object ArrayBuffer]",L="[object DataView]",M="[object Float32Array]",j="[object Float64Array]",V="[object Int8Array]",U="[object Int16Array]",Y="[object Int32Array]",K="[object Uint8Array]",W="[object Uint8ClampedArray]",G="[object Uint16Array]",q="[object Uint32Array]",H={};H[E]=H[A]=H[R]=H[L]=H[S]=H[_]=H[M]=H[j]=H[V]=H[U]=H[Y]=H[k]=H[C]=H[D]=H[O]=H[N]=H[I]=H[F]=H[K]=H[W]=H[G]=H[q]=!0,H[T]=H[P]=H[B]=!1,e.exports=i},function(e,t,r){function i(e){return n(function(t,r){var i=-1,n=r.length,a=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(a=e.length>3&&"function"==typeof a?(n--,a):void 0,o&&s(r[0],r[1],o)&&(a=n<3?void 0:a,n=1),t=Object(t);++i<n;){var u=r[i];u&&e(t,u,i,a)}return t})}var n=r(1607),s=r(1612);e.exports=i},[6761,6367],825,826,[6774,76,683],[6785,568],830,[6790,683],function(e,t,r){function i(e){return n(e)&&o.call(e,"callee")&&(!l.call(e,"callee")||u.call(e)==s)}var n=r(2481),s="[object Arguments]",a=Object.prototype,o=a.hasOwnProperty,u=a.toString,l=a.propertyIsEnumerable;e.exports=i},833,[6815,6322,2474,1036,681],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(448),s=i(n),a=r(2),o=i(a),u=r(100),l=i(u),p=r(99),c=i(p),f=function(e){function t(){(0,o.default)(this,t);var r=(0,l.default)(this,e.call(this));return r.dynamicData={},r}return(0,c.default)(t,e),t.prototype.setDynamic=function(e,t){this.dynamicData[e]=t},t.prototype.get=function(t){if(this.has(t))return e.prototype.get.call(this,t);if(Object.prototype.hasOwnProperty.call(this.dynamicData,t)){var r=this.dynamicData[t]();return this.set(t,r),r}},t}(s.default);t.default=f,e.exports=t.default},function(e,t,r){(function(e){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.File=void 0;var s=r(11),a=n(s),o=r(1),u=n(o),l=r(16),p=n(l),c=r(999),f=n(c),h=r(2),d=n(h),y=r(100),v=n(y),m=r(99),g=n(m),b=r(1633),x=n(b),E=r(2497),A=i(E),S=r(6226),_=n(S),T=r(573),P=n(T),w=r(2501),k=n(w),C=r(6426),D=n(C),O=r(259),N=n(O),I=r(2490),F=n(I),B=r(1625),R=n(B),L=r(258),M=n(L),j=r(457),V=n(j),U=r(2496),Y=n(U),K=r(1044),W=n(K),G=r(1053),q=r(1050),H=i(q),X=r(187),J=n(X),$=r(15),z=i($),Q=r(2498),Z=n(Q),ee=r(2499),te=n(ee),re=[[Z.default],[te.default]],ie={enter:function(e,t){var r=e.node.loc;r&&(t.loc=r,e.stop())}},ne=function(t){function r(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],i=arguments[1];(0,d.default)(this,r);var n=(0,v.default)(this,t.call(this));return n.pipeline=i,n.log=new Y.default(n,e.filename||"unknown"),n.opts=n.initOptions(e),n.parserOpts={highlightCode:n.opts.highlightCode,nonStandard:n.opts.nonStandard,sourceType:n.opts.sourceType,filename:n.opts.filename,plugins:[]},n.pluginVisitors=[],n.pluginPasses=[],n.buildPluginsForOptions(n.opts),n.opts.passPerPreset&&(n.perPresetOpts=[],n.opts.presets.forEach(function(e){var t=(0,f.default)((0,p.default)(n.opts),e);n.perPresetOpts.push(t),n.buildPluginsForOptions(t)})),n.metadata={usedHelpers:[],marked:[],modules:{imports:[],exports:{exported:[],specifiers:[]}}},n.dynamicImportTypes={},n.dynamicImportIds={},n.dynamicImports=[],n.declarations={},n.usedHelpers={},n.path=null,n.ast={},n.code="",n.shebang="",n.hub=new O.Hub(n),n}return(0,g.default)(r,t),r.prototype.getMetadata=function(){for(var e=!1,t=this.ast.program.body,r=Array.isArray(t),i=0,t=r?t:(0,u.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(z.isModuleDeclaration(s)){e=!0;break}}e&&this.path.traverse(A,this)},r.prototype.initOptions=function(e){e=new P.default(this.log,this.pipeline).init(e),e.inputSourceMap&&(e.sourceMaps=!0),e.moduleId&&(e.moduleIds=!0),e.basename=J.default.basename(e.filename,J.default.extname(e.filename)),e.ignore=H.arrayify(e.ignore,H.regexify),e.only&&(e.only=H.arrayify(e.only,H.regexify)),(0,V.default)(e,{moduleRoot:e.sourceRoot}),(0,V.default)(e,{sourceRoot:e.moduleRoot}),(0,V.default)(e,{filenameRelative:e.filename});var t=J.default.basename(e.filenameRelative);return(0,V.default)(e,{sourceFileName:t,sourceMapTarget:t}),e},r.prototype.buildPluginsForOptions=function(e){if(Array.isArray(e.plugins)){for(var t=e.plugins.concat(re),r=[],i=[],n=t,s=Array.isArray(n),a=0,n=s?n:(0,u.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var l=o,p=l[0],c=l[1];r.push(p.visitor),i.push(new k.default(this,p,c)),p.manipulateOptions&&p.manipulateOptions(e,this.parserOpts,this)}this.pluginVisitors.push(r),this.pluginPasses.push(i)}},r.prototype.getModuleName=function(){var e=this.opts;if(!e.moduleIds)return null;if(null!=e.moduleId&&!e.getModuleId)return e.moduleId;var t=e.filenameRelative,r="";if(null!=e.moduleRoot&&(r=e.moduleRoot+"/"),!e.filenameRelative)return r+e.filename.replace(/^\//,"");if(null!=e.sourceRoot){var i=new RegExp("^"+e.sourceRoot+"/?");t=t.replace(i,"")}return t=t.replace(/\.(\w*?)$/,""),r+=t,r=r.replace(/\\/g,"/"),e.getModuleId?e.getModuleId(r)||r:r},r.prototype.resolveModuleSource=function e(t){var e=this.opts.resolveModuleSource;return e&&(t=e(t,this.opts.filename)),t},r.prototype.addImport=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?t:arguments[2],i=e+":"+t,n=this.dynamicImportIds[i];if(!n){e=this.resolveModuleSource(e),n=this.dynamicImportIds[i]=this.scope.generateUidIdentifier(r);var s=[];"*"===t?s.push(z.importNamespaceSpecifier(n)):"default"===t?s.push(z.importDefaultSpecifier(n)):s.push(z.importSpecifier(n,z.identifier(t)));var a=z.importDeclaration(s,z.stringLiteral(e));a._blockHoist=3,this.path.unshiftContainer("body",a)}return n},r.prototype.addHelper=function(e){var t=this.declarations[e];if(t)return t;this.usedHelpers[e]||(this.metadata.usedHelpers.push(e),this.usedHelpers[e]=!0);var r=this.get("helperGenerator"),i=this.get("helpersNamespace");if(r){var n=r(e);if(n)return n}else if(i)return z.memberExpression(i,z.identifier(e));var s=(0,x.default)(e),a=this.declarations[e]=this.scope.generateUidIdentifier(e);return z.isFunctionExpression(s)&&!s.id?(s.body._compact=!0,s._generated=!0,s.id=a,s.type="FunctionDeclaration",this.path.unshiftContainer("body",s)):(s._compact=!0,this.scope.push({id:a,init:s,unique:!0})),a},r.prototype.addTemplateObject=function(e,t,r){var i=r.elements.map(function(e){return e.value}),n=e+"_"+r.elements.length+"_"+i.join(","),s=this.declarations[n];if(s)return s;var a=this.declarations[n]=this.scope.generateUidIdentifier("templateObject"),o=this.addHelper(e),u=z.callExpression(o,[t,r]);return u._compact=!0,this.scope.push({id:a,init:u,_blockHoist:1.9}),a},r.prototype.buildCodeFrameError=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?SyntaxError:arguments[2],i=e&&(e.loc||e._loc),n=new r(t);return i?n.loc=i.start:((0,N.default)(e,ie,this.scope,n),n.message+=" (This is an error on an internal node. Probably an internal error",n.loc&&(n.message+=". Location has been estimated."),n.message+=")"),n},r.prototype.mergeSourceMap=function(e){var t=this.opts.inputSourceMap;if(!t)return e;var r=function(){var r=new F.default.SourceMapConsumer(t),i=new F.default.SourceMapConsumer(e),n=new F.default.SourceMapGenerator({file:r.file,sourceRoot:r.sourceRoot}),s=i.sources[0];r.eachMapping(function(e){var t=i.generatedPositionFor({line:e.generatedLine,column:e.generatedColumn,source:s});null!=t.column&&n.addMapping({source:e.source,original:null==e.source?null:{line:e.originalLine,column:e.originalColumn},generated:t})});var a=n.toJSON();return t.mappings=a.mappings,{v:t}}();return"object"===("undefined"==typeof r?"undefined":(0,a.default)(r))?r.v:void 0},r.prototype.parse=function(e){this.log.debug("Parse start");var t=(0,G.parse)(e,this.parserOpts);return this.log.debug("Parse stop"),t},r.prototype._addAst=function(e){this.path=O.NodePath.get({hub:this.hub,parentPath:null,parent:e,container:e,key:"program"}).setContext(),this.scope=this.path.scope,this.ast=e,this.getMetadata()},r.prototype.addAst=function(e){this.log.debug("Start set AST"),this._addAst(e),this.log.debug("End set AST")},r.prototype.transform=function(){for(var e=0;e<this.pluginPasses.length;e++){var t=this.pluginPasses[e];this.call("pre",t),this.log.debug("Start transform traverse");var r=N.default.visitors.merge(this.pluginVisitors[e],t,this.opts.wrapPluginVisitorMethod);(0,N.default)(this.ast,r,this.scope),this.log.debug("End transform traverse"),this.call("post",t)}return this.generate()},r.prototype.wrap=function(t,r){t+="";try{return this.shouldIgnore()?this.makeResult({code:t,ignored:!0}):r()}catch(r){if(r._babel)throw r;r._babel=!0;var i=r.message=this.opts.filename+": "+r.message,n=r.loc;if(n&&(r.codeFrame=(0,M.default)(t,n.line,n.column+1,this.opts),i+="\n"+r.codeFrame),e.browser&&(r.message=i),r.stack){var s=r.stack.replace(r.message,i);r.stack=s}throw r}},r.prototype.addCode=function(e){e=(e||"")+"",e=this.parseInputSourceMap(e),this.code=e},r.prototype.parseCode=function(){this.parseShebang();var e=this.parse(this.code);this.addAst(e)},r.prototype.shouldIgnore=function(){var e=this.opts;return H.shouldIgnore(e.filename,e.ignore,e.only)},r.prototype.call=function(e,t){for(var r=t,i=Array.isArray(r),n=0,r=i?r:(0,u.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s,o=a.plugin,l=o[e];l&&l.call(a,this)}},r.prototype.parseInputSourceMap=function(e){var t=this.opts;if(t.inputSourceMap!==!1){var r=_.default.fromSource(e);r&&(t.inputSourceMap=r.toObject(),e=_.default.removeComments(e))}return e},r.prototype.parseShebang=function(){var e=D.default.exec(this.code);e&&(this.shebang=e[0],this.code=this.code.replace(D.default,""))},r.prototype.makeResult=function(e){var t=e.code,r=e.map,i=e.ast,n=e.ignored,s={metadata:null,options:this.opts,ignored:!!n,code:null,ast:null,map:r||null};return this.opts.code&&(s.code=t),this.opts.ast&&(s.ast=i),this.opts.metadata&&(s.metadata=this.metadata),s},r.prototype.generate=function(){var e=this.opts,t=this.ast,r={ast:t};if(!e.code)return this.makeResult(r);this.log.debug("Generation start");var i=(0,R.default)(t,e,this.code);return r.code=i.code,r.map=i.map,this.log.debug("Generation end"),this.shebang&&(r.code=this.shebang+"\n"+r.code),r.map&&(r.map=this.mergeSourceMap(r.map)),"inline"!==e.sourceMaps&&"both"!==e.sourceMaps||(r.code+="\n"+_.default.fromObject(r.map).toComment()),"inline"===e.sourceMaps&&(r.map=null),this.makeResult(r)},r}(W.default);t.default=ne,t.File=ne}).call(t,r(10))},function(e,t,r){(function(i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e){var t=S[e];return null==t?S[e]=g.default.sync(e):t}function a(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments[1],r=e.filename,i=new k(t);return e.babelrc!==!1&&i.findConfigs(r),i.mergeConfig({options:e,alias:"base",dirname:r&&x.default.dirname(r)}),i.configs}t.__esModule=!0;var o=r(999),u=n(o),l=r(2),p=n(l);t.default=a;var c=r(1617),f=n(c),h=r(6294),d=n(h),y=r(6420),v=n(y),m=r(6419),g=n(m),b=r(187),x=n(b),E=r(685),A=n(E),S={},_={},T=".babelignore",P=".babelrc",w="package.json",k=function(){function e(t){(0,p.default)(this,e),this.resolvedConfigs=[],this.configs=[],this.log=t}return e.prototype.findConfigs=function(e){if(e){(0,v.default)(e)||(e=x.default.join(i.cwd(),e));for(var t=!1,r=!1;e!==(e=x.default.dirname(e));){if(!t){var n=x.default.join(e,P);s(n)&&(this.addConfig(n),t=!0);var a=x.default.join(e,w);!t&&s(a)&&(t=this.addConfig(a,"babel",JSON))}if(!r){var o=x.default.join(e,T);s(o)&&(this.addIgnoreConfig(o),r=!0)}if(r&&t)return}}},e.prototype.addIgnoreConfig=function(e){var t=A.default.readFileSync(e,"utf8"),r=t.split("\n");r=r.map(function(e){return e.replace(/#(.*?)$/,"").trim()}).filter(function(e){return!!e}),r.length&&this.mergeConfig({options:{ignore:r},alias:e,dirname:x.default.dirname(e)})},e.prototype.addConfig=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?d.default:arguments[2];if(this.resolvedConfigs.indexOf(e)>=0)return!1;this.resolvedConfigs.push(e);var i=A.default.readFileSync(e,"utf8"),n=void 0;try{n=_[i]=_[i]||r.parse(i),t&&(n=n[t])}catch(t){throw t.message=e+": Error while parsing JSON - "+t.message,t}return this.mergeConfig({options:n,alias:e,dirname:x.default.dirname(e)}),!!n},e.prototype.mergeConfig=function(e){var t=e.options,r=e.alias,n=e.loc,s=e.dirname;if(!t)return!1;if(t=(0,u.default)({},t),s=s||i.cwd(),n=n||r,t.extends){var a=(0,f.default)(t.extends,s);a?this.addConfig(a):this.log&&this.log.error("Couldn't resolve extends clause of "+t.extends+" in "+r),delete t.extends}this.configs.push({options:t,alias:r,loc:n,dirname:s});var o=void 0,l=i.env.BABEL_ENV||"production"||"development";t.env&&(o=t.env[l],delete t.env),this.mergeConfig({options:o,alias:r+".env."+l,dirname:s})},e}();e.exports=t.default}).call(t,r(10))},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];for(var t in e){var r=e[t];
+if(null!=r){var i=l.default[t];if(i&&i.alias&&(i=l.default[i.alias]),i){var n=o[i.type];n&&(r=n(r)),e[t]=r}}}return e}t.__esModule=!0,t.config=void 0,t.normaliseOptions=s;var a=r(1048),o=n(a),u=r(572),l=i(u);t.config=l.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return!!e}function a(e){return c.booleanify(e)}function o(e){return c.list(e)}t.__esModule=!0,t.filename=void 0,t.boolean=s,t.booleanString=a,t.list=o;var u=r(2486),l=n(u),p=r(1050),c=i(p);t.filename=l.default},function(e,t){"use strict";e.exports={auxiliaryComment:{message:"Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"},blacklist:{message:"Put the specific transforms you want in the `plugins` option"},breakConfig:{message:"This is not a necessary option in Babel 6"},experimental:{message:"Put the specific transforms you want in the `plugins` option"},externalHelpers:{message:"Use the `external-helpers` plugin instead. Check out http://babeljs.io/docs/plugins/external-helpers/"},extra:{message:""},jsxPragma:{message:"use the `pragma` option in the `react-jsx` plugin . Check out http://babeljs.io/docs/plugins/transform-react-jsx/"},loose:{message:"Specify the `loose` option for the relevant plugin you are using or use a preset that sets the option."},metadataUsedHelpers:{message:"Not required anymore as this is enabled by default"},modules:{message:"Use the corresponding module transform plugin in the `plugins` option. Check out http://babeljs.io/docs/plugins/#modules"},nonStandard:{message:"Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"},optional:{message:"Put the specific transforms you want in the `plugins` option"},sourceMapName:{message:"Use the `sourceMapTarget` option"},stage:{message:"Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"},whitelist:{message:"Put the specific transforms you want in the `plugins` option"}}},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e,t){var r=t||n.EXTENSIONS,i=C.default.extname(e);return(0,S.default)(r,i)}function s(e){return e?Array.isArray(e)?e:"string"==typeof e?e.split(","):[e]:[]}function a(e){if(!e)return new RegExp(/.^/);if(Array.isArray(e)&&(e=new RegExp(e.map(y.default).join("|"),"i")),"string"==typeof e){e=(0,O.default)(e),((0,m.default)(e,"./")||(0,m.default)(e,"*/"))&&(e=e.slice(2)),(0,m.default)(e,"**/")&&(e=e.slice(3));var t=E.default.makeRe(e,{nocase:!0});return new RegExp(t.source.slice(1,-1),"i")}if((0,w.default)(e))return e;throw new TypeError("illegal type for regexify")}function o(e,t){return e?(0,b.default)(e)?o([e],t):(0,T.default)(e)?o(s(e),t):Array.isArray(e)?(t&&(e=e.map(t)),e):[e]:[]}function u(e){return"true"===e||1==e||!("false"===e||0==e||!e)&&e}function l(e){var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],r=arguments[2];if(e=(0,O.default)(e),r){for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,f.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(p(o,e))return!1}return!0}if(t.length)for(var u=t,l=Array.isArray(u),c=0,u=l?u:(0,f.default)(u);;){var h;if(l){if(c>=u.length)break;h=u[c++]}else{if(c=u.next(),c.done)break;h=c.value}var d=h;if(p(d,e))return!0}return!1}function p(e,t){return"function"==typeof e?e(t):e.test(t)}t.__esModule=!0,t.inspect=t.inherits=void 0;var c=r(1),f=i(c),h=r(48);Object.defineProperty(t,"inherits",{enumerable:!0,get:function(){return h.inherits}}),Object.defineProperty(t,"inspect",{enumerable:!0,get:function(){return h.inspect}}),t.canCompile=n,t.list=s,t.regexify=a,t.arrayify=o,t.booleanify=u,t.shouldIgnore=l;var d=r(6392),y=i(d),v=r(6409),m=i(v),g=r(2482),b=i(g),x=r(6416),E=i(x),A=r(50),S=i(A),_=r(82),T=i(_),P=r(255),w=i(P),k=r(187),C=i(k),D=r(2486),O=i(D);n.EXTENSIONS=[".js",".jsx",".es6",".es"]},[6457,39,16,2,1,2518,259,1622,15,689],[6460,367],[6475,104,2538,2537,2535,2533,2536,2534,2532,105,1624,574,2539,2540],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){e.variance&&("plus"===e.variance?this.token("+"):"minus"===e.variance&&this.token("-")),this.word(e.name)}function a(e){this.token("..."),this.print(e.argument,e)}function o(e){var t=e.properties;this.token("{"),this.printInnerComments(e),t.length&&(this.space(),this.printList(t,e,{indent:!0,statement:!0}),this.space()),this.token("}")}function u(e){this.printJoin(e.decorators,e),this._method(e)}function l(e){if(this.printJoin(e.decorators,e),e.computed)this.token("["),this.print(e.key,e),this.token("]");else{if(b.isAssignmentPattern(e.value)&&b.isIdentifier(e.key)&&e.key.name===e.value.left.name)return void this.print(e.value,e);if(this.print(e.key,e),e.shorthand&&b.isIdentifier(e.key)&&b.isIdentifier(e.value)&&e.key.name===e.value.name)return}this.token(":"),this.space(),this.print(e.value,e)}function p(e){var t=e.elements,r=t.length;this.token("["),this.printInnerComments(e);for(var i=0;i<t.length;i++){var n=t[i];n?(i>0&&this.space(),this.print(n,e),i<r-1&&this.token(",")):this.token(",")}this.token("]")}function c(e){this.word("/"+e.pattern+"/"+e.flags)}function f(e){this.word(e.value?"true":"false")}function h(){this.word("null")}function d(e){var t=this.getPossibleRaw(e);this.number(null==t?e.value+"":t)}function y(e,t){var r=this.getPossibleRaw(e);if(null!=r)return void this.token(r);var i=(0,m.default)(e.value);return i=i.replace(/[\u000A\u000D\u2028\u2029]/g,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}),"single"!==this.format.quotes||b.isJSX(t)||(i=i.slice(1,-1),i=i.replace(/\\"/g,'"'),i=i.replace(/'/g,"\\'"),i="'"+i+"'"),this.token(i)}t.__esModule=!0,t.ArrayPattern=t.ObjectPattern=t.RestProperty=t.SpreadProperty=t.SpreadElement=void 0;var v=r(17),m=n(v);t.Identifier=s,t.RestElement=a,t.ObjectExpression=o,t.ObjectMethod=u,t.ObjectProperty=l,t.ArrayExpression=p,t.RegExpLiteral=c,t.BooleanLiteral=f,t.NullLiteral=h,t.NumericLiteral=d,t.StringLiteral=y;var g=r(51),b=i(g);t.SpreadElement=a,t.SpreadProperty=a,t.RestProperty=a,t.ObjectPattern=o,t.ArrayPattern=p},[6460,367],[6460,367],49,1019,191,[6521,693,2614,2629,694],[6528,1641,1642],function(e,t){var r=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:r)(e)}},[6532,2615,1058],function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("decorators")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("jsx")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("trailingFunctionCommas")}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(){return{inherits:r(697),visitor:{Function:function(e,t){e.node.async&&!e.node.generator&&(0,s.default)(e,t.addHelper("asyncToGenerator"))}}}};var n=r(2639),s=i(n);e.exports=t.default},[6567,2671,578],265,[6571,465],[6574,1068,1069],[6580,1654,1068,465,2677],[6602,1084,378,46,19,1075,2764,2702,376,2760,1074,1657,2733,18,702],[6504,710],[6614,2743,1663,706,1078,580,2759,2762],[6567,1663,580],701,[6568,1076,1077,467],[6623,2836],[6561,1681],[6567,1675,468],701,[6574,1081,265],[6673,2846],[6695,711,1089,582,1097,2856],function(e,t){var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},1019,function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},[6517,1086],function(e,t){e.exports=!0},[6520,188,2868,1088,1094,1687,2861],function(e,t){t.f=Object.getOwnPropertySymbols},[6526,271],[6528,1095,716],[6529,189],1062,[6533,1096],[6535,191],[6714,189,53,1090,1100,272],[6715,110],[6722,189,190,269,270,1093,712,380,1095,715,716,110,1100,1099,2866,2860,1690,188,381,1098,714,1091,2869,1692,272,469,1693,713,1092,1090,271],[6541,2874,189,271,581,110],[6567,2917,584],265,[6571,472],[6574,1103,1104],[6580,1705,1103,472,2923],[6602,589,115,12,5,1110,3010,2948,585,3006,1109,1708,2979,7,720],[6504,588],[6614,2989,1714,724,1113,587,3005,3008],[6567,1714,587],701,[6568,1111,1112,474],[6672,3024],[6680,3015,115,84],[6681,84],[6695,726,1121,591,1129,3035],1086,1019,1088,[6517,1118],1090,[6520,192,3047,1120,1126,1722,3040],1092,[6526,275],[6528,1127,731],[6529,193],1062,[6533,1128],[6535,195],[6714,193,54,1122,1132,276],[6715,116],[6722,193,194,273,274,1125,727,383,1127,730,731,116,1132,1131,3045,3039,1725,192,384,1130,729,1123,3048,1727,276,475,1728,728,1124,1122,275],[6541,3053,193,275,590,116],[6623,3016],[6602,589,115,12,5,1138,3120,3090,476,3174,1137,1739,3118,7,732],[6504,588],[6614,1749,1139,196,737,386,1756,3176],[6564,1751],[6567,1139,386],701,[6574,1140,278],[6673,3196],[6675,3199],[6695,740,1149,595,1157,3206],1086,1019,1088,[6517,1146],1090,[6520,197,3218,1148,1154,1762,3211],1092,[6526,282],[6528,1155,745],[6529,198],1062,[6533,1156],[6535,200],[6714,198,55,1150,1160,283],[6715,119],[6722,198,199,280,281,1153,741,388,1155,744,745,119,1160,1159,3216,3210,1765,197,389,1158,743,1151,3219,1767,283,479,1768,742,1152,1150,282],[6541,3224,198,282,594,119],[6602,1143,593,67,28,1166,3271,3251,390,3348,1164,1778,3269,29,746],[6504,738],[6623,3184],[6614,1791,1168,122,751,285,1797,3351],[6560,287],[6564,1793],[6567,1168,285],[6569,122,287],[6572,3319,122],[6578,3309,1787,3325],[6673,3371],[6695,755,1178,600,1186,3381],1086,1019,1088,[6517,1175],1090,[6520,201,3393,1177,1183,1803,3386],1092,[6526,290],[6528,1184,760],[6529,202],1062,[6533,1185],[6535,204],[6714,202,56,1179,1189,291],[6715,123],[6722,202,203,288,289,1182,756,393,1184,759,760,123,1189,1188,3391,3385,1806,201,394,1187,758,1180,3394,1808,291,482,1809,757,1181,1179,290],[6541,3399,202,290,599,123],[6602,1173,598,68,40,1195,3446,3426,395,3523,1193,1819,3444,30,761],[6504,753],[6623,3359],[6614,1832,1197,126,766,293,1838,3526],[6560,295],[6564,1834],[6567,1197,293],[6569,126,295],[6572,3494,126],[6578,3484,1828,3500],49,1019,191,[6521,770,3537,3552,771],[6528,1850,1851],1062,[6532,3538,1203],[6457,39,16,2,1,3576,487,1854,21,775],[6460,367],[6457,39,16,2,1,3619,489,1861,22,778],[6460,367],49,1019,191,[6521,781,3653,3668,782],[6528,1872,1873],1062,[6532,3654,1214],49,1019,191,[6521,786,3684,3699,787],[6528,1881,1882],1062,[6532,3685,1221],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return c.isIdentifier(e)?e.name:e.value.toString()}t.__esModule=!0;var a=r(1),o=n(a),u=r(16),l=n(u);t.default=function(){return{visitor:{ObjectExpression:function(e){for(var t=e.node,r=t.properties.filter(function(e){return!c.isSpreadProperty(e)&&!e.computed}),i=(0,l.default)(null),n=(0,l.default)(null),a=(0,l.default)(null),u=r,p=Array.isArray(u),f=0,u=p?u:(0,o.default)(u);;){var h;if(p){if(f>=u.length)break;h=u[f++]}else{if(f=u.next(),f.done)break;h=f.value}var d=h,y=s(d.key),v=!1;switch(d.kind){case"get":(i[y]||n[y])&&(v=!0),n[y]=!0;break;case"set":(i[y]||a[y])&&(v=!0),a[y]=!0;break;default:(i[y]||n[y]||a[y])&&(v=!0),i[y]=!0}v&&(d.computed=!0,d.key=c.stringLiteral(y))}}}}};var p=r(3),c=i(p);e.exports=t.default},[6739,1233],[6749,3726],[6755,1228],826,681,810,[6496,497],833,373,[6805,1242,3935,3821,611,3930,1238,1897,3852,801],[6504,615],[6739,810],[6749,3861],826,[6814,3874,613,1912,1245,3941],[6496,500],373,[6502,3938],[6672,3953],[6819,3944,136,88],[6820,88],[6695,812,1253,618,1261,3964],1086,1019,1088,[6517,1250],1090,[6520,206,3976,1252,1258,1919,3969],1092,[6526,300],[6528,1259,817],[6529,207],1062,[6533,1260],[6535,209],[6714,207,57,1254,1264,301],[6715,137],[6722,207,208,298,299,1257,813,401,1259,816,817,137,1264,1263,3974,3968,1922,206,402,1262,815,1255,3977,1924,301,501,1925,814,1256,1254,300],[6541,3982,207,300,617,137],[6822,3945],[6805,1276,4157,4019,502,4141,1269,1936,4047,818],[6504,615],[6732,4125,4126,4127,4128,4129],[6735,821,4132,4133,4134,4135,4136],[6736,140],[6739,832],[6749,1943],function(e,t){function r(e){return i(Object(e))}var i=Object.getPrototypeOf;e.exports=r},[6814,1949,505,834,1278,4163],[6496,210],[6502,4160],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(506),s=i(n);t.default=function(e){function t(e){if(!e.isCallExpression())return!1;if(!e.get("callee").isIdentifier({name:"require"}))return!1;if(e.scope.getBinding("require"))return!1;var t=e.get("arguments");if(1!==t.length)return!1;var r=t[0];return!!r.isStringLiteral()}var i=e.types,n={ReferencedIdentifier:function(e){var t=e.node,r=e.scope;"exports"!==t.name||r.getBinding("exports")||(this.hasExports=!0),"module"!==t.name||r.getBinding("module")||(this.hasModule=!0)},CallExpression:function(e){t(e)&&(this.bareSources.push(e.node.arguments[0]),e.remove())},VariableDeclarator:function(e){var r=e.get("id");if(r.isIdentifier()){var i=e.get("init");if(t(i)){var n=i.node.arguments[0];this.sourceNames[n.value]=!0,this.sources.push([r.node,n]),e.remove()}}}};return{inherits:r(852),pre:function(){this.sources=[],this.sourceNames=(0,s.default)(null),this.bareSources=[],this.hasExports=!1,this.hasModule=!1},visitor:{Program:{exit:function(e){var t=this;if(!this.ran){this.ran=!0,e.traverse(n,this);var r=this.sources.map(function(e){return e[0]}),s=this.sources.map(function(e){return e[1]});s=s.concat(this.bareSources.filter(function(e){return!t.sourceNames[e.value]}));var a=this.getModuleName();a&&(a=i.stringLiteral(a)),this.hasExports&&(s.unshift(i.stringLiteral("exports")),r.unshift(i.identifier("exports"))),this.hasModule&&(s.unshift(i.stringLiteral("module")),r.unshift(i.identifier("module")));var o=e.node,p=l({PARAMS:r,BODY:o.body});p.expression.body.directives=o.directives,o.directives=[],o.body=[u({MODULE_NAME:a,SOURCES:s,FACTORY:p})]}}}}}};var a=r(4221),o=i(a),u=(0,o.default)("\n define(MODULE_NAME, [SOURCES], FACTORY);\n"),l=(0,o.default)("\n (function (PARAMS) {\n BODY;\n })\n");e.exports=t.default},[6673,4183],[6695,839,1285,621,1293,4193],1086,1019,1088,[6517,1282],1090,[6520,211,4205,1284,1290,1969,4198],1092,[6526,306],[6528,1291,844],[6529,212],1062,[6533,1292],[6535,214],[6714,212,58,1286,1296,307],[6715,142],[6722,212,213,304,305,1289,840,406,1291,843,844,142,1296,1295,4203,4197,1972,211,407,1294,842,1287,4206,1974,307,507,1975,841,1288,1286,306],[6541,4211,212,306,620,142],[6602,1280,506,69,41,1302,4258,4238,408,4335,1300,1985,4256,31,845],[6504,837],[6623,4171],[6614,1998,1304,145,850,309,2004,4338],[6560,311],[6564,2e3],[6567,1304,309],[6569,145,311],[6572,4306,145],[6578,4296,1994,4312],[6457,39,16,2,1,4357,624,2009,23,853],[6460,367],[6667,2427],[6673,2434],[6675,2437],[6457,1312,511,70,32,4410,627,2016,33,856],[6460,4388],[6602,1326,632,59,34,1317,4515,4453,513,4511,859,2023,4484,24,860],[6614,4494,2029,864,1320,631,4510,4513],[6567,2029,631],701,[6568,1318,1319,515],[6623,4588],[6561,2047],[6567,2041,516],701,[6574,1323,315],[6673,4600],[6675,4603],[6695,870,1332,634,1340,4610],1086,1019,1088,[6517,1329],1090,[6520,215,4622,1331,1337,2049,4615],1092,[6526,320],[6528,1338,875],[6529,216],1062,[6533,1339],[6535,218],[6714,216,60,1333,1343,321],[6715,152],[6722,216,217,318,319,1336,871,415,1338,874,875,152,1343,1342,4620,4614,2052,215,416,1341,873,1334,4623,2054,321,517,2055,872,1335,1333,320],[6541,4628,216,320,633,152],[6874,50,459,4657,635,457,2065,877],[6673,4677],[6695,881,1352,638,1360,4687],1086,1019,1088,[6517,1349],1090,[6520,219,4699,1351,1357,2067,4692],1092,[6526,324],[6528,1358,886],[6529,220],1062,[6533,1359],[6535,222],[6714,220,61,1353,1363,325],[6715,153],[6722,220,221,322,323,1356,882,419,1358,885,886,153,1363,1362,4697,4691,2070,219,420,1361,884,1354,4700,2072,325,518,2073,883,1355,1353,324],[6541,4705,220,324,637,153],[6623,4665],[6602,1347,636,71,42,1369,4772,4742,519,4826,1368,2084,4770,35,887],[6504,879],[6614,2094,1370,223,892,422,2101,4828],[6564,2096],[6567,1370,422],701,[6574,1371,327],49,1019,191,[6521,894,4840,4855,895],[6528,2112,2113],1062,[6532,4841,1375],[6673,4883],[6695,901,1386,643,1394,4893],1086,1019,1088,[6517,1383],1090,[6520,224,4905,1385,1391,2115,4898],1092,[6526,331],[6528,1392,906],[6529,225],1062,[6533,1393],[6535,227],[6714,225,62,1387,1397,332],[6715,156],[6722,225,226,329,330,1390,902,424,1392,905,906,156,1397,1396,4903,4897,2118,224,425,1395,904,1388,4906,2120,332,524,2121,903,1389,1387,331],[6541,4911,225,331,642,156],[6623,4871],[6602,1381,641,72,43,1403,4978,4948,525,5032,1402,2132,4976,25,907],[6504,899],[6614,2142,1404,228,912,427,2149,5034],[6564,2144],[6567,1404,427],701,[6574,1405,334],49,1019,191,[6521,914,5046,5061,915],[6528,2160,2161],1062,[6532,5047,1409],49,1088,[6514,531,1419,530],713,714,[6529,428],[6535,921],[6714,428,1415,2165,2171,531],[6536,1420,923,428],[6602,653,166,14,4,537,5161,5128,648,2199,1425,2175,5159,8,927],[6504,652],[6623,5279],[6602,653,166,14,4,537,5221,5191,535,2199,1428,2181,5219,8,930],[6504,652],[6560,339],[6564,2195],[6567,1430,337],[6569,165,339],[6572,5244,165],[6617,2190,651,935],[6672,5287],[6680,5278,166,94],[6681,94],[6695,938,1442,655,1450,5298],1086,1019,1088,[6517,1439],1090,[6520,229,5310,1441,1447,2207,5303],1092,[6526,342],[6528,1448,943],[6529,230],1062,[6533,1449],[6535,232],[6714,230,63,1443,1453,343],[6715,167],[6722,230,231,340,341,1446,939,431,1448,942,943,167,1453,1452,5308,5302,2210,229,432,1451,941,1444,5311,2212,343,539,2213,940,1445,1443,342],[6541,5316,230,342,654,167],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(e){var t=e.types;return{inherits:r(1646),visitor:(0,s.default)({operator:"**",build:function(e,r){return t.callExpression(t.memberExpression(t.identifier("Math"),t.identifier("pow")),[e,r])}})}};var n=r(5327),s=i(n);e.exports=t.default},[6623,5451],[6602,1465,657,73,44,1460,5386,5356,540,5440,1459,2224,5384,26,944],[6504,950],[6614,2234,1461,233,949,434,2241,5442],[6564,2236],[6567,1461,434],701,[6574,1462,345],[6673,5463],[6695,952,1470,659,1478,5473],1086,1019,1088,[6517,1467],1090,[6520,234,5485,1469,1475,2246,5478],1092,[6526,349],[6528,1476,957],[6529,235],1062,[6533,1477],[6535,237],[6714,235,64,1471,1481,350],[6715,170],[6722,235,236,347,348,1474,953,436,1476,956,957,170,1481,1480,5483,5477,2249,234,437,1479,955,1472,5486,2251,350,543,2252,954,1473,1471,349],[6541,5491,235,349,658,170],49,1019,191,[6521,958,5513,5528,959],[6528,2271,2272],1062,[6532,5514,1485],49,1019,191,[6521,962,5545,5560,963],[6528,2280,2281],1062,[6532,5546,1492],49,1019,191,[6521,966,5594,5609,967],[6528,2291,2292],1062,[6532,5595,1499],[6623,5739],[6602,1514,664,74,45,1509,5674,5644,550,5729,1507,2296,5672,36,970],[6504,976],[6610,5678,2298,5679],[6614,2305,1510,238,975,439,2312,5731],[6564,2307],[6567,1510,439],701,[6574,1511,352],[6673,5751],[6695,978,1519,666,1527,5761],1086,1019,1088,[6517,1516],1090,[6520,239,5773,1518,1524,2317,5766],1092,[6526,356],[6528,1525,983],[6529,240],1062,[6533,1526],[6535,242],[6714,240,65,1520,1530,357],[6715,173],[6722,240,241,354,355,1523,979,441,1525,982,983,173,1530,1529,5771,5765,2320,239,442,1528,981,1521,5774,2322,357,553,2323,980,1522,1520,356],[6541,5779,240,356,665,173],[6623,5914],[6602,1542,668,75,38,1537,5849,5819,554,5904,1535,2335,5847,37,984],[6504,990],[6610,5853,2337,5854],[6614,2344,1538,243,989,444,2351,5906],[6564,2346],[6567,1538,444],701,[6574,1539,359],[6673,5926],[6695,992,1547,670,1555,5936],1086,1019,1088,[6517,1544],1090,[6520,244,5948,1546,1552,2356,5941],1092,[6526,363],[6528,1553,997],[6529,245],1062,[6533,1554],[6535,247],[6714,245,66,1548,1558,364],[6715,176],[6722,245,246,361,362,1551,993,446,1553,996,997,176,1558,1557,5946,5940,2359,244,447,1556,995,1549,5949,2361,364,557,2362,994,1550,1548,363],[6541,5954,245,363,669,176],[6460,367],[6874,1566,6089,6006,449,6084,2382,1e3],[6739,1007],[6749,6015],826,[6814,6028,672,2395,1569,6095],[6496,561],373,[6502,6092],[6822,367],[6732,6176,6177,6178,6179,6180],[6735,1009,6183,6184,6185,6186,6187],[6736,249],[6749,2402],1275,[6795,6155,2423,1017],[6798,178,452],[6497,452],[6475,179,6216,6215,6213,6211,6214,6212,6210,180,2424,674,6217,6218],function(e,t){e.exports=function(e,t,r,i){if(!(e instanceof t)||void 0!==i&&i in e)throw TypeError(r+": incorrect invocation!");return e}},[6695,676,1585,679,1594,6234],1086,[6699,183,182,678,453,370,1589,1020,1580,251,1024,184,1581,181],function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},[6517,1582],[6519,1587,182,1590,370,369,677,6241,1024,2449,101],1090,1092,[6712,370],[6526,370],function(e,t,r){var i=r(1592)("keys"),n=r(1025);e.exports=function(e){return i[e]||(i[e]=n(e))}},[6529,183],1062,[6533,1593],[6535,251],function(e,t,r){var i=r(183),n=r(49),s=r(1587),a=r(1597),o=r(184).f;e.exports=function(e){var t=n.Symbol||(n.Symbol=s?{}:i.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:a.f(e)})}},[6715,101],[6540,6247,1586],[6722,183,369,181,182,1590,678,453,1592,1024,1025,101,1597,1596,6242,6237,2444,250,454,1595,1023,1021,6244,2447,184,565,2448,1022,1588,1587,370],[6731,568,186],[6732,6375,6376,6377,6378,6379],function(e,t){function r(e,t){for(var r=-1,i=e?e.length:0;++r<i&&t(e[r],r,e)!==!1;);return e}e.exports=r},function(e,t){function r(e,t){for(var r=-1,i=e?e.length:0,n=Array(i);++r<i;)n[r]=t(e[r],r,e);return n}e.exports=r},function(e,t){function r(e,t,r,i){for(var n=e.length,s=r+(i?1:-1);i?s--:++s<n;)if(t(e[s],s,e))return s;return-1}e.exports=r},[6745,1611],function(e,t,r){function i(e,t,r){if(t!==t)return n(e,s,r);for(var i=r-1,a=e.length;++i<a;)if(e[i]===t)return i;return-1}var n=r(1604),s=r(6317);e.exports=i},function(e,t,r){function i(e,t){return t=s(void 0===t?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=s(r.length-t,0),o=Array(a);++i<a;)o[i]=r[t+i];i=-1;for(var u=Array(t+1);++i<t;)u[i]=r[i];return u[t]=o,n(e,this,u)}}var n=r(2457),s=Math.max;e.exports=i},[6747,1029,683],function(e,t){function r(e){return function(t){return e(t)}}e.exports=r},[6749,2456],function(e,t,r){var i=r(1613),n=Object.getPrototypeOf,s=i(n,Object);e.exports=s},[6773,570,252,1036,103],function(e,t){function r(e,t){return function(r){return e(t(r))}}e.exports=r},function(e,t,r){var i=r(6320),n=r(1609),s=r(2478),a=s&&s.isTypedArray,o=a?n(a):i;e.exports=o},function(e,t){"use strict";e.exports=function(){return/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g}},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){throw new Error("The ("+e+") Babel 5 plugin is being run with Babel 6.")}function a(e,t,r){(0,d.default)(t)&&(r=t,t={}),t.filename=e,v.default.readFile(e,function(e,i){var n=void 0;if(!e)try{n=D(i,t)}catch(t){e=t}e?r(e):r(null,n)})}function o(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return t.filename=e,D(v.default.readFileSync(e,"utf8"),t)}t.__esModule=!0,t.transformFromAst=t.transform=t.analyse=t.Pipeline=t.OptionManager=t.traverse=t.types=t.messages=t.util=t.version=t.template=t.buildExternalHelpers=t.options=t.File=void 0;var u=r(1045);Object.defineProperty(t,"File",{enumerable:!0,get:function(){return n(u).default}});var l=r(572);Object.defineProperty(t,"options",{enumerable:!0,get:function(){return n(l).default}});var p=r(2495);Object.defineProperty(t,"buildExternalHelpers",{enumerable:!0,get:function(){return n(p).default}});var c=r(1619);Object.defineProperty(t,"template",{enumerable:!0,get:function(){return n(c).default}});var f=r(6275);Object.defineProperty(t,"version",{enumerable:!0,get:function(){return f.version}}),t.Plugin=s,t.transformFile=a,t.transformFileSync=o;var h=r(682),d=n(h),y=r(685),v=n(y),m=r(1050),g=i(m),b=r(20),x=i(b),E=r(15),A=i(E),S=r(259),_=n(S),T=r(573),P=n(T),w=r(2500),k=n(w);t.util=g,t.messages=x,t.types=A,t.traverse=_.default,t.OptionManager=P.default,t.Pipeline=k.default;var C=new k.default,D=(t.analyse=C.analyse.bind(C),t.transform=C.transform.bind(C));t.transformFromAst=C.transformFromAst.bind(C)},function(e,t,r){(function(i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(11),a=n(s);t.default=function(e){var t=arguments.length<=1||void 0===arguments[1]?i.cwd():arguments[1];if("object"===("undefined"==typeof u.default?"undefined":(0,a.default)(u.default)))return null;var r=c[t];if(!r){r=new u.default;var n=p.default.join(t,".babelrc");r.id=n,r.filename=n,r.paths=u.default._nodeModulePaths(t),c[t]=r}try{return u.default._resolveFilename(e,r)}catch(e){return null}};var o=r(685),u=n(o),l=r(187),p=n(l),c={};e.exports=t.default}).call(t,r(10))},function(e,t,r){function i(e){return r(n(e))}function n(e){return s[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var s={"./build-config-chain":1046,"./build-config-chain.js":1046,"./config":572,"./config.js":572,"./index":1047,"./index.js":1047,"./option-manager":573,"./option-manager.js":573,"./parsers":1048,"./parsers.js":1048,"./removed":1049,"./removed.js":1049};i.keys=function(){return Object.keys(s)},i.resolve=n,e.exports=i,i.id=1618},[6436,98,259,1053,15],[6439,2],[6452,15],[6456,2],[6473,16,15],[6487,47,2,575,105,574,690,460,2542],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t,r){var i=" ";if(e&&"string"==typeof e){var n=(0,d.default)(e).indent;n&&" "!==n&&(i=n)}var s={auxiliaryCommentBefore:t.auxiliaryCommentBefore,auxiliaryCommentAfter:t.auxiliaryCommentAfter,shouldPrintComment:t.shouldPrintComment,retainLines:t.retainLines,comments:null==t.comments||t.comments,compact:t.compact,minified:t.minified,concise:t.concise,quotes:t.quotes||a(e,r),indent:{adjustMultilineComment:!0,style:i,base:0}};return s.minified?(s.compact=!0,s.shouldPrintComment=s.shouldPrintComment||function(){return s.comments}):s.shouldPrintComment=s.shouldPrintComment||function(e){return s.comments||e.indexOf("@license")>=0||e.indexOf("@preserve")>=0},"auto"===s.compact&&(s.compact=e.length>1e5,s.compact&&console.error("[BABEL] "+g.get("codeGeneratorDeopt",t.filename,"100KB"))),s.compact&&(s.indent.adjustMultilineComment=!1),s}function a(e,t){for(var r={single:0,double:0},i=0,n=0;n<t.length;n++){var s=t[n];if("string"===s.type.label){var a=e.slice(s.start,s.end);if("'"===a[0]?r.single++:r.double++,i++,i>=3)break}}return r.single>r.double?"single":"double"}t.__esModule=!0,t.CodeGenerator=void 0;var o=r(2),u=n(o),l=r(100),p=n(l),c=r(99),f=n(c);t.default=function(e,t,r){var i=new E(e,t,r);return i.generate()};var h=r(6265),d=n(h),y=r(2556),v=n(y),m=r(20),g=i(m),b=r(2555),x=n(b),E=function(e){function t(r,i,n){(0,u.default)(this,t),i=i||{};var a=r.tokens||[],o=s(n,i,a),l=i.sourceMaps?new v.default(i,n):null,c=(0,p.default)(this,e.call(this,o,l,a));return c.ast=r,c}return(0,f.default)(t,e),t.prototype.generate=function(){return e.prototype.generate.call(this,this.ast)},t}(x.default);t.CodeGenerator=function(){function e(t,r,i){(0,u.default)(this,e),this._generator=new E(t,r,i)}return e.prototype.generate=function(){return this._generator.generate()},e}()},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){function t(e,t){var i=r[e];r[e]=i?function(e,r,n){var s=i(e,r,n);return null==s?t(e,r,n):s}:t}for(var r={},i=(0,y.default)(e),n=Array.isArray(i),s=0,i=n?i:(0,h.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a,u=E.FLIPPED_ALIAS_KEYS[o];if(u)for(var l=u,p=Array.isArray(l),c=0,l=p?l:(0,h.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var d=f;t(d,e[o])}else t(o,e[o])}return r}function a(e,t,r,i){var n=e[t.type];return n?n(t,r,i):null}function o(e){return!!E.isCallExpression(e)||!!E.isMemberExpression(e)&&(o(e.object)||!e.computed&&o(e.property))}function u(e,t,r){if(!e)return 0;E.isExpressionStatement(e)&&(e=e.expression);var i=a(S,e,t);if(!i){var n=a(_,e,t);if(n)for(var s=0;s<n.length&&!(i=u(n[s],e,r));s++);}return i&&i[r]||0}function l(e,t){return u(e,t,"before")}function p(e,t){return u(e,t,"after")}function c(e,t,r){return!!t&&(!(!E.isNewExpression(t)||t.callee!==e||!o(e))||a(A,e,t,r))}t.__esModule=!0;var f=r(1),h=n(f),d=r(39),y=n(d);t.needsWhitespace=u,t.needsWhitespaceBefore=l,t.needsWhitespaceAfter=p,t.needsParens=c;var v=r(2554),m=n(v),g=r(2553),b=i(g),x=r(51),E=i(x),A=s(b),S=s(m.default.nodes),_=s(m.default.list)},[6473,16,51],[6492,3],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(1),a=n(s);t.default=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?"var":arguments[2];e.traverse(l,{kind:r,emit:t})};var o=r(3),u=i(o),l={Scope:function(e,t){"let"===t.kind&&e.skip()},Function:function(e){e.skip()},VariableDeclaration:function(e,t){if(!t.kind||e.node.kind===t.kind){for(var r=[],i=e.get("declarations"),n=void 0,s=i,o=Array.isArray(s),l=0,s=o?s:(0,a.default)(s);;){var p;if(o){if(l>=s.length)break;p=s[l++]}else{if(l=s.next(),l.done)break;p=l.value}var c=p;n=c.node.id,c.node.init&&r.push(u.expressionStatement(u.assignmentExpression("=",c.node.id,c.node.init)));for(var f in c.getBindingIdentifiers())t.emit(u.identifier(f),f)}e.parentPath.isFor({left:e.node})?e.replaceWith(n):e.replaceWithMultiple(r)}}};e.exports=t.default},[6493,3],103,[6473,16,263],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){var t=u.default[e];if(!t)throw new ReferenceError("Unknown helper "+e);return t().expression}t.__esModule=!0,t.list=void 0;var s=r(39),a=i(s);t.get=n;var o=r(2603),u=i(o);t.list=(0,a.default)(u.default).map(function(e){return"_"===e[0]?e.slice(1):e}).filter(function(e){return"__esModule"!==e});t.default=n},1086,[6512,1059,461],1088,380,[6519,2618,2612,2624,576,695,696,2616,1640,2621,462],714,[6527,1060,695,462],[6529,461],716,function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("classConstructorCall")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("classProperties")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("doExpressions")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("exponentiationOperator")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("exportExtensions")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("functionBind")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,
+t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("objectRestSpread")}}},e.exports=t.default},[6543,1683,2679,2682,2683,376,2642,18],[6553,268,46,577,107,699,700,463,2654],[6556,2661,1072],[6561,2685],[6565,2681],[6584,46],[6597,18],[6601,46],function(e,t){!function(){"use strict";function t(e){return 48<=e&&e<=57}function r(e){return 48<=e&&e<=57||97<=e&&e<=102||65<=e&&e<=70}function i(e){return e>=48&&e<=55}function n(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&h.indexOf(e)>=0}function s(e){return 10===e||13===e||8232===e||8233===e}function a(e){if(e<=65535)return String.fromCharCode(e);var t=String.fromCharCode(Math.floor((e-65536)/1024)+55296),r=String.fromCharCode((e-65536)%1024+56320);return t+r}function o(e){return e<128?d[e]:f.NonAsciiIdentifierStart.test(a(e))}function u(e){return e<128?y[e]:f.NonAsciiIdentifierPart.test(a(e))}function l(e){return e<128?d[e]:c.NonAsciiIdentifierStart.test(a(e))}function p(e){return e<128?y[e]:c.NonAsciiIdentifierPart.test(a(e))}var c,f,h,d,y,v;for(f={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},c={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},h=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],d=new Array(128),v=0;v<128;++v)d[v]=v>=97&&v<=122||v>=65&&v<=90||36===v||95===v;for(y=new Array(128),v=0;v<128;++v)y[v]=v>=97&&v<=122||v>=65&&v<=90||v>=48&&v<=57||36===v||95===v;e.exports={isDecimalDigit:t,isHexDigit:r,isOctalDigit:i,isWhiteSpace:n,isLineTerminator:s,isIdentifierStartES5:o,isIdentifierPartES5:u,isIdentifierStartES6:l,isIdentifierPartES6:p}}()},[6553,268,46,579,109,703,704,466,2729],function(e,t){function r(e,t){if("function"!=typeof e)throw new TypeError(i);return t=n(void 0===t?e.length-1:+t||0,0),function(){for(var r=arguments,i=-1,s=n(r.length-t,0),a=Array(s);++i<s;)a[i]=r[t+i];switch(t){case 0:return e.call(this,a);case 1:return e.call(this,r[0],a);case 2:return e.call(this,r[0],r[1],a)}var o=Array(t+1);for(i=-1;++i<t;)o[i]=r[i];return o[t]=a,e.apply(this,o)}}var i="Expected a function",n=Math.max;e.exports=r},[6556,2740,707],[6561,2763],[6564,2744],[6565,2758],[6574,1076,705],[6578,2738,1661,2747],[6636,378,18],1658,function(e,t){function r(e,t){for(var r=-1,i=e.length;++r<i&&t(e[r],r,e)!==!1;);return e}e.exports=r},[6558,2808],[6559,1670,709],[6560,266],[6645,2796,83,265],function(e,t){function r(e){return function(t){return null==t?void 0:t[e]}}e.exports=r},[6564,1674],[6568,1081,1082,83],[6569,267,266],[6660,83],[6572,2802,267],[6581,1083,267,1082,468,83],function(e,t){function r(e){return e}e.exports=r},[6672,2845],[6675,2849],[6680,2835,378,379],[6681,379],1580,[6512,191,189],[6701,711,2863,2862,188,1097,1698],[6516,269,380,1687],[6703,1086],[6519,1090,270,1093,271,190,581,2864,715,1694,110],[6708,713,714,381,1098,190,1689,269],[6710,1695,1088],[6523,190,582,1094],[6524,190,381,2854,1094],[6711,270,53,380],[6712,271],[6537,2857,110,581,53],685,[6540,2871,1691],[6543,1719,2925,2928,2929,585,2888,7],[6553,79,12,583,112,717,718,470,2900],[6556,2907,1107],[6561,2931],[6565,2927],[6584,12],[6597,7],[6601,12],1658,[6553,79,12,586,114,721,722,473,2975],1660,[6556,2986,725],[6561,3009],[6564,2990],[6565,3004],[6574,1111,723],[6578,2984,1712,2993],[6671,3023],[6675,3028],[6678,3030],1580,[6512,195,193],[6701,726,3042,3041,192,1129,1733],[6516,273,383,1722],[6703,1118],[6519,1122,274,1125,275,194,590,3043,730,1729,116],[6708,728,729,384,1130,194,1724,273],[6710,1730,1120],[6523,194,591,1126],[6524,194,384,3033,1126],[6711,274,54,383],[6712,275],[6537,3036,116,590,54],685,[6540,3050,1726],[6636,115,7],[6584,12],[6597,7],[6601,12],[6553,79,12,592,118,733,734,477,3114],1658,[6610,3123,1741,3124],1660,1669,[6556,3137,478],[6558,3154],[6559,1746,478],[6560,279],[6615,3162],[6645,3140,85,278],1674,[6569,196,279],[6660,85],[6572,3146,196],[6617,3136,735,737],[6618,278],[6578,3134,1745,3152],[6581,1142,196,1141,386,85],1681,function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(28),s=i(n),a=r(1144),o=i(a);t.default=function(e){function t(e){for(var t=e.get("body.body"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,s.default)(r);;){var a;if(i){if(n>=r.length)break;a=r[n++]}else{if(n=r.next(),n.done)break;a=n.value}var o=a;if("constructorCall"===o.node.kind)return o}return null}function i(e,t){var r=t,i=r.node,s=i.id||t.scope.generateUidIdentifier("class");t.parentPath.isExportDefaultDeclaration()&&(t=t.parentPath,t.insertAfter(n.exportDefaultDeclaration(s))),t.replaceWithMultiple(p({CLASS_REF:t.scope.generateUidIdentifier(s.name),CALL_REF:t.scope.generateUidIdentifier(s.name+"Call"),CALL:n.functionExpression(null,e.node.params,e.node.body),CLASS:n.toExpression(i),WRAPPER_REF:s})),e.remove()}var n=e.types,a=(0,o.default)();return{inherits:r(1643),visitor:{Class:function(e){if(!e.node[a]){e.node[a]=!0;var r=t(e);r&&i(r,e)}}}}};var u=r(3234),l=i(u),p=(0,l.default)("\n let CLASS_REF = CLASS;\n var CALL_REF = CALL;\n var WRAPPER_REF = function (...args) {\n if (this instanceof WRAPPER_REF) {\n return Reflect.construct(CLASS_REF, args);\n } else {\n return CALL_REF.apply(this, args);\n }\n };\n WRAPPER_REF.__proto__ = CLASS_REF;\n WRAPPER_REF;\n");e.exports=t.default},1580,[6512,200,198],[6701,740,3213,3212,197,1157,1773],[6516,280,388,1762],[6703,1146],[6519,1150,281,1153,282,199,594,3214,744,1769,119],[6708,742,743,389,1158,199,1764,280],[6710,1770,1148],[6523,199,595,1154],[6524,199,389,3204,1154],[6711,281,55,388],[6712,282],[6537,3207,119,594,55],685,[6540,3221,1766],[6584,67],[6597,29],[6601,67],1658,[6636,593,29],1658,[6475,120,3296,3295,3293,3291,3294,3292,3290,121,1783,747,3297,3298],[6553,739,67,596,121,747,748,480,3300],function(e,t){function r(e){var t=e?e.length:0;return t?e[t-1]:void 0}e.exports=r},1660,1669,[6556,3311,481],[6557,3306,1786,1787,1790,3336,3337,3338,122,86],[6558,3327],[6559,1789,481],[6615,3335],[6645,3314,86,286],1674,function(e,t){function r(e,t,r){var i=-1,n=e.length;t=null==t?0:+t||0,t<0&&(t=-t>n?0:n+t),r=void 0===r||r>n?n:+r||0,r<0&&(r+=n),n=t>r?0:r-t>>>0,t>>>=0;for(var s=Array(n);++i<n;)s[i]=e[i+t];return s}e.exports=r},[6660,86],[6617,1788,597,751],[6618,286],[6581,752,122,750,285,86],1681,function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(1),s=i(n);t.default=function(e){var t=e.types,i={Super:function(e){e.parentPath.isCallExpression({callee:e.node})&&this.push(e.parentPath)}},n={ReferencedIdentifier:function(e){this.scope.hasOwnBinding(e.node.name)&&(this.collision=!0,e.skip())}};return{inherits:r(1644),visitor:{Class:function(e){for(var r=!!e.node.superClass,a=void 0,u=[],l=e.get("body"),p=l.get("body"),c=Array.isArray(p),f=0,p=c?p:(0,s.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h;d.isClassProperty()?u.push(d):d.isClassMethod({kind:"constructor"})&&(a=d)}if(u.length){var y=[],v=void 0;e.isClassExpression()||!e.node.id?((0,o.default)(e),v=e.scope.generateUidIdentifier("class")):v=e.node.id;for(var m=[],g=u,b=Array.isArray(g),x=0,g=b?g:(0,s.default)(g);;){var E;if(b){if(x>=g.length)break;E=g[x++]}else{if(x=g.next(),x.done)break;E=x.value}var A=E,S=A.node;if(!(S.decorators&&S.decorators.length>0)&&S.value){var _=S.static;_?y.push(t.expressionStatement(t.assignmentExpression("=",t.memberExpression(v,S.key),S.value))):m.push(t.expressionStatement(t.assignmentExpression("=",t.memberExpression(t.thisExpression(),S.key),S.value)))}}if(m.length){if(!a){var T=t.classMethod("constructor",t.identifier("constructor"),[],t.blockStatement([]));r&&(T.params=[t.restElement(t.identifier("args"))],T.body.body.push(t.returnStatement(t.callExpression(t.super(),[t.spreadElement(t.identifier("args"))]))));var P=l.unshiftContainer("body",T);a=P[0]}for(var w={collision:!1,scope:a.scope},k=u,C=Array.isArray(k),D=0,k=C?k:(0,s.default)(k);;){var O;if(C){if(D>=k.length)break;O=k[D++]}else{if(D=k.next(),D.done)break;O=D.value}var N=O;if(N.traverse(n,w),w.collision)break}if(w.collision){var I=e.scope.generateUidIdentifier("initialiseProps");y.push(t.variableDeclaration("var",[t.variableDeclarator(I,t.functionExpression(null,[],t.blockStatement(m)))])),m=[t.expressionStatement(t.callExpression(t.memberExpression(I,t.identifier("call")),[t.thisExpression()]))]}if(r){var F=[];a.traverse(i,F);for(var B=F,R=Array.isArray(B),L=0,B=R?B:(0,s.default)(B);;){var M;if(R){if(L>=B.length)break;M=B[L++]}else{if(L=B.next(),L.done)break;M=L.value}var j=M;j.insertAfter(m)}}else a.get("body").unshiftContainer("body",m)}for(var V=u,U=Array.isArray(V),Y=0,V=U?V:(0,s.default)(V);;){
+var K;if(U){if(Y>=V.length)break;K=V[Y++]}else{if(Y=V.next(),Y.done)break;K=Y.value}var W=K;W.remove()}y.length&&(e.isClassExpression()?(e.scope.push({id:v}),e.replaceWith(t.assignmentExpression("=",v,e.node))):(e.node.id||(e.node.id=v),e.parentPath.isExportDeclaration()&&(e=e.parentPath)),e.insertAfter(y))}},ArrowFunctionExpression:function(e){var t=e.get("body");if(t.isClassExpression()){var r=t.get("body"),i=r.get("body");i.some(function(e){return e.isClassProperty()})&&e.ensureBlock()}}}}};var a=r(691),o=i(a);e.exports=t.default},[6675,3374],1580,[6512,204,202],[6701,755,3388,3387,201,1186,1814],[6516,288,393,1803],[6703,1175],[6519,1179,289,1182,290,203,599,3389,759,1810,123],[6708,757,758,394,1187,203,1805,288],[6710,1811,1177],[6523,203,600,1183],[6524,203,394,3379,1183],[6711,289,56,393],[6712,290],[6537,3382,123,599,56],685,[6540,3396,1807],[6584,68],[6597,30],[6601,68],1658,[6636,598,30],1658,[6475,124,3471,3470,3468,3466,3469,3467,3465,125,1824,762,3472,3473],[6553,754,68,601,125,762,763,483,3475],1784,1660,1669,[6556,3486,484],[6557,3481,1827,1828,1831,3511,3512,3513,126,87],[6558,3502],[6559,1830,484],[6615,3510],[6645,3489,87,294],1674,1794,[6660,87],[6617,1829,602,766],[6618,294],[6581,767,126,765,293,87],1681,function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(16),s=i(n),a=r(1),o=i(a);t.default=function(e){function t(e){return e.reverse().map(function(e){return e.expression})}function i(e,r,i){var n=[],a=e.node.decorators;if(a){e.node.decorators=null,a=t(a);for(var l=a,p=Array.isArray(l),c=0,l=p?l:(0,o.default)(l);;){var h;if(p){if(c>=l.length)break;h=l[c++]}else{if(c=l.next(),c.done)break;h=c.value}var d=h;n.push(f({CLASS_REF:r,DECORATOR:d}))}}for(var y=(0,s.default)(null),v=e.get("body.body"),m=Array.isArray(v),g=0,v=m?v:(0,o.default)(v);;){var b;if(m){if(g>=v.length)break;b=v[g++]}else{if(g=v.next(),g.done)break;b=g.value}var x=b,E=x.node.decorators;if(E){var A=u.toKeyAlias(x.node);y[A]=y[A]||[],y[A].push(x.node),x.remove()}}for(var S in y)var _=y[S];return n}function n(e){if(e.isClass()){if(e.node.decorators)return!0;for(var t=e.node.body.body,r=Array.isArray(t),i=0,t=r?t:(0,o.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(s.decorators)return!0}}else if(e.isObjectExpression())for(var a=e.node.properties,u=Array.isArray(a),l=0,a=u?a:(0,o.default)(a);;){var p;if(u){if(l>=a.length)break;p=a[l++]}else{if(l=a.next(),l.done)break;p=l.value}var c=p;if(c.decorators)return!0}return!1}function a(e){throw e.buildCodeFrameError('Decorators are not officially supported yet in 6.x pending a proposal update.\nHowever, if you need to use them you can install the legacy decorators transform with:\n\nnpm install babel-plugin-transform-decorators-legacy --save-dev\n\nand add the following line to your .babelrc file:\n\n{\n "plugins": ["transform-decorators-legacy"]\n}\n\nThe repo url is: https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy.\n ')}var u=e.types;return{inherits:r(1064),visitor:{ClassExpression:function(e){if(n(e)){a(e),(0,c.default)(e);var t=e.scope.generateDeclaredUidIdentifier("ref"),r=[];r.push(u.assignmentExpression("=",t,e.node)),r=r.concat(i(e,t,this)),r.push(t),e.replaceWith(u.sequenceExpression(r))}},ClassDeclaration:function(e){if(n(e)){a(e),(0,c.default)(e);var t=e.node.id,r=[];r=r.concat(i(e,t,this).map(function(e){return u.expressionStatement(e)})),r.push(u.expressionStatement(t)),e.insertAfter(r)}},ObjectExpression:function(e){n(e)&&a(e)}}}};var u=r(559),l=i(u),p=r(2572),c=i(p),f=(0,l.default)("\n CLASS_REF = DECORATOR(CLASS_REF) || CLASS_REF;\n");e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(){return{inherits:r(1645),visitor:{DoExpression:function(e){var t=e.node.body.body;t.length?e.replaceWithMultiple(t):e.replaceWith(e.scope.buildUndefinedNode())}}}},e.exports=t.default},1086,[6512,1204,485],1088,380,[6519,3541,3535,3547,603,772,773,3539,1849,3544,486],714,[6527,1205,772,486],[6529,485],716,[6439,2],[6452,21],[6456,2],[6473,16,21],[6475,127,3596,3595,3593,3591,3594,3592,3590,128,1857,604,3597,3598],[6487,47,2,605,128,604,776,488,3600],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(1),a=n(s),o=r(2),u=n(o),l=r(489),p=r(2591),c=n(p),f=r(1630),h=n(f),d=r(2571),y=i(d),v=r(3602),m=n(v),g=r(22),b=i(g),x=(0,m.default)("\n (function () {\n super(...arguments);\n })\n"),E={"FunctionExpression|FunctionDeclaration":function(e){e.is("shadow")||e.skip()},Method:function(e){e.skip()}},A=l.visitors.merge([E,{Super:function(e){if(this.isDerived&&!this.hasBareSuper&&!e.parentPath.isCallExpression({callee:e.node}))throw e.buildCodeFrameError("'super.*' is not allowed before super()")},CallExpression:{exit:function(e){if(e.get("callee").isSuper()&&(this.hasBareSuper=!0,!this.isDerived))throw e.buildCodeFrameError("super() is only allowed in a derived constructor")}},ThisExpression:function(e){if(this.isDerived&&!this.hasBareSuper&&!e.inShadow("this"))throw e.buildCodeFrameError("'this' is not allowed before super()")}}]),S=l.visitors.merge([E,{ThisExpression:function(e){this.superThises.push(e)}}]),_=function(){function e(t,r){(0,u.default)(this,e),this.parent=t.parent,this.scope=t.scope,this.node=t.node,this.path=t,this.file=r,this.clearDescriptors(),this.instancePropBody=[],this.instancePropRefs={},this.staticPropBody=[],this.body=[],this.bareSuperAfter=[],this.bareSupers=[],this.pushedConstructor=!1,this.pushedInherits=!1,this.isLoose=!1,this.superThises=[],this.classId=this.node.id,this.classRef=this.node.id?b.identifier(this.node.id.name):this.scope.generateUidIdentifier("class"),this.superName=this.node.superClass||b.identifier("Function"),this.isDerived=!!this.node.superClass}return e.prototype.run=function(){var e=this,t=this.superName,r=this.file,i=this.body,n=this.constructorBody=b.blockStatement([]);this.constructor=this.buildConstructor();var s=[],a=[];if(this.isDerived&&(a.push(t),t=this.scope.generateUidIdentifierBasedOnNode(t),s.push(t),this.superName=t),this.buildBody(),n.body.unshift(b.expressionStatement(b.callExpression(r.addHelper("classCallCheck"),[b.thisExpression(),this.classRef]))),i=i.concat(this.staticPropBody.map(function(t){return t(e.classRef)})),this.classId&&1===i.length)return b.toExpression(i[0]);i.push(b.returnStatement(this.classRef));var o=b.functionExpression(null,s,b.blockStatement(i));return o.shadow=!0,b.callExpression(o,a)},e.prototype.buildConstructor=function(){var e=b.functionDeclaration(this.classRef,[],this.constructorBody);return b.inherits(e,this.node),e},e.prototype.pushToMap=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?"value":arguments[2],i=arguments[3],n=void 0;e.static?(this.hasStaticDescriptors=!0,n=this.staticMutatorMap):(this.hasInstanceDescriptors=!0,n=this.instanceMutatorMap);var s=y.push(n,e,r,this.file,i);return t&&(s.enumerable=b.booleanLiteral(!0)),s},e.prototype.constructorMeMaybe=function(){for(var e=!1,t=this.path.get("body.body"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,a.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var o=s;if(e=o.equals("kind","constructor"))break}if(!e){var u=void 0,l=void 0;if(this.isDerived){var p=x().expression;u=p.params,l=p.body}else u=[],l=b.blockStatement([]);this.path.get("body").unshiftContainer("body",b.classMethod("constructor",b.identifier("constructor"),u,l))}},e.prototype.buildBody=function(){if(this.constructorMeMaybe(),this.pushBody(),this.verifyConstructor(),this.userConstructor){var e=this.constructorBody;e.body=e.body.concat(this.userConstructor.body.body),b.inherits(this.constructor,this.userConstructor),b.inherits(e,this.userConstructor.body)}this.pushDescriptors()},e.prototype.pushBody=function(){for(var e=this.path.get("body.body"),t=e,r=Array.isArray(t),i=0,t=r?t:(0,a.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,o=s.node;if(s.isClassProperty())throw s.buildCodeFrameError("Missing class properties transform.");if(o.decorators)throw s.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");if(b.isClassMethod(o)){var u="constructor"===o.kind;if(u&&(s.traverse(A,this),!this.hasBareSuper&&this.isDerived))throw s.buildCodeFrameError("missing super() call in constructor");var l=new c.default({forceSuperMemoisation:u,methodPath:s,methodNode:o,objectRef:this.classRef,superRef:this.superName,isStatic:o.static,isLoose:this.isLoose,scope:this.scope,file:this.file},(!0));l.replace(),u?this.pushConstructor(l,o,s):this.pushMethod(o,s)}}},e.prototype.clearDescriptors=function(){this.hasInstanceDescriptors=!1,this.hasStaticDescriptors=!1,this.instanceMutatorMap={},this.staticMutatorMap={}},e.prototype.pushDescriptors=function(){this.pushInherits();var e=this.body,t=void 0,r=void 0;if(this.hasInstanceDescriptors&&(t=y.toClassObject(this.instanceMutatorMap)),this.hasStaticDescriptors&&(r=y.toClassObject(this.staticMutatorMap)),t||r){t&&(t=y.toComputedObjectFromClass(t)),r&&(r=y.toComputedObjectFromClass(r));var i=b.nullLiteral(),n=[this.classRef,i,i,i,i];t&&(n[1]=t),r&&(n[2]=r),this.instanceInitializersId&&(n[3]=this.instanceInitializersId,e.unshift(this.buildObjectAssignment(this.instanceInitializersId))),this.staticInitializersId&&(n[4]=this.staticInitializersId,e.unshift(this.buildObjectAssignment(this.staticInitializersId)));for(var s=0,a=0;a<n.length;a++)n[a]!==i&&(s=a);n=n.slice(0,s+1),e.push(b.expressionStatement(b.callExpression(this.file.addHelper("createClass"),n)))}this.clearDescriptors()},e.prototype.buildObjectAssignment=function(e){return b.variableDeclaration("var",[b.variableDeclarator(e,b.objectExpression([]))])},e.prototype.wrapSuperCall=function(e,t,r,i){var n=e.node;this.isLoose?(n.arguments.unshift(b.thisExpression()),2===n.arguments.length&&b.isSpreadElement(n.arguments[1])&&b.isIdentifier(n.arguments[1].argument,{name:"arguments"})?(n.arguments[1]=n.arguments[1].argument,n.callee=b.memberExpression(t,b.identifier("apply"))):n.callee=b.memberExpression(t,b.identifier("call"))):n=(0,h.default)(b.logicalExpression("||",b.memberExpression(this.classRef,b.identifier("__proto__")),b.callExpression(b.memberExpression(b.identifier("Object"),b.identifier("getPrototypeOf")),[this.classRef])),b.thisExpression(),n.arguments);var s=b.callExpression(this.file.addHelper("possibleConstructorReturn"),[b.thisExpression(),n]),a=this.bareSuperAfter.map(function(e){return e(r)});e.parentPath.isExpressionStatement()&&e.parentPath.container===i.node.body&&i.node.body.length-1===e.parentPath.key?((this.superThises.length||a.length)&&(e.scope.push({id:r}),s=b.assignmentExpression("=",r,s)),a.length&&(s=b.toSequenceExpression([s].concat(a,[r]))),e.parentPath.replaceWith(b.returnStatement(s))):e.replaceWithMultiple([b.variableDeclaration("var",[b.variableDeclarator(r,s)])].concat(a,[b.expressionStatement(r)]))},e.prototype.verifyConstructor=function(){var e=this;if(this.isDerived){var t=this.userConstructorPath,r=t.get("body");t.traverse(S,this);for(var i=!!this.bareSupers.length,n=this.superName||b.identifier("Function"),s=t.scope.generateUidIdentifier("this"),o=this.bareSupers,u=Array.isArray(o),l=0,o=u?o:(0,a.default)(o);;){var p;if(u){if(l>=o.length)break;p=o[l++]}else{if(l=o.next(),l.done)break;p=l.value}var c=p;this.wrapSuperCall(c,n,s,r),i&&c.find(function(e){return e===t||(e.isLoop()||e.isConditional()?(i=!1,!0):void 0)})}for(var f=this.superThises,h=Array.isArray(f),d=0,f=h?f:(0,a.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y;v.replaceWith(s)}var m=function(t){return b.callExpression(e.file.addHelper("possibleConstructorReturn"),[s].concat(t||[]))},g=r.get("body");g.length&&!g.pop().isReturnStatement()&&r.pushContainer("body",b.returnStatement(i?s:m()));for(var x=this.superReturns,E=Array.isArray(x),A=0,x=E?x:(0,a.default)(x);;){var _;if(E){if(A>=x.length)break;_=x[A++]}else{if(A=x.next(),A.done)break;_=A.value}var T=_;if(T.node.argument){var P=T.scope.generateDeclaredUidIdentifier("ret");T.get("argument").replaceWithMultiple([b.assignmentExpression("=",P,T.node.argument),m(P)])}else T.get("argument").replaceWith(m())}}},e.prototype.pushMethod=function(e,t){var r=t?t.scope:this.scope;"method"===e.kind&&this._processMethod(e,r)||this.pushToMap(e,!1,null,r)},e.prototype._processMethod=function(){return!1},e.prototype.pushConstructor=function(e,t,r){this.bareSupers=e.bareSupers,this.superReturns=e.returns,r.scope.hasOwnBinding(this.classRef.name)&&r.scope.rename(this.classRef.name);var i=this.constructor;this.userConstructorPath=r,this.userConstructor=t,this.hasConstructor=!0,b.inheritsComments(i,t),i._ignoreUserWhitespace=!0,i.params=t.params,b.inherits(i.body,t.body),i.body.directives=t.body.directives,this._pushConstructor()},e.prototype._pushConstructor=function(){this.pushedConstructor||(this.pushedConstructor=!0,(this.hasInstanceDescriptors||this.hasStaticDescriptors)&&this.pushDescriptors(),this.body.push(this.constructor),this.pushInherits())},e.prototype.pushInherits=function(){this.isDerived&&!this.pushedInherits&&(this.pushedInherits=!0,this.body.unshift(b.expressionStatement(b.callExpression(this.file.addHelper("inherits"),[this.classRef,this.superName]))))},e}();t.default=_,e.exports=t.default},[6439,2],[6452,22],[6456,2],[6473,16,22],[6475,129,3639,3638,3636,3634,3637,3635,3633,130,1864,606,3640,3641],[6487,47,2,607,130,606,779,490,3643],1086,[6512,1215,491],1088,380,[6519,3657,3651,3663,608,783,784,3655,1871,3660,492],714,[6527,1216,783,492],[6529,491],716,1086,[6512,1222,493],1088,380,[6519,3688,3682,3694,609,788,789,3686,1880,3691,494],714,[6527,1223,788,494],[6529,493],716,[6553,80,13,610,132,792,793,495,3720],[6731,496,205],[6732,3778,3779,3780,3781,3782],[6736,205],function(e,t){function r(e,t,r,i){var n=-1,s=e?e.length:0;for(i&&s&&(r=e[++n]);++n<s;)r=t(r,e[n],n,e);return r}e.exports=r},[6745,1889],1275,[6763,3799],825,function(e,t){function r(e){if(null!=e){try{return i.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var i=Function.prototype.toString;e.exports=r},[6794,3795],[6798,399,1236],[6584,13],[6597,9],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(13),s=i(n),a=function(){function e(t){var r=t.existing,i=t.identifier,n=t.scope,a=t.path,o=t.kind;(0,s.default)(this,e),this.identifier=i,this.scope=n,this.path=a,this.kind=o,this.constantViolations=[],this.constant=!0,this.referencePaths=[],this.referenced=!1,this.references=0,this.clearValue(),r&&(this.constantViolations=[].concat(r.path,r.constantViolations,this.constantViolations))}return e.prototype.deoptValue=function(){this.clearValue(),this.hasDeoptedValue=!0},e.prototype.setValue=function(e){this.hasDeoptedValue||(this.hasValue=!0,this.value=e)},e.prototype.clearValue=function(){this.hasDeoptedValue=!1,this.hasValue=!1,this.value=null},e.prototype.reassign=function(e){this.constant=!1,this.constantViolations.indexOf(e)===-1&&this.constantViolations.push(e)},e.prototype.reference=function(e){this.referencePaths.indexOf(e)===-1&&(this.referenced=!0,this.references++,this.referencePaths.push(e))},e.prototype.dereference=function(){this.references--,this.referenced=!!this.references},e}();t.default=a,e.exports=t.default},1658,[6553,80,13,612,134,802,803,498,3848],[6731,499,135],[6736,135],function(e,t){function r(e,t,r){var i=r.length;switch(i){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}e.exports=r},1887,[6758,1909,1914],1275,[6763,3936],[6770,3880,3931,811,1911,1912],825,[6773,810,613,1241,500],1892,833,[6798,811,1244],[6497,1244],[6500,1902,1245],[6671,3952],[6675,3957],[6678,3959],1580,[6512,209,207],[6701,812,3971,3970,206,1261,1930],[6516,298,401,1919],[6703,1250],[6519,1254,299,1257,300,208,617,3972,816,1926,137],[6708,814,815,402,1262,208,1921,298],[6710,1927,1252],[6523,208,618,1258],[6524,208,402,3962,1258],[6711,299,57,401],[6712,300],[6537,3965,137,617,57],685,[6540,3979,1923],[6831,136,9],[6584,13],[6597,9],1897,[6553,80,13,619,139,819,820,503,4043],1658,[6610,4049,1938,4050],[6731,504,140],[6734,504,140],[6833,1270,4130,4131],[6737,140],1902,1602,1887,[6838,1952,827,831],[6745,1275],[6494,4113],[6839,4072,210,404],function(e,t){function r(e){return function(t){return null==t?void 0:t[e]}}e.exports=r},[6748,141,4137],[6758,1958,1965],[6849,1942,4062],[6763,4158],[6764,4051,1940,4053,1941,4055,1962],[6770,4082,1964,141,833,834],[6773,832,505,826,210],[6853,210],function(e,t){function r(e){var t=-1,r=Array(e.size);return e.forEach(function(e,i){r[++t]=[i,e]}),r}e.exports=r},function(e,t){function r(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}e.exports=r},1892,[6812,4065],[6794,4147],[6500,1944,1278],[6801,4083],[6675,4186],1580,[6512,214,212],[6701,839,4200,4199,211,1293,1980],[6516,304,406,1969],[6703,1282],[6519,1286,305,1289,306,213,620,4201,843,1976,142],[6708,841,842,407,1294,213,1971,304],[6710,1977,1284],[6523,213,621,1290],[6524,213,407,4191,1290],[6711,305,58,406],[6712,306],[6537,4194,142,620,58],685,[6540,4208,1973],[6584,69],[6597,31],[6601,69],1658,[6636,506,31],1658,[6475,143,4283,4282,4280,4278,4281,4279,4277,144,1990,846,4284,4285],[6553,838,69,622,144,846,847,508,4287],1784,1660,1669,[6556,4298,509],[6557,4293,1993,1994,1997,4323,4324,4325,145,89],[6558,4314],[6559,1996,509],[6615,4322],[6645,4301,89,310],1674,1794,[6660,89],[6617,1995,623,850],[6618,310],[6581,851,145,849,309,89],1681,[6439,2],[6452,23],[6456,2],[6473,16,23],[6475,146,4377,4376,4374,4372,4375,4373,4371,147,2012,625,4378,4379],[6487,47,2,626,147,625,854,510,4381],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(511),s=i(n),a=r(32),o=i(a),u=r(1313),l=i(u);t.default=function(e){var t=e.types,r=(0,l.default)(),i={"AssignmentExpression|UpdateExpression":function(e){if(!e.node[r]){e.node[r]=!0;var i=e.get(e.isAssignmentExpression()?"left":"argument");if(i.isIdentifier()){var n=i.node.name;if(this.scope.getBinding(n)===e.scope.getBinding(n)){var s=this.exports[n];if(s){var a=e.node,u=e.isUpdateExpression()&&!a.prefix;u&&("++"===a.operator?a=t.binaryExpression("+",a.argument,t.numericLiteral(1)):"--"===a.operator?a=t.binaryExpression("-",a.argument,t.numericLiteral(1)):u=!1);for(var l=s,p=Array.isArray(l),c=0,l=p?l:(0,o.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;a=this.buildCall(h,a).expression}u&&(a=t.sequenceExpression([a,e.node])),e.replaceWith(a)}}}}}};return{visitor:{ReferencedIdentifier:function(e,r){"__moduleName"!=e.node.name||e.scope.hasBinding("__moduleName")||e.replaceWith(t.memberExpression(r.contextIdent,t.identifier("id")))},Program:{enter:function(e,t){t.contextIdent=e.scope.generateUidIdentifier("context")},exit:function(e,r){function n(e,t){f[e]=f[e]||[],f[e].push(t)}function a(e,t,r){var i=h[e]=h[e]||{imports:[],exports:[]};i[t]=i[t].concat(r)}function u(e,r){return t.expressionStatement(t.callExpression(l,[t.stringLiteral(e),r]))}for(var l=e.scope.generateUidIdentifier("export"),p=r.contextIdent,f=(0,s.default)(null),h=(0,s.default)(null),v=[],m=[],g=[],b=[],x=[],E=e.get("body"),A=!0,S=E,_=Array.isArray(S),T=0,S=_?S:(0,o.default)(S);;){var P;if(_){if(T>=S.length)break;P=S[T++]}else{if(T=S.next(),T.done)break;P=T.value}var w=P;if(w.isExportDeclaration()&&(w=w.get("declaration")),w.isVariableDeclaration()&&"var"!==w.node.kind){A=!1;break}}for(var k=E,C=Array.isArray(k),D=0,k=C?k:(0,o.default)(k);;){var O;if(C){if(D>=k.length)break;O=k[D++]}else{if(D=k.next(),D.done)break;O=D.value}var N=O;if(A&&N.isFunctionDeclaration())v.push(N.node),x.push(N);else if(N.isImportDeclaration()){var I=N.node.source.value;a(I,"imports",N.node.specifiers);for(var F in N.getBindingIdentifiers())N.scope.removeBinding(F),b.push(t.identifier(F));N.remove()}else if(N.isExportAllDeclaration())a(N.node.source.value,"exports",N.node),N.remove();else if(N.isExportDefaultDeclaration()){var B=N.get("declaration");if(B.isClassDeclaration()||B.isFunctionDeclaration()){var R=B.node.id,L=[];R?(L.push(B.node),L.push(u("default",R)),n(R.name,"default")):L.push(u("default",t.toExpression(B.node))),!A||B.isClassDeclaration()?N.replaceWithMultiple(L):(v=v.concat(L),x.push(N))}else N.replaceWith(u("default",B.node))}else if(N.isExportNamedDeclaration()){var M=N.get("declaration");if(M.node){N.replaceWith(M);var j=[],V=void 0;if(N.isFunction()){var U=M.node,Y=U.id.name;if(A)n(Y,Y),v.push(U),v.push(u(Y,U.id)),x.push(N);else{var K;K={},K[Y]=U.id,V=K}}else V=M.getBindingIdentifiers();for(var W in V)n(W,W),j.push(u(W,t.identifier(W)));N.insertAfter(j)}else{var G=N.node.specifiers;if(G&&G.length)if(N.node.source)a(N.node.source.value,"exports",G),N.remove();else{for(var q=[],H=G,X=Array.isArray(H),J=0,H=X?H:(0,o.default)(H);;){var $;if(X){if(J>=H.length)break;$=H[J++]}else{if(J=H.next(),J.done)break;$=J.value}var z=$;q.push(u(z.exported.name,z.local)),n(z.local.name,z.exported.name)}N.replaceWithMultiple(q)}}}}for(var Q in h){for(var Z=h[Q],ee=[],te=e.scope.generateUidIdentifier(Q),re=Z.imports,ie=Array.isArray(re),ne=0,re=ie?re:(0,o.default)(re);;){var se;if(ie){if(ne>=re.length)break;se=re[ne++]}else{if(ne=re.next(),ne.done)break;se=ne.value}var ae=se;t.isImportNamespaceSpecifier(ae)?ee.push(t.expressionStatement(t.assignmentExpression("=",ae.local,te))):t.isImportDefaultSpecifier(ae)&&(ae=t.importSpecifier(ae.local,t.identifier("default"))),t.isImportSpecifier(ae)&&ee.push(t.expressionStatement(t.assignmentExpression("=",ae.local,t.memberExpression(te,ae.imported))))}if(Z.exports.length){var oe=e.scope.generateUidIdentifier("exportObj");ee.push(t.variableDeclaration("var",[t.variableDeclarator(oe,t.objectExpression([]))]));for(var ue=Z.exports,le=Array.isArray(ue),pe=0,ue=le?ue:(0,o.default)(ue);;){var ce;if(le){if(pe>=ue.length)break;ce=ue[pe++]}else{if(pe=ue.next(),pe.done)break;ce=pe.value}var fe=ce;t.isExportAllDeclaration(fe)?ee.push(y({KEY:e.scope.generateUidIdentifier("key"),EXPORT_OBJ:oe,TARGET:te})):t.isExportSpecifier(fe)&&ee.push(t.expressionStatement(t.assignmentExpression("=",t.memberExpression(oe,fe.exported),t.memberExpression(te,fe.local))))}ee.push(t.expressionStatement(t.callExpression(l,[oe])))}g.push(t.stringLiteral(Q)),m.push(t.functionExpression(null,[te],t.blockStatement(ee)))}var he=this.getModuleName();he&&(he=t.stringLiteral(he)),A&&(0,c.default)(e,function(e){return b.push(e)}),b.length&&v.unshift(t.variableDeclaration("var",b.map(function(e){return t.variableDeclarator(e)}))),e.traverse(i,{exports:f,buildCall:u,scope:e.scope});for(var de=x,ye=Array.isArray(de),ve=0,de=ye?de:(0,o.default)(de);;){var me;if(ye){if(ve>=de.length)break;me=de[ve++]}else{if(ve=de.next(),ve.done)break;me=ve.value}var ge=me;ge.remove()}e.node.body=[d({SYSTEM_REGISTER:t.memberExpression(t.identifier(r.opts.systemGlobal||"System"),t.identifier("register")),BEFORE_BODY:v,MODULE_NAME:he,SETTERS:m,SOURCES:g,BODY:e.node.body,EXPORT_IDENTIFIER:l,CONTEXT_IDENTIFIER:p})]}}}}};var p=r(1629),c=i(p),f=r(4393),h=i(f),d=(0,h.default)('\n SYSTEM_REGISTER(MODULE_NAME, [SOURCES], function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {\n "use strict";\n BEFORE_BODY;\n return {\n setters: [SETTERS],\n execute: function () {\n BODY;\n }\n };\n });\n'),y=(0,h.default)('\n for (var KEY in TARGET) {\n if (KEY !== "default" && KEY !== "__esModule") EXPORT_OBJ[KEY] = TARGET[KEY];\n }\n');e.exports=t.default},[6439,70],[6452,33],[6456,70],[6473,511,33],[6475,148,4430,4429,4427,4425,4428,4426,4424,149,2019,628,4431,4432],[6487,855,70,629,149,628,857,512,4434],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(e){function t(e){if(e.isExpressionStatement()){var t=e.get("expression");if(!t.isCallExpression())return!1;if(!t.get("callee").isIdentifier({name:"define"}))return!1;var r=t.get("arguments");return!(3===r.length&&!r.shift().isStringLiteral())&&(2===r.length&&(!!r.shift().isArrayExpression()&&!!r.shift().isFunctionExpression()))}}var i=e.types;return{inherits:r(1279),visitor:{Program:{exit:function(e,r){var s=e.get("body").pop();if(t(s)){var a=s.node.expression,p=a.arguments,c=3===p.length?p.shift():null,f=a.arguments[0],h=a.arguments[1],d=r.opts.globals||{},y=f.elements.map(function(e){return"module"===e.value||"exports"===e.value?i.identifier(e.value):i.callExpression(i.identifier("require"),[e])}),v=f.elements.map(function(e){if("module"===e.value)return i.identifier("mod");if("exports"===e.value)return i.memberExpression(i.identifier("mod"),i.identifier("exports"));var t=void 0;if(r.opts.exactGlobals){var s=d[e.value];t=s?s.split(".").reduce(function(e,t){return i.memberExpression(e,i.identifier(t))},i.identifier("global")):i.memberExpression(i.identifier("global"),i.identifier(i.toIdentifier(e.value)))}else{var a=(0,n.basename)(e.value,(0,n.extname)(e.value)),o=d[a]||a;t=i.memberExpression(i.identifier("global"),i.identifier(i.toIdentifier(o)))}return t}),m=c?c.value:this.file.opts.basename,g=i.memberExpression(i.identifier("global"),i.identifier(i.toIdentifier(m))),b=null;if(r.opts.exactGlobals){var x=d[m];if(x){b=[];var E=x.split(".");g=E.slice(1).reduce(function(e,t){return b.push(o({GLOBAL_REFERENCE:e})),i.memberExpression(e,i.identifier(t))},i.memberExpression(i.identifier("global"),i.identifier(E[0])))}}var A=u({BROWSER_ARGUMENTS:v,PREREQUISITE_ASSIGNMENTS:b,GLOBAL_TO_ASSIGN:g});s.replaceWith(l({MODULE_NAME:c,AMD_ARGUMENTS:f,COMMON_ARGUMENTS:y,GLOBAL_EXPORT:A,FUNC:h}))}}}}}};var n=r(187),s=r(559),a=i(s),o=(0,a.default)("\n GLOBAL_REFERENCE = GLOBAL_REFERENCE || {}\n"),u=(0,a.default)("\n var mod = { exports: {} };\n factory(BROWSER_ARGUMENTS);\n PREREQUISITE_ASSIGNMENTS\n GLOBAL_TO_ASSIGN = mod.exports;\n"),l=(0,a.default)('\n (function (global, factory) {\n if (typeof define === "function" && define.amd) {\n define(MODULE_NAME, AMD_ARGUMENTS, factory);\n } else if (typeof exports !== "undefined") {\n factory(COMMON_ARGUMENTS);\n } else {\n GLOBAL_EXPORT\n }\n })(this, FUNC);\n');e.exports=t.default},[6584,59],[6597,24],[6601,59],1658,[6553,869,59,630,151,861,862,514,4480],1660,[6556,4491,865],[6561,4514],[6564,4495],[6565,4509],[6574,1318,863],[6578,4489,2027,4498],[6636,632,24],1658,1669,[6558,4559],[6559,2036,867],[6560,316],[6645,4547,90,315],1674,[6564,2040],[6568,1323,1324,90],[6569,317,316],[6660,90],[6572,4553,317],[6581,1325,317,1324,516,90],1681,1580,[6512,218,216],[6701,870,4617,4616,215,1340,2060],[6516,318,415,2049],[6703,1329],[6519,1333,319,1336,320,217,633,4618,874,2056,152],[6708,872,873,416,1341,217,2051,318],[6710,2057,1331],[6523,217,634,1337],[6524,217,416,4608,1337],[6711,319,60,415],[6712,320],[6537,4611,152,633,60],685,[6540,4625,2053],[6439,2],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.Flow=t.Pure=t.Generated=t.User=t.Var=t.BlockScoped=t.Referenced=t.Scope=t.Expression=t.Statement=t.BindingIdentifier=t.ReferencedMemberExpression=t.ReferencedIdentifier=void 0;var n=r(3),s=i(n);t.ReferencedIdentifier={types:["Identifier","JSXIdentifier"],checkPath:function(e,t){var r=e.node,i=e.parent;if(!s.isIdentifier(r,t)){if(!s.isJSXIdentifier(r,t))return!1;if(n.react.isCompatTag(r.name))return!1}return s.isReferenced(r,i)}},t.ReferencedMemberExpression={types:["MemberExpression"],checkPath:function(e){var t=e.node,r=e.parent;return s.isMemberExpression(t)&&s.isReferenced(t,r)}},t.BindingIdentifier={types:["Identifier"],checkPath:function(e){var t=e.node,r=e.parent;return s.isIdentifier(t)&&s.isBinding(t,r)}},t.Statement={types:["Statement"],checkPath:function(e){var t=e.node,r=e.parent;if(s.isStatement(t)){if(s.isVariableDeclaration(t)){if(s.isForXStatement(r,{left:t}))return!1;if(s.isForStatement(r,{init:t}))return!1}return!0}return!1}},t.Expression={types:["Expression"],checkPath:function(e){return e.isIdentifier()?e.isReferencedIdentifier():s.isExpression(e.node)}},t.Scope={types:["Scopable"],checkPath:function(e){return s.isScope(e.node,e.parent)}},t.Referenced={checkPath:function(e){return s.isReferenced(e.node,e.parent)}},t.BlockScoped={checkPath:function(e){return s.isBlockScoped(e.node)}},t.Var={types:["VariableDeclaration"],checkPath:function(e){return s.isVar(e.node)}},t.User={checkPath:function(e){return e.node&&!!e.node.loc}},t.Generated={checkPath:function(e){return!e.isUser()}},t.Pure={checkPath:function(e,t){return e.scope.isPure(e.node,t)}},t.Flow={types:["Flow","ImportDeclaration","ExportDeclaration"],checkPath:function(e){var t=e.node;return!!s.isFlow(t)||(s.isImportDeclaration(t)?"type"===t.importKind||"typeof"===t.importKind:!!s.isExportDeclaration(t)&&"type"===t.exportKind)}}},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(2),s=i(n),a=function(){function e(t){var r=t.existing,i=t.identifier,n=t.scope,a=t.path,o=t.kind;(0,s.default)(this,e),this.identifier=i,this.scope=n,this.path=a,this.kind=o,this.constantViolations=[],this.constant=!0,this.referencePaths=[],this.referenced=!1,this.references=0,this.clearValue(),r&&(this.constantViolations=[].concat(r.path,r.constantViolations,this.constantViolations))}return e.prototype.deoptValue=function(){this.clearValue(),this.hasDeoptedValue=!0},e.prototype.setValue=function(e){this.hasDeoptedValue||(this.hasValue=!0,this.value=e)},e.prototype.clearValue=function(){this.hasDeoptedValue=!1,this.hasValue=!1,this.value=null},e.prototype.reassign=function(e){this.constant=!1,this.constantViolations.indexOf(e)===-1&&this.constantViolations.push(e)},e.prototype.reference=function(e){this.referencePaths.indexOf(e)===-1&&(this.referenced=!0,this.references++,this.referencePaths.push(e))},e.prototype.dereference=function(){this.references--,this.referenced=!!this.references},e}();t.default=a,e.exports=t.default},1580,[6512,222,220],[6701,881,4694,4693,219,1360,2078],[6516,322,419,2067],[6703,1349],[6519,1353,323,1356,324,221,637,4695,885,2074,153],[6708,883,884,420,1361,221,2069,322],[6710,2075,1351],[6523,221,638,1357],[6524,221,420,4685,1357],[6711,323,61,419],[6712,324],[6537,4688,153,637,61],685,[6540,4702,2071],[6636,636,35],[6584,71],[6597,35],[6601,71],[6553,880,71,639,155,888,889,520,4766],1658,[6610,4775,2086,4776],1660,1669,[6556,4789,521],[6558,4806],[6559,2091,521],[6560,328],[6615,4814],[6645,4792,91,327],1674,[6569,223,328],[6660,91],[6572,4798,223],[6617,4788,890,892],[6618,327],[6578,4786,2090,4804],[6581,1373,223,1372,422,91],1681,1086,[6512,1376,522],1088,380,[6519,4844,4838,4850,640,896,897,4842,2111,4847,523],714,[6527,1377,896,523],[6529,522],716,1580,[6512,227,225],[6701,901,4900,4899,224,1394,2126],[6516,329,424,2115],[6703,1383],[6519,1387,330,1390,331,226,642,4901,905,2122,156],[6708,903,904,425,1395,226,2117,329],[6710,2123,1385],[6523,226,643,1391],[6524,226,425,4891,1391],[6711,330,62,424],[6712,331],[6537,4894,156,642,62],685,[6540,4908,2119],[6636,641,25],[6584,72],[6597,25],[6601,72],[6553,900,72,644,158,908,909,526,4972],1658,[6610,4981,2134,4982],1660,1669,[6556,4995,527],[6558,5012],[6559,2139,527],[6560,335],[6615,5020],[6645,4998,92,334],1674,[6569,228,335],[6660,92],[6572,5004,228],[6617,4994,910,912],[6618,334],[6578,4992,2138,5010],[6581,1407,228,1406,427,92],1681,1086,[6512,1410,528],1088,380,[6519,5050,5044,5056,645,916,917,5048,2159,5053,529],714,[6527,1411,916,529],[6529,528],716,1086,[6512,921,428],[6516,530,920,2163],1090,[6710,2168,1416],1092,[6524,646,532,5070,2169],[6528,1420,923],1062,[6715,1423],[6553,81,14,647,160,925,926,533,5111],[6584,14],[6597,8],[6601,14],1658,[6553,81,14,649,162,928,929,534,5155],[6636,166,8],[6584,14],[6597,8],[6601,14],[6553,81,14,650,164,931,932,536,5215],1658,[6610,5224,2183,5225],1784,[6639,5229],1660,1669,[6556,5236,538],[6557,5231,2188,2189,2192,5261,5262,5263,165,93],[6558,5252],[6559,2191,538],[6615,5260],[6645,5239,93,338],1674,1794,[6660,93],[6618,338],[6619,937,5233,5254],[6579,1429,2196,936,165,934,1432,337,2185,1433],[6581,936,165,934,337,93],1681,[6671,5286],[6675,5291],[6678,5293],1580,[6512,232,230],[6701,938,5305,5304,229,1450,2218],[6516,340,431,2207],[6703,1439],[6519,1443,341,1446,342,231,654,5306,942,2214,167],[6708,940,941,432,1451,231,2209,340],[6710,2215,1441],[6523,231,655,1447],[6524,231,432,5296,1447],[6711,341,63,431],[6712,342],[6537,5299,167,654,63],685,[6540,5313,2211],[6636,657,26],[6584,73],[6597,26],[6601,73],[6553,951,73,656,169,945,946,541,5380],1658,[6610,5389,2226,5390],1660,1669,[6556,5403,542],[6558,5420],[6559,2231,542],[6560,346],[6615,5428],[6645,5406,95,345],1674,[6569,233,346],[6660,95],[6572,5412,233],[6617,5402,947,949],[6618,345],[6578,5400,2230,5418],[6581,1464,233,1463,434,95],1681,1580,[6512,237,235],[6701,952,5480,5479,234,1478,2257],[6516,347,436,2246],[6703,1467],[6519,1471,348,1474,349,236,658,5481,956,2253,170],[6708,954,955,437,1479,236,2248,347],[6710,2254,1469],[6523,236,659,1475],[6524,236,437,5471,1475],[6711,348,64,436],[6712,349],[6537,5474,170,658,64],685,[6540,5488,2250],function(e,t,r){
+"use strict";t.__esModule=!0,t.default=function(e){function t(e,r,n){var s=e.specifiers[0];if(i.isExportNamespaceSpecifier(s)||i.isExportDefaultSpecifier(s)){var a=e.specifiers.shift(),o=n.generateUidIdentifier(a.exported.name),u=void 0;u=i.isExportNamespaceSpecifier(a)?i.importNamespaceSpecifier(o):i.importDefaultSpecifier(o),r.push(i.importDeclaration([u],e.source)),r.push(i.exportNamedDeclaration(null,[i.exportSpecifier(o,a.exported)])),t(e,r,n)}}var i=e.types;return{inherits:r(1647),visitor:{ExportNamedDeclaration:function(e){var r=e.node,i=e.scope,n=[];t(r,n,i),n.length&&(r.specifiers.length>=1&&n.push(r),e.replaceWithMultiple(n))}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(1),s=i(n);t.default=function(e){var t=e.types,i="@flow";return{inherits:r(698),visitor:{Program:function(e,t){for(var r=t.file.ast.comments,n=r,a=Array.isArray(n),o=0,n=a?n:(0,s.default)(n);;){var u;if(a){if(o>=n.length)break;u=n[o++]}else{if(o=n.next(),o.done)break;u=o.value}var l=u;l.value.indexOf(i)>=0&&(l.value=l.value.replace(i,""),l.value.replace(/\*/g,"").trim()||(l.ignore=!0))}},Flow:function(e){e.remove()},ClassProperty:function(e){e.node.typeAnnotation=null,e.node.value||e.remove()},Class:function(e){e.node.implements=null,e.get("body.body").forEach(function(e){e.isClassProperty()&&(e.node.typeAnnotation=null,e.node.value||e.remove())})},Function:function(e){for(var t=e.node,r=0;r<t.params.length;r++){var i=t.params[r];i.optional=!1}},TypeCastExpression:function(e){var r=e.node;do r=r.expression;while(t.isTypeCastExpression(r));e.replaceWith(r)}}}},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){function t(e){var t=e.path.getData("functionBind");return t?t:(t=e.generateDeclaredUidIdentifier("context"),e.path.setData("functionBind",t))}function i(e,t){var r=e.object||e.callee.object;return t.isStatic(r)&&r}function n(e,r){var n=i(e,r);if(n)return n;var a=t(r);return e.object?e.callee=s.sequenceExpression([s.assignmentExpression("=",a,e.object),e.callee]):e.callee.object=s.assignmentExpression("=",a,e.callee.object),a}var s=e.types;return{inherits:r(1648),visitor:{CallExpression:function(e){var t=e.node,r=e.scope,i=t.callee;if(s.isBindExpression(i)){var a=n(i,r);t.callee=s.memberExpression(i.callee,s.identifier("call")),t.arguments.unshift(a)}},BindExpression:function(e){var t=e.node,r=e.scope,i=n(t,r);e.replaceWith(s.callExpression(s.memberExpression(t.callee,s.identifier("bind")),[i]))}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(5504),s=i(n);t.default=function(e){function t(e){for(var t=e.properties,r=Array.isArray(t),n=0,t=r?t:(0,s.default)(t);;){var a;if(r){if(n>=t.length)break;a=t[n++]}else{if(n=t.next(),n.done)break;a=n.value}var o=a;if(i.isSpreadProperty(o))return!0}return!1}var i=e.types;return{inherits:r(1649),visitor:{ObjectExpression:function(e,r){function n(){o.length&&(a.push(i.objectExpression(o)),o=[])}if(t(e.node)){for(var a=[],o=[],u=e.node.properties,l=Array.isArray(u),p=0,u=l?u:(0,s.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;i.isSpreadProperty(f)?(n(),a.push(f.argument)):o.push(f)}n(),i.isObjectExpression(a[0])||a.unshift(i.objectExpression([])),e.replaceWith(i.callExpression(r.addHelper("extends"),a))}}}}},e.exports=t.default},1086,[6512,1486,544],1088,380,[6519,5517,5511,5523,660,960,961,5515,2270,5520,545],714,[6527,1487,960,545],[6529,544],716,1086,[6512,1493,546],1088,380,[6519,5549,5543,5555,661,964,965,5547,2279,5552,547],714,[6527,1494,964,547],[6529,546],716,103,function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(e){function t(e,t){for(var r=t.arguments[0].properties,n=!0,s=0;s<r.length;s++){var a=r[s],o=i.toComputedKey(a);if(i.isLiteral(o,{value:"displayName"})){n=!1;break}}n&&r.unshift(i.objectProperty(i.identifier("displayName"),i.stringLiteral(e)))}function r(e){if(!e||!i.isCallExpression(e))return!1;if(!n(e.callee))return!1;var t=e.arguments;if(1!==t.length)return!1;var r=t[0];return!!i.isObjectExpression(r)}var i=e.types,n=i.buildMatchMemberExpression("React.createClass");return{visitor:{ExportDefaultDeclaration:function(e,i){var n=e.node;if(r(n.declaration)){var a=i.file.opts.basename;"index"===a&&(a=s.default.basename(s.default.dirname(i.file.opts.filename))),t(a,n.declaration)}},CallExpression:function(e){var n=e.node;if(r(n)){var s=void 0;e.find(function(e){if(e.isAssignmentExpression())s=e.node.left;else if(e.isObjectProperty())s=e.node.key;else if(e.isVariableDeclarator())s=e.node.id;else if(e.isStatement())return!0;if(s)return!0}),s&&(i.isMemberExpression(s)&&(s=s.property),i.isIdentifier(s)&&t(s.name,n))}}}}};var n=r(187),s=i(n);e.exports=t.default},1086,[6512,1500,548],1088,380,[6519,5598,5592,5604,662,968,969,5596,2290,5601,549],714,[6527,1501,968,549],[6529,548],716,[6636,664,36],[6584,74],[6597,36],[6601,74],[6553,977,74,663,172,971,972,551,5668],1658,1660,1669,[6556,5692,552],[6558,5709],[6559,2302,552],[6560,353],[6615,5717],[6645,5695,96,352],1674,[6569,238,353],[6660,96],[6572,5701,238],[6617,5691,973,975],[6618,352],[6578,5689,2301,5707],[6581,1513,238,1512,439,96],1681,1580,[6512,242,240],[6701,978,5768,5767,239,1527,2328],[6516,354,441,2317],[6703,1516],[6519,1520,355,1523,356,241,665,5769,982,2324,173],[6708,980,981,442,1528,241,2319,354],[6710,2325,1518],[6523,241,666,1524],[6524,241,442,5759,1524],[6711,355,65,441],[6712,356],[6537,5762,173,665,65],685,[6540,5776,2321],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(38),s=i(n);t.default=function(e){var t=e.types,i=/\*?\s*@jsx\s+([^\s]+)/,n=r(5791)({pre:function(e){var r=e.tagName,i=e.args;t.react.isCompatTag(r)?i.push(t.stringLiteral(r)):i.push(e.tagExpr)},post:function(e,t){e.callee=t.get("jsxIdentifier")()}});return n.Program=function(e,r){for(var n=r.file,a=r.opts.pragma||"React.createElement",o=n.ast.comments,u=Array.isArray(o),l=0,o=u?o:(0,s.default)(o);;){var p;if(u){if(l>=o.length)break;p=o[l++]}else{if(l=o.next(),l.done)break;p=l.value}var c=p,f=i.exec(c.value);if(f){if(a=f[1],"React.DOM"===a)throw n.buildCodeFrameError(c,"The @jsx React.DOM pragma has been deprecated as of React 0.12");break}}r.set("jsxIdentifier",function(){return a.split(".").map(function(e){return t.identifier(e)}).reduce(function(e,r){return t.memberExpression(e,r)})})},{inherits:r(1065),visitor:n}},e.exports=t.default},[6636,668,37],[6584,75],[6597,37],[6601,75],[6553,991,75,667,175,985,986,555,5843],1658,1660,1669,[6556,5867,556],[6558,5884],[6559,2341,556],[6560,360],[6615,5892],[6645,5870,97,359],1674,[6569,243,360],[6660,97],[6572,5876,243],[6617,5866,987,989],[6618,359],[6578,5864,2340,5882],[6581,1541,243,1540,444,97],1681,1580,[6512,247,245],[6701,992,5943,5942,244,1555,2367],[6516,361,446,2356],[6703,1544],[6519,1548,362,1551,363,246,669,5944,996,2363,176],[6708,994,995,447,1556,246,2358,361],[6710,2364,1546],[6523,246,670,1552],[6524,246,447,5934,1552],[6711,362,66,446],[6712,363],[6537,5937,176,669,66],685,[6540,5951,2360],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){d.default.ok(this instanceof s),v.assertIdentifier(e),this.nextTempId=0,this.contextId=e,this.listing=[],this.marked=[!0],this.finalLoc=a(),this.tryEntries=[],this.leapManager=new g.LeapManager(this)}function a(){return v.numericLiteral(-1)}function o(e){return new Error("all declarations should have been transformed into assignments before the Exploder began its work: "+(0,f.default)(e))}function u(e){var t=e.type;return"normal"===t?!S.call(e,"target"):"break"===t||"continue"===t?!S.call(e,"value")&&v.isLiteral(e.target):("return"===t||"throw"===t)&&(S.call(e,"value")&&!S.call(e,"target"))}var l=r(11),p=n(l),c=r(17),f=n(c),h=r(687),d=n(h),y=r(77),v=i(y),m=r(5965),g=i(m),b=r(5966),x=i(b),E=r(2371),A=i(E),S=Object.prototype.hasOwnProperty,_=s.prototype;t.Emitter=s,_.mark=function(e){v.assertLiteral(e);var t=this.listing.length;return e.value===-1?e.value=t:d.default.strictEqual(e.value,t),this.marked[t]=!0,e},_.emit=function(e){v.isExpression(e)&&(e=v.expressionStatement(e)),v.assertStatement(e),this.listing.push(e)},_.emitAssign=function(e,t){return this.emit(this.assign(e,t)),e},_.assign=function(e,t){return v.expressionStatement(v.assignmentExpression("=",e,t))},_.contextProperty=function(e,t){return v.memberExpression(this.contextId,t?v.stringLiteral(e):v.identifier(e),!!t)},_.stop=function(e){e&&this.setReturnValue(e),this.jump(this.finalLoc)},_.setReturnValue=function(e){v.assertExpression(e.value),this.emitAssign(this.contextProperty("rval"),this.explodeExpression(e))},_.clearPendingException=function(e,t){v.assertLiteral(e);var r=v.callExpression(this.contextProperty("catch",!0),[e]);t?this.emitAssign(t,r):this.emit(r)},_.jump=function(e){this.emitAssign(this.contextProperty("next"),e),this.emit(v.breakStatement())},_.jumpIf=function(e,t){v.assertExpression(e),v.assertLiteral(t),this.emit(v.ifStatement(e,v.blockStatement([this.assign(this.contextProperty("next"),t),v.breakStatement()])))},_.jumpIfNot=function(e,t){v.assertExpression(e),v.assertLiteral(t);var r=void 0;r=v.isUnaryExpression(e)&&"!"===e.operator?e.argument:v.unaryExpression("!",e),this.emit(v.ifStatement(r,v.blockStatement([this.assign(this.contextProperty("next"),t),v.breakStatement()])))},_.makeTempVar=function(){return this.contextProperty("t"+this.nextTempId++)},_.getContextFunction=function(e){return v.functionExpression(e||null,[this.contextId],v.blockStatement([this.getDispatchLoop()]),!1,!1)},_.getDispatchLoop=function(){var e=this,t=[],r=void 0,i=!1;return e.listing.forEach(function(n,s){e.marked.hasOwnProperty(s)&&(t.push(v.switchCase(v.numericLiteral(s),r=[])),i=!1),i||(r.push(n),v.isCompletionStatement(n)&&(i=!0))}),this.finalLoc.value=this.listing.length,t.push(v.switchCase(this.finalLoc,[]),v.switchCase(v.stringLiteral("end"),[v.returnStatement(v.callExpression(this.contextProperty("stop"),[]))])),v.whileStatement(v.numericLiteral(1),v.switchStatement(v.assignmentExpression("=",this.contextProperty("prev"),this.contextProperty("next")),t))},_.getTryLocsList=function(){if(0===this.tryEntries.length)return null;var e=0;return v.arrayExpression(this.tryEntries.map(function(t){var r=t.firstLoc.value;d.default.ok(r>=e,"try entries out of order"),e=r;var i=t.catchEntry,n=t.finallyEntry,s=[t.firstLoc,i?i.firstLoc:null];return n&&(s[2]=n.firstLoc,s[3]=n.afterLoc),v.arrayExpression(s)}))},_.explode=function(e,t){var r=e.node,i=this;if(v.assertNode(r),v.isDeclaration(r))throw o(r);if(v.isStatement(r))return i.explodeStatement(e);if(v.isExpression(r))return i.explodeExpression(e,t);switch(r.type){case"Program":return e.get("body").map(i.explodeStatement,i);case"VariableDeclarator":throw o(r);case"Property":case"SwitchCase":case"CatchClause":throw new Error(r.type+" nodes should be handled by their parents");default:throw new Error("unknown Node of type "+(0,f.default)(r.type))}},_.explodeStatement=function(e,t){var r=e.node,i=this,n=void 0,s=void 0,o=void 0;if(v.assertStatement(r),t?v.assertIdentifier(t):t=null,v.isBlockStatement(r))return void e.get("body").forEach(function(e){i.explodeStatement(e)});if(!x.containsLeap(r))return void i.emit(r);var u=function(){switch(r.type){case"ExpressionStatement":i.explodeExpression(e.get("expression"),!0);break;case"LabeledStatement":s=a(),i.leapManager.withEntry(new g.LabeledEntry(s,r.label),function(){i.explodeStatement(e.get("body"),r.label)}),i.mark(s);break;case"WhileStatement":n=a(),s=a(),i.mark(n),i.jumpIfNot(i.explodeExpression(e.get("test")),s),i.leapManager.withEntry(new g.LoopEntry(s,n,t),function(){i.explodeStatement(e.get("body"))}),i.jump(n),i.mark(s);break;case"DoWhileStatement":var u=a(),l=a();s=a(),i.mark(u),i.leapManager.withEntry(new g.LoopEntry(s,l,t),function(){i.explode(e.get("body"))}),i.mark(l),i.jumpIf(i.explodeExpression(e.get("test")),u),i.mark(s);break;case"ForStatement":o=a();var p=a();s=a(),r.init&&i.explode(e.get("init"),!0),i.mark(o),r.test&&i.jumpIfNot(i.explodeExpression(e.get("test")),s),i.leapManager.withEntry(new g.LoopEntry(s,p,t),function(){i.explodeStatement(e.get("body"))}),i.mark(p),r.update&&i.explode(e.get("update"),!0),i.jump(o),i.mark(s);break;case"TypeCastExpression":return{v:i.explodeExpression(e.get("expression"))};case"ForInStatement":o=a(),s=a();var c=i.makeTempVar();i.emitAssign(c,v.callExpression(A.runtimeProperty("keys"),[i.explodeExpression(e.get("right"))])),i.mark(o);var h=i.makeTempVar();i.jumpIf(v.memberExpression(v.assignmentExpression("=",h,v.callExpression(c,[])),v.identifier("done"),!1),s),i.emitAssign(r.left,v.memberExpression(h,v.identifier("value"),!1)),i.leapManager.withEntry(new g.LoopEntry(s,o,t),function(){i.explodeStatement(e.get("body"))}),i.jump(o),i.mark(s);break;case"BreakStatement":i.emitAbruptCompletion({type:"break",target:i.leapManager.getBreakLoc(r.label)});break;case"ContinueStatement":i.emitAbruptCompletion({type:"continue",target:i.leapManager.getContinueLoc(r.label)});break;case"SwitchStatement":var y=i.emitAssign(i.makeTempVar(),i.explodeExpression(e.get("discriminant")));s=a();for(var m=a(),b=m,x=[],E=r.cases||[],S=E.length-1;S>=0;--S){var _=E[S];v.assertSwitchCase(_),_.test?b=v.conditionalExpression(v.binaryExpression("===",y,_.test),x[S]=a(),b):x[S]=m}var P=e.get("discriminant");P.replaceWith(b),i.jump(i.explodeExpression(P)),i.leapManager.withEntry(new g.SwitchEntry(s),function(){e.get("cases").forEach(function(e){var t=e.key;i.mark(x[t]),e.get("consequent").forEach(function(e){i.explodeStatement(e)})})}),i.mark(s),m.value===-1&&(i.mark(m),d.default.strictEqual(s.value,m.value));break;case"IfStatement":var w=r.alternate&&a();s=a(),i.jumpIfNot(i.explodeExpression(e.get("test")),w||s),i.explodeStatement(e.get("consequent")),w&&(i.jump(s),i.mark(w),i.explodeStatement(e.get("alternate"))),i.mark(s);break;case"ReturnStatement":i.emitAbruptCompletion({type:"return",value:i.explodeExpression(e.get("argument"))});break;case"WithStatement":throw new Error("WithStatement not supported in generator functions.");case"TryStatement":s=a();var k=r.handler,C=k&&a(),D=C&&new g.CatchEntry(C,k.param),O=r.finalizer&&a(),N=O&&new g.FinallyEntry(O,s),I=new g.TryEntry(i.getUnmarkedCurrentLoc(),D,N);i.tryEntries.push(I),i.updateContextPrevLoc(I.firstLoc),i.leapManager.withEntry(I,function(){i.explodeStatement(e.get("block")),C&&!function(){O?i.jump(O):i.jump(s),i.updateContextPrevLoc(i.mark(C));var t=e.get("handler.body"),r=i.makeTempVar();i.clearPendingException(I.firstLoc,r),t.traverse(T,{safeParam:r,catchParamName:k.param.name}),i.leapManager.withEntry(D,function(){i.explodeStatement(t)})}(),O&&(i.updateContextPrevLoc(i.mark(O)),i.leapManager.withEntry(N,function(){i.explodeStatement(e.get("finalizer"))}),i.emit(v.returnStatement(v.callExpression(i.contextProperty("finish"),[N.firstLoc]))))}),i.mark(s);break;case"ThrowStatement":i.emit(v.throwStatement(i.explodeExpression(e.get("argument"))));break;default:throw new Error("unknown Statement of type "+(0,f.default)(r.type))}}();return"object"===("undefined"==typeof u?"undefined":(0,p.default)(u))?u.v:void 0};var T={Identifier:function(e,t){e.node.name===t.catchParamName&&A.isReference(e)&&e.replaceWith(t.safeParam)},Scope:function(e,t){e.scope.hasOwnBinding(t.catchParamName)&&e.skip()}};_.emitAbruptCompletion=function(e){u(e)||d.default.ok(!1,"invalid completion record: "+(0,f.default)(e)),d.default.notStrictEqual(e.type,"normal","normal completions are not abrupt");var t=[v.stringLiteral(e.type)];"break"===e.type||"continue"===e.type?(v.assertLiteral(e.target),t[1]=e.target):"return"!==e.type&&"throw"!==e.type||e.value&&(v.assertExpression(e.value),t[1]=e.value),this.emit(v.returnStatement(v.callExpression(this.contextProperty("abrupt"),t)))},_.getUnmarkedCurrentLoc=function(){return v.numericLiteral(this.listing.length)},_.updateContextPrevLoc=function(e){e?(v.assertLiteral(e),e.value===-1?e.value=this.listing.length:d.default.strictEqual(e.value,this.listing.length)):e=this.getUnmarkedCurrentLoc(),this.emitAssign(this.contextProperty("prev"),e)},_.explodeExpression=function(e,t){function r(e){return v.assertExpression(e),t?void s.emit(e):e}function i(e,t,r){d.default.ok(!r||!e,"Ignoring the result of a child expression but forcing it to be assigned to a temporary variable?");var i=s.explodeExpression(t,r);return r||(e||l&&!v.isLiteral(i))&&(i=s.emitAssign(e||s.makeTempVar(),i)),i}var n=e.node;if(!n)return n;v.assertExpression(n);var s=this,o=void 0,u=void 0;if(!x.containsLeap(n))return r(n);var l=x.containsLeap.onlyChildren(n),c=function(){switch(n.type){case"MemberExpression":return{v:r(v.memberExpression(s.explodeExpression(e.get("object")),n.computed?i(null,e.get("property")):n.property,n.computed))};case"CallExpression":var l=e.get("callee"),p=e.get("arguments"),c=void 0,h=[],y=!1;if(p.forEach(function(e){y=y||x.containsLeap(e.node)}),v.isMemberExpression(l.node))if(y){var m=i(s.makeTempVar(),l.get("object")),g=l.node.computed?i(null,l.get("property")):l.node.property;h.unshift(m),c=v.memberExpression(v.memberExpression(m,g,l.node.computed),v.identifier("call"),!1)}else c=s.explodeExpression(l);else c=s.explodeExpression(l),v.isMemberExpression(c)&&(c=v.sequenceExpression([v.numericLiteral(0),c]));return p.forEach(function(e){h.push(i(null,e))}),{v:r(v.callExpression(c,h))};case"NewExpression":return{v:r(v.newExpression(i(null,e.get("callee")),e.get("arguments").map(function(e){return i(null,e)})))};case"ObjectExpression":return{v:r(v.objectExpression(e.get("properties").map(function(e){return e.isObjectProperty()?v.objectProperty(e.node.key,i(null,e.get("value")),e.node.computed):e.node})))};case"ArrayExpression":return{v:r(v.arrayExpression(e.get("elements").map(function(e){return i(null,e)})))};case"SequenceExpression":var b=n.expressions.length-1;return e.get("expressions").forEach(function(e){e.key===b?o=s.explodeExpression(e,t):s.explodeExpression(e,!0)}),{v:o};case"LogicalExpression":u=a(),t||(o=s.makeTempVar());var E=i(o,e.get("left"));return"&&"===n.operator?s.jumpIfNot(E,u):(d.default.strictEqual(n.operator,"||"),s.jumpIf(E,u)),i(o,e.get("right"),t),s.mark(u),{v:o};case"ConditionalExpression":var A=a();u=a();var S=s.explodeExpression(e.get("test"));return s.jumpIfNot(S,A),t||(o=s.makeTempVar()),i(o,e.get("consequent"),t),s.jump(u),s.mark(A),i(o,e.get("alternate"),t),s.mark(u),{v:o};case"UnaryExpression":return{v:r(v.unaryExpression(n.operator,s.explodeExpression(e.get("argument")),!!n.prefix))};case"BinaryExpression":return{v:r(v.binaryExpression(n.operator,i(null,e.get("left")),i(null,e.get("right"))))};case"AssignmentExpression":return{v:r(v.assignmentExpression(n.operator,s.explodeExpression(e.get("left")),s.explodeExpression(e.get("right"))))};case"UpdateExpression":return{v:r(v.updateExpression(n.operator,s.explodeExpression(e.get("argument")),n.prefix))};case"YieldExpression":u=a();var _=n.argument&&s.explodeExpression(e.get("argument"));if(_&&n.delegate){var T=s.makeTempVar();return s.emit(v.returnStatement(v.callExpression(s.contextProperty("delegateYield"),[_,v.stringLiteral(T.property.name),u]))),s.mark(u),{v:T}}return s.emitAssign(s.contextProperty("next"),u),s.emit(v.returnStatement(_||null)),s.mark(u),{v:s.contextProperty("sent")};default:throw new Error("unknown Expression of type "+(0,f.default)(n.type))}}();return"object"===("undefined"==typeof c?"undefined":(0,p.default)(c))?c.v:void 0}},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return o.memberExpression(o.identifier("regeneratorRuntime"),o.identifier(e),!1)}function s(e){return e.isReferenced()||e.parentPath.isAssignmentExpression({left:e.node})}t.__esModule=!0,t.runtimeProperty=n,t.isReference=s;var a=r(77),o=i(a)},[6473,16,77],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(1),a=n(s);t.default=function(){return{visitor:{Program:function(e,t){if(t.opts.strict!==!1&&t.opts.strictMode!==!1){for(var r=e.node,i=r.directives,n=Array.isArray(i),s=0,i=n?i:(0,a.default)(i);;){var o;if(n){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var l=o;if("use strict"===l.value.value)return}e.unshiftContainer("directives",u.directive(u.directiveLiteral("use strict")))}}}}};var o=r(3),u=i(o);e.exports=t.default},function(e,t,r){"use strict";function i(e,t){var i=["commonjs","amd","umd","systemjs"],n=!1,s="commonjs",a=!1;if(void 0!==t&&(void 0!==t.loose&&(n=t.loose),void 0!==t.modules&&(s=t.modules),void 0!==t.spec&&(a=t.spec)),"boolean"!=typeof n)throw new Error("Preset es2015 'loose' option must be a boolean.");if("boolean"!=typeof a)throw new Error("Preset es2015 'spec' option must be a boolean.");if(s!==!1&&i.indexOf(s)===-1)throw new Error("Preset es2015 'modules' option must be 'false' to indicate no modules\nor a module type which be be one of: 'commonjs' (default), 'amd', 'umd', 'systemjs'");return{plugins:[[r(913),{loose:n,spec:a}],r(836),r(791),[r(768),{spec:a}],r(769),[r(777),{loose:n}],r(858),r(878),r(1227),[r(780),{loose:n}],[r(790),{loose:n}],r(898),r(924),r(692),[r(893),{loose:n}],r(876),[r(785),{loose:n}],r(774),r(918),"commonjs"===s&&[r(852),{loose:n}],"systemjs"===s&&[r(2013),{loose:n}],"amd"===s&&[r(1279),{loose:n}],"umd"===s&&[r(2020),{loose:n}],[r(998),{async:!1,asyncGenerators:!1}]].filter(Boolean)}}e.exports=i({}),Object.defineProperty(e.exports,"buildPreset",{configurable:!0,writable:!0,enumerable:!1,value:i})},function(e,t,r){e.exports={plugins:[r(1456)]}},function(e,t,r){e.exports={plugins:[r(1066),r(1067)]}},function(e,t,r){e.exports={presets:[r(2378)],plugins:[r(1760),r(2260)]}},function(e,t,r){e.exports={presets:[r(2379)],plugins:[r(1800),r(2263),r(1841)]}},function(e,t,r){e.exports={plugins:[r(1066),r(1067),r(1456)]}},[6439,2],2064,2065,[6731,560,177],[6736,177],1902,1887,[6758,2392,2397],1275,[6763,6090],[6770,6034,6085,1008,2394,2395],825,[6773,1007,672,1565,561],1892,833,[6798,1008,1568],[6497,1568],[6500,2385,1569],[6831,16,3],[6731,562,249],[6734,562,249],[6833,1571,6181,6182],[6737,249],1602,1887,[6739,2421],[6838,2410,1013,1016],[6745,1575],[6839,6126,451,452],1951,[6748,178,6188],[6755,2405],[6849,2401,6116],[6763,6205],[6764,6107,2399,6109,2400,6110,2420],826,681,[6853,451],1960,1961,1892,810,[6794,6196],[6496,451],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}Object.defineProperty(t,"__esModule",{value:!0}),t.Token=void 0;var s=r(47),a=i(s),o=r(2),u=i(o),l=r(675),p=r(180),c=r(674),f=r(1018),h=r(564),d=r(6220),y=i(d),v=t.Token=function e(t){(0,u.default)(this,e),this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,this.loc=new f.SourceLocation(t.startLoc,t.endLoc)},m=function(){function e(t,r){(0,u.default)(this,e),this.state=new y.default,this.state.init(t,r)}return(0,a.default)(e,[{key:"next",value:function(){this.isLookahead||this.state.tokens.push(new v(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()}},{key:"eat",value:function(e){return!!this.match(e)&&(this.next(),!0)}},{key:"match",value:function(e){return this.state.type===e}},{key:"isKeyword",value:function(e){return(0,l.isKeyword)(e)}},{key:"lookahead",value:function(){var e=this.state;this.state=e.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var t=this.state.clone(!0);return this.state=e,t}},{key:"setStrict",value:function(e){if(this.state.strict=e,this.match(p.types.num)||this.match(p.types.string)){for(this.state.pos=this.state.start;this.state.pos<this.state.lineStart;)this.state.lineStart=this.input.lastIndexOf("\n",this.state.lineStart-2)+1,--this.state.curLine;this.nextToken()}}},{key:"curContext",value:function(){return this.state.context[this.state.context.length-1]}},{key:"nextToken",value:function(){var e=this.curContext();return e&&e.preserveSpace||this.skipSpace(),this.state.containsOctal=!1,this.state.octalPosition=null,this.state.start=this.state.pos,this.state.startLoc=this.state.curPosition(),this.state.pos>=this.input.length?this.finishToken(p.types.eof):e.override?e.override(this):this.readToken(this.fullCharCodeAtPos())}},{key:"readToken",value:function(e){return(0,l.isIdentifierStart)(e)||92===e?this.readWord():this.getTokenFromCode(e)}},{key:"fullCharCodeAtPos",value:function(){var e=this.input.charCodeAt(this.state.pos);if(e<=55295||e>=57344)return e;var t=this.input.charCodeAt(this.state.pos+1);return(e<<10)+t-56613888}},{key:"pushComment",value:function(e,t,r,i,n,s){var a={type:e?"CommentBlock":"CommentLine",value:t,start:r,end:i,loc:new f.SourceLocation(n,s)};this.isLookahead||(this.state.tokens.push(a),this.state.comments.push(a)),this.addComment(a)}},{key:"skipBlockComment",value:function(){var e=this.state.curPosition(),t=this.state.pos,r=this.input.indexOf("*/",this.state.pos+=2);r===-1&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=r+2,h.lineBreakG.lastIndex=t;for(var i=void 0;(i=h.lineBreakG.exec(this.input))&&i.index<this.state.pos;)++this.state.curLine,this.state.lineStart=i.index+i[0].length;this.pushComment(!0,this.input.slice(t+2,r),t,this.state.pos,e,this.state.curPosition())}},{key:"skipLineComment",value:function(e){for(var t=this.state.pos,r=this.state.curPosition(),i=this.input.charCodeAt(this.state.pos+=e);this.state.pos<this.input.length&&10!==i&&13!==i&&8232!==i&&8233!==i;)++this.state.pos,i=this.input.charCodeAt(this.state.pos);this.pushComment(!1,this.input.slice(t+e,this.state.pos),t,this.state.pos,r,this.state.curPosition())}},{key:"skipSpace",value:function(){e:for(;this.state.pos<this.input.length;){var e=this.input.charCodeAt(this.state.pos);switch(e){case 32:case 160:++this.state.pos;break;case 13:10===this.input.charCodeAt(this.state.pos+1)&&++this.state.pos;case 10:case 8232:case 8233:++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;break;case 47:switch(this.input.charCodeAt(this.state.pos+1)){case 42:this.skipBlockComment();break;case 47:this.skipLineComment(2);break;default:break e}break;default:if(!(e>8&&e<14||e>=5760&&h.nonASCIIwhitespace.test(String.fromCharCode(e))))break e;++this.state.pos}}}},{key:"finishToken",value:function(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var r=this.state.type;this.state.type=e,this.state.value=t,this.updateContext(r)}},{key:"readToken_dot",value:function(){var e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.state.pos+2);return 46===e&&46===t?(this.state.pos+=3,this.finishToken(p.types.ellipsis)):(++this.state.pos,this.finishToken(p.types.dot))}},{key:"readToken_slash",value:function(){if(this.state.exprAllowed)return++this.state.pos,this.readRegexp();var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(p.types.assign,2):this.finishOp(p.types.slash,1)}},{key:"readToken_mult_modulo",value:function(e){var t=42===e?p.types.star:p.types.modulo,r=1,i=this.input.charCodeAt(this.state.pos+1);return 42===i&&this.hasPlugin("exponentiationOperator")&&(r++,i=this.input.charCodeAt(this.state.pos+2),t=p.types.exponent),61===i&&(r++,t=p.types.assign),this.finishOp(t,r)}},{key:"readToken_pipe_amp",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?this.finishOp(124===e?p.types.logicalOR:p.types.logicalAND,2):61===t?this.finishOp(p.types.assign,2):this.finishOp(124===e?p.types.bitwiseOR:p.types.bitwiseAND,1)}},{key:"readToken_caret",value:function(){var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(p.types.assign,2):this.finishOp(p.types.bitwiseXOR,1)}},{key:"readToken_plus_min",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?45===t&&62===this.input.charCodeAt(this.state.pos+2)&&h.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(p.types.incDec,2):61===t?this.finishOp(p.types.assign,2):this.finishOp(p.types.plusMin,1)}},{key:"readToken_lt_gt",value:function(e){var t=this.input.charCodeAt(this.state.pos+1),r=1;return t===e?(r=62===e&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+r)?this.finishOp(p.types.assign,r+1):this.finishOp(p.types.bitShift,r)):33===t&&60===e&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(r=2),this.finishOp(p.types.relational,r))}},{key:"readToken_eq_excl",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return 61===t?this.finishOp(p.types.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===e&&62===t?(this.state.pos+=2,this.finishToken(p.types.arrow)):this.finishOp(61===e?p.types.eq:p.types.prefix,1)}},{key:"getTokenFromCode",value:function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(p.types.parenL);case 41:return++this.state.pos,this.finishToken(p.types.parenR);case 59:return++this.state.pos,this.finishToken(p.types.semi);case 44:return++this.state.pos,this.finishToken(p.types.comma);case 91:return++this.state.pos,this.finishToken(p.types.bracketL);case 93:return++this.state.pos,this.finishToken(p.types.bracketR);case 123:return++this.state.pos,this.finishToken(p.types.braceL);case 125:return++this.state.pos,this.finishToken(p.types.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(p.types.doubleColon,2):(++this.state.pos,this.finishToken(p.types.colon));case 63:return++this.state.pos,this.finishToken(p.types.question);case 64:return++this.state.pos,this.finishToken(p.types.at);case 96:return++this.state.pos,this.finishToken(p.types.backQuote);case 48:var t=this.input.charCodeAt(this.state.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(p.types.prefix,1)}this.raise(this.state.pos,"Unexpected character '"+n(e)+"'")}},{key:"finishOp",value:function(e,t){var r=this.input.slice(this.state.pos,this.state.pos+t);return this.state.pos+=t,this.finishToken(e,r)}},{key:"readRegexp",value:function(){for(var e=void 0,t=void 0,r=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(r,"Unterminated regular expression");var i=this.input.charAt(this.state.pos);if(h.lineBreak.test(i)&&this.raise(r,"Unterminated regular expression"),e)e=!1;else{if("["===i)t=!0;else if("]"===i&&t)t=!1;else if("/"===i&&!t)break;e="\\"===i}++this.state.pos}var n=this.input.slice(r,this.state.pos);++this.state.pos;var s=this.readWord1();
+if(s){var a=/^[gmsiyu]*$/;a.test(s)||this.raise(r,"Invalid regular expression flag")}return this.finishToken(p.types.regexp,{pattern:n,flags:s})}},{key:"readInt",value:function(e,t){for(var r=this.state.pos,i=0,n=0,s=null==t?1/0:t;n<s;++n){var a=this.input.charCodeAt(this.state.pos),o=void 0;if(o=a>=97?a-97+10:a>=65?a-65+10:a>=48&&a<=57?a-48:1/0,o>=e)break;++this.state.pos,i=i*e+o}return this.state.pos===r||null!=t&&this.state.pos-r!==t?null:i}},{key:"readRadixNumber",value:function(e){this.state.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.state.start+2,"Expected number in radix "+e),(0,l.isIdentifierStart)(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(p.types.num,t)}},{key:"readNumber",value:function(e){var t=this.state.pos,r=!1,i=48===this.input.charCodeAt(this.state.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number");var n=this.input.charCodeAt(this.state.pos);46===n&&(++this.state.pos,this.readInt(10),r=!0,n=this.input.charCodeAt(this.state.pos)),69!==n&&101!==n||(n=this.input.charCodeAt(++this.state.pos),43!==n&&45!==n||++this.state.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),r=!0),(0,l.isIdentifierStart)(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var s=this.input.slice(t,this.state.pos),a=void 0;return r?a=parseFloat(s):i&&1!==s.length?/[89]/.test(s)||this.state.strict?this.raise(t,"Invalid number"):a=parseInt(s,8):a=parseInt(s,10),this.finishToken(p.types.num,a)}},{key:"readCodePoint",value:function(){var e=this.input.charCodeAt(this.state.pos),t=void 0;if(123===e){var r=++this.state.pos;t=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos),++this.state.pos,t>1114111&&this.raise(r,"Code point out of bounds")}else t=this.readHexChar(4);return t}},{key:"readString",value:function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===e)break;92===i?(t+=this.input.slice(r,this.state.pos),t+=this.readEscapedChar(!1),r=this.state.pos):((0,h.isNewLine)(i)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos)}return t+=this.input.slice(r,this.state.pos++),this.finishToken(p.types.string,t)}},{key:"readTmplToken",value:function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var r=this.input.charCodeAt(this.state.pos);if(96===r||36===r&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(p.types.template)?36===r?(this.state.pos+=2,this.finishToken(p.types.dollarBraceL)):(++this.state.pos,this.finishToken(p.types.backQuote)):(e+=this.input.slice(t,this.state.pos),this.finishToken(p.types.template,e));if(92===r)e+=this.input.slice(t,this.state.pos),e+=this.readEscapedChar(!0),t=this.state.pos;else if((0,h.isNewLine)(r)){switch(e+=this.input.slice(t,this.state.pos),++this.state.pos,r){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(r)}++this.state.curLine,this.state.lineStart=this.state.pos,t=this.state.pos}else++this.state.pos}}},{key:"readEscapedChar",value:function(e){var t=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,t){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return n(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(t>=48&&t<=55){var r=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),i>0&&(this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=this.state.pos-2),(this.state.strict||e)&&this.raise(this.state.pos-2,"Octal literal in strict mode")),this.state.pos+=r.length-1,String.fromCharCode(i)}return String.fromCharCode(t)}}},{key:"readHexChar",value:function(e){var t=this.state.pos,r=this.readInt(16,e);return null===r&&this.raise(t,"Bad character escape sequence"),r}},{key:"readWord1",value:function(){this.state.containsEsc=!1;for(var e="",t=!0,r=this.state.pos;this.state.pos<this.input.length;){var i=this.fullCharCodeAtPos();if((0,l.isIdentifierChar)(i))this.state.pos+=i<=65535?1:2;else{if(92!==i)break;this.state.containsEsc=!0,e+=this.input.slice(r,this.state.pos);var s=this.state.pos;117!==this.input.charCodeAt(++this.state.pos)&&this.raise(this.state.pos,"Expecting Unicode escape sequence \\uXXXX"),++this.state.pos;var a=this.readCodePoint();(t?l.isIdentifierStart:l.isIdentifierChar)(a,!0)||this.raise(s,"Invalid Unicode escape"),e+=n(a),r=this.state.pos}t=!1}return e+this.input.slice(r,this.state.pos)}},{key:"readWord",value:function(){var e=this.readWord1(),t=p.types.name;return!this.state.containsEsc&&this.isKeyword(e)&&(t=p.keywords[e]),this.finishToken(t,e)}},{key:"braceIsBlock",value:function(e){if(e===p.types.colon){var t=this.curContext();if(t===c.types.braceStatement||t===c.types.braceExpression)return!t.isExpr}return e===p.types._return?h.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start)):e===p.types._else||e===p.types.semi||e===p.types.eof||e===p.types.parenR||(e===p.types.braceL?this.curContext()===c.types.braceStatement:!this.state.exprAllowed)}},{key:"updateContext",value:function(e){var t=void 0,r=this.state.type;r.keyword&&e===p.types.dot?this.state.exprAllowed=!1:(t=r.updateContext)?t.call(this,e):this.state.exprAllowed=r.beforeExpr}}]),e}();t.default=m},function(e,t,r){(function(e,i){"use strict";function n(){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(e){return!1}}function s(){return e.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,r){if(s()<r)throw new RangeError("Invalid typed array length");return e.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(r),t.__proto__=e.prototype):(null===t&&(t=new e(r)),t.length=r),t}function e(t,r,i){if(!(e.TYPED_ARRAY_SUPPORT||this instanceof e))return new e(t,r,i);if("number"==typeof t){if("string"==typeof r)throw new Error("If encoding is specified then the first argument must be a string");return p(this,t)}return o(this,t,r,i)}function o(e,t,r,i){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?h(e,t,r,i):"string"==typeof t?c(e,t,r):d(e,t)}function u(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 l(e,t,r,i){return u(t),t<=0?a(e,t):void 0!==r?"string"==typeof i?a(e,t).fill(r,i):a(e,t).fill(r):a(e,t)}function p(t,r){if(u(r),t=a(t,r<0?0:0|y(r)),!e.TYPED_ARRAY_SUPPORT)for(var i=0;i<r;++i)t[i]=0;return t}function c(t,r,i){if("string"==typeof i&&""!==i||(i="utf8"),!e.isEncoding(i))throw new TypeError('"encoding" must be a valid string encoding');var n=0|m(r,i);t=a(t,n);var s=t.write(r,i);return s!==n&&(t=t.slice(0,s)),t}function f(e,t){var r=t.length<0?0:0|y(t.length);e=a(e,r);for(var i=0;i<r;i+=1)e[i]=255&t[i];return e}function h(t,r,i,n){if(r.byteLength,i<0||r.byteLength<i)throw new RangeError("'offset' is out of bounds");if(r.byteLength<i+(n||0))throw new RangeError("'length' is out of bounds");return r=void 0===i&&void 0===n?new Uint8Array(r):void 0===n?new Uint8Array(r,i):new Uint8Array(r,i,n),e.TYPED_ARRAY_SUPPORT?(t=r,t.__proto__=e.prototype):t=f(t,r),t}function d(t,r){if(e.isBuffer(r)){var i=0|y(r.length);return t=a(t,i),0===t.length?t:(r.copy(t,0,0,i),t)}if(r){if("undefined"!=typeof ArrayBuffer&&r.buffer instanceof ArrayBuffer||"length"in r)return"number"!=typeof r.length||$(r.length)?a(t,0):f(t,r);if("Buffer"===r.type&&Z(r.data))return f(t,r.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 v(t){return+t!=t&&(t=0),e.alloc(+t)}function m(t,r){if(e.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var i=t.length;if(0===i)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":case void 0:return G(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return X(t).length;default:if(n)return G(t).length;r=(""+r).toLowerCase(),n=!0}}function g(e,t,r){var i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,r);case"utf8":case"utf-8":return C(this,t,r);case"ascii":return O(this,t,r);case"latin1":case"binary":return N(this,t,r);case"base64":return k(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,t,r);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function b(e,t,r){var i=e[t];e[t]=e[r],e[r]=i}function x(t,r,i,n,s){if(0===t.length)return-1;if("string"==typeof i?(n=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),i=+i,isNaN(i)&&(i=s?0:t.length-1),i<0&&(i=t.length+i),i>=t.length){if(s)return-1;i=t.length-1}else if(i<0){if(!s)return-1;i=0}if("string"==typeof r&&(r=e.from(r,n)),e.isBuffer(r))return 0===r.length?-1:E(t,r,i,n,s);if("number"==typeof r)return r=255&r,e.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(t,r,i):Uint8Array.prototype.lastIndexOf.call(t,r,i):E(t,[r],i,n,s);throw new TypeError("val must be string, number or Buffer")}function E(e,t,r,i,n){function s(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,o=e.length,u=t.length;if(void 0!==i&&(i=String(i).toLowerCase(),"ucs2"===i||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;a=2,o/=2,u/=2,r/=2}var l;if(n){var p=-1;for(l=r;l<o;l++)if(s(e,l)===s(t,p===-1?0:l-p)){if(p===-1&&(p=l),l-p+1===u)return p*a}else p!==-1&&(l-=l-p),p=-1}else for(r+u>o&&(r=o-u),l=r;l>=0;l--){for(var c=!0,f=0;f<u;f++)if(s(e,l+f)!==s(t,f)){c=!1;break}if(c)return l}return-1}function A(e,t,r,i){r=Number(r)||0;var n=e.length-r;i?(i=Number(i),i>n&&(i=n)):i=n;var s=t.length;if(s%2!==0)throw new TypeError("Invalid hex string");i>s/2&&(i=s/2);for(var a=0;a<i;++a){var o=parseInt(t.substr(2*a,2),16);if(isNaN(o))return a;e[r+a]=o}return a}function S(e,t,r,i){return J(G(t,e.length-r),e,r,i)}function _(e,t,r,i){return J(q(t),e,r,i)}function T(e,t,r,i){return _(e,t,r,i)}function P(e,t,r,i){return J(X(t),e,r,i)}function w(e,t,r,i){return J(H(t,e.length-r),e,r,i)}function k(e,t,r){return 0===t&&r===e.length?z.fromByteArray(e):z.fromByteArray(e.slice(t,r))}function C(e,t,r){r=Math.min(e.length,r);for(var i=[],n=t;n<r;){var s=e[n],a=null,o=s>239?4:s>223?3:s>191?2:1;if(n+o<=r){var u,l,p,c;switch(o){case 1:s<128&&(a=s);break;case 2:u=e[n+1],128===(192&u)&&(c=(31&s)<<6|63&u,c>127&&(a=c));break;case 3:u=e[n+1],l=e[n+2],128===(192&u)&&128===(192&l)&&(c=(15&s)<<12|(63&u)<<6|63&l,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:u=e[n+1],l=e[n+2],p=e[n+3],128===(192&u)&&128===(192&l)&&128===(192&p)&&(c=(15&s)<<18|(63&u)<<12|(63&l)<<6|63&p,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,o=1):a>65535&&(a-=65536,i.push(a>>>10&1023|55296),a=56320|1023&a),i.push(a),n+=o}return D(i)}function D(e){var t=e.length;if(t<=ee)return String.fromCharCode.apply(String,e);for(var r="",i=0;i<t;)r+=String.fromCharCode.apply(String,e.slice(i,i+=ee));return r}function O(e,t,r){var i="";r=Math.min(e.length,r);for(var n=t;n<r;++n)i+=String.fromCharCode(127&e[n]);return i}function N(e,t,r){var i="";r=Math.min(e.length,r);for(var n=t;n<r;++n)i+=String.fromCharCode(e[n]);return i}function I(e,t,r){var i=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>i)&&(r=i);for(var n="",s=t;s<r;++s)n+=W(e[s]);return n}function F(e,t,r){for(var i=e.slice(t,r),n="",s=0;s<i.length;s+=2)n+=String.fromCharCode(i[s]+256*i[s+1]);return n}function B(e,t,r){if(e%1!==0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function R(t,r,i,n,s,a){if(!e.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>s||r<a)throw new RangeError('"value" argument is out of bounds');if(i+n>t.length)throw new RangeError("Index out of range")}function L(e,t,r,i){t<0&&(t=65535+t+1);for(var n=0,s=Math.min(e.length-r,2);n<s;++n)e[r+n]=(t&255<<8*(i?n:1-n))>>>8*(i?n:1-n)}function M(e,t,r,i){t<0&&(t=4294967295+t+1);for(var n=0,s=Math.min(e.length-r,4);n<s;++n)e[r+n]=t>>>8*(i?n:3-n)&255}function j(e,t,r,i,n,s){if(r+i>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function V(e,t,r,i,n){return n||j(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),Q.write(e,t,r,i,23,4),r+4}function U(e,t,r,i,n){return n||j(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),Q.write(e,t,r,i,52,8),r+8}function Y(e){if(e=K(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function K(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function W(e){return e<16?"0"+e.toString(16):e.toString(16)}function G(e,t){t=t||1/0;for(var r,i=e.length,n=null,s=[],a=0;a<i;++a){if(r=e.charCodeAt(a),r>55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===i){(t-=3)>-1&&s.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),n=r;continue}r=(n-55296<<10|r-56320)+65536}else n&&(t-=3)>-1&&s.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function q(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}function H(e,t){for(var r,i,n,s=[],a=0;a<e.length&&!((t-=2)<0);++a)r=e.charCodeAt(a),i=r>>8,n=r%256,s.push(n),s.push(i);return s}function X(e){return z.toByteArray(Y(e))}function J(e,t,r,i){for(var n=0;n<i&&!(n+r>=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function $(e){return e!==e}var z=r(6222),Q=r(6270),Z=r(6273);t.Buffer=e,t.SlowBuffer=v,t.INSPECT_MAX_BYTES=50,e.TYPED_ARRAY_SUPPORT=void 0!==i.TYPED_ARRAY_SUPPORT?i.TYPED_ARRAY_SUPPORT:n(),t.kMaxLength=s(),e.poolSize=8192,e._augment=function(t){return t.__proto__=e.prototype,t},e.from=function(e,t,r){return o(null,e,t,r)},e.TYPED_ARRAY_SUPPORT&&(e.prototype.__proto__=Uint8Array.prototype,e.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&e[Symbol.species]===e&&Object.defineProperty(e,Symbol.species,{value:null,configurable:!0})),e.alloc=function(e,t,r){return l(null,e,t,r)},e.allocUnsafe=function(e){return p(null,e)},e.allocUnsafeSlow=function(e){return p(null,e)},e.isBuffer=function(e){return!(null==e||!e._isBuffer)},e.compare=function(t,r){if(!e.isBuffer(t)||!e.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var i=t.length,n=r.length,s=0,a=Math.min(i,n);s<a;++s)if(t[s]!==r[s]){i=t[s],n=r[s];break}return i<n?-1:n<i?1:0},e.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}},e.concat=function(t,r){if(!Z(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return e.alloc(0);var i;if(void 0===r)for(r=0,i=0;i<t.length;++i)r+=t[i].length;var n=e.allocUnsafe(r),s=0;for(i=0;i<t.length;++i){var a=t[i];if(!e.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(n,s),s+=a.length}return n},e.byteLength=m,e.prototype._isBuffer=!0,e.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)b(this,t,t+1);return this},e.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)b(this,t,t+3),b(this,t+1,t+2);return this},e.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)b(this,t,t+7),b(this,t+1,t+6),b(this,t+2,t+5),b(this,t+3,t+4);return this},e.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?C(this,0,e):g.apply(this,arguments)},e.prototype.equals=function(t){if(!e.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===e.compare(this,t)},e.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),"<Buffer "+e+">"},e.prototype.compare=function(t,r,i,n,s){if(!e.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===i&&(i=t?t.length:0),void 0===n&&(n=0),void 0===s&&(s=this.length),r<0||i>t.length||n<0||s>this.length)throw new RangeError("out of range index");if(n>=s&&r>=i)return 0;if(n>=s)return-1;if(r>=i)return 1;if(r>>>=0,i>>>=0,n>>>=0,s>>>=0,this===t)return 0;for(var a=s-n,o=i-r,u=Math.min(a,o),l=this.slice(n,s),p=t.slice(r,i),c=0;c<u;++c)if(l[c]!==p[c]){a=l[c],o=p[c];break}return a<o?-1:o<a?1:0},e.prototype.includes=function(e,t,r){return this.indexOf(e,t,r)!==-1},e.prototype.indexOf=function(e,t,r){return x(this,e,t,r,!0)},e.prototype.lastIndexOf=function(e,t,r){return x(this,e,t,r,!1)},e.prototype.write=function(e,t,r,i){if(void 0===t)i="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)i=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t=0|t,isFinite(r)?(r=0|r,void 0===i&&(i="utf8")):(i=r,r=void 0)}var n=this.length-t;if((void 0===r||r>n)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var s=!1;;)switch(i){case"hex":return A(this,e,t,r);case"utf8":case"utf-8":return S(this,e,t,r);case"ascii":return _(this,e,t,r);case"latin1":case"binary":return T(this,e,t,r);case"base64":return P(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}},e.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;e.prototype.slice=function(t,r){var i=this.length;t=~~t,r=void 0===r?i:~~r,t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),r<0?(r+=i,r<0&&(r=0)):r>i&&(r=i),r<t&&(r=t);var n;if(e.TYPED_ARRAY_SUPPORT)n=this.subarray(t,r),n.__proto__=e.prototype;else{var s=r-t;n=new e(s,(void 0));for(var a=0;a<s;++a)n[a]=this[a+t]}return n},e.prototype.readUIntLE=function(e,t,r){e=0|e,t=0|t,r||B(e,t,this.length);for(var i=this[e],n=1,s=0;++s<t&&(n*=256);)i+=this[e+s]*n;return i},e.prototype.readUIntBE=function(e,t,r){e=0|e,t=0|t,r||B(e,t,this.length);for(var i=this[e+--t],n=1;t>0&&(n*=256);)i+=this[e+--t]*n;return i},e.prototype.readUInt8=function(e,t){return t||B(e,1,this.length),this[e]},e.prototype.readUInt16LE=function(e,t){return t||B(e,2,this.length),this[e]|this[e+1]<<8},e.prototype.readUInt16BE=function(e,t){return t||B(e,2,this.length),this[e]<<8|this[e+1]},e.prototype.readUInt32LE=function(e,t){return t||B(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},e.prototype.readUInt32BE=function(e,t){return t||B(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},e.prototype.readIntLE=function(e,t,r){e=0|e,t=0|t,r||B(e,t,this.length);for(var i=this[e],n=1,s=0;++s<t&&(n*=256);)i+=this[e+s]*n;return n*=128,i>=n&&(i-=Math.pow(2,8*t)),i},e.prototype.readIntBE=function(e,t,r){e=0|e,t=0|t,r||B(e,t,this.length);for(var i=t,n=1,s=this[e+--i];i>0&&(n*=256);)s+=this[e+--i]*n;return n*=128,s>=n&&(s-=Math.pow(2,8*t)),s},e.prototype.readInt8=function(e,t){return t||B(e,1,this.length),128&this[e]?(255-this[e]+1)*-1:this[e]},e.prototype.readInt16LE=function(e,t){t||B(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},e.prototype.readInt16BE=function(e,t){t||B(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},e.prototype.readInt32LE=function(e,t){return t||B(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},e.prototype.readInt32BE=function(e,t){return t||B(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},e.prototype.readFloatLE=function(e,t){return t||B(e,4,this.length),Q.read(this,e,!0,23,4)},e.prototype.readFloatBE=function(e,t){return t||B(e,4,this.length),Q.read(this,e,!1,23,4)},e.prototype.readDoubleLE=function(e,t){return t||B(e,8,this.length),Q.read(this,e,!0,52,8)},e.prototype.readDoubleBE=function(e,t){return t||B(e,8,this.length),Q.read(this,e,!1,52,8)},e.prototype.writeUIntLE=function(e,t,r,i){if(e=+e,t=0|t,r=0|r,!i){var n=Math.pow(2,8*r)-1;R(this,e,t,r,n,0)}var s=1,a=0;for(this[t]=255&e;++a<r&&(s*=256);)this[t+a]=e/s&255;return t+r},e.prototype.writeUIntBE=function(e,t,r,i){if(e=+e,t=0|t,r=0|r,!i){var n=Math.pow(2,8*r)-1;R(this,e,t,r,n,0)}var s=r-1,a=1;for(this[t+s]=255&e;--s>=0&&(a*=256);)this[t+s]=e/a&255;return t+r},e.prototype.writeUInt8=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,1,255,0),e.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},e.prototype.writeUInt16LE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,2,65535,0),e.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):L(this,t,r,!0),r+2},e.prototype.writeUInt16BE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,2,65535,0),e.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):L(this,t,r,!1),r+2},e.prototype.writeUInt32LE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,4,4294967295,0),e.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):M(this,t,r,!0),r+4},e.prototype.writeUInt32BE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,4,4294967295,0),e.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):M(this,t,r,!1),r+4},e.prototype.writeIntLE=function(e,t,r,i){if(e=+e,t=0|t,!i){var n=Math.pow(2,8*r-1);R(this,e,t,r,n-1,-n)}var s=0,a=1,o=0;for(this[t]=255&e;++s<r&&(a*=256);)e<0&&0===o&&0!==this[t+s-1]&&(o=1),this[t+s]=(e/a>>0)-o&255;return t+r},e.prototype.writeIntBE=function(e,t,r,i){if(e=+e,t=0|t,!i){var n=Math.pow(2,8*r-1);R(this,e,t,r,n-1,-n)}var s=r-1,a=1,o=0;for(this[t+s]=255&e;--s>=0&&(a*=256);)e<0&&0===o&&0!==this[t+s+1]&&(o=1),this[t+s]=(e/a>>0)-o&255;return t+r},e.prototype.writeInt8=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,1,127,-128),e.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},e.prototype.writeInt16LE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,2,32767,-32768),e.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):L(this,t,r,!0),r+2},e.prototype.writeInt16BE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,2,32767,-32768),e.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):L(this,t,r,!1),r+2},e.prototype.writeInt32LE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,4,2147483647,-2147483648),e.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):M(this,t,r,!0),r+4},e.prototype.writeInt32BE=function(t,r,i){return t=+t,r=0|r,i||R(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),e.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):M(this,t,r,!1),r+4},e.prototype.writeFloatLE=function(e,t,r){return V(this,e,t,!0,r)},e.prototype.writeFloatBE=function(e,t,r){return V(this,e,t,!1,r)},e.prototype.writeDoubleLE=function(e,t,r){return U(this,e,t,!0,r)},e.prototype.writeDoubleBE=function(e,t,r){return U(this,e,t,!1,r)},e.prototype.copy=function(t,r,i,n){if(i||(i=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n<i&&(n=i),n===i)return 0;if(0===t.length||0===this.length)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r<n-i&&(n=t.length-r+i);var s,a=n-i;if(this===t&&i<r&&r<n)for(s=a-1;s>=0;--s)t[s+r]=this[s+i];else if(a<1e3||!e.TYPED_ARRAY_SUPPORT)for(s=0;s<a;++s)t[s+r]=this[s+i];else Uint8Array.prototype.set.call(t,this.subarray(i,i+a),r);return a},e.prototype.fill=function(t,r,i,n){if("string"==typeof t){if("string"==typeof r?(n=r,r=0,i=this.length):"string"==typeof i&&(n=i,i=this.length),1===t.length){var s=t.charCodeAt(0);s<256&&(t=s)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!e.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof t&&(t=255&t);if(r<0||this.length<r||this.length<i)throw new RangeError("Out of range index");if(i<=r)return this;r>>>=0,i=void 0===i?this.length:i>>>0,t||(t=0);var a;if("number"==typeof t)for(a=r;a<i;++a)this[a]=t;else{var o=e.isBuffer(t)?t:G(new e(t,n).toString()),u=o.length;for(a=0;a<i-r;++a)this[a+r]=o[a%u]}return this};var te=/[^+\/0-9A-Za-z-_]/g}).call(t,r(2425).Buffer,function(){return this}())},[6506,680,1598,6249],[6683,49],function(e,t,r){r(1026),r(1598),r(680),r(6251),r(6261),e.exports=r(49).Map},[6684,6252],[6685,6254,49],[6686,6255,49],[6687,1599,49],[6688,6256,49],[6689,6257,49],[6690,6258,49],[6691,1599,49],[6692,1599,1026,6262,6263,49],[6693,1598,680,1597],[6694,1026,680,6259,49],[6509,1582,101],[6698,1589,678,250,251,1580,1020,1581,369],[6512,251,183],function(e,t,r){e.exports=!r(181)&&!r(453)(function(){return 7!=Object.defineProperty(r(2442)("div"),"a",{get:function(){return 7}}).a})},[6703,1582],function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},[6707,565,1588,1022,679,1585,453],function(e,t,r){var i=r(1022),n=r(1023),s=r(454),a=r(1595),o=r(369),u=r(2443),l=Object.getOwnPropertyDescriptor;t.f=r(181)?l:function(e,t){if(e=s(e),t=a(t,!0),u)try{return l(e,t)}catch(e){}if(o(e,t))return n(!i.f.call(e,t),e[t])}},function(e,t,r){var i=r(2450),n=r(1584).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return i(e,n)}},function(e,t,r){var i=r(369),n=r(679),s=r(1591)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=n(e),i(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,r){var i=r(369),n=r(454),s=r(6232)(!1),a=r(1591)("IE_PROTO");e.exports=function(e,t){var r,o=n(e),u=0,l=[];for(r in o)r!=a&&i(o,r)&&l.push(r);for(;t.length>u;)i(o,r=t[u++])&&(~s(l,r)||l.push(r));return l}},[6711,182,49,453],[6537,2440,101,677,49],1658,[6734,568,186],[6833,1601,6380,6381],[6737,186],function(e,t){function r(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}e.exports=r},function(e,t){function r(e,t){for(var r=-1,i=t.length,n=e.length;++r<i;)e[n+r]=t[r];return e}e.exports=r},1887,function(e,t,r){function i(e,t,r){(void 0===r||n(e[t],r))&&("number"!=typeof t||void 0!==r||t in e)||(e[t]=r)}var n=r(570);e.exports=i},[6835,6311,6349],[6838,2466,1037,1040],[6839,6315,103,373],function(e,t,r){function i(e,t){var r=-1,i=s(e)?Array(e.length):[];return n(e,function(e,n,s){i[++r]=t(e,n,s)}),i}var n=r(2461),s=r(252);e.exports=i},1951,[6748,76,6388],function(e,t){function r(e,t){var r=-1,i=e.length;for(t||(t=Array(i));++r<i;)t[r]=e[r];return t}e.exports=r},function(e,t,r){function i(e){return function(t,r,i){var o=Object(t);if(!s(t)){var u=n(r,3);t=a(t),r=function(e){return u(o[e],e,o)}}var l=e(t,r,i);return l>-1?o[u?t[l]:l]:void 0}}var n=r(566),s=r(252),a=r(256);e.exports=i},function(e,t,r){function i(e,t,r,i,u,l){var p=u&o,c=e.length,f=t.length;if(c!=f&&!(p&&f>c))return!1;var h=l.get(e);if(h&&l.get(t))return h==t;var d=-1,y=!0,v=u&a?new n:void 0;for(l.set(e,t),l.set(t,e);++d<c;){var m=e[d],g=t[d];if(i)var b=p?i(g,m,d,t,e,l):i(m,g,d,e,t,l);if(void 0!==b){if(b)continue;y=!1;break}if(v){if(!s(t,function(e,t){if(!v.has(t)&&(m===e||r(m,e,i,u,l)))return v.add(t)})){y=!1;break}}else if(m!==g&&!r(m,g,i,u,l)){y=!1;break}}return l.delete(e),l.delete(t),y}var n=r(2455),s=r(6304),a=1,o=2;e.exports=i},function(e,t){(function(t){var r="object"==typeof t&&t&&t.Object===Object&&t;e.exports=r}).call(t,function(){return this}())},function(e,t,r){var i=r(1613),n=r(6410),s=Object.getOwnPropertySymbols,a=s?i(s,Object):n;e.exports=a},function(e,t,r){var i=r(6295),n=r(1600),s=r(6297),a=r(2454),o=r(6299),u=r(6313),l=r(2479),p="[object Map]",c="[object Object]",f="[object Promise]",h="[object Set]",d="[object WeakMap]",y="[object DataView]",v=Object.prototype,m=v.toString,g=l(i),b=l(n),x=l(s),E=l(a),A=l(o),S=u;(i&&S(new i(new ArrayBuffer(1)))!=y||n&&S(new n)!=p||s&&S(s.resolve())!=f||a&&S(new a)!=h||o&&S(new o)!=d)&&(S=function(e){var t=m.call(e),r=t==c?e.constructor:void 0,i=r?l(r):void 0;if(i)switch(i){case g:return y;case b:return p;case x:return f;case E:return h;case A:return d}return t}),e.exports=S},[6765,2466,1041,76,1036,1037,1042,82,1040],[6770,6332,1041,76,1042,82],[6853,103],1960,1961,function(e,t,r){(function(e){var i=r(2470),n="object"==typeof t&&t&&!t.nodeType&&t,s=n&&"object"==typeof e&&e&&!e.nodeType&&e,a=s&&s.exports===n,o=a&&i.process,u=function(){try{return o&&o.binding("util")}catch(e){}}();e.exports=u}).call(t,r(27)(e))},1892,function(e,t){function r(e){return e}e.exports=r},[6796,252,373],function(e,t,r){function i(e){return e===!0||e===!1||n(e)&&o.call(e)==s}var n=r(373),s="[object Boolean]",a=Object.prototype,o=a.toString;e.exports=i},[6817,6334,256],function(e,t){"use strict";function r(e,t,r){if(p)try{p.call(l,e,t,{value:r})}catch(i){e[t]=r}else e[t]=r}function i(e){return e&&(r(e,"call",e.call),r(e,"apply",e.apply)),e}function n(e){return c?c.call(l,e):(y.prototype=e||null,new y)}function s(){do var e=a(d.call(h.call(v(),36),2));while(f.call(m,e));return m[e]=e}function a(e){var t={};return t[e]=!0,Object.keys(t)[0]}function o(e){return n(null)}function u(e){function t(t){function i(r,i){if(r===u)return i?n=null:n||(n=e(t))}var n;r(t,a,i)}function i(e){return f.call(e,a)||t(e),e[a](u)}var a=s(),u=n(null);return e=e||o,i.forget=function(e){f.call(e,a)&&e[a](u,!0)},i}var l=Object,p=Object.defineProperty,c=Object.create;i(p),i(c);var f=i(Object.prototype.hasOwnProperty),h=i(Number.prototype.toString),d=i(String.prototype.slice),y=function(){},v=Math.random,m=n(null);r(t,"makeUniqueKey",s);var g=Object.getOwnPropertyNames;Object.getOwnPropertyNames=function(e){for(var t=g(e),r=0,i=0,n=t.length;r<n;++r)f.call(m,t[r])||(r>i&&(t[i]=t[r]),++i);return t.length=i,t},r(t,"makeAccessor",u)},function(e,t,r){var i;(function(e,n){!function(s){var a="object"==typeof t&&t,o=("object"==typeof e&&e&&e.exports==a&&e,"object"==typeof n&&n);o.global!==o&&o.window!==o||(s=o);var u={rangeOrder:"A range’s `stop` value must be greater than or equal to the `start` value.",codePointRange:"Invalid code point value. Code points range from U+000000 to U+10FFFF."},l=55296,p=56319,c=56320,f=57343,h=/\\x00([^0123456789]|$)/g,d={},y=d.hasOwnProperty,v=function(e,t){var r;for(r in t)y.call(t,r)&&(e[r]=t[r]);return e},m=function(e,t){for(var r=-1,i=e.length;++r<i;)t(e[r],r)},g=d.toString,b=function(e){return"[object Array]"==g.call(e)},x=function(e){return"number"==typeof e||"[object Number]"==g.call(e);
+},E="0000",A=function(e,t){var r=String(e);return r.length<t?(E+r).slice(-t):r},S=function(e){return Number(e).toString(16).toUpperCase()},_=[].slice,T=function(e){for(var t,r=-1,i=e.length,n=i-1,s=[],a=!0,o=0;++r<i;)if(t=e[r],a)s.push(t),o=t,a=!1;else if(t==o+1){if(r!=n){o=t;continue}a=!0,s.push(t+1)}else s.push(o+1,t),o=t;return a||s.push(t+1),s},P=function(e,t){for(var r,i,n=0,s=e.length;n<s;){if(r=e[n],i=e[n+1],t>=r&&t<i)return t==r?i==r+1?(e.splice(n,2),e):(e[n]=t+1,e):t==i-1?(e[n+1]=t,e):(e.splice(n,2,r,t,t+1,i),e);n+=2}return e},w=function(e,t,r){if(r<t)throw Error(u.rangeOrder);for(var i,n,s=0;s<e.length;){if(i=e[s],n=e[s+1]-1,i>r)return e;if(t<=i&&r>=n)e.splice(s,2);else{if(t>=i&&r<n)return t==i?(e[s]=r+1,e[s+1]=n+1,e):(e.splice(s,2,i,t,r+1,n+1),e);if(t>=i&&t<=n)e[s+1]=t;else if(r>=i&&r<=n)return e[s]=r+1,e;s+=2}}return e},k=function(e,t){var r,i,n=0,s=null,a=e.length;if(t<0||t>1114111)throw RangeError(u.codePointRange);for(;n<a;){if(r=e[n],i=e[n+1],t>=r&&t<i)return e;if(t==r-1)return e[n]=t,e;if(r>t)return e.splice(null!=s?s+2:0,0,t,t+1),e;if(t==i)return t+1==e[n+2]?(e.splice(n,4,r,e[n+3]),e):(e[n+1]=t+1,e);s=n,n+=2}return e.push(t,t+1),e},C=function(e,t){for(var r,i,n=0,s=e.slice(),a=t.length;n<a;)r=t[n],i=t[n+1]-1,s=r==i?k(s,r):O(s,r,i),n+=2;return s},D=function(e,t){for(var r,i,n=0,s=e.slice(),a=t.length;n<a;)r=t[n],i=t[n+1]-1,s=r==i?P(s,r):w(s,r,i),n+=2;return s},O=function(e,t,r){if(r<t)throw Error(u.rangeOrder);if(t<0||t>1114111||r<0||r>1114111)throw RangeError(u.codePointRange);for(var i,n,s=0,a=!1,o=e.length;s<o;){if(i=e[s],n=e[s+1],a){if(i==r+1)return e.splice(s-1,2),e;if(i>r)return e;i>=t&&i<=r&&(n>t&&n-1<=r?(e.splice(s,2),s-=2):(e.splice(s-1,2),s-=2))}else{if(i==r+1)return e[s]=t,e;if(i>r)return e.splice(s,0,t,r+1),e;if(t>=i&&t<n&&r+1<=n)return e;t>=i&&t<n||n==t?(e[s+1]=r+1,a=!0):t<=i&&r+1>=n&&(e[s]=t,e[s+1]=r+1,a=!0)}s+=2}return a||e.push(t,r+1),e},N=function(e,t){var r=0,i=e.length,n=e[r],s=e[i-1];if(i>=2&&(t<n||t>s))return!1;for(;r<i;){if(n=e[r],s=e[r+1],t>=n&&t<s)return!0;r+=2}return!1},I=function(e,t){for(var r,i=0,n=t.length,s=[];i<n;)r=t[i],N(e,r)&&s.push(r),++i;return T(s)},F=function(e){return!e.length},B=function(e){return 2==e.length&&e[0]+1==e[1]},R=function(e){for(var t,r,i=0,n=[],s=e.length;i<s;){for(t=e[i],r=e[i+1];t<r;)n.push(t),++t;i+=2}return n},L=Math.floor,M=function(e){return parseInt(L((e-65536)/1024)+l,10)},j=function(e){return parseInt((e-65536)%1024+c,10)},V=String.fromCharCode,U=function(e){var t;return t=9==e?"\\t":10==e?"\\n":12==e?"\\f":13==e?"\\r":92==e?"\\\\":36==e||e>=40&&e<=43||45==e||46==e||63==e||e>=91&&e<=94||e>=123&&e<=125?"\\"+V(e):e>=32&&e<=126?V(e):e<=255?"\\x"+A(S(e),2):"\\u"+A(S(e),4)},Y=function(e){return e<=65535?U(e):"\\u{"+e.toString(16).toUpperCase()+"}"},K=function(e){var t,r=e.length,i=e.charCodeAt(0);return i>=l&&i<=p&&r>1?(t=e.charCodeAt(1),1024*(i-l)+t-c+65536):i},W=function(e){var t,r,i="",n=0,s=e.length;if(B(e))return U(e[0]);for(;n<s;)t=e[n],r=e[n+1]-1,i+=t==r?U(t):t+1==r?U(t)+U(r):U(t)+"-"+U(r),n+=2;return"["+i+"]"},G=function(e){var t,r,i="",n=0,s=e.length;if(B(e))return Y(e[0]);for(;n<s;)t=e[n],r=e[n+1]-1,i+=t==r?Y(t):t+1==r?Y(t)+Y(r):Y(t)+"-"+Y(r),n+=2;return"["+i+"]"},q=function(e){for(var t,r,i=[],n=[],s=[],a=[],o=0,u=e.length;o<u;)t=e[o],r=e[o+1]-1,t<l?(r<l&&s.push(t,r+1),r>=l&&r<=p&&(s.push(t,l),i.push(l,r+1)),r>=c&&r<=f&&(s.push(t,l),i.push(l,p+1),n.push(c,r+1)),r>f&&(s.push(t,l),i.push(l,p+1),n.push(c,f+1),r<=65535?s.push(f+1,r+1):(s.push(f+1,65536),a.push(65536,r+1)))):t>=l&&t<=p?(r>=l&&r<=p&&i.push(t,r+1),r>=c&&r<=f&&(i.push(t,p+1),n.push(c,r+1)),r>f&&(i.push(t,p+1),n.push(c,f+1),r<=65535?s.push(f+1,r+1):(s.push(f+1,65536),a.push(65536,r+1)))):t>=c&&t<=f?(r>=c&&r<=f&&n.push(t,r+1),r>f&&(n.push(t,f+1),r<=65535?s.push(f+1,r+1):(s.push(f+1,65536),a.push(65536,r+1)))):t>f&&t<=65535?r<=65535?s.push(t,r+1):(s.push(t,65536),a.push(65536,r+1)):a.push(t,r+1),o+=2;return{loneHighSurrogates:i,loneLowSurrogates:n,bmp:s,astral:a}},H=function(e){for(var t,r,i,n,s,a,o=[],u=[],l=!1,p=-1,c=e.length;++p<c;)if(t=e[p],r=e[p+1]){for(i=t[0],n=t[1],s=r[0],a=r[1],u=n;s&&i[0]==s[0]&&i[1]==s[1];)u=B(a)?k(u,a[0]):O(u,a[0],a[1]-1),++p,t=e[p],i=t[0],n=t[1],r=e[p+1],s=r&&r[0],a=r&&r[1],l=!0;o.push([i,l?u:n]),l=!1}else o.push(t);return X(o)},X=function(e){if(1==e.length)return e;for(var t=-1,r=-1;++t<e.length;){var i=e[t],n=i[1],s=n[0],a=n[1];for(r=t;++r<e.length;){var o=e[r],u=o[1],l=u[0],p=u[1];s==l&&a==p&&(B(o[0])?i[0]=k(i[0],o[0][0]):i[0]=O(i[0],o[0][0],o[0][1]-1),e.splice(r,1),--r)}}return e},J=function(e){if(!e.length)return[];for(var t,r,i,n,s,a,o=0,u=0,l=0,p=[],h=e.length;o<h;){t=e[o],r=e[o+1]-1,i=M(t),n=j(t),s=M(r),a=j(r);var d=n==c,y=a==f,v=!1;i==s||d&&y?(p.push([[i,s+1],[n,a+1]]),v=!0):p.push([[i,i+1],[n,f+1]]),!v&&i+1<s&&(y?(p.push([[i+1,s+1],[c,a+1]]),v=!0):p.push([[i+1,s],[c,f+1]])),v||p.push([[s,s+1],[c,a+1]]),u=i,l=s,o+=2}return H(p)},$=function(e){var t=[];return m(e,function(e){var r=e[0],i=e[1];t.push(W(r)+W(i))}),t.join("|")},z=function(e,t,r){if(r)return G(e);var i=[],n=q(e),s=n.loneHighSurrogates,a=n.loneLowSurrogates,o=n.bmp,u=n.astral,l=(!F(n.astral),!F(s)),p=!F(a),c=J(u);return t&&(o=C(o,s),l=!1,o=C(o,a),p=!1),F(o)||i.push(W(o)),c.length&&i.push($(c)),l&&i.push(W(s)+"(?![\\uDC00-\\uDFFF])"),p&&i.push("(?:[^\\uD800-\\uDBFF]|^)"+W(a)),i.join("|")},Q=function(e){return arguments.length>1&&(e=_.call(arguments)),this instanceof Q?(this.data=[],e?this.add(e):this):(new Q).add(e)};Q.version="1.3.1";var Z=Q.prototype;v(Z,{add:function(e){var t=this;return null==e?t:e instanceof Q?(t.data=C(t.data,e.data),t):(arguments.length>1&&(e=_.call(arguments)),b(e)?(m(e,function(e){t.add(e)}),t):(t.data=k(t.data,x(e)?e:K(e)),t))},remove:function(e){var t=this;return null==e?t:e instanceof Q?(t.data=D(t.data,e.data),t):(arguments.length>1&&(e=_.call(arguments)),b(e)?(m(e,function(e){t.remove(e)}),t):(t.data=P(t.data,x(e)?e:K(e)),t))},addRange:function(e,t){var r=this;return r.data=O(r.data,x(e)?e:K(e),x(t)?t:K(t)),r},removeRange:function(e,t){var r=this,i=x(e)?e:K(e),n=x(t)?t:K(t);return r.data=w(r.data,i,n),r},intersection:function(e){var t=this,r=e instanceof Q?R(e.data):e;return t.data=I(t.data,r),t},contains:function(e){return N(this.data,x(e)?e:K(e))},clone:function(){var e=new Q;return e.data=this.data.slice(0),e},toString:function(e){var t=z(this.data,!!e&&e.bmpOnly,!!e&&e.hasUnicodeFlag);return t?t.replace(h,"\\0$1"):"[]"},toRegExp:function(e){var t=this.toString(e&&e.indexOf("u")!=-1?{hasUnicodeFlag:!0}:null);return RegExp(t,e||"")},valueOf:function(){return R(this.data)}}),Z.toArray=Z.valueOf,i=function(){return Q}.call(t,r,t,e),!(void 0!==i&&(e.exports=i))}(this)}).call(t,r(27)(e),function(){return this}())},function(e,t){"use strict";e.exports=function(e){var t=/^\\\\\?\\/.test(e),r=/[^\x00-\x80]+/.test(e);return t||r?e:e.replace(/\\/g,"/")}},function(e,t,r){function i(){this._array=[],this._set=Object.create(null)}var n=r(686),s=Object.prototype.hasOwnProperty;i.fromArray=function(e,t){for(var r=new i,n=0,s=e.length;n<s;n++)r.add(e[n],t);return r},i.prototype.size=function(){return Object.getOwnPropertyNames(this._set).length},i.prototype.add=function(e,t){var r=n.toSetString(e),i=s.call(this._set,r),a=this._array.length;i&&!t||this._array.push(e),i||(this._set[r]=a)},i.prototype.has=function(e){var t=n.toSetString(e);return s.call(this._set,t)},i.prototype.indexOf=function(e){var t=n.toSetString(e);if(s.call(this._set,t))return this._set[t];throw new Error('"'+e+'" is not in the set.')},i.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},i.prototype.toArray=function(){return this._array.slice()},t.ArraySet=i},function(e,t,r){function i(e){return e<0?(-e<<1)+1:(e<<1)+0}function n(e){var t=1===(1&e),r=e>>1;return t?-r:r}var s=r(6427),a=5,o=1<<a,u=o-1,l=o;t.encode=function(e){var t,r="",n=i(e);do t=n&u,n>>>=a,n>0&&(t|=l),r+=s.encode(t);while(n>0);return r},t.decode=function(e,t,r){var i,o,p=e.length,c=0,f=0;do{if(t>=p)throw new Error("Expected more digits in base 64 VLQ value.");if(o=s.decode(e.charCodeAt(t++)),o===-1)throw new Error("Invalid base64 digit: "+e.charAt(t-1));i=!!(o&l),o&=u,c+=o<<f,f+=a}while(i);r.value=n(c),r.rest=t}},function(e,t,r){function i(e){e||(e={}),this._file=s.getArg(e,"file",null),this._sourceRoot=s.getArg(e,"sourceRoot",null),this._skipValidation=s.getArg(e,"skipValidation",!1),this._sources=new a,this._names=new a,this._mappings=new o,this._sourcesContents=null}var n=r(2488),s=r(686),a=r(2487).ArraySet,o=r(6429).MappingList;i.prototype._version=3,i.fromSourceMap=function(e){var t=e.sourceRoot,r=new i({file:e.file,sourceRoot:t});return e.eachMapping(function(e){var i={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(i.source=e.source,null!=t&&(i.source=s.relative(t,i.source)),i.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(i.name=e.name)),r.addMapping(i)}),e.sources.forEach(function(t){var i=e.sourceContentFor(t);null!=i&&r.setSourceContent(t,i)}),r},i.prototype.addMapping=function(e){var t=s.getArg(e,"generated"),r=s.getArg(e,"original",null),i=s.getArg(e,"source",null),n=s.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,r,i,n),null!=i&&(i=String(i),this._sources.has(i)||this._sources.add(i)),null!=n&&(n=String(n),this._names.has(n)||this._names.add(n)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:i,name:n})},i.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=s.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[s.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[s.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},i.prototype.applySourceMap=function(e,t,r){var i=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');i=e.file}var n=this._sourceRoot;null!=n&&(i=s.relative(n,i));var o=new a,u=new a;this._mappings.unsortedForEach(function(t){if(t.source===i&&null!=t.originalLine){var a=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=a.source&&(t.source=a.source,null!=r&&(t.source=s.join(r,t.source)),null!=n&&(t.source=s.relative(n,t.source)),t.originalLine=a.line,t.originalColumn=a.column,null!=a.name&&(t.name=a.name))}var l=t.source;null==l||o.has(l)||o.add(l);var p=t.name;null==p||u.has(p)||u.add(p)},this),this._sources=o,this._names=u,e.sources.forEach(function(t){var i=e.sourceContentFor(t);null!=i&&(null!=r&&(t=s.join(r,t)),null!=n&&(t=s.relative(n,t)),this.setSourceContent(t,i))},this)},i.prototype._validateMapping=function(e,t,r,i){if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||r||i)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:i}))},i.prototype._serializeMappings=function(){for(var e,t,r,i,a=0,o=1,u=0,l=0,p=0,c=0,f="",h=this._mappings.toArray(),d=0,y=h.length;d<y;d++){if(t=h[d],e="",t.generatedLine!==o)for(a=0;t.generatedLine!==o;)e+=";",o++;else if(d>0){if(!s.compareByGeneratedPositionsInflated(t,h[d-1]))continue;e+=","}e+=n.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=n.encode(i-c),c=i,e+=n.encode(t.originalLine-1-l),l=t.originalLine-1,e+=n.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=n.encode(r-p),p=r)),f+=e}return f},i.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=s.relative(t,e));var r=s.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},i.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},i.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.SourceMapGenerator=i},function(e,t,r){t.SourceMapGenerator=r(2489).SourceMapGenerator,t.SourceMapConsumer=r(6431).SourceMapConsumer,t.SourceNode=r(6432).SourceNode},function(e,t,r){(function(e){"use strict";function t(){var e={modifiers:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},colors:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39]},bgColors:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49]}};return e.colors.grey=e.colors.gray,Object.keys(e).forEach(function(t){var r=e[t];Object.keys(r).forEach(function(t){var i=r[t];e[t]=r[t]={open:"["+i[0]+"m",close:"["+i[1]+"m"}}),Object.defineProperty(e,t,{value:r,enumerable:!1})}),e}Object.defineProperty(e,"exports",{enumerable:!0,get:t})}).call(t,r(27)(e))},function(e,t,r){e.exports=r(1616)},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(1),s=i(n);t.default=function(e,t){if(e&&t)return(0,o.default)(e,t,function(e,t){if(t&&Array.isArray(e)){for(var r=t.slice(0),i=e,n=Array.isArray(i),a=0,i=n?i:(0,s.default)(i);;){var o;if(n){if(a>=i.length)break;o=i[a++]}else{if(a=i.next(),a.done)break;o=a.value}var u=o;r.indexOf(u)<0&&r.push(u)}return r}})};var a=r(6405),o=i(a);e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.default=function(e,t,r){if(e){if("Program"===e.type)return s.file(e,t||[],r||[]);if("File"===e.type)return e}throw new Error("Not a valid ast?")};var n=r(15),s=i(n);e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e,t){var r=[],i=x.functionExpression(null,[x.identifier("global")],x.blockStatement(r)),n=x.program([x.expressionStatement(x.callExpression(i,[p.get("selfGlobal")]))]);return r.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.assignmentExpression("=",x.memberExpression(x.identifier("global"),e),x.objectExpression([])))])),t(r),n}function a(e,t){var r=[];return r.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.identifier("global"))])),t(r),x.program([E({FACTORY_PARAMETERS:x.identifier("global"),BROWSER_ARGUMENTS:x.assignmentExpression("=",x.memberExpression(x.identifier("root"),e),x.objectExpression([])),COMMON_ARGUMENTS:x.identifier("exports"),AMD_ARGUMENTS:x.arrayExpression([x.stringLiteral("exports")]),FACTORY_BODY:r,UMD_ROOT:x.identifier("this")})])}function o(e,t){var r=[];return r.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.objectExpression([]))])),t(r),r.push(x.expressionStatement(e)),x.program(r)}function u(e,t,r){(0,g.default)(p.list,function(i){if(!(r&&r.indexOf(i)<0)){var n=x.identifier(i);e.push(x.expressionStatement(x.assignmentExpression("=",x.memberExpression(t,n),p.get(i))))}})}t.__esModule=!0,t.default=function(e){var t=arguments.length<=1||void 0===arguments[1]?"global":arguments[1],r=x.identifier("babelHelpers"),i=function(t){return u(t,r,e)},n=void 0,l={global:s,umd:a,var:o}[t];if(!l)throw new Error(d.get("unsupportedOutputType",t));return n=l(r,i),(0,f.default)(n).code};var l=r(1633),p=n(l),c=r(1625),f=i(c),h=r(20),d=n(h),y=r(1619),v=i(y),m=r(102),g=i(m),b=r(15),x=n(b),E=(0,v.default)('\n (function (root, factory) {\n if (typeof define === "function" && define.amd) {\n define(AMD_ARGUMENTS, factory);\n } else if (typeof exports === "object") {\n factory(COMMON_ARGUMENTS);\n } else {\n factory(BROWSER_ARGUMENTS);\n }\n })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n FACTORY_BODY\n });\n');e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(2),s=i(n),a=r(371),o=i(a),u=(0,o.default)("babel:verbose"),l=(0,o.default)("babel"),p=[],c=function(){function e(t,r){(0,s.default)(this,e),this.filename=r,this.file=t}return e.prototype._buildMessage=function(e){var t="[BABEL] "+this.filename;return e&&(t+=": "+e),t},e.prototype.warn=function(e){console.warn(this._buildMessage(e))},e.prototype.error=function(e){var t=arguments.length<=1||void 0===arguments[1]?Error:arguments[1];throw new t(this._buildMessage(e))},e.prototype.deprecate=function(e){this.file.opts&&this.file.opts.suppressDeprecationMessages||(e=this._buildMessage(e),p.indexOf(e)>=0||(p.push(e),console.error(e)))},e.prototype.verbose=function(e){u.enabled&&u(this._buildMessage(e))},e.prototype.debug=function(e){l.enabled&&l(this._buildMessage(e))},e.prototype.deopt=function(e,t){this.debug(t)},e}();t.default=c,e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var r=e.node,i=r.source?r.source.value:null,n=t.metadata.modules.exports,s=e.get("declaration");if(s.isStatement()){var a=s.getBindingIdentifiers();for(var o in a)n.exported.push(o),n.specifiers.push({kind:"local",local:o,exported:e.isExportDefaultDeclaration()?"default":o})}if(e.isExportNamedDeclaration()&&r.specifiers)for(var l=r.specifiers,c=Array.isArray(l),f=0,l=c?l:(0,u.default)(l);;){var h;if(c){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var d=h,y=d.exported.name;n.exported.push(y),p.isExportDefaultSpecifier(d)&&n.specifiers.push({kind:"external",local:y,exported:y,source:i}),p.isExportNamespaceSpecifier(d)&&n.specifiers.push({kind:"external-namespace",exported:y,source:i});var v=d.local;v&&(i&&n.specifiers.push({kind:"external",local:v.name,exported:y,source:i}),i||n.specifiers.push({kind:"local",local:v.name,exported:y}))}e.isExportAllDeclaration()&&n.specifiers.push({kind:"external-all",source:i})}function a(e){e.skip()}t.__esModule=!0,t.ImportDeclaration=t.ModuleDeclaration=void 0;var o=r(1),u=n(o);t.ExportDeclaration=s,t.Scope=a;var l=r(15),p=i(l);t.ModuleDeclaration={enter:function(e,t){var r=e.node;r.source&&(r.source.value=t.resolveModuleSource(r.source.value))}},t.ImportDeclaration={exit:function(e,t){var r=e.node,i=[],n=[];t.metadata.modules.imports.push({source:r.source.value,imported:n,specifiers:i});for(var s=e.get("specifiers"),a=Array.isArray(s),o=0,s=a?s:(0,u.default)(s);;){var l;if(a){if(o>=s.length)break;l=s[o++]}else{if(o=s.next(),o.done)break;l=o.value}var p=l,c=p.node.local.name;if(p.isImportDefaultSpecifier()&&(n.push("default"),i.push({kind:"named",imported:"default",local:c})),p.isImportSpecifier()){var f=p.node.imported.name;n.push(f),i.push({kind:"named",imported:f,local:c})}p.isImportNamespaceSpecifier()&&(n.push("*"),i.push({kind:"namespace",local:c}))}}}},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(688),s=i(n),a=r(6408),o=i(a);t.default=new s.default({name:"internal.blockHoist",visitor:{Block:{exit:function(e){for(var t=e.node,r=!1,i=0;i<t.body.length;i++){var n=t.body[i];if(n&&null!=n._blockHoist){r=!0;break}}r&&(t.body=(0,o.default)(t.body,function(e){var t=e&&e._blockHoist;return null==t&&(t=1),t===!0&&(t=2),-1*t}))}}}}),e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return!!e.is("_forceShadow")||t}function a(e,t){var r=e.inShadow(t);if(s(e,r)){var i=e.node._shadowedFunctionLiteral,n=void 0,a=!1,o=e.findParent(function(e){if((e.isProgram()||e.isFunction())&&(n=n||e),e.isProgram())return a=!0,!0;if(e.isFunction()&&!e.isArrowFunctionExpression()){if(i){if(e===i||e.node===i.node)return!0}else if(!e.is("shadow"))return!0;return a=!0,!1}return!1});if(i&&o.isProgram()&&!i.isProgram()&&(o=e.findParent(function(e){return e.isProgram()||e.isFunction()})),o!==n&&a){var u=o.getData(t);if(u)return e.replaceWith(u);var l=e.scope.generateUidIdentifier(t);o.setData(t,l);var p=o.findParent(function(e){return e.isClass()}),c=!!(p&&p.node&&p.node.superClass);if("this"===t&&o.isMethod({kind:"constructor"})&&c)o.scope.push({id:l}),o.traverse(d,{id:l});else{var h="this"===t?f.thisExpression():f.identifier(t);o.scope.push({id:l,init:h})}return e.replaceWith(l)}}}t.__esModule=!0;var o=r(98),u=n(o),l=r(688),p=n(l),c=r(15),f=i(c),h=(0,u.default)("super this bound"),d={CallExpression:function(e){if(e.get("callee").isSuper()){var t=e.node;t[h]||(t[h]=!0,e.replaceWith(f.assignmentExpression("=",this.id,t)))}}};t.default=new p.default({name:"internal.shadowFunctions",visitor:{ThisExpression:function(e){a(e,"this")},ReferencedIdentifier:function(e){"arguments"===e.node.name&&a(e,"arguments")}}}),e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(2),s=i(n),a=r(2494),o=i(a),u=r(688),l=i(u),p=r(1045),c=i(p),f=function(){function e(){(0,s.default)(this,e)}return e.prototype.lint=function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return t.code=!1,t.mode="lint",this.transform(e,t)},e.prototype.pretransform=function(e,t){var r=new c.default(t,this);return r.wrap(e,function(){return r.addCode(e),r.parseCode(e),r})},e.prototype.transform=function(e,t){var r=new c.default(t,this);return r.wrap(e,function(){return r.addCode(e),r.parseCode(e),r.transform()})},e.prototype.analyse=function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=arguments[2];return t.code=!1,r&&(t.plugins=t.plugins||[],t.plugins.push(new l.default({visitor:r}))),this.transform(e,t).metadata},e.prototype.transformFromAst=function(e,t,r){e=(0,o.default)(e);var i=new c.default(r,this);return i.wrap(t,function(){return i.addCode(t),i.addAst(e),i.transform()})},e}();t.default=f,e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(2),s=i(n),a=r(100),o=i(a),u=r(99),l=i(u),p=r(1044),c=i(p),f=r(1045),h=(i(f),function(e){function t(r,i){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];(0,s.default)(this,t);var a=(0,o.default)(this,e.call(this));return a.plugin=i,a.key=i.key,a.file=r,a.opts=n,a}return(0,l.default)(t,e),t.prototype.addHelper=function(){var e;return(e=this.file).addHelper.apply(e,arguments)},t.prototype.addImport=function(){var e;return(e=this.file).addImport.apply(e,arguments)},t.prototype.getModuleName=function(){var e;return(e=this.file).getModuleName.apply(e,arguments)},t.prototype.buildCodeFrameError=function(){var e;return(e=this.file).buildCodeFrameError.apply(e,arguments)},t}(c.default));t.default=h,e.exports=t.default},[6438,1,2,375,15],[6441,1,15,375],function(e,t){"use strict";function r(){var e=this.node;if(e){var t=e.trailingComments,r=e.leadingComments;if(t||r){var i=this.getSibling(this.key-1),n=this.getSibling(this.key+1);i.node||(i=n),n.node||(n=i),i.addComments("trailing",r),n.addComments("leading",t)}}}function i(e,t,r){this.addComments(e,[{type:r?"CommentLine":"CommentBlock",value:t}])}function n(e,t){if(t){var r=this.node;if(r){var i=e+"Comments";r[i]?r[i]=r[i].concat(t):r[i]=t}}}t.__esModule=!0,t.shareCommentsWithSiblings=r,t.addComment=i,t.addComments=n},[6442,1,259],[6443,15],[6444,11,1,448],[6445,1,375,15],[6447,1,2511,15],[6448,1,15],[6449,2510,15],[6450,11,1,15],[6451,2,1,15],function(e,t){"use strict";t.__esModule=!0;t.hooks=[function(e,t){if("body"===e.key&&t.isArrowFunctionExpression())return e.replaceWith(e.scope.buildUndefinedNode()),!0},function(e,t){var r=!1;if(r=r||"test"===e.key&&(t.isWhile()||t.isSwitchCase()),r=r||"declaration"===e.key&&t.isExportDeclaration(),r=r||"body"===e.key&&t.isLabeledStatement(),r=r||"declarations"===e.listKey&&t.isVariableDeclaration()&&1===t.node.declarations.length,r=r||"expression"===e.key&&t.isExpressionStatement())return t.remove(),!0},function(e,t){if(t.isSequenceExpression()&&1===t.node.expressions.length)return t.replaceWith(t.node.expressions[0]),!0},function(e,t){if(t.isBinary())return"left"===e.key?t.replaceWith(t.node.right):t.replaceWith(t.node.left),!0},function(e,t){if(t.isIfStatement()&&("consequent"===e.key||"alternate"===e.key)||t.isLoop()&&"body"===e.key)return e.replaceWith({type:"BlockStatement",body:[]}),!0}]},[6453,11,1,689,2513,375,15],[6454,1,2514],[6455,1,259,375,1053,15],[6458,2,1622,15],[6459,11,39,1,1621,15],[6461,366,17,1,15],[6462,15,1052,260],[6463,260],[6464,260],[6465,260],[6467,260,2521,2522,2524,2526,2527,2523],[6468,260],[6469,260],[6470,15],[6472,15],[6474,1,1623,15,1052],function(e,t){"use strict";function r(e){var t={};for(var r in i)t[r]=e&&r in e?e[r]:i[r];return t}Object.defineProperty(t,"__esModule",{value:!0}),t.getOptions=r;var i=t.defaultOptions={sourceType:"script",sourceFilename:void 0,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,plugins:[],strictMode:null}},[6476,104],[6477,16,1,105,104,575],[6479,690,104],[6480,1,105,104,575],[6481,2,47,104,690],[6482,1,16,105,104,460],[6483,105,104,460],[6484,105,574,104],[6485,2541,105,574,104,575,460],function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={quot:'"',amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"",zwj:"",lrm:"",rlm:"",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"}},[6488,2,47,690,574,105],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(2),s=i(n),a=r(6415),o=i(a),u=/^[ \t]+$/,l=function(){function e(t){(0,s.default)(this,e),this._map=null,this._buf=[],this._last="",this._queue=[],this._position={line:1,column:0},this._sourcePosition={identifierName:null,line:null,column:null,filename:null},this._map=t}return e.prototype.get=function(){return this._flush(),{code:(0,o.default)(this._buf.join("")),map:this._map?this._map.get():null}},e.prototype.append=function(e){this._flush();var t=this._sourcePosition,r=t.line,i=t.column,n=t.filename,s=t.identifierName;this._append(e,r,i,s,n)},e.prototype.queue=function(e){if("\n"===e)for(;this._queue.length>0&&u.test(this._queue[0][0]);)this._queue.shift();var t=this._sourcePosition,r=t.line,i=t.column,n=t.filename,s=t.identifierName;this._queue.unshift([e,r,i,s,n])},e.prototype._flush=function(){for(var e=void 0;e=this._queue.pop();)this._append.apply(this,e)},e.prototype._append=function(e,t,r,i,n){this._map&&"\n"!==e[0]&&this._map.mark(this._position.line,this._position.column,t,r,i,n),this._buf.push(e),this._last=e[e.length-1];for(var s=0;s<e.length;s++)"\n"===e[s]?(this._position.line++,this._position.column=0):this._position.column++},e.prototype.removeTrailingNewline=function(){this._queue.length>0&&"\n"===this._queue[0][0]&&this._queue.shift()},e.prototype.removeLastSemicolon=function(){this._queue.length>0&&";"===this._queue[0][0]&&this._queue.shift()},e.prototype.endsWith=function(e){if(1===e.length){var t=void 0;if(this._queue.length>0){var r=this._queue[0][0];t=r[r.length-1]}else t=this._last;return t===e}var i=this._last+this._queue.reduce(function(e,t){return t[0]+e},"");return e.length<=i.length&&i.slice(-e.length)===e},e.prototype.hasContent=function(){return this._queue.length>0||!!this._last},e.prototype.source=function(e,t){if(!e||t){var r=t?t[e]:null;this._sourcePosition.identifierName=t&&t.identifierName||null,this._sourcePosition.line=r?r.line:null,this._sourcePosition.column=r?r.column:null,this._sourcePosition.filename=t&&t.filename||null}},e.prototype.withSource=function(e,t,r){if(!this._map)return r();var i=this._sourcePosition.line,n=this._sourcePosition.column,s=this._sourcePosition.filename,a=this._sourcePosition.identifierName;this.source(e,t),r(),this._sourcePosition.line=i,this._sourcePosition.column=n,this._sourcePosition.filename=s,this._sourcePosition.identifierName=a},e.prototype.getCurrentColumn=function(){var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=e.lastIndexOf("\n");return t===-1?this._position.column+e.length:e.length-1-t},e.prototype.getCurrentLine=function(){for(var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=0,r=0;r<e.length;r++)"\n"===e[r]&&t++;return this._position.line+t},e}();t.default=l,e.exports=t.default},function(e,t,r){"use strict";function i(e){this.print(e.program,e)}function n(e){this.printInnerComments(e,!1),this.printSequence(e.directives,e),e.directives&&e.directives.length&&this.newline(),this.printSequence(e.body,e)}function s(e){this.token("{"),this.printInnerComments(e),e.body.length?(this.newline(),this.printSequence(e.directives,e,{indent:!0}),e.directives&&e.directives.length&&this.newline(),this.printSequence(e.body,e,{indent:!0}),this.removeTrailingNewline(),this.source("end",e.loc),this.endsWith("\n")||this.newline(),this.rightBrace()):(this.source("end",e.loc),this.token("}"))}function a(){}function o(e){this.print(e.value,e),this.semicolon()}t.__esModule=!0,t.File=i,t.Program=n,t.BlockStatement=s,
+t.Noop=a,t.Directive=o;var u=r(1054);Object.defineProperty(t,"DirectiveLiteral",{enumerable:!0,get:function(){return u.StringLiteral}})},function(e,t){"use strict";function r(e){this.printJoin(e.decorators,e),this.word("class"),e.id&&(this.space(),this.print(e.id,e)),this.print(e.typeParameters,e),e.superClass&&(this.space(),this.word("extends"),this.space(),this.print(e.superClass,e),this.print(e.superTypeParameters,e)),e.implements&&(this.space(),this.word("implements"),this.space(),this.printList(e.implements,e)),this.space(),this.print(e.body,e)}function i(e){this.token("{"),this.printInnerComments(e),0===e.body.length?this.token("}"):(this.newline(),this.indent(),this.printSequence(e.body,e),this.dedent(),this.endsWith("\n")||this.newline(),this.rightBrace())}function n(e){this.printJoin(e.decorators,e),e.static&&(this.word("static"),this.space()),this.print(e.key,e),this.print(e.typeAnnotation,e),e.value&&(this.space(),this.token("="),this.space(),this.print(e.value,e)),this.semicolon()}function s(e){this.printJoin(e.decorators,e),e.static&&(this.word("static"),this.space()),"constructorCall"===e.kind&&(this.word("call"),this.space()),this._method(e)}t.__esModule=!0,t.ClassDeclaration=r,t.ClassBody=i,t.ClassProperty=n,t.ClassMethod=s,t.ClassExpression=r},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){"void"===e.operator||"delete"===e.operator||"typeof"===e.operator?(this.word(e.operator),this.space()):this.token(e.operator),this.print(e.argument,e)}function a(e){this.word("do"),this.space(),this.print(e.body,e)}function o(e){this.token("("),this.print(e.expression,e),this.token(")")}function u(e){e.prefix?(this.token(e.operator),this.print(e.argument,e)):(this.print(e.argument,e),this.token(e.operator))}function l(e){this.print(e.test,e),this.space(),this.token("?"),this.space(),this.print(e.consequent,e),this.space(),this.token(":"),this.space(),this.print(e.alternate,e)}function p(e,t){this.word("new"),this.space(),this.print(e.callee,e),(0!==e.arguments.length||!this.format.minified||k.isCallExpression(t,{callee:e})||k.isMemberExpression(t)||k.isNewExpression(t))&&(this.token("("),this.printList(e.arguments,e),this.token(")"))}function c(e){this.printList(e.expressions,e)}function f(){this.word("this")}function h(){this.word("super")}function d(e){this.token("@"),this.print(e.expression,e),this.newline()}function y(){this.token(","),this.newline(),this.endsWith("\n")||this.space()}function v(e){this.print(e.callee,e),this.token("(");var t=e._prettyCall,r=void 0;t&&(r=y,this.newline(),this.indent()),this.printList(e.arguments,e,{separator:r}),t&&(this.newline(),this.dedent()),this.token(")")}function m(e){return function(t){if(this.word(e),t.delegate&&this.token("*"),t.argument){this.space();var r=this.startTerminatorless();this.print(t.argument,t),this.endTerminatorless(r)}}}function g(){this.semicolon(!0)}function b(e){this.print(e.expression,e),this.semicolon()}function x(e){this.print(e.left,e),this.space(),this.token("="),this.space(),this.print(e.right,e)}function E(e,t){var r=this.inForStatementInitCounter&&"in"===e.operator&&!D.needsParens(e,t);r&&this.token("("),this.print(e.left,e),this.space(),"in"===e.operator||"instanceof"===e.operator?this.word(e.operator):this.token(e.operator),this.space(),this.print(e.right,e),r&&this.token(")")}function A(e){this.print(e.object,e),this.token("::"),this.print(e.callee,e)}function S(e){if(this.print(e.object,e),!e.computed&&k.isMemberExpression(e.property))throw new TypeError("Got a MemberExpression for MemberExpression property");var t=e.computed;k.isLiteral(e.property)&&(0,P.default)(e.property.value)&&(t=!0),t?(this.token("["),this.print(e.property,e),this.token("]")):(this.token("."),this.print(e.property,e))}function _(e){this.print(e.meta,e),this.token("."),this.print(e.property,e)}t.__esModule=!0,t.LogicalExpression=t.BinaryExpression=t.AwaitExpression=t.YieldExpression=void 0,t.UnaryExpression=s,t.DoExpression=a,t.ParenthesizedExpression=o,t.UpdateExpression=u,t.ConditionalExpression=l,t.NewExpression=p,t.SequenceExpression=c,t.ThisExpression=f,t.Super=h,t.Decorator=d,t.CallExpression=v,t.EmptyStatement=g,t.ExpressionStatement=b,t.AssignmentPattern=x,t.AssignmentExpression=E,t.BindExpression=A,t.MemberExpression=S,t.MetaProperty=_;var T=r(253),P=n(T),w=r(51),k=i(w),C=r(1626),D=i(C);t.YieldExpression=m("yield"),t.AwaitExpression=m("await");t.BinaryExpression=E,t.LogicalExpression=E},function(e,t,r){"use strict";function i(){this.word("any")}function n(e){this.print(e.elementType,e),this.token("["),this.token("]")}function s(){this.word("bool")}function a(e){this.word(e.value?"true":"false")}function o(){this.word("null")}function u(e){this.word("declare"),this.space(),this.word("class"),this.space(),this._interfaceish(e)}function l(e){this.word("declare"),this.space(),this.word("function"),this.space(),this.print(e.id,e),this.print(e.id.typeAnnotation.typeAnnotation,e),this.semicolon()}function p(e){this.word("declare"),this.space(),this.InterfaceDeclaration(e)}function c(e){this.word("declare"),this.space(),this.word("module"),this.space(),this.print(e.id,e),this.space(),this.print(e.body,e)}function f(e){this.word("declare"),this.space(),this.word("module"),this.token("."),this.word("exports"),this.print(e.typeAnnotation,e)}function h(e){this.word("declare"),this.space(),this.TypeAlias(e)}function d(e){this.word("declare"),this.space(),this.word("var"),this.space(),this.print(e.id,e),this.print(e.id.typeAnnotation,e),this.semicolon()}function y(){this.token("*")}function v(e,t){this.print(e.typeParameters,e),this.token("("),this.printList(e.params,e),e.rest&&(e.params.length&&(this.token(","),this.space()),this.token("..."),this.print(e.rest,e)),this.token(")"),"ObjectTypeCallProperty"===t.type||"DeclareFunction"===t.type?this.token(":"):(this.space(),this.token("=>")),this.space(),this.print(e.returnType,e)}function m(e){this.print(e.name,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.typeAnnotation,e)}function g(e){this.print(e.id,e),this.print(e.typeParameters,e)}function b(e){this.print(e.id,e),this.print(e.typeParameters,e),e.extends.length&&(this.space(),this.word("extends"),this.space(),this.printList(e.extends,e)),e.mixins&&e.mixins.length&&(this.space(),this.word("mixins"),this.space(),this.printList(e.mixins,e)),this.space(),this.print(e.body,e)}function x(e){this.word("interface"),this.space(),this._interfaceish(e)}function E(){this.space(),this.token("&"),this.space()}function A(e){this.printJoin(e.types,e,{separator:E})}function S(){this.word("mixed")}function _(e){this.token("?"),this.print(e.typeAnnotation,e)}function T(){this.word("number")}function P(){this.word("string")}function w(){this.word("this")}function k(e){this.token("["),this.printList(e.types,e),this.token("]")}function C(e){this.word("typeof"),this.space(),this.print(e.argument,e)}function D(e){this.word("type"),this.space(),this.print(e.id,e),this.print(e.typeParameters,e),this.space(),this.token("="),this.space(),this.print(e.right,e),this.semicolon()}function O(e){this.token(":"),this.space(),e.optional&&this.token("?"),this.print(e.typeAnnotation,e)}function N(e){"plus"===e.variance?this.token("+"):"minus"===e.variance&&this.token("-"),this.word(e.name),e.bound&&this.print(e.bound,e),e.default&&(this.space(),this.token("="),this.space(),this.print(e.default,e))}function I(e){this.token("<"),this.printList(e.params,e,{}),this.token(">")}function F(e){var t=this;this.token("{");var r=e.properties.concat(e.callProperties,e.indexers);r.length&&(this.space(),this.printJoin(r,e,{indent:!0,statement:!0,iterator:function(){1!==r.length&&(t.semicolon(),t.space())}}),this.space()),this.token("}")}function B(e){e.static&&(this.word("static"),this.space()),this.print(e.value,e)}function R(e){e.static&&(this.word("static"),this.space()),this.token("["),this.print(e.id,e),this.token(":"),this.space(),this.print(e.key,e),this.token("]"),this.token(":"),this.space(),this.print(e.value,e)}function L(e){e.static&&(this.word("static"),this.space()),this.print(e.key,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.value,e)}function M(e){this.print(e.qualification,e),this.token("."),this.print(e.id,e)}function j(){this.space(),this.token("|"),this.space()}function V(e){this.printJoin(e.types,e,{separator:j})}function U(e){this.token("("),this.print(e.expression,e),this.print(e.typeAnnotation,e),this.token(")")}function Y(){this.word("void")}t.__esModule=!0,t.AnyTypeAnnotation=i,t.ArrayTypeAnnotation=n,t.BooleanTypeAnnotation=s,t.BooleanLiteralTypeAnnotation=a,t.NullLiteralTypeAnnotation=o,t.DeclareClass=u,t.DeclareFunction=l,t.DeclareInterface=p,t.DeclareModule=c,t.DeclareModuleExports=f,t.DeclareTypeAlias=h,t.DeclareVariable=d,t.ExistentialTypeParam=y,t.FunctionTypeAnnotation=v,t.FunctionTypeParam=m,t.InterfaceExtends=g,t._interfaceish=b,t.InterfaceDeclaration=x,t.IntersectionTypeAnnotation=A,t.MixedTypeAnnotation=S,t.NullableTypeAnnotation=_;var K=r(1054);Object.defineProperty(t,"NumericLiteralTypeAnnotation",{enumerable:!0,get:function(){return K.NumericLiteral}}),Object.defineProperty(t,"StringLiteralTypeAnnotation",{enumerable:!0,get:function(){return K.StringLiteral}}),t.NumberTypeAnnotation=T,t.StringTypeAnnotation=P,t.ThisTypeAnnotation=w,t.TupleTypeAnnotation=k,t.TypeofTypeAnnotation=C,t.TypeAlias=D,t.TypeAnnotation=O,t.TypeParameter=N,t.TypeParameterInstantiation=I,t.ObjectTypeAnnotation=F,t.ObjectTypeCallProperty=B,t.ObjectTypeIndexer=R,t.ObjectTypeProperty=L,t.QualifiedTypeIdentifier=M,t.UnionTypeAnnotation=V,t.TypeCastExpression=U,t.VoidTypeAnnotation=Y,t.ClassImplements=g,t.GenericTypeAnnotation=g,t.TypeParameterDeclaration=I},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){this.print(e.name,e),e.value&&(this.token("="),this.print(e.value,e))}function s(e){this.word(e.name)}function a(e){this.print(e.namespace,e),this.token(":"),this.print(e.name,e)}function o(e){this.print(e.object,e),this.token("."),this.print(e.property,e)}function u(e){this.token("{"),this.token("..."),this.print(e.argument,e),this.token("}")}function l(e){this.token("{"),this.print(e.expression,e),this.token("}")}function p(e){this.token(e.value)}function c(e){var t=e.openingElement;if(this.print(t,e),!t.selfClosing){this.indent();for(var r=e.children,i=Array.isArray(r),n=0,r=i?r:(0,m.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;this.print(a,e)}this.dedent(),this.print(e.closingElement,e)}}function f(){this.space()}function h(e){this.token("<"),this.print(e.name,e),e.attributes.length>0&&(this.space(),this.printJoin(e.attributes,e,{separator:f})),e.selfClosing?(this.space(),this.token("/>")):this.token(">")}function d(e){this.token("</"),this.print(e.name,e),this.token(">")}function y(){}t.__esModule=!0;var v=r(1),m=i(v);t.JSXAttribute=n,t.JSXIdentifier=s,t.JSXNamespacedName=a,t.JSXMemberExpression=o,t.JSXSpreadAttribute=u,t.JSXExpressionContainer=l,t.JSXText=p,t.JSXElement=c,t.JSXOpeningElement=h,t.JSXClosingElement=d,t.JSXEmptyExpression=y},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){var t=this;this.print(e.typeParameters,e),this.token("("),this.printList(e.params,e,{iterator:function(e){e.optional&&t.token("?"),t.print(e.typeAnnotation,e)}}),this.token(")"),e.returnType&&this.print(e.returnType,e)}function s(e){var t=e.kind,r=e.key;"method"!==t&&"init"!==t||e.generator&&this.token("*"),"get"!==t&&"set"!==t||(this.word(t),this.space()),e.async&&(this.word("async"),this.space()),e.computed?(this.token("["),this.print(r,e),this.token("]")):this.print(r,e),this._params(e),this.space(),this.print(e.body,e)}function a(e){e.async&&(this.word("async"),this.space()),this.word("function"),e.generator&&this.token("*"),e.id?(this.space(),this.print(e.id,e)):this.space(),this._params(e),this.space(),this.print(e.body,e)}function o(e){e.async&&(this.word("async"),this.space()),1===e.params.length&&l.isIdentifier(e.params[0])?this.print(e.params[0],e):this._params(e),this.space(),this.token("=>"),this.space(),this.print(e.body,e)}t.__esModule=!0,t.FunctionDeclaration=void 0,t._params=n,t._method=s,t.FunctionExpression=a,t.ArrowFunctionExpression=o;var u=r(51),l=i(u);t.FunctionDeclaration=a},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){this.print(e.imported,e),e.local&&e.local.name!==e.imported.name&&(this.space(),this.word("as"),this.space(),this.print(e.local,e))}function s(e){this.print(e.local,e)}function a(e){this.print(e.exported,e)}function o(e){this.print(e.local,e),e.exported&&e.local.name!==e.exported.name&&(this.space(),this.word("as"),this.space(),this.print(e.exported,e))}function u(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.exported,e)}function l(e){this.word("export"),this.space(),this.token("*"),e.exported&&(this.space(),this.word("as"),this.space(),this.print(e.exported,e)),this.space(),this.word("from"),this.space(),this.print(e.source,e),this.semicolon()}function p(){this.word("export"),this.space(),f.apply(this,arguments)}function c(){this.word("export"),this.space(),this.word("default"),this.space(),f.apply(this,arguments)}function f(e){if(e.declaration){var t=e.declaration;this.print(t,e),v.isStatement(t)||this.semicolon()}else{"type"===e.exportKind&&(this.word("type"),this.space());for(var r=e.specifiers.slice(0),i=!1;;){var n=r[0];if(!v.isExportDefaultSpecifier(n)&&!v.isExportNamespaceSpecifier(n))break;i=!0,this.print(r.shift(),e),r.length&&(this.token(","),this.space())}(r.length||!r.length&&!i)&&(this.token("{"),r.length&&(this.space(),this.printList(r,e),this.space()),this.token("}")),e.source&&(this.space(),this.word("from"),this.space(),this.print(e.source,e)),this.semicolon()}}function h(e){this.word("import"),this.space(),"type"!==e.importKind&&"typeof"!==e.importKind||(this.word(e.importKind),this.space());var t=e.specifiers.slice(0);if(t&&t.length){for(;;){var r=t[0];if(!v.isImportDefaultSpecifier(r)&&!v.isImportNamespaceSpecifier(r))break;this.print(t.shift(),e),t.length&&(this.token(","),this.space())}t.length&&(this.token("{"),this.space(),this.printList(t,e),this.space(),this.token("}")),this.space(),this.word("from"),this.space()}this.print(e.source,e),this.semicolon()}function d(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.local,e)}t.__esModule=!0,t.ImportSpecifier=n,t.ImportDefaultSpecifier=s,t.ExportDefaultSpecifier=a,t.ExportSpecifier=o,t.ExportNamespaceSpecifier=u,t.ExportAllDeclaration=l,t.ExportNamedDeclaration=p,t.ExportDefaultDeclaration=c,t.ImportDeclaration=h,t.ImportNamespaceSpecifier=d;var y=r(51),v=i(y)},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){this.word("with"),this.space(),this.token("("),this.print(e.object,e),this.token(")"),this.printBlock(e)}function a(e){this.word("if"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.space();var t=e.alternate&&T.isIfStatement(o(e.consequent));t&&(this.token("{"),this.newline(),this.indent()),this.printAndIndentOnComments(e.consequent,e),t&&(this.dedent(),this.newline(),this.token("}")),e.alternate&&(this.endsWith("}")&&this.space(),this.word("else"),this.space(),this.printAndIndentOnComments(e.alternate,e))}function o(e){return T.isStatement(e.body)?o(e.body):e}function u(e){this.word("for"),this.space(),this.token("("),this.inForStatementInitCounter++,this.print(e.init,e),this.inForStatementInitCounter--,this.token(";"),e.test&&(this.space(),this.print(e.test,e)),this.token(";"),e.update&&(this.space(),this.print(e.update,e)),this.token(")"),this.printBlock(e)}function l(e){this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.printBlock(e)}function p(e){this.word("do"),this.space(),this.print(e.body,e),this.space(),this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.semicolon()}function c(e){var t=arguments.length<=1||void 0===arguments[1]?"label":arguments[1];return function(r){this.word(e);var i=r[t];if(i){this.space();var n=this.startTerminatorless();this.print(i,r),this.endTerminatorless(n)}this.semicolon()}}function f(e){this.print(e.label,e),this.token(":"),this.space(),this.print(e.body,e)}function h(e){this.word("try"),this.space(),this.print(e.block,e),this.space(),e.handlers?this.print(e.handlers[0],e):this.print(e.handler,e),e.finalizer&&(this.space(),this.word("finally"),this.space(),this.print(e.finalizer,e))}function d(e){this.word("catch"),this.space(),this.token("("),this.print(e.param,e),this.token(")"),this.space(),this.print(e.body,e)}function y(e){this.word("switch"),this.space(),this.token("("),this.print(e.discriminant,e),this.token(")"),this.space(),this.token("{"),this.printSequence(e.cases,e,{indent:!0,addNewlines:function(t,r){if(!t&&e.cases[e.cases.length-1]===r)return-1}}),this.token("}")}function v(e){e.test?(this.word("case"),this.space(),this.print(e.test,e),this.token(":")):(this.word("default"),this.token(":")),e.consequent.length&&(this.newline(),this.printSequence(e.consequent,e,{indent:!0}))}function m(){this.word("debugger"),this.semicolon()}function g(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<4;e++)this.space(!0)}function b(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<6;e++)this.space(!0)}function x(e,t){this.word(e.kind),this.space();var r=!1;if(!T.isFor(t))for(var i=e.declarations,n=Array.isArray(i),s=0,i=n?i:(0,S.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;o.init&&(r=!0)}var u=void 0;r&&(u="const"===e.kind?b:g),this.printList(e.declarations,e,{separator:u}),(!T.isFor(t)||t.left!==e&&t.init!==e)&&this.semicolon()}function E(e){this.print(e.id,e),this.print(e.id.typeAnnotation,e),e.init&&(this.space(),this.token("="),this.space(),this.print(e.init,e))}t.__esModule=!0,t.ThrowStatement=t.BreakStatement=t.ReturnStatement=t.ContinueStatement=t.ForOfStatement=t.ForInStatement=void 0;var A=r(1),S=n(A);t.WithStatement=s,t.IfStatement=a,t.ForStatement=u,t.WhileStatement=l,t.DoWhileStatement=p,t.LabeledStatement=f,t.TryStatement=h,t.CatchClause=d,t.SwitchStatement=y,t.SwitchCase=v,t.DebuggerStatement=m,t.VariableDeclaration=x,t.VariableDeclarator=E;var _=r(51),T=i(_),P=function(e){return function(t){this.word("for"),this.space(),this.token("("),this.print(t.left,t),this.space(),this.word(e),this.space(),this.print(t.right,t),this.token(")"),this.printBlock(t)}};t.ForInStatement=P("in"),t.ForOfStatement=P("of"),t.ContinueStatement=c("continue"),t.ReturnStatement=c("return","argument"),t.BreakStatement=c("break"),t.ThrowStatement=c("throw","argument")},function(e,t){"use strict";function r(e){this.print(e.tag,e),this.print(e.quasi,e)}function i(e,t){var r=t.quasis[0]===e,i=t.quasis[t.quasis.length-1]===e,n=(r?"`":"}")+e.value.raw+(i?"`":"${");r||this.space(),this.token(n),i||this.space()}function n(e){for(var t=e.quasis,r=0;r<t.length;r++)this.print(t[r],e),r+1<t.length&&this.print(e.expressions[r],e)}t.__esModule=!0,t.TaggedTemplateExpression=r,t.TemplateElement=i,t.TemplateLiteral=n},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e,t){return b.isArrayTypeAnnotation(t)}function s(e,t){return!(!b.isMemberExpression(t)||t.object!==e)}function a(e,t,r){return m(r,{considerArrow:!0})}function o(e,t){if((b.isCallExpression(t)||b.isNewExpression(t))&&t.callee===e)return!0;if(b.isUnaryLike(t))return!0;if(b.isMemberExpression(t)&&t.object===e)return!0;if(b.isBinary(t)){var r=t.operator,i=x[r],n=e.operator,s=x[n];if(i>s)return!0;if(i===s&&t.right===e&&!b.isLogicalExpression(t))return!0}return!1}function u(e,t){if("in"===e.operator){if(b.isVariableDeclarator(t))return!0;if(b.isFor(t))return!0}return!1}function l(e,t){return!b.isForStatement(t)&&((!b.isExpressionStatement(t)||t.expression!==e)&&(!b.isReturnStatement(t)&&(!b.isThrowStatement(t)&&((!b.isSwitchStatement(t)||t.discriminant!==e)&&((!b.isWhileStatement(t)||t.test!==e)&&((!b.isIfStatement(t)||t.test!==e)&&(!b.isForInStatement(t)||t.right!==e)))))))}function p(e,t){return b.isBinary(t)||b.isUnaryLike(t)||b.isCallExpression(t)||b.isMemberExpression(t)||b.isNewExpression(t)}function c(e,t,r){return m(r,{considerDefaultExports:!0})}function f(e,t){return!!b.isMemberExpression(t,{object:e})||!(!b.isCallExpression(t,{callee:e})&&!b.isNewExpression(t,{callee:e}))}function h(e,t,r){return m(r,{considerDefaultExports:!0})}function d(e,t){return!!b.isExportDeclaration(t)||(!(!b.isBinaryExpression(t)&&!b.isLogicalExpression(t))||(!!b.isUnaryExpression(t)||f(e,t)))}function y(e,t){return!!b.isUnaryLike(t)||(!!b.isBinary(t)||(!!b.isConditionalExpression(t,{test:e})||f(e,t)))}function v(e){return!!b.isObjectPattern(e.left)||y.apply(void 0,arguments)}function m(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=t.considerArrow,i=void 0!==r&&r,n=t.considerDefaultExports,s=void 0!==n&&n,a=e.length-1,o=e[a];a--;for(var u=e[a];a>0;){if(b.isExpressionStatement(u,{expression:o}))return!0;if(s&&b.isExportDefaultDeclaration(u,{declaration:o}))return!0;if(i&&b.isArrowFunctionExpression(u,{body:o}))return!0;if(!(b.isCallExpression(u,{callee:o})||b.isSequenceExpression(u)&&u.expressions[0]===o||b.isMemberExpression(u,{object:o})||b.isConditional(u,{test:o})||b.isBinary(u,{left:o})||b.isAssignmentExpression(u,{left:o})))return!1;o=u,a--,u=e[a]}return!1}t.__esModule=!0,t.AwaitExpression=t.FunctionTypeAnnotation=void 0,t.NullableTypeAnnotation=n,t.UpdateExpression=s,t.ObjectExpression=a,t.Binary=o,t.BinaryExpression=u,t.SequenceExpression=l,t.YieldExpression=p,t.ClassExpression=c,t.UnaryLike=f,t.FunctionExpression=h,t.ArrowFunctionExpression=d,t.ConditionalExpression=y,t.AssignmentExpression=v;var g=r(51),b=i(g),x={"||":0,"&&":1,"|":2,"^":3,"&":4,"==":5,"===":5,"!=":5,"!==":5,"<":6,">":6,"<=":6,">=":6,in:6,instanceof:6,">>":7,"<<":7,">>>":7,"+":8,"-":8,"*":9,"/":9,"%":9,"**":10};t.FunctionTypeAnnotation=n,t.AwaitExpression=p},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return y.isMemberExpression(e)?(s(e.object,t),e.computed&&s(e.property,t)):y.isBinary(e)||y.isAssignmentExpression(e)?(s(e.left,t),s(e.right,t)):y.isCallExpression(e)?(t.hasCall=!0,s(e.callee,t)):y.isFunction(e)?t.hasFunction=!0:y.isIdentifier(e)&&(t.hasHelper=t.hasHelper||a(e.callee)),t}function a(e){return y.isMemberExpression(e)?a(e.object)||a(e.property):y.isIdentifier(e)?"require"===e.name||"_"===e.name[0]:y.isCallExpression(e)?a(e.callee):!(!y.isBinary(e)&&!y.isAssignmentExpression(e))&&(y.isIdentifier(e.left)&&a(e.left)||a(e.right))}function o(e){return y.isLiteral(e)||y.isObjectExpression(e)||y.isArrayExpression(e)||y.isIdentifier(e)||y.isMemberExpression(e)}var u=r(2482),l=n(u),p=r(102),c=n(p),f=r(6403),h=n(f),d=r(51),y=i(d);t.nodes={AssignmentExpression:function(e){var t=s(e.right);if(t.hasCall&&t.hasHelper||t.hasFunction)return{before:t.hasFunction,after:!0}},SwitchCase:function(e,t){return{before:e.consequent.length||t.cases[0]===e}},LogicalExpression:function(e){if(y.isFunction(e.left)||y.isFunction(e.right))return{after:!0}},Literal:function(e){if("use strict"===e.value)return{after:!0}},CallExpression:function(e){if(y.isFunction(e.callee)||a(e))return{before:!0,after:!0}},VariableDeclaration:function(e){for(var t=0;t<e.declarations.length;t++){var r=e.declarations[t],i=a(r.id)&&!o(r.init);if(!i){var n=s(r.init);i=a(r.init)&&n.hasCall||n.hasFunction}if(i)return{before:!0,after:!0}}},IfStatement:function(e){if(y.isBlockStatement(e.consequent))return{before:!0,after:!0}}},t.nodes.ObjectProperty=t.nodes.ObjectTypeProperty=t.nodes.ObjectMethod=t.nodes.SpreadProperty=function(e,t){if(t.properties[0]===e)return{before:!0}},t.list={VariableDeclaration:function(e){return(0,h.default)(e.declarations,"init")},ArrayExpression:function(e){return e.elements},ObjectExpression:function(e){return e.properties}},(0,c.default)({Function:!0,Class:!0,Loop:!0,LabeledStatement:!0,SwitchStatement:!0,TryStatement:!0},function(e,r){(0,l.default)(e)&&(e={after:e,before:e}),(0,c.default)([r].concat(y.FLIPPED_ALIAS_KEYS[r]||[]),function(r){t.nodes[r]=function(){return e}})})},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(){this.token(","),this.space()}t.__esModule=!0;var a=r(999),o=n(a),u=r(1),l=n(u),p=r(17),c=n(p),f=r(5989),h=n(f),d=r(2),y=n(d),v=r(6394),m=n(v),g=r(6396),b=n(g),x=r(6402),E=n(x),A=r(459),S=n(A),_=r(2543),T=n(_),P=r(1626),w=i(P),k=r(2557),C=n(k),D=r(51),O=i(D),N=/e/i,I=/\.0+$/,F=/^0[box]/,B=function(){function e(t,r,i){(0,y.default)(this,e),this.inForStatementInitCounter=0,this._printStack=[],this._indent=0,this._insideAux=!1,this._printedCommentStarts={},this._parenPushNewlineState=null,this._printAuxAfterOnNextUserNode=!1,this._printedComments=new h.default,this._endsWithInteger=!1,this._endsWithWord=!1,this.format=t||{},this._buf=new T.default(r),this._whitespace=i.length>0?new C.default(i):null}return e.prototype.generate=function(e){return this.print(e),this._maybeAddAuxComment(),this._buf.get()},e.prototype.indent=function(){this.format.compact||this.format.concise||this._indent++},e.prototype.dedent=function(){this.format.compact||this.format.concise||this._indent--},e.prototype.semicolon=function(){var e=!(arguments.length<=0||void 0===arguments[0])&&arguments[0];this._maybeAddAuxComment(),this._append(";",!e)},e.prototype.rightBrace=function(){this.format.minified&&this._buf.removeLastSemicolon(),this.token("}")},e.prototype.space=function(){var e=!(arguments.length<=0||void 0===arguments[0])&&arguments[0];this.format.compact||(this._buf.hasContent()&&!this.endsWith(" ")&&!this.endsWith("\n")||e)&&this._space()},e.prototype.word=function(e){this._endsWithWord&&this._space(),this._maybeAddAuxComment(),this._append(e),this._endsWithWord=!0},e.prototype.number=function(e){this.word(e),this._endsWithInteger=(0,E.default)(+e)&&!F.test(e)&&!N.test(e)&&!I.test(e)&&"."!==e[e.length-1]},e.prototype.token=function(e){("--"===e&&this.endsWith("!")||"+"===e[0]&&this.endsWith("+")||"-"===e[0]&&this.endsWith("-")||"."===e[0]&&this._endsWithInteger)&&this._space(),this._maybeAddAuxComment(),this._append(e)},e.prototype.newline=function(e){if(!this.format.retainLines&&!this.format.compact){if(this.format.concise)return void this.space();if(!(this.endsWith("\n\n")||("number"!=typeof e&&(e=1),e=Math.min(2,e),(this.endsWith("{\n")||this.endsWith(":\n"))&&e--,e<=0)))for(var t=0;t<e;t++)this._newline()}},e.prototype.endsWith=function(e){return this._buf.endsWith(e)},e.prototype.removeTrailingNewline=function(){this._buf.removeTrailingNewline()},e.prototype.source=function(e,t){this._catchUp(e,t),this._buf.source(e,t)},e.prototype.withSource=function(e,t,r){this._catchUp(e,t),this._buf.withSource(e,t,r)},e.prototype._space=function(){this._append(" ",!0)},e.prototype._newline=function(){this._append("\n",!0)},e.prototype._append=function(e){var t=!(arguments.length<=1||void 0===arguments[1])&&arguments[1];this._maybeAddParen(e),this._maybeIndent(e),t?this._buf.queue(e):this._buf.append(e),this._endsWithWord=!1,this._endsWithInteger=!1},e.prototype._maybeIndent=function(e){this._indent&&this.endsWith("\n")&&"\n"!==e[0]&&this._buf.queue(this._getIndent())},e.prototype._maybeAddParen=function(e){var t=this._parenPushNewlineState;if(t){this._parenPushNewlineState=null;var r=void 0;for(r=0;r<e.length&&" "===e[r];r++);if(r!==e.length){var i=e[r];"\n"!==i&&"/"!==i||(this.token("("),this.indent(),t.printed=!0)}}},e.prototype._catchUp=function(e,t){if(this.format.retainLines){var r=t?t[e]:null;if(r&&null!==r.line)for(var i=r.line-this._buf.getCurrentLine(),n=0;n<i;n++)this._newline()}},e.prototype._getIndent=function(){return(0,S.default)(this.format.indent.style,this._indent)},e.prototype.startTerminatorless=function(){return this._parenPushNewlineState={printed:!1}},e.prototype.endTerminatorless=function(e){e.printed&&(this.dedent(),this.newline(),this.token(")"))},e.prototype.print=function(e,t){var r=this;if(e){var i=this.format.concise;e._compact&&(this.format.concise=!0);var n=this[e.type];if(!n)throw new ReferenceError("unknown node of type "+(0,c.default)(e.type)+" with constructor "+(0,c.default)(e&&e.constructor.name));this._printStack.push(e);var s=this._insideAux;this._insideAux=!e.loc,this._maybeAddAuxComment(this._insideAux&&!s);var a=w.needsParens(e,t,this._printStack);a&&this.token("("),this._printLeadingComments(e,t);var o=O.isProgram(e)||O.isFile(e)?null:e.loc;this.withSource("start",o,function(){r[e.type](e,t)}),this._printTrailingComments(e,t),a&&this.token(")"),this._printStack.pop(),this.format.concise=i,this._insideAux=s}},e.prototype._maybeAddAuxComment=function(e){e&&this._printAuxBeforeComment(),this._insideAux||this._printAuxAfterComment()},e.prototype._printAuxBeforeComment=function(){if(!this._printAuxAfterOnNextUserNode){this._printAuxAfterOnNextUserNode=!0;var e=this.format.auxiliaryCommentBefore;e&&this._printComment({type:"CommentBlock",value:e})}},e.prototype._printAuxAfterComment=function(){if(this._printAuxAfterOnNextUserNode){this._printAuxAfterOnNextUserNode=!1;var e=this.format.auxiliaryCommentAfter;e&&this._printComment({type:"CommentBlock",value:e})}},e.prototype.getPossibleRaw=function(e){if(!this.format.minified){var t=e.extra;return t&&null!=t.raw&&null!=t.rawValue&&e.value===t.rawValue?t.raw:void 0}},e.prototype.printJoin=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];if(e&&e.length){r.indent&&this.indent();for(var i={addNewlines:r.addNewlines},n=0;n<e.length;n++){var s=e[n];s&&(r.statement&&this._printNewline(!0,s,t,i),this.print(s,t),r.iterator&&r.iterator(s,n),r.separator&&n<e.length-1&&r.separator.call(this),r.statement&&this._printNewline(!1,s,t,i))}r.indent&&this.dedent()}},e.prototype.printAndIndentOnComments=function(e,t){var r=!!e.leadingComments;r&&this.indent(),this.print(e,t),r&&this.dedent()},e.prototype.printBlock=function(e){var t=e.body;O.isEmptyStatement(t)||this.space(),this.print(t,e)},e.prototype._printTrailingComments=function(e,t){this._printComments(this._getComments(!1,e,t))},e.prototype._printLeadingComments=function(e,t){this._printComments(this._getComments(!0,e,t))},e.prototype.printInnerComments=function(e){var t=arguments.length<=1||void 0===arguments[1]||arguments[1];e.innerComments&&(t&&this.indent(),this._printComments(e.innerComments),t&&this.dedent())},e.prototype.printSequence=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return r.statement=!0,this.printJoin(e,t,r)},e.prototype.printList=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return null==r.separator&&(r.separator=s),this.printJoin(e,t,r)},e.prototype._printNewline=function(e,t,r,i){var n=this;if(!this.format.retainLines&&!this.format.compact){
+if(this.format.concise)return void this.space();var s=0;if(null!=t.start&&!t._ignoreUserWhitespace&&this._whitespace)if(e){var a=t.leadingComments,o=a&&(0,m.default)(a,function(e){return!!e.loc&&n.format.shouldPrintComment(e.value)});s=this._whitespace.getNewlinesBefore(o||t)}else{var u=t.trailingComments,l=u&&(0,b.default)(u,function(e){return!!e.loc&&n.format.shouldPrintComment(e.value)});s=this._whitespace.getNewlinesAfter(l||t)}else{e||s++,i.addNewlines&&(s+=i.addNewlines(e,t)||0);var p=w.needsWhitespaceAfter;e&&(p=w.needsWhitespaceBefore),p(t,r)&&s++,this._buf.hasContent()||(s=0)}this.newline(s)}},e.prototype._getComments=function(e,t){return t&&(e?t.leadingComments:t.trailingComments)||[]},e.prototype._printComment=function(e){var t=this;if(this.format.shouldPrintComment(e.value)&&!e.ignore&&!this._printedComments.has(e)){if(this._printedComments.add(e),null!=e.start){if(this._printedCommentStarts[e.start])return;this._printedCommentStarts[e.start]=!0}this.newline(this._whitespace?this._whitespace.getNewlinesBefore(e):0),this.endsWith("[")||this.endsWith("{")||this.space();var r="CommentLine"===e.type?"//"+e.value+"\n":"/*"+e.value+"*/";if("CommentBlock"===e.type&&this.format.indent.adjustMultilineComment){var i=e.loc&&e.loc.start.column;if(i){var n=new RegExp("\\n\\s{1,"+i+"}","g");r=r.replace(n,"\n")}var s=Math.max(this._getIndent().length,this._buf.getCurrentColumn());r=r.replace(/\n(?!$)/g,"\n"+(0,S.default)(" ",s))}this.withSource("start",e.loc,function(){t._append(r)}),this.newline((this._whitespace?this._whitespace.getNewlinesAfter(e):0)+("CommentLine"===e.type?-1:0))}},e.prototype._printComments=function(e){if(e&&e.length)for(var t=e,r=Array.isArray(t),i=0,t=r?t:(0,l.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;this._printComment(s)}},e}();t.default=B;for(var R=[r(2552),r(2546),r(2551),r(2545),r(2549),r(2550),r(1054),r(2547),r(2544),r(2548)],L=0;L<R.length;L++){var M=R[L];(0,o.default)(B.prototype,M)}e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(39),s=i(n),a=r(11),o=i(a),u=r(2),l=i(u),p=r(2490),c=i(p),f=function(){function e(t,r){var i=this;(0,l.default)(this,e),this._opts=t,this._map=new c.default.SourceMapGenerator({file:t.sourceMapTarget,sourceRoot:t.sourceRoot}),"string"==typeof r?this._map.setSourceContent(t.sourceFileName,r):"object"===("undefined"==typeof r?"undefined":(0,o.default)(r))&&(0,s.default)(r).forEach(function(e){i._map.setSourceContent(e,r[e])})}return e.prototype.get=function(){return this._map.toJSON()},e.prototype.mark=function(e,t,r,i,n,s){this._lastGenLine!==e&&null===r||this._lastGenLine===e&&this._lastSourceLine===r&&this._lastSourceColumn===i||(this._lastGenLine=e,this._lastSourceLine=r,this._lastSourceColumn=i,this._map.addMapping({name:n,generated:{line:e,column:t},source:null==r?null:s||this._opts.sourceFileName,original:null==r?null:{line:r,column:i}}))},e}();t.default=f,e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(2),s=i(n),a=function(){function e(t){(0,s.default)(this,e),this.tokens=t,this.used={}}return e.prototype.getNewlinesBefore=function(e){var t=void 0,r=void 0,i=this.tokens,n=this._findToken(function(t){return t.start-e.start},0,i.length);if(n>=0){for(;n&&e.start===i[n-1].start;)--n;t=i[n-1],r=i[n]}return this._getNewlinesBetween(t,r)},e.prototype.getNewlinesAfter=function(e){var t=void 0,r=void 0,i=this.tokens,n=this._findToken(function(t){return t.end-e.end},0,i.length);if(n>=0){for(;n&&e.end===i[n-1].end;)--n;t=i[n],r=i[n+1],","===r.type.label&&(r=i[n+2])}return r&&"eof"===r.type.label?1:this._getNewlinesBetween(t,r)},e.prototype._getNewlinesBetween=function(e,t){if(!t||!t.loc)return 0;for(var r=e?e.loc.end.line:1,i=t.loc.start.line,n=0,s=r;s<i;s++)"undefined"==typeof this.used[s]&&(this.used[s]=!0,n++);return n},e.prototype._findToken=function(e,t,r){if(t>=r)return-1;var i=t+r>>>1,n=e(this.tokens[i]);return n<0?this._findToken(e,i+1,r):n>0?this._findToken(e,t,i):0===n?i:-1},e}();t.default=a,e.exports=t.default},[6461,366,17,1,51],[6462,51,1055,261],[6463,261],[6464,261],[6465,261],[6467,261,2559,2560,2562,2564,2565,2561],[6468,261],[6469,261],[6470,51],[6472,51],[6474,1,1627,51,1055],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){for(var t=e,r=Array.isArray(t),i=0,t=r?t:(0,o.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=s.node,u=a.expression;if(l.isMemberExpression(u)){var p=s.scope.maybeGenerateMemoised(u.object),c=void 0,f=[];p?(c=p,f.push(l.assignmentExpression("=",p,u.object))):c=u.object,f.push(l.callExpression(l.memberExpression(l.memberExpression(c,u.property,u.computed),l.identifier("bind")),[c])),1===f.length?a.expression=f[0]:a.expression=l.sequenceExpression(f)}}}t.__esModule=!0;var a=r(1),o=n(a);t.default=s;var u=r(3),l=i(u);e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(e){var t=arguments.length<=1||void 0===arguments[1]?e.scope:arguments[1],r=e.node,i=u.functionExpression(null,[],r.body,r.generator,r.async),n=i,s=[];(0,a.default)(e,function(e){return t.push({id:e})});var o={foundThis:!1,foundArguments:!1};e.traverse(l,o),o.foundArguments&&(n=u.memberExpression(i,u.identifier("apply")),s=[],o.foundThis&&s.push(u.thisExpression()),o.foundArguments&&(o.foundThis||s.push(u.nullLiteral()),s.push(u.identifier("arguments"))));var p=u.callExpression(n,s);return r.generator&&(p=u.yieldExpression(p,!0)),u.returnStatement(p)};var s=r(1629),a=n(s),o=r(3),u=i(o),l={enter:function(e,t){e.isThisExpression()&&(t.foundThis=!0),e.isReferencedIdentifier({name:"arguments"})&&(t.foundArguments=!0)},Function:function(e){e.skip()}};e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return!g.isClassMethod(e)&&!g.isObjectMethod(e)||"get"!==e.kind&&"set"!==e.kind?"value":e.kind}function a(e,t,r,i,n){var a=g.toKeyAlias(t),o={};if((0,v.default)(e,a)&&(o=e[a]),e[a]=o,o._inherits=o._inherits||[],o._inherits.push(t),o._key=t.key,t.computed&&(o._computed=!0),t.decorators){var u=o.decorators=o.decorators||g.arrayExpression([]);u.elements=u.elements.concat(t.decorators.map(function(e){return e.expression}).reverse())}if(o.value||o.initializer)throw i.buildCodeFrameError(t,"Key conflict with sibling node");var l=void 0,p=void 0;(g.isObjectProperty(t)||g.isObjectMethod(t)||g.isClassMethod(t))&&(l=g.toComputedKey(t,t.key)),g.isObjectProperty(t)||g.isClassProperty(t)?p=t.value:(g.isObjectMethod(t)||g.isClassMethod(t))&&(p=g.functionExpression(null,t.params,t.body,t.generator,t.async));var c=s(t);return r&&"value"===c||(r=c),n&&g.isStringLiteral(l)&&("value"===r||"initializer"===r)&&g.isFunctionExpression(p)&&(p=(0,f.default)({id:l,node:p,scope:n})),p&&(g.inheritsComments(p,t),o[r]=p),o}function o(e){for(var t in e)if(e[t]._computed)return!0;return!1}function u(e){for(var t=g.arrayExpression([]),r=0;r<e.properties.length;r++){var i=e.properties[r],n=i.value;n.properties.unshift(g.objectProperty(g.identifier("key"),g.toComputedKey(i))),t.elements.push(n)}return t}function l(e){var t=g.objectExpression([]);return(0,d.default)(e,function(e){var r=g.objectExpression([]),i=g.objectProperty(e._key,r,e._computed);(0,d.default)(e,function(e,t){if("_"!==t[0]){var i=e;(g.isClassMethod(e)||g.isClassProperty(e))&&(e=e.value);var n=g.objectProperty(g.identifier(t),e);g.inheritsComments(n,i),g.removeComments(i),r.properties.push(n)}}),t.properties.push(i)}),t}function p(e){return(0,d.default)(e,function(e){e.value&&(e.writable=g.booleanLiteral(!0)),e.configurable=g.booleanLiteral(!0),e.enumerable=g.booleanLiteral(!0)}),l(e)}t.__esModule=!0,t.push=a,t.hasComputed=o,t.toComputedObjectFromClass=u,t.toClassObject=l,t.toDefineObject=p;var c=r(691),f=n(c),h=r(102),d=n(h),y=r(458),v=n(y),m=r(3),g=i(m)},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(1),a=n(s);t.default=function(e){function t(t){if(t.node&&!t.isPure()){var r=e.scope.generateDeclaredUidIdentifier();i.push(p.assignmentExpression("=",r,t.node)),t.replaceWith(r)}}function r(e){if(Array.isArray(e)&&e.length){e=e.reverse(),(0,u.default)(e);for(var r=e,i=Array.isArray(r),n=0,r=i?r:(0,a.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var o=s;t(o)}}}e.assertClass();var i=[];t(e.get("superClass")),r(e.get("decorators"),!0);for(var n=e.get("body.body"),s=n,o=Array.isArray(s),l=0,s=o?s:(0,a.default)(s);;){var c;if(o){if(l>=s.length)break;c=s[l++]}else{if(l=s.next(),l.done)break;c=l.value}var f=c;f.is("computed")&&t(f.get("key")),f.has("decorators")&&r(e.get("decorators"))}i&&e.insertBefore(i.map(function(e){return p.expressionStatement(e)}))};var o=r(2569),u=n(o),l=r(3),p=i(l);e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return p.isRegExpLiteral(e)&&e.flags.indexOf(t)>=0}function a(e,t){var r=e.flags.split("");e.flags.indexOf(t)<0||((0,u.default)(r,t),e.flags=r.join(""))}t.__esModule=!0,t.is=s,t.pullFlag=a;var o=r(2585),u=n(o),l=r(3),p=i(l)},1902,1603,[6494,2581],function(e,t){function r(e,t,r,i){for(var n=r-1,s=e.length;++n<s;)if(i(e[n],t))return n;return-1}e.exports=r},[6495,2575,2576,2577,2579,2580],function(e,t){function r(e){return function(t){return e(t)}}e.exports=r},2467,function(e,t){function r(e,t,r){for(var i=e.length,n=t+(r?1:-1);r?n--:++n<i;){var s=e[n];if(s!==s)return n}return-1}e.exports=r},[6496,1631],373,[6497,2583],[6498,2586,2587],[6499,2578],[6500,2574,2589],[6501,2590],[6502,2588],[6503,2582,1631,2584],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return!!m.isSuper(e)&&(!m.isMemberExpression(t,{computed:!1})&&!m.isCallExpression(t,{callee:e}))}function a(e){return m.isMemberExpression(e)&&m.isSuper(e.object)}function o(e,t){var r=t?e:m.memberExpression(e,m.identifier("prototype"));return m.logicalExpression("||",m.memberExpression(r,m.identifier("__proto__")),m.callExpression(m.memberExpression(m.identifier("Object"),m.identifier("getPrototypeOf")),[r]))}t.__esModule=!0;var u=r(2),l=n(u),p=r(98),c=n(p),f=r(1630),h=n(f),d=r(20),y=i(d),v=r(263),m=i(v),g=(0,c.default)(),b={Function:function(e){e.inShadow("this")||e.skip()},ReturnStatement:function(e,t){e.inShadow("this")||t.returns.push(e)},ThisExpression:function(e,t){e.node[g]||t.thises.push(e)},enter:function(e,t){var r=t.specHandle;t.isLoose&&(r=t.looseHandle);var i=e.isCallExpression()&&e.get("callee").isSuper(),n=r.call(t,e);n&&(t.hasSuper=!0),i&&t.bareSupers.push(e),n===!0&&e.requeue(),n!==!0&&n&&(Array.isArray(n)?e.replaceWithMultiple(n):e.replaceWith(n))}},x=function(){function e(t){var r=!(arguments.length<=1||void 0===arguments[1])&&arguments[1];(0,l.default)(this,e),this.forceSuperMemoisation=t.forceSuperMemoisation,this.methodPath=t.methodPath,this.methodNode=t.methodNode,this.superRef=t.superRef,this.isStatic=t.isStatic,this.hasSuper=!1,this.inClass=r,this.isLoose=t.isLoose,this.scope=this.methodPath.scope,this.file=t.file,this.opts=t,this.bareSupers=[],this.returns=[],this.thises=[]}return e.prototype.getObjectRef=function(){return this.opts.objectRef||this.opts.getObjectRef()},e.prototype.setSuperProperty=function(e,t,r){return m.callExpression(this.file.addHelper("set"),[o(this.getObjectRef(),this.isStatic),r?e:m.stringLiteral(e.name),t,m.thisExpression()])},e.prototype.getSuperProperty=function(e,t){return m.callExpression(this.file.addHelper("get"),[o(this.getObjectRef(),this.isStatic),t?e:m.stringLiteral(e.name),m.thisExpression()])},e.prototype.replace=function(){this.methodPath.traverse(b,this)},e.prototype.getLooseSuperProperty=function(e,t){var r=this.methodNode,i=this.superRef||m.identifier("Function");return t.property===e?void 0:m.isCallExpression(t,{callee:e})?void 0:m.isMemberExpression(t)&&!r.static?m.memberExpression(i,m.identifier("prototype")):i},e.prototype.looseHandle=function(e){var t=e.node;if(e.isSuper())return this.getLooseSuperProperty(t,e.parent);if(e.isCallExpression()){var r=t.callee;if(!m.isMemberExpression(r))return;if(!m.isSuper(r.object))return;return m.appendToMemberExpression(r,m.identifier("call")),t.arguments.unshift(m.thisExpression()),!0}},e.prototype.specHandleAssignmentExpression=function(e,t,r){return"="===r.operator?this.setSuperProperty(r.left.property,r.right,r.left.computed):(e=e||t.scope.generateUidIdentifier("ref"),[m.variableDeclaration("var",[m.variableDeclarator(e,r.left)]),m.expressionStatement(m.assignmentExpression("=",r.left,m.binaryExpression(r.operator[0],e,r.right)))])},e.prototype.specHandle=function(e){var t=void 0,r=void 0,i=void 0,n=void 0,o=e.parent,u=e.node;if(s(u,o))throw e.buildCodeFrameError(y.get("classesIllegalBareSuper"));if(m.isCallExpression(u)){var l=u.callee;if(m.isSuper(l))return;a(l)&&(t=l.property,r=l.computed,i=u.arguments)}else if(m.isMemberExpression(u)&&m.isSuper(u.object))t=u.property,r=u.computed;else{if(m.isUpdateExpression(u)&&a(u.argument)){var p=m.binaryExpression(u.operator[0],u.argument,m.numericLiteral(1));if(u.prefix)return this.specHandleAssignmentExpression(null,e,p);var c=e.scope.generateUidIdentifier("ref");return this.specHandleAssignmentExpression(c,e,p).concat(m.expressionStatement(c))}if(m.isAssignmentExpression(u)&&a(u.left))return this.specHandleAssignmentExpression(null,e,u)}if(t){var f=this.getSuperProperty(t,r,n);return i?this.optimiseCall(f,i):f}},e.prototype.optimiseCall=function(e,t){var r=m.thisExpression();return r[g]=!0,(0,h.default)(e,r,t)},e}();t.default=x,e.exports=t.default},[6461,366,17,1,263],[6462,263,1056,262],[6463,262],[6464,262],[6465,262],[6467,262,2593,2594,2596,2598,2599,2595],[6468,262],[6469,262],[6470,263],[6472,263],[6474,1,1632,263,1056],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(559),s=i(n),a={};t.default=a,a.typeof=(0,s.default)('\n (typeof Symbol === "function" && typeof Symbol.iterator === "symbol")\n ? function (obj) { return typeof obj; }\n : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };\n'),a.jsx=(0,s.default)('\n (function () {\n var REACT_ELEMENT_TYPE = (typeof Symbol === "function" && Symbol.for && Symbol.for("react.element")) || 0xeac7;\n\n return function createRawReactElement (type, props, key, children) {\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n // If we\'re going to assign props.children, we create a new object now\n // to avoid mutating defaultProps.\n props = {};\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : \'\' + key,\n ref: null,\n props: props,\n _owner: null,\n };\n };\n\n })()\n'),a.asyncToGenerator=(0,s.default)('\n (function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n return step("next", value);\n }, function (err) {\n return step("throw", err);\n });\n }\n }\n\n return step("next");\n });\n };\n })\n'),a.classCallCheck=(0,s.default)('\n (function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n });\n'),a.createClass=(0,s.default)('\n (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i ++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n })()\n'),a.defineEnumerableProperties=(0,s.default)('\n (function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ("value" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n return obj;\n })\n'),a.defaults=(0,s.default)("\n (function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n })\n"),a.defineProperty=(0,s.default)("\n (function (obj, key, value) {\n // Shortcircuit the slow defineProperty path when possible.\n // We are trying to avoid issues where setters defined on the\n // prototype cause side effects under the fast path of simple\n // assignment. By checking for existence of the property with\n // the in operator, we can optimize most of this overhead away.\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n });\n"),a.extends=(0,s.default)("\n Object.assign || (function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n })\n"),a.get=(0,s.default)('\n (function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if ("value" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n });\n'),a.inherits=(0,s.default)('\n (function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n })\n'),a.instanceof=(0,s.default)('\n (function (left, right) {\n if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n });\n'),a.interopRequireDefault=(0,s.default)("\n (function (obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n })\n"),a.interopRequireWildcard=(0,s.default)("\n (function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n newObj.default = obj;\n return newObj;\n }\n })\n"),a.newArrowCheck=(0,s.default)('\n (function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError("Cannot instantiate an arrow function");\n }\n });\n'),a.objectDestructuringEmpty=(0,s.default)('\n (function (obj) {\n if (obj == null) throw new TypeError("Cannot destructure undefined");\n });\n'),a.objectWithoutProperties=(0,s.default)("\n (function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n })\n"),a.possibleConstructorReturn=(0,s.default)('\n (function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n return call && (typeof call === "object" || typeof call === "function") ? call : self;\n });\n'),a.selfGlobal=(0,s.default)('\n typeof global === "undefined" ? self : global\n'),a.set=(0,s.default)('\n (function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if ("value" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n });\n'),a.slicedToArray=(0,s.default)('\n (function () {\n // Broken out into a separate function to avoid deoptimizations due to the try/catch for the\n // array iterator case.\n function sliceIterator(arr, i) {\n // this is an expanded form of `for...of` that properly supports abrupt completions of\n // iterators etc. variable names have been minimised to reduce the size of this massive\n // helper. sometimes spec compliancy is annoying :(\n //\n // _n = _iteratorNormalCompletion\n // _d = _didIteratorError\n // _e = _iteratorError\n // _i = _iterator\n // _s = _step\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i["return"]) _i["return"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError("Invalid attempt to destructure non-iterable instance");\n }\n };\n })();\n'),a.slicedToArrayLoose=(0,s.default)('\n (function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n if (i && _arr.length === i) break;\n }\n return _arr;\n } else {\n throw new TypeError("Invalid attempt to destructure non-iterable instance");\n }\n });\n'),a.taggedTemplateLiteral=(0,s.default)("\n (function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: { value: Object.freeze(raw) }\n }));\n });\n"),a.taggedTemplateLiteralLoose=(0,s.default)("\n (function (strings, raw) {\n strings.raw = raw;\n return strings;\n });\n"),a.temporalRef=(0,s.default)('\n (function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + " is not defined - temporal dead zone");\n } else {\n return val;\n }\n })\n'),a.temporalUndefined=(0,s.default)("\n ({})\n"),a.toArray=(0,s.default)("\n (function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n });\n"),a.toConsumableArray=(0,s.default)("\n (function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n } else {\n return Array.from(arr);\n }\n });\n"),e.exports=t.default},function(e,t){"use strict";function r(e,t){var r=void 0;return null!=t.url?r=t.url:(r="Inline Babel script",f++,f>1&&(r+=" ("+f+")")),e(t.content,l({filename:r},i(t))).code}function i(e){return{presets:e.presets||["react","es2015"],plugins:e.plugins||["transform-class-properties","transform-object-rest-spread","transform-flow-strip-types"],sourceMaps:"inline"}}function n(e,t){var i=document.createElement("script");i.text=r(e,t),c.appendChild(i)}function s(e,t,r){var i=new XMLHttpRequest;return i.open("GET",e,!0),"overrideMimeType"in i&&i.overrideMimeType("text/plain"),i.onreadystatechange=function(){if(4===i.readyState){if(0!==i.status&&200!==i.status)throw r(),new Error("Could not load "+e);t(i.responseText)}},i.send(null)}function a(e,t){var r=e.getAttribute(t);return""===r?[]:r?r.split(",").map(function(e){return e.trim()}):null}function o(e,t){function r(){var t,r;for(r=0;r<o;r++)if(t=i[r],t.loaded&&!t.executed)t.executed=!0,n(e,t);else if(!t.loaded&&!t.error&&!t.async)break}var i=[],o=t.length;t.forEach(function(e,t){var n={async:e.hasAttribute("async"),error:!1,executed:!1,plugins:a(e,"data-plugins"),presets:a(e,"data-presets")};e.src?(i[t]=l({},n,{content:null,loaded:!1,url:e.src}),s(e.src,function(e){i[t].loaded=!0,i[t].content=e,r()},function(){i[t].error=!0,r()})):i[t]=l({},n,{content:e.innerHTML,loaded:!0,url:null})}),r()}function u(e){c=document.getElementsByTagName("head")[0];for(var t=document.getElementsByTagName("script"),r=[],i=0;i<t.length;i++){var n=t.item(i),s=n.type.split(";")[0];p.indexOf(s)!==-1&&r.push(n)}0!==r.length&&(console.warn("You are using the in-browser Babel transformer. Be sure to precompile your scripts for production - https://babeljs.io/docs/setup/"),o(e,r))}Object.defineProperty(t,"__esModule",{value:!0});var l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e};t.runScripts=u;var p=["text/jsx","text/babel"],c=void 0,f=0},[6505,2606],[6506,2634,2633,2631],function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){e.exports=function(){}},[6508,1063,2627,2626],[6509,1634,462],[6510,2607],[6513,461,1057,2611,576],[6515,461],[6516,694,1637,1635],[6517,1634],[6518,2619,1639,1640,576,462],2445,1090,[6520,693,2620,1636,1061,1635,2613],[6522,1060,693,2623,694],[6523,695,2628,1061],[6524,695,1063,2609,1061],[6525,2622,1636],[6526,576],[6530,1062,1058],[6531,1062],[6533,1062],[6534,1058],[6535,1059],[6537,2610,462,696,1057],[6538,693,2630,1057],[6539,2608,2617,696,1063,1638],[6540,2625,1638],[6541,2632,461,576,696,462],function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types;return{pre:function(e){e.set("helpersNamespace",t.identifier("babelHelpers"))}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("asyncGenerators")}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("functionSent")}}},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(){return{inherits:r(697)}},e.exports=t.default},[6542,2640,1650,18],[6491,2641,1650,18],[6492,18],[6475,106,2650,2649,2647,2645,2648,2646,2644,107,1651,699,2651,2652],2531,[6544,106],[6545,378,19,107,106,577],[6479,700,106],[6546,19,107,106,577],[6547,46,268,106,700],[6548,19,378,107,106,463],[6549,107,106,463],[6550,107,106],[6551,2653,107,699,106,577,463],2541,[6554,46,268,700,699,107],1784,1660,function(e,t){function r(e,t){var r=-1,i=e.length;for(t||(t=Array(i));++r<i;)t[r]=e[r];return t}e.exports=r},1669,[6555,1072],[6557,2657,2658,1652,2663,2672,2673,2674,464,465],function(e,t){function r(e,t,r){r||(r={});for(var i=-1,n=t.length;++i<n;){var s=t[i];r[s]=e[s]}return r}e.exports=r},[6558,2670],[6559,2662,1072],[6560,1070],1674,1794,function(e,t){function r(e){return null==e?"":e+""}e.exports=r},function(e,t){(function(t){function r(e){var t=new i(e.byteLength),r=new n(t);return r.set(new n(e)),t}var i=t.ArrayBuffer,n=t.Uint8Array;e.exports=r}).call(t,function(){return this}())},[6562,1653,2675,2656],[6563,1070],[6564,2665],function(e,t){function r(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&n.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var i=Object.prototype,n=i.hasOwnProperty;e.exports=r},[6566,2668],function(e,t){function r(e){var t=e.constructor;return"function"==typeof t&&t instanceof t||(t=Object),new t}e.exports=r},[6568,1068,701,465],[6569,464,1070],[6570,1071,464,701,578,2684],[6572,2667,464],[6573,2660,1653],[6576,465],[6577,2680,1069],[6578,2659,1652,2669],[6579,2664,2666,1071,464,701,2676,578,2655,2678],[6581,1071,464,701,578,465],1681,[6583,19,46,377,18],[6586,19,18,377],function(e,t){"use strict";function r(){var e=this.node;if(e){var t=e.trailingComments,r=e.leadingComments;if(t||r){var i=this.getSibling(this.key-1),n=this.getSibling(this.key+1);i.node||(i=n),n.node||(n=i),i.addComments("trailing",r),n.addComments("leading",t)}}}function i(e,t,r){this.addComments(e,[{type:r?"CommentLine":"CommentBlock",value:t}])}function n(e,t){if(t){var r=this.node;if(r){var i=e+"Comments";r[i]?r[i]=r[i].concat(t):r[i]=t}}}t.__esModule=!0,t.shareCommentsWithSiblings=r,t.addComment=i,
+t.addComments=n},[6587,19,376],[6588,18],[6589,379,19],[6590,19,377,18],[6592,19,2695,18],[6593,19,18],[6594,2694,18],[6595,379,19,1075,18],[6596,46,19,18],function(e,t){"use strict";t.__esModule=!0;t.hooks=[function(e,t){if("body"===e.key&&t.isArrowFunctionExpression())return e.replaceWith(e.scope.buildUndefinedNode()),!0},function(e,t){var r=!1;if(r=r||"test"===e.key&&(t.isWhile()||t.isSwitchCase()),r=r||"declaration"===e.key&&t.isExportDeclaration(),r=r||"body"===e.key&&t.isLabeledStatement(),r=r||"declarations"===e.listKey&&t.isVariableDeclaration()&&1===t.node.declarations.length,r=r||"expression"===e.key&&t.isExpressionStatement())return t.remove(),!0},function(e,t){if(t.isSequenceExpression()&&1===t.node.expressions.length)return t.replaceWith(t.node.expressions[0]),!0},function(e,t){if(t.isBinary())return"left"===e.key?t.replaceWith(t.node.right):t.replaceWith(t.node.left),!0}]},[6598,379,19,702,2697,377,18],[6599,19,2698],[6600,19,2704,376,377,2717,18],[6603,46,1657,18],[6604,379,1084,19,1656,1074,18,2756],[6605,2716,2715,2705],[6606,2707,2706,2710,2708,2712],2491,function(e,t){"use strict";var r=/[|\\{}()[\]^$+*?.]/g;e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(r,"\\$&")}},[6607,2709],1615,[6608,2711],1615,function(e,t,r){(function(t){"use strict";var r=t.argv,i=r.indexOf("--"),n=function(e){e="--"+e;var t=r.indexOf(e);return t!==-1&&(i===-1||t<i)};e.exports=function(){return"FORCE_COLOR"in t.env||!(n("no-color")||n("no-colors")||n("color=false"))&&(!!(n("color")||n("colors")||n("color=true")||n("color=always"))||!(t.stdout&&!t.stdout.isTTY)&&("win32"===t.platform||("COLORTERM"in t.env||"dumb"!==t.env.TERM&&!!/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(t.env.TERM))))}()}).call(t,r(10))},function(e,t){!function(){"use strict";function t(e){if(null==e)return!1;switch(e.type){case"ArrayExpression":case"AssignmentExpression":case"BinaryExpression":case"CallExpression":case"ConditionalExpression":case"FunctionExpression":case"Identifier":case"Literal":case"LogicalExpression":case"MemberExpression":case"NewExpression":case"ObjectExpression":case"SequenceExpression":case"ThisExpression":case"UnaryExpression":case"UpdateExpression":return!0}return!1}function r(e){if(null==e)return!1;switch(e.type){case"DoWhileStatement":case"ForInStatement":case"ForStatement":case"WhileStatement":return!0}return!1}function i(e){if(null==e)return!1;switch(e.type){case"BlockStatement":case"BreakStatement":case"ContinueStatement":case"DebuggerStatement":case"DoWhileStatement":case"EmptyStatement":case"ExpressionStatement":case"ForInStatement":case"ForStatement":case"IfStatement":case"LabeledStatement":case"ReturnStatement":case"SwitchStatement":case"ThrowStatement":case"TryStatement":case"VariableDeclaration":case"WhileStatement":case"WithStatement":return!0}return!1}function n(e){return i(e)||null!=e&&"FunctionDeclaration"===e.type}function s(e){switch(e.type){case"IfStatement":return null!=e.alternate?e.alternate:e.consequent;case"LabeledStatement":case"ForStatement":case"ForInStatement":case"WhileStatement":case"WithStatement":return e.body}return null}function a(e){var t;if("IfStatement"!==e.type)return!1;if(null==e.alternate)return!1;t=e.consequent;do{if("IfStatement"===t.type&&null==t.alternate)return!0;t=s(t)}while(t);return!1}e.exports={isExpression:t,isStatement:i,isIterationStatement:r,isSourceElement:n,isProblematicIfStatement:a,trailingStatement:s}}()},[6609,1658],[6610,2713,1658,2714],function(e,t){e.exports=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-*\/%&|^]|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,e.exports.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},[6475,108,2725,2724,2722,2720,2723,2721,2719,109,1659,703,2726,2727],2531,[6544,108],[6545,378,19,109,108,579],[6479,704,108],[6546,19,109,108,579],[6547,46,268,108,704],[6548,19,378,109,108,466],[6549,109,108,466],[6550,109,108],[6551,2728,109,703,108,579,466],2541,[6554,46,268,704,703,109],[6611,2731],[6612,2732],function(e,t){function r(e){if(e=""+e,!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),i=(t[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return r*p;case"days":case"day":case"d":return r*l;case"hours":case"hour":case"hrs":case"hr":case"h":return r*u;case"minutes":case"minute":case"mins":case"min":case"m":return r*o;case"seconds":case"second":case"secs":case"sec":case"s":return r*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r}}}}function i(e){return e>=l?Math.round(e/l)+"d":e>=u?Math.round(e/u)+"h":e>=o?Math.round(e/o)+"m":e>=a?Math.round(e/a)+"s":e+"ms"}function n(e){return s(e,l,"day")||s(e,u,"hour")||s(e,o,"minute")||s(e,a,"second")||e+" ms"}function s(e,t,r){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+r:Math.ceil(e/t)+" "+r+"s"}var a=1e3,o=60*a,u=60*o,l=24*u,p=365.25*l;e.exports=function(e,t){return t=t||{},"string"==typeof e?r(e):t.long?n(e):i(e)}},[6613,6276],456,2657,1669,function(e,t){function r(e,t){return void 0===e?t:e}e.exports=r},[6555,707],[6557,2735,2736,1661,2742,2751,2752,2753,706,467],2661,[6558,2748],[6559,2741,707],[6615,2750],1674,function(e,t){function r(e,t){for(var r=-1,i=t.length,n=Array(i);++r<i;)n[r]=e[t[r]];return n}e.exports=r},2668,[6562,1662,1078,1660],[6563,2755],[6616,1660],function(e,t){function r(e,t,r){for(var i=e.length,n=t+(r?0:-1);r?n--:++n<i;){var s=e[n];if(s!==s)return n}return-1}e.exports=r},2672,[6566,2746],2674,[6570,1665,706,1077,580,2761],[6571,467],[6617,2739,1662,1078],[6576,467],[6577,2757,705],[6618,705],[6619,1666,2737,2749],[6581,1665,706,1077,580,467],[6620,2745,707],1681,[6621,2765],[6622,2766],function(e,t){"use strict";e.exports=Number.isNaN||function(e){return e!==e}},[6624,2832,710,19,2825,2824,2826,2827,18,376],[6625,18,1079,264],[6626,264],[6627,264],[6628,264],[6630,264,2768,2769,2771,2773,2774,2770],[6631,264],[6632,264],[6633,18],[6635,18],[6637,19,1667,2780,18,1079],2713,[6609,1668],[6610,2778,1668,2779],function(e,t){function r(e){for(var t=-1,r=e?e.length:0,i=-1,n=[];++t<r;){var s=e[t];s&&(n[++i]=s)}return n}e.exports=r},1784,[6638,2790,2803,1676,2820],[6639,2785],[6640,1669,2793,2810],[6641,2806,708],2657,function(e,t){function r(e,t){for(var r=-1,i=e.length;++r<i;)if(t(e[r],r,e))return!0;return!1}e.exports=r},[6556,2792,709],[6642,2798,2799,1080,1681,2830],[6557,2787,1669,2789,1671,2816,2817,2818,267,83],2661,[6643,1671,2807],[6644,1670,1680],[6615,2815],[6646,2811,2812,2813,267,2828],[6647,1673,266],[6648,2797,2814,266],[6649,1672,1673,2801,267,1677,1678,2782,266,1679],[6650,1672,1679],1794,2667,[6651,2795,2805,2809],2668,[6652,83],[6653,83],[6654,1675,468,266],[6563,266],[6655,2786,708],[6656,1080,267],[6657,2788],function(e,t){function r(e,t,r){switch(r){case i:case n:return+e==+t;case s:return e.name==t.name&&e.message==t.message;case a:return e!=+e?t!=+t:e==+t;case o:case u:return e==t+""}return!1}var i="[object Boolean]",n="[object Date]",s="[object Error]",a="[object Number]",o="[object RegExp]",u="[object String]";e.exports=r},[6658,709],[6659,1678,2829],2750,2672,[6566,2804],2674,[6570,1083,267,1082,468,1680],function(e,t){function r(e,t){for(var r,i=-1,n=e.length,s=-1,a=[];++i<n;){var o=e[i],u=t?t(o,i,e):o;i&&r===u||(r=u,a[++s]=o)}return a}e.exports=r},[6617,2791,1080,1676],[6576,83],[6577,2822,265],[6661,265],[6662,2794,1083,265],[6663,83],[6618,265],[6664,468,265],[6665,709,266],[6666,1674,2800,1677],257,[6668,2841],[6670,2843],[6671,2844],[6674,2847],[6676,2848],[6677,2850],[6678,2851],[6506,1102,1700,2873],[6683,53],[6684,2875],[6685,2876,53],[6686,2877,53],[6687,1101,53],[6688,2878,53],[6689,2879,53],[6690,2880,53],[6691,1101,53],[6692,1101,1699,2882,2883,53],[6693,1700,1102,1100],[6694,1699,1102,2881,53],2607,2608,[6508,381,1097,2872],[6696,191,1690,110],[6697,2855],[6509,1086,110],[6698,1697,712,188,191,1686,1688,1085,190],[6699,189,270,712,380,271,1697,1688,1686,191,715,272,1085,269],[6700,469,1092,713],[6515,189],[6702,581,110],[6704,188],[6518,1091,714,715,271,110],2445,[6705,469,381],[6707,469,1092,713,582,1089,380],[6522,272,188,469,269],[6709,381,1693],[6713,191,188,711,1692],[6530,1096,1087],[6531,1096],[6538,188,1698,53],[6539,2853,2865,581,381,1691],[6716,270],[6717,270,1091],[6718,270,269,272],[6719,582,1694,1696],[6720,582,469,1696],[6721,270,2870],[6723,1085,1093,712,2867,2858,191,190,2859],[6724,1099],[6725,1099],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(){return{inherits:r(697),visitor:{Function:function(e,t){e.node.async&&!e.node.generator&&(0,s.default)(e,t.addImport(t.opts.module,t.opts.method))}}}};var n=r(2885),s=i(n);e.exports=t.default},[6542,2886,1701,7],[6491,2887,1701,7],[6492,7],[6475,111,2896,2895,2893,2891,2894,2892,2890,112,1702,717,2897,2898],2531,[6544,111],[6545,115,5,112,111,583],[6479,718,111],[6546,5,112,111,583],[6547,12,79,111,718],[6548,5,115,112,111,470],[6549,112,111,470],[6550,112,111],[6551,2899,112,717,111,583,470],2541,[6554,12,79,718,717,112],1784,1660,2657,1669,[6555,1107],[6557,2903,2904,1703,2909,2918,2919,2920,471,472],2661,[6558,2916],[6559,2908,1107],[6560,1105],1674,1794,2667,2668,[6562,1704,2921,2902],[6563,1105],[6564,2911],2672,[6566,2914],2674,[6568,1103,719,472],[6569,471,1105],[6570,1106,471,719,584,2930],[6572,2913,471],[6573,2906,1704],[6576,472],[6577,2926,1104],[6578,2905,1703,2915],[6579,2910,2912,1106,471,719,2922,584,2901,2924],[6581,1106,471,719,584,472],1681,[6583,5,12,382,7],[6586,5,7,382],2688,[6587,5,585],[6588,7],[6589,84,5],[6590,5,382,7],[6592,5,2941,7],[6593,5,7],[6594,2940,7],[6595,84,5,1110,7],[6596,12,5,7],2698,[6598,84,5,720,2943,382,7],[6599,5,2944],[6600,5,2950,585,382,2963,7],[6603,12,1708,7],[6604,84,589,5,1707,1109,7,3002],[6605,2962,2961,2951],[6606,2953,2952,2956,2954,2958],2491,2707,[6607,2955],1615,[6608,2957],1615,2712,2713,[6609,1709],[6610,2959,1709,2960],2716,[6475,113,2971,2970,2968,2966,2969,2967,2965,114,1710,721,2972,2973],2531,[6544,113],[6545,115,5,114,113,586],[6479,722,113],[6546,5,114,113,586],[6547,12,79,113,722],[6548,5,115,114,113,473],[6549,114,113,473],[6550,114,113],[6551,2974,114,721,113,586,473],2541,[6554,12,79,722,721,114],[6611,2977],[6612,2978],2732,[6613,6277],456,2657,1669,2737,[6555,725],[6557,2981,2982,1712,2988,2997,2998,2999,724,474],2661,[6558,2994],[6559,2987,725],[6615,2996],1674,2745,2668,[6562,1713,1113,1711],[6563,3001],[6616,1711],2750,2672,[6566,2992],2674,[6570,1716,724,1112,587,3007],[6571,474],[6617,2985,1713,1113],[6576,474],[6577,3003,723],[6618,723],[6619,1717,2983,2995],[6581,1716,724,1112,587,474],[6620,2991,725],1681,[6621,3011],[6622,3012],2766,[6668,3020],[6670,3022],[6674,3026],[6676,3027],[6677,3029],[6506,1134,1735,3052],[6683,54],[6684,3054],[6685,3055,54],[6686,3056,54],[6687,1133,54],[6688,3057,54],[6689,3058,54],[6690,3059,54],[6691,1133,54],[6692,1133,1734,3061,3062,54],[6693,1735,1134,1132],[6694,1734,1134,3060,54],2607,2608,[6508,384,1129,3051],[6696,195,1725,116],[6697,3034],[6509,1118,116],[6698,1732,727,192,195,1721,1723,1117,194],[6699,193,274,727,383,275,1732,1723,1721,195,730,276,1117,273],[6700,475,1124,728],[6515,193],[6702,590,116],[6704,192],[6518,1123,729,730,275,116],2445,[6705,475,384],[6707,475,1124,728,591,1121,383],[6522,276,192,475,273],[6709,384,1728],[6713,195,192,726,1727],[6530,1128,1119],[6531,1128],[6538,192,1733,54],[6539,3032,3044,590,384,1726],[6716,274],[6717,274,1123],[6718,274,273,276],[6719,591,1729,1731],[6720,591,475,1731],[6721,274,3049],[6723,1117,1125,727,3046,3037,195,194,3038],[6724,1131],[6725,1131],[6624,3013,588,5,3171,3170,3172,1756,7,476],[6625,7,1135,277],[6626,277],[6627,277],[6628,277],[6630,277,3064,3065,3067,3069,3070,3066],[6631,277],[6632,277],[6633,7],[6635,7],[6637,5,1736,1742,7,1135],[6583,5,12,385,7],[6586,5,7,385],2688,[6587,5,476],[6588,7],[6589,84,5],[6590,5,385,7],[6592,5,3083,7],[6593,5,7],[6594,3082,7],[6595,84,5,1138,7],[6596,12,5,7],2698,[6598,84,5,732,3085,385,7],[6599,5,3086],[6600,5,3092,476,385,3102,7],[6603,12,1739,7],[6604,84,589,5,1738,1137,7,1755],[6605,3101,1742,3093],[6606,3095,3094,3098,3096,3100],2491,2707,[6607,3097],1615,[6608,3099],1615,2712,2716,[6475,117,3110,3109,3107,3105,3108,3106,3104,118,1740,733,3111,3112],2531,[6544,117],[6545,115,5,118,117,592],[6479,734,117],[6546,5,118,117,592],[6547,12,79,117,734],[6548,5,115,118,117,477],[6549,118,117,477],[6550,118,117],[6551,3113,118,733,117,592,477],2541,[6554,12,79,734,733,118],[6611,3116],[6612,3117],2732,[6613,6278],456,[6621,3121],[6622,3122],2766,2713,[6609,1741],2781,1784,[6638,3135,3147,737,3167],[6639,3129],[6640,1744,3138,3157],[6641,3151,736],2657,2788,2737,[6555,478],[6642,3142,3143,735,1759,3177],[6557,3131,1744,1745,1747,3163,3164,3165,196,85],2661,[6643,1747,3153],[6644,1746,1758],[6646,3158,3159,3160,196,3173],[6647,1750,279],[6648,3141,3161,279],[6649,1748,1750,3145,196,1752,1753,3126,279,1754],[6650,1748,1754],1794,2667,[6651,1749,3150,3155],2745,2668,[6652,85],[6653,85],[6562,735,737,1743],[6654,1139,386,279],[6563,279],[6655,3130,736],[6616,1743],[6656,735,196],[6657,3132],2812,[6658,478],[6659,1753,3175],2750,2672,[6566,3149],2674,[6570,1142,196,1141,386,1758],2820,[6576,85],[6577,3168,278],[6661,278],[6662,3139,1142,278],[6663,85],[6664,386,278],[6619,1757,3133,3156],[6665,478,279],[6620,3148,478],[6666,1751,3144,1752],257,[6668,3191],[6670,3193],[6671,3194],[6672,3195],[6674,3197],[6676,3198],[6677,3200],[6678,3201],[6680,3183,593,387],[6681,387],[6506,1162,1775,3223],[6683,55],[6684,3225],[6685,3226,55],[6686,3227,55],[6687,1161,55],[6688,3228,55],[6689,3229,55],[6690,3230,55],[6691,1161,55],[6692,1161,1774,3232,3233,55],[6693,1775,1162,1160],[6694,1774,1162,3231,55],2607,2608,[6508,389,1157,3222],[6696,200,1765,119],[6697,3205],[6509,1146,119],[6698,1772,741,197,200,1761,1763,1145,199],[6699,198,281,741,388,282,1772,1763,1761,200,744,283,1145,280],[6700,479,1152,742],[6515,198],[6702,594,119],[6704,197],[6518,1151,743,744,282,119],2445,[6705,479,389],[6707,479,1152,742,595,1149,388],[6522,283,197,479,280],[6709,389,1768],[6713,200,197,740,1767],[6530,1156,1147],[6531,1156],[6538,197,1773,55],[6539,3203,3215,594,389,1766],[6716,281],[6717,281,1151],[6718,281,280,283],[6719,595,1769,1771],[6720,595,479,1771],[6721,281,3220],[6723,1145,1153,741,3217,3208,200,199,3209],[6724,1159],[6725,1159],[6543,1144,3341,1172,3349,390,1782,29],[6583,28,67,391,29],[6586,28,29,391],2688,[6587,28,390],[6588,29],[6589,387,28],[6590,28,391,29],[6592,28,3244,29],[6593,28,29],[6594,3243,29],[6595,387,28,1166,29],[6596,67,28,29],2698,[6598,387,28,746,3246,391,29],[6599,28,3247],[6600,28,3253,390,391,1782,29],[6603,67,1778,29],[6604,387,1143,28,1777,1164,29,1796],[6605,3265,3264,3254],[6606,3256,3255,3259,3257,3261],2491,2707,[6607,3258],1615,[6608,3260],1615,2712,2713,[6609,1779],[6610,3262,1779,3263],2716,[6611,3267],[6612,3268],2732,[6613,6279],456,[6621,3272],[6622,3273],2766,[6624,3179,738,28,3345,3344,3346,1797,29,390],[6625,29,1165,284],[6626,284],[6627,284],[6628,284],[6630,284,3275,3276,3278,3280,3281,3277],[6631,284],[6632,284],[6633,29],[6635,29],[6637,28,1780,3287,29,1165],2713,[6609,1781],[6610,3285,1781,3286],257,2531,[6544,120],[6545,593,28,121,120,596],[6479,748,120],[6546,28,121,120,596],[6547,67,739,120,748],[6548,28,593,121,120,480],[6549,121,120,480],[6550,121,120],[6551,3299,121,747,120,596,480],2541,[6554,67,739,748,747,121],2781,[6638,3310,3320,751,3340],[6639,3304],[6640,1786,3312,3330],[6641,3324,749],2657,2788,2737,[6555,481],[6642,3316,3317,597,1799,3352],2661,[6643,1790,3326],[6644,1789,1798],[6646,3331,3332,3333,122,3347],[6647,1792,287],[6648,3315,3334,287],[6649,1167,1792,1794,122,1170,1795,1784,287,1171],[6650,1167,1171],2667,[6651,1791,3323,3328],2745,2668,[6652,86],[6653,86],[6562,597,751,1785],[6654,1168,285,287],[6563,287],[6655,3305,749],[6616,1785],[6656,597,122],[6657,3307],2812,[6658,481],[6659,1795,3350],2750,2672,[6566,3322],2674,[6570,752,122,750,285,1798],2820,[6573,1788,597],[6576,86],[6577,3342,286],[6661,286],[6662,3313,752,286],[6663,86],[6664,285,286],[6619,1172,3308,3329],[6579,1167,1794,752,122,750,1170,285,1784,1171],[6665,481,287],[6620,3321,481],[6666,1793,3318,1170],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(e,t){if(!t.applyDecoratedDescriptor){t.applyDecoratedDescriptor=e.scope.generateUidIdentifier("applyDecoratedDescriptor");var r=f({NAME:t.applyDecoratedDescriptor});e.scope.getProgramParent().path.unshiftContainer("body",r)}return t.applyDecoratedDescriptor}function i(e,t){if(!t.initializerDefineProp){t.initializerDefineProp=e.scope.generateUidIdentifier("initDefineProp");var r=c({NAME:t.initializerDefineProp});e.scope.getProgramParent().path.unshiftContainer("body",r)}return t.initializerDefineProp}function n(e,t){if(!t.initializerWarningHelper){t.initializerWarningHelper=e.scope.generateUidIdentifier("initializerWarningHelper");var r=p({NAME:t.initializerWarningHelper});e.scope.getProgramParent().path.unshiftContainer("body",r)}return t.initializerWarningHelper}function s(e){var t=(e.isClass()?[e].concat(e.get("body.body")):e.get("properties")).reduce(function(e,t){return e.concat(t.node.decorators||[])},[]),r=t.filter(function(e){return!m.isIdentifier(e.expression)});if(0!==r.length)return m.sequenceExpression(r.map(function(t){var r=t.expression,i=t.expression=e.scope.generateDeclaredUidIdentifier("dec");return m.assignmentExpression("=",i,r)}).concat([e.node]))}function h(e,t){var r=e.node.decorators||[];if(e.node.decorators=null,0!==r.length){var i=e.scope.generateDeclaredUidIdentifier("class");return r.map(function(e){return e.expression}).reverse().reduce(function(e,t){return a({CLASS_REF:i,DECORATOR:t,INNER:e}).expression},e.node)}}function d(e,t){var r=e.node.body.body.some(function(e){return(e.decorators||[]).length>0});if(r)return v(e,t,e.node.body.body)}function y(e,t){var r=e.node.properties.some(function(e){return(e.decorators||[]).length>0});if(r)return v(e,t,e.node.properties)}function v(e,r,i){var s=(e.scope.generateDeclaredUidIdentifier("desc"),e.scope.generateDeclaredUidIdentifier("value"),e.scope.generateDeclaredUidIdentifier(e.isClass()?"class":"obj")),a=i.reduce(function(i,a){var p=a.decorators||[];if(a.decorators=null,0===p.length)return i;if(a.computed)throw e.buildCodeFrameError("Computed method/property decorators are not yet supported.");var c=m.isLiteral(a.key)?a.key:m.stringLiteral(a.key.name),f=e.isClass()&&!a.static?o({CLASS_REF:s}).expression:s;if(m.isClassProperty(a,{static:!1})){var h=e.scope.generateDeclaredUidIdentifier("descriptor"),d=a.value?m.functionExpression(null,[],m.blockStatement([m.returnStatement(a.value)])):m.nullLiteral();a.value=m.callExpression(n(e,r),[h,m.thisExpression()]),i=i.concat([m.assignmentExpression("=",h,m.callExpression(t(e,r),[f,c,m.arrayExpression(p.map(function(e){return e.expression})),m.objectExpression([m.objectProperty(m.identifier("enumerable"),m.booleanLiteral(!0)),m.objectProperty(m.identifier("initializer"),d)])]))])}else i=i.concat(m.callExpression(t(e,r),[f,c,m.arrayExpression(p.map(function(e){return e.expression})),m.isObjectProperty(a)||m.isClassProperty(a,{static:!0})?l({TEMP:e.scope.generateDeclaredUidIdentifier("init"),TARGET:f,PROPERTY:c}).expression:u({TARGET:f,PROPERTY:c}).expression,f]));return i},[]);return m.sequenceExpression([m.assignmentExpression("=",s,e.node),m.sequenceExpression(a),s])}var m=e.types;return{inherits:r(1064),visitor:{ExportDefaultDeclaration:function(e){if(e.get("declaration").isClassDeclaration()){var t=e.node,r=t.declaration.id||e.scope.generateUidIdentifier("default");t.declaration.id=r,e.replaceWith(t.declaration),e.insertAfter(m.exportNamedDeclaration(null,[m.exportSpecifier(r,m.identifier("default"))]))}},ClassDeclaration:function(e){var t=e.node,r=t.id||e.scope.generateUidIdentifier("class");e.replaceWith(m.variableDeclaration("let",[m.variableDeclarator(r,m.toExpression(t))]))},ClassExpression:function(e,t){var r=s(e)||h(e,t)||d(e,t);r&&e.replaceWith(r)},ObjectExpression:function(e,t){var r=s(e)||y(e,t);r&&e.replaceWith(r)},AssignmentExpression:function(e,t){t.initializerWarningHelper&&e.get("left").isMemberExpression()&&e.get("left.property").isIdentifier()&&e.get("right").isCallExpression()&&e.get("right.callee").isIdentifier({name:t.initializerWarningHelper.name})&&e.replaceWith(m.callExpression(i(e,t),[e.get("left.object").node,m.stringLiteral(e.get("left.property").node.name),e.get("right.arguments")[0].node,e.get("right.arguments")[1].node]))}}}};var n=r(3409),s=i(n),a=(0,s.default)("\n DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n"),o=(0,s.default)("\n CLASS_REF.prototype;\n"),u=(0,s.default)("\n Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n"),l=(0,s.default)("\n (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n enumerable: true,\n configurable: true,\n writable: true,\n initializer: function(){\n return TEMP;\n }\n })\n"),p=(0,s.default)("\n function NAME(descriptor, context){\n throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');\n }\n"),c=(0,s.default)("\n function NAME(target, property, descriptor, context){\n if (!descriptor) return;\n\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n });\n }\n"),f=(0,s.default)("\n function NAME(target, property, decorators, descriptor, context){\n var desc = {};\n Object['ke' + 'ys'](descriptor).forEach(function(key){\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n if ('value' in desc || desc.initializer){\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function(desc, decorator){\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0){\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0){\n // This is a hack to avoid this being processed by 'transform-runtime'.\n // See issue #9.\n Object['define' + 'Property'](target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n")},[6668,3366],[6670,3368],[6671,3369],[6672,3370],[6674,3372],[6676,3373],[6677,3375],[6678,3376],[6680,3358,598,392],[6681,392],[6506,1191,1816,3398],[6683,56],[6684,3400],[6685,3401,56],[6686,3402,56],[6687,1190,56],[6688,3403,56],[6689,3404,56],[6690,3405,56],[6691,1190,56],[6692,1190,1815,3407,3408,56],[6693,1816,1191,1189],[6694,1815,1191,3406,56],2607,2608,[6508,394,1186,3397],[6696,204,1806,123],[6697,3380],[6509,1175,123],[6698,1813,756,201,204,1802,1804,1174,203],[6699,202,289,756,393,290,1813,1804,1802,204,759,291,1174,288],[6700,482,1181,757],[6515,202],[6702,599,123],[6704,201],[6518,1180,758,759,290,123],2445,[6705,482,394],[6707,482,1181,757,600,1178,393],[6522,291,201,482,288],[6709,394,1809],[6713,204,201,755,1808],[6530,1185,1176],[6531,1185],[6538,201,1814,56],[6539,3378,3390,599,394,1807],[6716,289],[6717,289,1180],[6718,289,288,291],[6719,600,1810,1812],[6720,600,482,1812],[6721,289,3395],[6723,1174,1182,756,3392,3383,204,203,3384],[6724,1188],[6725,1188],[6543,1801,3516,1201,3524,395,1823,30],[6583,40,68,396,30],[6586,40,30,396],2688,[6587,40,395],[6588,30],[6589,392,40],[6590,40,396,30],[6592,40,3419,30],[6593,40,30],[6594,3418,30],[6595,392,40,1195,30],[6596,68,40,30],2698,[6598,392,40,761,3421,396,30],[6599,40,3422],[6600,40,3428,395,396,1823,30],[6603,68,1819,30],[6604,392,1173,40,1818,1193,30,1837],[6605,3440,3439,3429],[6606,3431,3430,3434,3432,3436],2491,2707,[6607,3433],1615,[6608,3435],1615,2712,2713,[6609,1820],[6610,3437,1820,3438],2716,[6611,3442],[6612,3443],2732,[6613,6280],456,[6621,3447],[6622,3448],2766,[6624,3354,753,40,3520,3519,3521,1838,30,395],[6625,30,1194,292],[6626,292],[6627,292],[6628,292],[6630,292,3450,3451,3453,3455,3456,3452],[6631,292],[6632,292],[6633,30],[6635,30],[6637,40,1821,3462,30,1194],2713,[6609,1822],[6610,3460,1822,3461],257,2531,[6544,124],[6545,598,40,125,124,601],[6479,763,124],[6546,40,125,124,601],[6547,68,754,124,763],[6548,40,598,125,124,483],[6549,125,124,483],[6550,125,124],[6551,3474,125,762,124,601,483],2541,[6554,68,754,763,762,125],2781,[6638,3485,3495,766,3515],[6639,3479],[6640,1827,3487,3505],[6641,3499,764],2657,2788,2737,[6555,484],[6642,3491,3492,602,1840,3527],2661,[6643,1831,3501],[6644,1830,1839],[6646,3506,3507,3508,126,3522],[6647,1833,295],[6648,3490,3509,295],[6649,1196,1833,1835,126,1199,1836,1825,295,1200],[6650,1196,1200],2667,[6651,1832,3498,3503],2745,2668,[6652,87],[6653,87],[6562,602,766,1826],[6654,1197,293,295],[6563,295],[6655,3480,764],[6616,1826],[6656,602,126],[6657,3482],2812,[6658,484],[6659,1836,3525],2750,2672,[6566,3497],2674,[6570,767,126,765,293,1839],2820,[6573,1829,602],[6576,87],[6577,3517,294],[6661,294],[6662,3488,767,294],[6663,87],[6664,293,294],[6619,1201,3483,3504],[6579,1196,1835,767,126,765,1199,293,1825,1200],[6665,484,295],[6620,3496,484],[6666,1834,3493,1199],[6505,3529],[6506,3557,3556,3554],2607,2608,[6508,1208,3550,3549],[6509,1843,486],[6510,3530],[6513,485,1202,3534,603],[6515,485],[6516,771,1846,1844],[6517,1843],[6518,3542,1848,1849,603,486],2445,1090,[6520,770,3543,1845,1206,1844,3536],[6522,1205,770,3546,771],[6523,772,3551,1206],[6524,772,1208,3532,1206],[6525,3545,1845],[6526,603],[6530,1207,1203],[6531,1207],[6533,1207],[6534,1203],[6535,1204],[6537,3533,486,773,1202],[6538,770,3553,1202],[6539,3531,3540,773,1208,1847],[6540,3548,1847],[6541,3555,485,603,773,486],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e,t){var r=t._guessExecutionStatusRelativeTo(e);return"before"===r?"inside":"after"===r?"outside":"maybe"}function s(e,t){return u.callExpression(t.addHelper("temporalRef"),[e,u.stringLiteral(e.name),t.addHelper("temporalUndefined")])}function a(e,t,r){var i=r.letReferences[e.name];return!!i&&t.getBindingIdentifier(e.name)===i}t.__esModule=!0,t.visitor=void 0;var o=r(21),u=i(o);t.visitor={ReferencedIdentifier:function(e,t){if(this.file.opts.tdz){var r=e.node,i=e.parent,o=e.scope;if(!e.parentPath.isFor({left:r})&&a(r,o,t)){var l=o.getBinding(r.name).path,p=n(e,l);if("inside"!==p)if("maybe"===p){var c=s(r,t.file);if(l.parent._tdzThis=!0,e.skip(),e.parentPath.isUpdateExpression()){if(i._ignoreBlockScopingTDZ)return;e.parentPath.replaceWith(u.sequenceExpression([c,i]))}else e.replaceWith(c)}else"outside"===p&&e.replaceWith(u.throwStatement(u.inherits(u.newExpression(u.identifier("ReferenceError"),[u.stringLiteral(r.name+" is not defined - temporal dead zone")]),r)))}}},AssignmentExpression:{exit:function(e,t){if(this.file.opts.tdz){var r=e.node;if(!r._ignoreBlockScopingTDZ){var i=[],n=e.getBindingIdentifiers();for(var o in n){var l=n[o];a(l,e.scope,t)&&i.push(s(l,t.file))}i.length&&(r._ignoreBlockScopingTDZ=!0,i.push(r),e.replaceWithMultiple(i.map(u.expressionStatement)))}}}}}},[6436,98,487,1856,21],[6438,1,2,397,21],[6441,1,21,397],2504,[6442,1,487],[6443,21],[6444,11,1,448],[6445,1,397,21],[6447,1,3569,21],[6448,1,21],[6449,3568,21],[6450,11,1,21],[6451,2,1,21],2514,[6453,11,1,775,3571,397,21],[6454,1,3572],[6455,1,487,397,1856,21],[6458,2,1854,21],[6459,11,39,1,1853,21],[6461,366,17,1,21],[6462,21,1210,296],[6463,296],[6464,296],[6465,296],[6467,296,3579,3580,3582,3584,3585,3581],[6468,296],[6469,296],[6470,21],[6472,21],[6474,1,1855,21,1210],2531,[6476,127],[6477,16,1,128,127,605],[6479,776,127],[6480,1,128,127,605],[6481,2,47,127,776],[6482,1,16,128,127,488],[6483,128,127,488],[6484,128,604,127],[6485,3599,128,604,127,605,488],2541,[6488,2,47,776,604,128],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(2),a=n(s),o=r(100),u=n(o),l=r(99),p=n(l),c=r(691),f=n(c),h=r(1858),d=n(h),y=r(22),v=i(y),m=function(e){function t(){(0,a.default)(this,t);var r=(0,u.default)(this,e.apply(this,arguments));return r.isLoose=!0,r}return(0,p.default)(t,e),t.prototype._processMethod=function(e,t){if(!e.decorators){var r=this.classRef;e.static||(r=v.memberExpression(r,v.identifier("prototype")));var i=v.memberExpression(r,e.key,e.computed||v.isLiteral(e.key)),n=v.functionExpression(null,e.params,e.body,e.generator,e.async),s=v.toComputedKey(e,e.key);v.isStringLiteral(s)&&(n=(0,f.default)({node:n,id:s,scope:t}));var a=v.expressionStatement(v.assignmentExpression("=",i,n));return v.inheritsComments(a,e),this.body.push(a),!0}},t}(d.default);t.default=m,e.exports=t.default},[6436,98,489,1863,22],[6438,1,2,398,22],[6441,1,22,398],2504,[6442,1,489],[6443,22],[6444,11,1,448],[6445,1,398,22],[6447,1,3612,22],[6448,1,22],[6449,3611,22],[6450,11,1,22],[6451,2,1,22],2514,[6453,11,1,778,3614,398,22],[6454,1,3615],[6455,1,489,398,1863,22],[6458,2,1861,22],[6459,11,39,1,1860,22],[6461,366,17,1,22],[6462,22,1212,297],[6463,297],[6464,297],[6465,297],[6467,297,3622,3623,3625,3627,3628,3624],[6468,297],[6469,297],[6470,22],[6472,22],[6474,1,1862,22,1212],2531,[6476,129],[6477,16,1,130,129,607],[6479,779,129],[6480,1,130,129,607],[6481,2,47,129,779],[6482,1,16,130,129,490],[6483,130,129,490],[6484,130,606,129],[6485,3642,130,606,129,607,490],2541,[6488,2,47,779,606,130],[6505,3645],[6506,3673,3672,3670],2607,2608,[6508,1219,3666,3665],[6509,1865,492],[6510,3646],[6513,491,1213,3650,608],[6515,491],[6516,782,1868,1866],[6517,1865],[6518,3658,1870,1871,608,492],2445,1090,[6520,781,3659,1867,1217,1866,3652],[6522,1216,781,3662,782],[6523,783,3667,1217],[6524,783,1219,3648,1217],[6525,3661,1867],[6526,608],[6530,1218,1214],[6531,1218],[6533,1218],[6534,1214],[6535,1215],[6537,3649,492,784,1213],[6538,781,3669,1213],[6539,3647,3656,784,1219,1869],[6540,3664,1869],[6541,3671,491,608,784,492],[6505,3676],2,[6506,3704,3703,3701],2607,2608,[6508,1226,3697,3696],[6509,1874,494],[6510,3677],[6513,493,1220,3681,609],[6515,493],[6516,787,1877,1875],[6517,1874],[6518,3689,1879,1880,609,494],2445,1090,[6520,786,3690,1876,1224,1875,3683],[6522,1223,786,3693,787],[6523,788,3698,1224],[6524,788,1226,3679,1224],[6525,3692,1876],[6526,609],[6530,1225,1221],[6531,1225],[6533,1225],[6534,1221],[6535,1222],[6537,3680,494,789,1220],[6538,786,3700,1220],[6539,3678,3687,789,1226,1878],[6540,3695,1878],[6541,3702,493,609,789,494],[6491,3706,3707,9],[6492,9],[6726,1916,3793,3792,3794,611,3708,9],[6475,131,3716,3715,3713,3711,3714,3712,3710,132,1883,792,3717,3718],2531,[6544,131],[6545,136,6,132,131,610],[6479,793,131],[6546,6,132,131,610],[6547,13,80,131,793],[6548,6,136,132,131,495],[6549,132,131,495],[6727,132,131],[6551,3719,132,792,131,610,495],2541,[6554,13,80,793,792,132],[6728,496,205],[6729,3760,3761,3762,3763,3764],[6733,496,205],[6734,496,205],[6735,794,3785,3786,3787,3788,3789],[6737,205],[6738,496,205],function(e,t){
+function r(e,t){return e.set(t[0],t[1]),e}e.exports=r},function(e,t){function r(e,t){return e.add(t),e}e.exports=r},1902,1602,2458,[6741,1230,800],[6742,3725,3731,1228,3733,3744,3751,3752,3755,3757,3766,3767,3768,399,3796,1891,497,800],[6743,497],[6744,3732,399],[6746,1234,1891,3772,497,1892],function(e,t){function r(e){return i(Object(e))}var i=Object.keys;e.exports=r},1951,function(e,t){function r(e,t){for(var r=-1,i=Array(e);++r<e;)i[r]=t(r);return i}e.exports=r},[6747,1886,799],[6748,399,3790],function(e,t){function r(e){return e&&e.Object===Object?e:null}e.exports=r},function(e,t){function r(e,t){if(t)return e.slice();var r=new e.constructor(e.length);return e.copy(r),r}e.exports=r},[6750,1229],[6751,3728,1887,3783],function(e,t){function r(e){var t=new e.constructor(e.source,i.exec(e));return t.lastIndex=e.lastIndex,t}var i=/\w*$/;e.exports=r},[6752,3729,1887,3784],[6753,1886],[6754,1229],2467,[6756,1230,1890],[6757,205],[6758,3769,3798],[6759,3736,1890,800],[6760,3739],[6764,3721,1884,3723,3724,3727,1892],function(e,t){function r(e,t){return null==e?void 0:e[t]}e.exports=r},[6765,3742,1893,399,1231,3770,1235,1894,3791],[6766,797],function(e,t){function r(e){return this.has(e)&&delete this.__data__[e]}e.exports=r},[6767,797],[6768,797],[6769,797],[6770,3740,1893,399,1235,1894],function(e,t){function r(e){var t=e.length,r=e.constructor(t);return t&&"string"==typeof e[0]&&n.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var i=Object.prototype,n=i.hasOwnProperty;e.exports=r},[6771,1229,3745,3746,3747,3748,3749,3750],[6772,3735,1889,1232],[6773,1233,798,1231,497],[6774,399,799],function(e,t){function r(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}e.exports=r},[6775,3753],function(e,t){function r(){this.__data__=[]}e.exports=r},[6776,795],[6777,795],[6778,795],[6779,795],[6780,3722,794,1884],[6781,796],[6782,796],[6783,796],[6784,796],1960,830,[6787,794],function(e,t){function r(e){return this.__data__.delete(e)}e.exports=r},function(e,t){function r(e){return this.__data__.get(e)}e.exports=r},function(e,t){function r(e){return this.__data__.has(e)}e.exports=r},[6788,794,1885],[6789,3797,3804],[6790,799],[6791,1228,1230,3754,798,1232,800],[6792,3734],[6793,1888,3759],[6796,798,1236],[6797,205,3800],[6800,1885],[6500,3730,3802],function(e,t){function r(){return[]}e.exports=r},function(e,t){function r(){return!1}e.exports=r},[6501,3803],[6502,3801],[6503,1234,497,799],[6801,3741],[6583,6,13,400,9],[6586,6,9,400],2688,[6587,6,611],[6588,9],[6589,88,6],[6590,6,400,9],[6592,6,3814,9],[6593,6,9],[6594,3813,9],[6804,1242],[6596,13,6,9],2698,[6598,88,6,801,3816,400,9],[6599,6,3817],[6600,6,3823,611,400,3836,9],[6603,13,1897,9],[6806,1896,1238,3929],[6605,3835,3834,3824],[6606,3826,3825,3829,3827,3831],2491,2707,[6607,3828],1615,[6608,3830],1615,2712,2713,[6609,1898],[6610,3832,1898,3833],2716,[6475,133,3844,3843,3841,3839,3842,3840,3838,134,1899,802,3845,3846],2531,[6544,133],[6545,136,6,134,133,612],[6479,803,133],[6546,6,134,133,612],[6547,13,80,133,803],[6548,6,136,134,133,498],[6549,134,133,498],[6727,134,133],[6551,3847,134,802,133,612,498],2541,[6554,13,80,803,802,134],[6611,3850],[6612,3851],2732,[6613,6281],456,[6728,499,135],[6729,3898,3899,3900,3901,3902],[6732,3915,3916,3917,3918,3919],[6733,499,135],[6807,135],[6734,499,135],[6735,804,3922,3923,3924,3925,3926],[6737,135],[6738,499,135],3728,3729,1602,1603,2458,[6808,810],[6741,806,614],[6742,3860,3865,1239,3869,3884,3891,3892,3894,3896,3904,3905,3906,811,3933,1908,500,614],[6743,500],[6744,3867,811],[6745,1905],[6494,3903],[6746,1243,1908,3908,500,1910],3738,[6809,3858,3909],1951,function(e,t){function r(e,t){var r="";if(!e||t<1||t>i)return r;do t%2&&(r+=e),t=n(t/2),t&&(e+=e);while(t);return r}var i=9007199254740991,n=Math.floor;e.exports=r},3740,[6747,1901,1913],[6810,3866],3743,3744,[6750,1240],[6751,3863,1903,3920],3747,[6752,3864,1903,3921],[6753,1901],[6754,1240],2467,[6756,806,1906],[6757,135],[6759,3872,1906,614],[6760,3878],[6764,3854,1900,3857,3859,3862,1910],3758,[6766,809],3761,[6767,809],[6768,809],[6769,809],2581,3766,[6771,1240,3885,3886,3887,3888,3889,3890],[6772,3871,1905,808],3771,[6775,3893],function(e,t){function r(e){for(var t,r=[];!(t=e.next()).done;)r.push(t.value);return r}e.exports=r},3773,[6776,805],[6777,805],[6778,805],[6779,805],[6780,3855,804,1900],[6781,807],[6782,807],[6783,807],[6784,807],1960,830,[6787,804],3786,3787,3788,[6788,804,3856],[6791,1239,806,1904,613,808,614],[6811,806,1904,3934],[6812,3870],[6813,1902,3868,3928,1914],[6794,3932],[6796,613,1244],[6797,135,3937],[6815,3877,1907,1241,808],[6816,3879,1909,1245,3940],3799,3800,[6501,3939],[6503,1243,500,1913],[6801,3881],[6817,3882,614],[6668,3949],[6670,3951],[6674,3955],[6676,3956],[6677,3958],[6506,1266,1932,3981],[6683,57],[6684,3983],[6685,3984,57],[6686,3985,57],[6687,1265,57],[6688,3986,57],[6689,3987,57],[6690,3988,57],[6691,1265,57],[6692,1265,1931,3990,3991,57],[6693,1932,1266,1264],[6694,1931,1266,3989,57],2607,2608,[6508,402,1261,3980],[6696,209,1922,137],[6697,3963],[6509,1250,137],[6698,1929,813,206,209,1918,1920,1249,208],[6699,207,299,813,401,300,1929,1920,1918,209,816,301,1249,298],[6700,501,1256,814],[6515,207],[6702,617,137],[6704,206],[6518,1255,815,816,300,137],2445,[6705,501,402],[6707,501,1256,814,618,1253,401],[6522,301,206,501,298],[6709,402,1925],[6713,209,206,812,1924],[6530,1260,1251],[6531,1260],[6538,206,1930,57],[6539,3961,3973,617,402,1923],[6716,299],[6717,299,1255],[6718,299,298,301],[6719,618,1926,1928],[6720,618,501,1928],[6721,299,3978],[6723,1249,1257,813,3975,3966,209,208,3967],[6724,1263],[6725,1263],[6823,3942,615,6,4150,4149,4151,834,9,502],[6824,9,1267,302],[6825,302],[6826,302],[6827,302],[6467,302,3993,3994,3996,3998,3999,3995],[6468,302],[6469,302],[6828,9],[6830,9],[6832,6,1933,1939,9,1267],[6583,6,13,403,9],[6586,6,9,403],2688,[6587,6,502],[6588,9],[6589,88,6],[6590,6,403,9],[6592,6,4012,9],[6593,6,9],[6594,4011,9],[6804,1276],[6596,13,6,9],2698,[6598,88,6,818,4014,403,9],[6599,6,4015],[6600,6,4021,502,403,4031,9],[6603,13,1936,9],[6806,1935,1269,1963],[6605,4030,1939,4022],[6606,4024,4023,4027,4025,4029],2491,2707,[6607,4026],1615,[6608,4028],1615,2712,2716,[6475,138,4039,4038,4036,4034,4037,4035,4033,139,1937,819,4040,4041],2531,[6544,138],[6545,136,6,139,138,619],[6479,820,138],[6546,6,139,138,619],[6547,13,80,138,820],[6548,6,136,139,138,503],[6549,139,138,503],[6727,139,138],[6551,4042,139,819,138,619,503],2541,[6554,13,80,820,819,139],[6611,4045],[6612,4046],2732,[6613,6282],456,2713,[6609,1938],[6728,504,140],[6729,4108,4109,4110,4111,4112],[6733,504,140],[6807,140],[6738,504,140],3728,3729,[6834,1949],function(e,t){function r(e,t,r){for(var i=-1,n=e?e.length:0;++i<n;)if(r(t,e[i]))return!0;return!1}e.exports=r},1603,2458,function(e,t){function r(e,t){for(var r=-1,i=e?e.length:0;++r<i;)if(t(e[r],r,e))return!0;return!1}e.exports=r},[6808,832],[6741,823,303],[6742,1271,1945,1273,4064,4088,4095,4096,4103,1956,4114,4115,4116,141,4148,825,210,303],[6743,210],[6835,4069,4098],[6836,4099],[6837,4068,303],[6744,4061,141],function(e,t){function r(e,t){return null!=e&&t in Object(e)}e.exports=r},[6840,1271,1954,4101,4102,1956,141,825,4152],[6841,1271,1950],[6746,1277,825,4118,210,1962],[6842,4078,4079,4146,141,4156],3738,[6809,4054,4119],[6843,4073,4105,1961],[6844,1950,4144,4145,827,1959,1961,831],[6845,1947],3879,3740,[6747,1272,835],[6846,1942,4058,4059,4086,4100,830],[6810,4060],function(e,t){function r(e,t){return e.has(t)}e.exports=r},3743,3744,[6750,1274],[6751,4056,1946,1960],3747,[6752,4057,1946,830],[6753,1272],[6754,1274],2467,[6756,823,1955],[6757,140],[6847,505],function(e,t){function r(e){return function(t,r,i){for(var n=-1,s=Object(t),a=i(t),o=a.length;o--;){var u=a[e?o:++n];if(r(s[u],u,s)===!1)break}return t}}e.exports=r},[6848,1941,4155,830],[6850,1272,1943,1954,1960,830],[6851,1948,303],[6759,4070,1955,303],[6760,1951],[6852,1959,303],3758,[6765,1952,1964,141,826,827,833,834,831],[6766,829],3761,[6767,829],[6768,829],[6769,829],2581,3766,[6771,1274,4089,4090,4091,4092,4093,4094],[6772,4066,1275,828],3771,[6775,4097],3909,3773,[6776,822],[6777,822],[6778,822],[6779,822],[6780,4052,821,1940],[6781,824],[6782,824],[6783,824],[6784,824],function(e,t){function r(e){return this.__data__.set(e,i),this}var i="__lodash_hash_undefined__";e.exports=r},function(e,t){function r(e){return this.__data__.has(e)}e.exports=r},[6787,821],3786,3787,3788,[6788,821,1270],[6789,4154,1966],[6791,1273,823,1953,505,828,303],[6811,823,1953,4153],372,[6813,1944,4063,4139,1965],[6639,4143],[6854,1945,4067,4075,141],[6855,1947],[6856,4071,4107],function(e,t){function r(e){return e}e.exports=r},[6796,505,404],[6797,140,4159],[6857,404],[6858,1275,825,404],[6859,210],[6860,833,404],[6815,4077,1957,826,828],[6800,1270],function(e,t){function r(){}e.exports=r},[6861,1951,4080,827,831],[6816,4081,1958,1278,1966],3799,3800,[6501,4161],[6503,1277,210,835],[6862,4084],[6817,4085,303],257,function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types;return{visitor:{BinaryExpression:function(e){var r=e.node;"instanceof"===r.operator&&e.replaceWith(t.callExpression(this.addHelper("instanceof"),[r.left,r.right]))}}}},e.exports=t.default},[6668,4178],[6670,4180],[6671,4181],[6672,4182],[6674,4184],[6676,4185],[6677,4187],[6678,4188],[6680,4170,506,405],[6681,405],[6506,1298,1982,4210],[6683,58],[6684,4212],[6685,4213,58],[6686,4214,58],[6687,1297,58],[6688,4215,58],[6689,4216,58],[6690,4217,58],[6691,1297,58],[6692,1297,1981,4219,4220,58],[6693,1982,1298,1296],[6694,1981,1298,4218,58],2607,2608,[6508,407,1293,4209],[6696,214,1972,142],[6697,4192],[6509,1282,142],[6698,1979,840,211,214,1968,1970,1281,213],[6699,212,305,840,406,306,1979,1970,1968,214,843,307,1281,304],[6700,507,1288,841],[6515,212],[6702,620,142],[6704,211],[6518,1287,842,843,306,142],2445,[6705,507,407],[6707,507,1288,841,621,1285,406],[6522,307,211,507,304],[6709,407,1975],[6713,214,211,839,1974],[6530,1292,1283],[6531,1292],[6538,211,1980,58],[6539,4190,4202,620,407,1973],[6716,305],[6717,305,1287],[6718,305,304,307],[6719,621,1976,1978],[6720,621,507,1978],[6721,305,4207],[6723,1281,1289,840,4204,4195,214,213,4196],[6724,1295],[6725,1295],[6543,1967,4328,1308,4336,408,1989,31],[6583,41,69,409,31],[6586,41,31,409],2688,[6587,41,408],[6588,31],[6589,405,41],[6590,41,409,31],[6592,41,4231,31],[6593,41,31],[6594,4230,31],[6595,405,41,1302,31],[6596,69,41,31],2698,[6598,405,41,845,4233,409,31],[6599,41,4234],[6600,41,4240,408,409,1989,31],[6603,69,1985,31],[6604,405,1280,41,1984,1300,31,2003],[6605,4252,4251,4241],[6606,4243,4242,4246,4244,4248],2491,2707,[6607,4245],1615,[6608,4247],1615,2712,2713,[6609,1986],[6610,4249,1986,4250],2716,[6611,4254],[6612,4255],2732,[6613,6283],456,[6621,4259],[6622,4260],2766,[6624,4166,837,41,4332,4331,4333,2004,31,408],[6625,31,1301,308],[6626,308],[6627,308],[6628,308],[6630,308,4262,4263,4265,4267,4268,4264],[6631,308],[6632,308],[6633,31],[6635,31],[6637,41,1987,4274,31,1301],2713,[6609,1988],[6610,4272,1988,4273],257,2531,[6544,143],[6545,506,41,144,143,622],[6479,847,143],[6546,41,144,143,622],[6547,69,838,143,847],[6548,41,506,144,143,508],[6549,144,143,508],[6550,144,143],[6551,4286,144,846,143,622,508],2541,[6554,69,838,847,846,144],2781,[6638,4297,4307,850,4327],[6639,4291],[6640,1993,4299,4317],[6641,4311,848],2657,2788,2737,[6555,509],[6642,4303,4304,623,2006,4339],2661,[6643,1997,4313],[6644,1996,2005],[6646,4318,4319,4320,145,4334],[6647,1999,311],[6648,4302,4321,311],[6649,1303,1999,2001,145,1306,2002,1991,311,1307],[6650,1303,1307],2667,[6651,1998,4310,4315],2745,2668,[6652,89],[6653,89],[6562,623,850,1992],[6654,1304,309,311],[6563,311],[6655,4292,848],[6616,1992],[6656,623,145],[6657,4294],2812,[6658,509],[6659,2002,4337],2750,2672,[6566,4309],2674,[6570,851,145,849,309,2005],2820,[6573,1995,623],[6576,89],[6577,4329,310],[6661,310],[6662,4300,851,310],[6663,89],[6664,309,310],[6619,1308,4295,4316],[6579,1303,2001,851,145,849,1306,309,1991,1307],[6665,509,311],[6620,4308,509],[6666,2e3,4305,1306],[6436,98,624,2011,23],[6438,1,2,410,23],[6441,1,23,410],2504,[6442,1,624],[6443,23],[6444,11,1,448],[6445,1,410,23],[6447,1,4350,23],[6448,1,23],[6449,4349,23],[6450,11,1,23],[6451,2,1,23],2514,[6453,11,1,853,4352,410,23],[6454,1,4353],[6455,1,624,410,2011,23],[6458,2,2009,23],[6459,11,39,1,2008,23],[6461,366,17,1,23],[6462,23,1310,312],[6463,312],[6464,312],[6465,312],[6467,312,4360,4361,4363,4365,4366,4362],[6468,312],[6469,312],[6470,23],[6472,23],[6474,1,2010,23,1310],2531,[6476,146],[6477,16,1,147,146,626],[6479,854,146],[6480,1,147,146,626],[6481,2,47,146,854],[6482,1,16,147,146,510],[6483,147,146,510],[6484,147,625,146],[6485,4380,147,625,146,626,510],2541,[6488,2,47,854,625,147],448,[6668,2429],[6670,2431],[6671,2432],[6672,2433],[6674,2435],[6676,2436],[6677,2438],[6678,2439],[6819,4387,511,411],[6820,411],[6436,1313,627,2018,33],[6438,32,70,412,33],[6441,32,33,412],2504,[6442,32,627],[6443,33],[6444,411,32,4382],[6445,32,412,33],[6447,32,4403,33],[6448,32,33],[6449,4402,33],[6450,411,32,33],[6451,70,32,33],2514,[6453,411,32,856,4405,412,33],[6454,32,4406],[6455,32,627,412,2018,33],[6458,70,2016,33],[6459,411,1312,32,2015,33],[6461,4383,1311,32,33],[6462,33,1315,313],[6463,313],[6464,313],[6465,313],[6467,313,4413,4414,4416,4418,4419,4415],[6468,313],[6469,313],[6470,33],[6472,33],[6474,32,2017,33,1315],2531,[6476,148],[6477,511,32,149,148,629],[6479,857,148],[6480,32,149,148,629],[6481,70,855,148,857],[6482,32,511,149,148,512],[6483,149,148,512],[6484,149,628,148],[6485,4433,149,628,148,629,512],2541,[6488,70,855,857,628,149],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return!!v.isSuper(e)&&(!v.isMemberExpression(t,{computed:!1})&&!v.isCallExpression(t,{callee:e}))}function a(e){return v.isMemberExpression(e)&&v.isSuper(e.object)}t.__esModule=!0;var o=r(59),u=n(o),l=r(1327),p=n(l),c=r(4436),f=n(c),h=r(859),d=i(h),y=r(24),v=i(y),m=(0,p.default)(),g={Function:function(e){e.inShadow("this")||e.skip()},ReturnStatement:function(e,t){e.inShadow("this")||t.returns.push(e)},ThisExpression:function(e,t){e.node[m]||t.thises.push(e)},enter:function(e,t){var r=t.specHandle;t.isLoose&&(r=t.looseHandle);var i=e.isCallExpression()&&e.get("callee").isSuper(),n=r.call(t,e);n&&(t.hasSuper=!0),i&&t.bareSupers.push(e),n===!0&&e.requeue(),n!==!0&&n&&(Array.isArray(n)?e.replaceWithMultiple(n):e.replaceWith(n))}},b=function(){function e(t){var r=!(arguments.length<=1||void 0===arguments[1])&&arguments[1];(0,u.default)(this,e),this.forceSuperMemoisation=t.forceSuperMemoisation,this.methodPath=t.methodPath,this.methodNode=t.methodNode,this.superRef=t.superRef,this.isStatic=t.isStatic,this.hasSuper=!1,this.inClass=r,this.isLoose=t.isLoose,this.scope=this.methodPath.scope,this.file=t.file,this.opts=t,this.bareSupers=[],this.returns=[],this.thises=[]}return e.prototype.getObjectRef=function(){return this.opts.objectRef||this.opts.getObjectRef()},e.prototype.setSuperProperty=function(e,t,r){return v.callExpression(this.file.addHelper("set"),[v.callExpression(v.memberExpression(v.identifier("Object"),v.identifier("getPrototypeOf")),[this.isStatic?this.getObjectRef():v.memberExpression(this.getObjectRef(),v.identifier("prototype"))]),r?e:v.stringLiteral(e.name),t,v.thisExpression()])},e.prototype.getSuperProperty=function(e,t){return v.callExpression(this.file.addHelper("get"),[v.callExpression(v.memberExpression(v.identifier("Object"),v.identifier("getPrototypeOf")),[this.isStatic?this.getObjectRef():v.memberExpression(this.getObjectRef(),v.identifier("prototype"))]),t?e:v.stringLiteral(e.name),v.thisExpression()])},e.prototype.replace=function(){this.methodPath.traverse(g,this)},e.prototype.getLooseSuperProperty=function(e,t){var r=this.methodNode,i=this.superRef||v.identifier("Function");return t.property===e?void 0:v.isCallExpression(t,{callee:e})?void 0:v.isMemberExpression(t)&&!r.static?v.memberExpression(i,v.identifier("prototype")):i},e.prototype.looseHandle=function(e){var t=e.node;if(e.isSuper())return this.getLooseSuperProperty(t,e.parent);if(e.isCallExpression()){var r=t.callee;if(!v.isMemberExpression(r))return;if(!v.isSuper(r.object))return;return v.appendToMemberExpression(r,v.identifier("call")),t.arguments.unshift(v.thisExpression()),!0}},e.prototype.specHandleAssignmentExpression=function(e,t,r){return"="===r.operator?this.setSuperProperty(r.left.property,r.right,r.left.computed):(e=e||t.scope.generateUidIdentifier("ref"),[v.variableDeclaration("var",[v.variableDeclarator(e,r.left)]),v.expressionStatement(v.assignmentExpression("=",r.left,v.binaryExpression(r.operator[0],e,r.right)))])},e.prototype.specHandle=function(e){var t=void 0,r=void 0,i=void 0,n=void 0,o=e.parent,u=e.node;if(s(u,o))throw e.buildCodeFrameError(d.get("classesIllegalBareSuper"));if(v.isCallExpression(u)){var l=u.callee;if(v.isSuper(l))return;a(l)&&(t=l.property,r=l.computed,i=u.arguments)}else if(v.isMemberExpression(u)&&v.isSuper(u.object))t=u.property,r=u.computed;else{if(v.isUpdateExpression(u)&&a(u.argument)){var p=v.binaryExpression(u.operator[0],u.argument,v.numericLiteral(1));if(u.prefix)return this.specHandleAssignmentExpression(null,e,p);var c=e.scope.generateUidIdentifier("ref");return this.specHandleAssignmentExpression(c,e,p).concat(v.expressionStatement(c))}if(v.isAssignmentExpression(u)&&a(u.left))return this.specHandleAssignmentExpression(null,e,u)}if(t){var f=this.getSuperProperty(t,r,n);return i?this.optimiseCall(f,i):f}},e.prototype.optimiseCall=function(e,t){var r=v.thisExpression();return r[m]=!0,(0,f.default)(e,r,t)},e}();t.default=b,e.exports=t.default},[6493,24],[6583,34,59,413,24],[6586,34,24,413],2688,[6587,34,513],[6588,24],[6589,414,34],[6590,34,413,24],[6592,34,4446,24],[6593,34,24],[6594,4445,24],[6595,414,34,1317,24],[6596,59,34,24],2698,[6598,414,34,860,4448,413,24],[6599,34,4449],[6600,34,4455,513,413,4468,24],[6603,59,2023,24],[6604,414,1326,34,2022,859,24,4507],[6605,4467,4466,4456],[6606,4458,4457,4461,4459,4463],2491,2707,[6607,4460],1615,[6608,4462],1615,2712,2713,[6609,2024],[6610,4464,2024,4465],2716,[6475,150,4476,4475,4473,4471,4474,4472,4470,151,2025,861,4477,4478],2531,[6544,150],[6545,632,34,151,150,630],[6479,862,150],[6546,34,151,150,630],[6547,59,869,150,862],[6548,34,632,151,150,514],[6549,151,150,514],[6550,151,150],[6551,4479,151,861,150,630,514],2541,[6554,59,869,862,861,151],[6611,4482],[6612,4483],2732,[6613,6284],456,2657,1669,2737,[6555,865],[6557,4486,4487,2027,4493,4502,4503,4504,864,515],2661,[6558,4499],[6559,4492,865],[6615,4501],1674,2745,2668,[6562,2028,1320,2026],[6563,4506],[6616,2026],2750,2672,[6566,4497],2674,[6570,2031,864,1319,631,4512],[6571,515],[6617,4490,2028,1320],[6576,515],[6577,4508,863],[6618,863],[6619,2032,4488,4500],[6581,2031,864,1319,631,515],[6620,4496,865],1681,[6621,4516],[6622,4517],2766,[6624,4583,868,34,4576,4575,4577,4578,24,513],[6625,24,1321,314],[6626,314],[6627,314],[6628,314],[6630,314,4519,4520,4522,4524,4525,4521],[6631,314],[6632,314],[6633,24],[6635,24],[6637,34,2033,4531,24,1321],2713,[6609,2034],[6610,4529,2034,4530],2781,1784,[6638,4541,4554,2042,4571],[6639,4536],[6640,2035,4544,4561],[6641,4557,866],2657,2788,[6556,4543,867],[6642,4549,4550,1322,2047,4581],[6557,4538,2035,4540,2037,4567,4568,4569,317,90],2661,[6643,2037,4558],[6644,2036,2046],[6615,4566],[6646,4562,4563,4564,317,4579],[6647,2039,316],[6648,4548,4565,316],[6649,2038,2039,4552,317,2043,2044,4533,316,2045],[6650,2038,2045],1794,2667,[6651,4546,4556,4560],2668,[6652,90],[6653,90],[6654,2041,516,316],[6563,316],[6655,4537,866],[6656,1322,317],[6657,4539],2812,[6658,867],[6659,2044,4580],2750,2672,[6566,4555],2674,[6570,1325,317,1324,516,2046],2820,[6617,4542,1322,2042],[6576,90],[6577,4573,315],[6661,315],[6662,4545,1325,315],[6663,90],[6618,315],[6664,516,315],[6665,867,316],[6666,2040,4551,2043],257,[6668,4595],[6670,4597],[6671,4598],[6672,4599],[6674,4601],[6676,4602],[6677,4604],[6678,4605],[6680,4587,632,414],[6681,414],[6506,1345,2062,4627],[6683,60],[6684,4629],[6685,4630,60],[6686,4631,60],[6687,1344,60],[6688,4632,60],[6689,4633,60],[6690,4634,60],[6691,1344,60],[6692,1344,2061,4636,4637,60],[6693,2062,1345,1343],[6694,2061,1345,4635,60],2607,2608,[6508,416,1340,4626],[6696,218,2052,152],[6697,4609],[6509,1329,152],[6698,2059,871,215,218,2048,2050,1328,217],[6699,216,319,871,415,320,2059,2050,2048,218,874,321,1328,318],[6700,517,1335,872],[6515,216],[6702,633,152],[6704,215],[6518,1334,873,874,320,152],2445,[6705,517,416],[6707,517,1335,872,634,1332,415],[6522,321,215,517,318],[6709,416,2055],[6713,218,215,870,2054],[6530,1339,1330],[6531,1339],[6538,215,2060,60],[6539,4607,4619,633,416,2053],[6716,319],[6717,319,1334],[6718,319,318,321],[6719,634,2056,2058],[6720,634,517,2058],[6721,319,4624],[6723,1328,1336,871,4621,4612,218,217,4613],[6724,1342],[6725,1342],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){for(var t=e.params,r=Array.isArray(t),i=0,t=r?t:(0,o.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(!y.isIdentifier(s))return!0}return!1}t.__esModule=!0,t.visitor=void 0;var a=r(1),o=n(a),u=r(1628),l=n(u),p=r(2570),c=n(p),f=r(559),h=n(f),d=r(3),y=i(d),v=(0,h.default)("\n let VARIABLE_NAME =\n ARGUMENTS.length <= ARGUMENT_KEY || ARGUMENTS[ARGUMENT_KEY] === undefined ?\n DEFAULT_VALUE\n :\n ARGUMENTS[ARGUMENT_KEY];\n"),m=(0,h.default)("\n let $0 = $1[$2];\n"),g={ReferencedIdentifier:function(e,t){var r=e.node.name;("eval"===r||e.scope.hasOwnBinding(r)&&"param"!==e.scope.getOwnBinding(r).kind)&&(t.iife=!0,e.stop())},Scope:function(e){e.skip()}};t.visitor={Function:function(e){function t(e,t,i){var n=v({VARIABLE_NAME:e,DEFAULT_VALUE:t,ARGUMENT_KEY:y.numericLiteral(i),ARGUMENTS:o});n._blockHoist=r.params.length-i,a.push(n)}var r=e.node,i=e.scope;if(s(r)){e.ensureBlock();var n={iife:!1,scope:i},a=[],o=y.identifier("arguments");o._shadowedFunctionLiteral=e;for(var u=(0,l.default)(r),p=e.get("params"),f=0;f<p.length;f++){var h=p[f];if(h.isAssignmentPattern()){var d=h.get("left"),b=h.get("right");if(f>=u||d.isPattern()){var x=i.generateUidIdentifier("x");x._isDefaultPlaceholder=!0,r.params[f]=x}else r.params[f]=d.node;n.iife||(b.isIdentifier()&&i.hasOwnBinding(b.node.name)&&"param"!==i.getOwnBinding(b.node.name).kind?n.iife=!0:b.traverse(g,n)),t(d.node,b.node,f)}else n.iife||h.isIdentifier()||h.traverse(g,n)}for(var E=u+1;E<r.params.length;E++){var A=r.params[E];if(!A._isDefaultPlaceholder){var S=m(A,o,y.numericLiteral(E));S._blockHoist=r.params.length-E,a.push(S)}}r.params=r.params.slice(0,u),n.iife?(a.push((0,c.default)(e,i)),e.set("body",y.blockStatement(a))):e.get("body").unshiftContainer("body",a)}}}},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.visitor=void 0;var n=r(3),s=i(n);t.visitor={Function:function(e){for(var t=e.get("params"),r=s.isRestElement(t[t.length-1])?1:0,i=t.length-r,n=0;n<i;n++){var a=t[n];if(a.isArrayPattern()||a.isObjectPattern()){var o=e.scope.generateUidIdentifier("ref"),u=s.variableDeclaration("let",[s.variableDeclarator(a.node,o)]);u._blockHoist=i-n,e.ensureBlock(),e.get("body").unshiftContainer("body",u),a.replaceWith(o)}}}}},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return h.isRestElement(e.params[e.params.length-1])}function a(e,t,r){var i=void 0;i=h.isNumericLiteral(e.parent.property)?h.numericLiteral(e.parent.property.value+r):h.binaryExpression("+",e.parent.property,h.numericLiteral(r)),e.parentPath.replaceWith(y({ARGUMENTS:t,INDEX:i}))}function o(e,t,r){r?e.parentPath.replaceWith(v({ARGUMENTS:t,OFFSET:h.numericLiteral(r)})):e.replaceWith(t)}t.__esModule=!0,t.visitor=void 0;var u=r(1),l=n(u),p=r(559),c=n(p),f=r(3),h=i(f),d=(0,c.default)("\n for (var LEN = ARGUMENTS.length,\n ARRAY = Array(ARRAY_LEN),\n KEY = START;\n KEY < LEN;\n KEY++) {\n ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n }\n"),y=(0,c.default)("\n ARGUMENTS.length <= INDEX ? undefined : ARGUMENTS[INDEX]\n"),v=(0,c.default)("\n ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET\n"),m={Scope:function(e,t){e.scope.bindingIdentifierEquals(t.name,t.outerBinding)||e.skip()},Flow:function(e){e.skip()},"Function|ClassProperty":function(e,t){var r=t.noOptimise;t.noOptimise=!0,e.traverse(m,t),t.noOptimise=r,e.skip()},ReferencedIdentifier:function(e,t){var r=e.node;if("arguments"===r.name&&(t.deopted=!0),r.name===t.name)if(t.noOptimise)t.deopted=!0;else{var i=e.parentPath;if(i.isMemberExpression({object:r})){var n=i.parentPath,s=!t.deopted&&!(n.isAssignmentExpression()&&i.node===n.node.left||n.isLVal()||n.isForXStatement()||n.isUpdateExpression()||n.isUnaryExpression({operator:"delete"})||(n.isCallExpression()||n.isNewExpression())&&i.node===n.node.callee);if(s)if(i.node.computed){if(i.get("property").isBaseType("number"))return void t.candidates.push({cause:"indexGetter",path:e})}else if("length"===i.node.property.name)return void t.candidates.push({cause:"lengthGetter",path:e})}if(0===t.offset&&i.isSpreadElement()){var a=i.parentPath;if(a.isCallExpression()&&1===a.node.arguments.length)return void t.candidates.push({cause:"argSpread",path:e})}t.references.push(e)}},BindingIdentifier:function(e,t){var r=e.node;r.name===t.name&&(t.deopted=!0)}};t.visitor={Function:function(e){var t=e.node,r=e.scope;if(s(t)){var i=t.params.pop().argument,n=h.identifier("arguments");n._shadowedFunctionLiteral=e;var u={references:[],offset:t.params.length,argumentsNode:n,outerBinding:r.getBindingIdentifier(i.name),candidates:[],name:i.name,deopted:!1};if(e.traverse(m,u),u.deopted||u.references.length){u.references=u.references.concat(u.candidates.map(function(e){var t=e.path;return t})),u.deopted=u.deopted||!!t.shadow;var p=h.numericLiteral(t.params.length),c=r.generateUidIdentifier("key"),f=r.generateUidIdentifier("len"),y=c,v=f;t.params.length&&(y=h.binaryExpression("-",c,p),v=h.conditionalExpression(h.binaryExpression(">",f,p),h.binaryExpression("-",f,p),h.numericLiteral(0)));var g=d({ARGUMENTS:n,ARRAY_KEY:y,ARRAY_LEN:v,START:p,ARRAY:i,KEY:c,LEN:f});if(u.deopted)g._blockHoist=t.params.length+1,t.body.body.unshift(g);else{g._blockHoist=1;var b=e.getEarliestCommonAncestorFrom(u.references).getStatementParent();b.findParent(function(e){return e.isLoop()?void(b=e):e.isFunction()}),b.insertBefore(g)}}else for(var x=u.candidates,E=Array.isArray(x),A=0,x=E?x:(0,l.default)(x);;){var S;if(E){if(A>=x.length)break;S=x[A++]}else{if(A=x.next(),A.done)break;S=A.value}var _=S,T=_.path,P=_.cause;switch(P){case"indexGetter":a(T,n,u.offset);break;case"lengthGetter":o(T,n,u.offset);break;default:T.replaceWith(n)}}}}}},[6863,417],[6865,417],function(e,t){"use strict";function r(){var e=this.node;if(e){var t=e.trailingComments,r=e.leadingComments;if(t||r){var i=this.getSibling(this.key-1),n=this.getSibling(this.key+1);i.node||(i=n),n.node||(n=i),i.addComments("trailing",r),n.addComments("leading",t)}}}function i(e,t,r){this.addComments(e,[{type:r?"CommentLine":"CommentBlock",value:t}])}function n(e,t){if(t){var r=this.node;if(r){var i=e+"Comments";r[i]?r[i]=r[i].concat(t):r[i]=t}}}t.__esModule=!0,t.shareCommentsWithSiblings=r,t.addComment=i,t.addComments=n},[6866,635],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(){var e=this.node,t=void 0;if(this.isMemberExpression())t=e.property;else{if(!this.isProperty()&&!this.isMethod())throw new ReferenceError("todo");t=e.key}return e.computed||u.isIdentifier(t)&&(t=u.stringLiteral(t.name)),t}function s(){return u.ensureBlock(this.node)}function a(){if(this.isArrowFunctionExpression()){this.ensureBlock();var e=this.node;e.expression=!1,e.type="FunctionExpression",e.shadow=e.shadow||!0}}t.__esModule=!0,t.toComputedKey=n,t.ensureBlock=s,t.arrowFunctionToShadowed=a;var o=r(3),u=i(o)},function(e,t,r){(function(e){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(){var e=this.evaluate();if(e.confident)return!!e.value}function s(){function t(e){n&&(s=e,n=!1)}function r(e){var r=e.node;if(a.has(r)){var n=a.get(r);return n.resolved?n.value:void t(e)}var s={resolved:!1};a.set(r,s);var o=i(e);return s.resolved=!0,s.value=u,o}function i(i){if(n){var s=i.node;if(i.isSequenceExpression()){var a=i.get("expressions");return r(a[a.length-1])}if(i.isStringLiteral()||i.isNumericLiteral()||i.isBooleanLiteral())return s.value;if(i.isNullLiteral())return null;if(i.isTemplateLiteral()){for(var u="",p=0,c=i.get("expressions"),d=s.quasis,y=Array.isArray(d),v=0,d=y?d:(0,l.default)(d);;){var m;if(y){if(v>=d.length)break;m=d[v++]}else{if(v=d.next(),v.done)break;m=v.value}var g=m;if(!n)break;u+=g.value.cooked;var b=c[p++];b&&(u+=String(r(b)))}if(!n)return;return u}if(i.isConditionalExpression()){var x=r(i.get("test"));if(!n)return;return r(x?i.get("consequent"):i.get("alternate"))}if(i.isExpressionWrapper())return r(i.get("expression"));if(i.isMemberExpression()&&!i.parentPath.isCallExpression({callee:s})){var E=i.get("property"),A=i.get("object");if(A.isLiteral()&&E.isIdentifier()){var S=A.node.value,_="undefined"==typeof S?"undefined":(0,o.default)(S);if("number"===_||"string"===_)return S[E.node.name]}}if(i.isReferencedIdentifier()){var T=i.scope.getBinding(s.name);if(T&&T.hasValue)return T.value;if("undefined"===s.name)return;if("Infinity"===s.name)return 1/0;if("NaN"===s.name)return NaN;var P=i.resolve();return P===i?t(i):r(P)}if(i.isUnaryExpression({prefix:!0})){if("void"===s.operator)return;var w=i.get("argument");if("typeof"===s.operator&&(w.isFunction()||w.isClass()))return"function";var k=r(w);if(!n)return;switch(s.operator){case"!":return!k;case"+":return+k;case"-":return-k;case"~":return~k;case"typeof":return"undefined"==typeof k?"undefined":(0,o.default)(k)}}if(i.isArrayExpression()){for(var C=[],D=i.get("elements"),O=D,N=Array.isArray(O),I=0,O=N?O:(0,l.default)(O);;){var F;if(N){if(I>=O.length)break;F=O[I++]}else{if(I=O.next(),I.done)break;F=I.value}var B=F;if(B=B.evaluate(),!B.confident)return t(B);C.push(B.value)}return C}if(i.isObjectExpression(),i.isLogicalExpression()){var R=n,L=r(i.get("left")),M=n;n=R;var j=r(i.get("right")),V=n;switch(n=M&&V,s.operator){case"||":if(L&&M)return n=!0,L;if(!n)return;return L||j;case"&&":if((!L&&M||!j&&V)&&(n=!0),!n)return;return L&&j}}if(i.isBinaryExpression()){var U=r(i.get("left"));if(!n)return;var Y=r(i.get("right"));if(!n)return;switch(s.operator){case"-":return U-Y;case"+":return U+Y;case"/":return U/Y;case"*":return U*Y;case"%":return U%Y;case"**":return Math.pow(U,Y);case"<":return U<Y;case">":return U>Y;case"<=":return U<=Y;case">=":return U>=Y;case"==":return U==Y;case"!=":return U!=Y;case"===":return U===Y;case"!==":return U!==Y;case"|":return U|Y;case"&":return U&Y;case"^":return U^Y;case"<<":return U<<Y;case">>":return U>>Y;case">>>":return U>>>Y}}if(i.isCallExpression()){var K=i.get("callee"),W=void 0,G=void 0;if(K.isIdentifier()&&!i.scope.getBinding(K.node.name,!0)&&f.indexOf(K.node.name)>=0&&(G=e[s.callee.name]),K.isMemberExpression()){var q=K.get("object"),H=K.get("property");if(q.isIdentifier()&&H.isIdentifier()&&f.indexOf(q.node.name)>=0&&h.indexOf(H.node.name)<0&&(W=e[q.node.name],G=W[H.node.name]),q.isLiteral()&&H.isIdentifier()){
+var X=(0,o.default)(q.node.value);"string"!==X&&"number"!==X||(W=q.node.value,G=W[H.node.name])}}if(G){var J=i.get("arguments").map(r);if(!n)return;return G.apply(W,J)}}t(i)}}var n=!0,s=void 0,a=new c.default,u=r(this);return n||(u=void 0),{confident:n,deopt:s,value:u}}t.__esModule=!0;var a=r(11),o=i(a),u=r(1),l=i(u),p=r(448),c=i(p);t.evaluateTruthy=n,t.evaluate=s;var f=["String","Number","Math"],h=["random"]}).call(t,function(){return this}())},[6867,417],[6869,4650],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var r=e.scope.getBinding(t),i=[];e.typeAnnotation=h.unionTypeAnnotation(i);var n=[],s=a(r,e,n),o=l(e,t);if(o&&!function(){var e=a(r,o.ifStatement);s=s.filter(function(t){return e.indexOf(t)<0}),i.push(o.typeAnnotation)}(),s.length){s=s.concat(n);for(var u=s,p=Array.isArray(u),f=0,u=p?u:(0,c.default)(u);;){var d;if(p){if(f>=u.length)break;d=u[f++]}else{if(f=u.next(),f.done)break;d=f.value}var y=d;i.push(y.getTypeAnnotation())}}if(i.length)return h.createUnionTypeAnnotation(i)}function a(e,t,r){var i=e.constantViolations.slice();return i.unshift(e.path),i.filter(function(e){e=e.resolve();var i=e._guessExecutionStatusRelativeTo(t);return r&&"function"===i&&r.push(e),"before"===i})}function o(e,t){var r=t.node.operator,i=t.get("right").resolve(),n=t.get("left").resolve(),s=void 0;if(n.isIdentifier({name:e})?s=i:i.isIdentifier({name:e})&&(s=n),s)return"==="===r?s.getTypeAnnotation():h.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(r)>=0?h.numberTypeAnnotation():void 0;if("==="===r){var a=void 0,o=void 0;if(n.isUnaryExpression({operator:"typeof"})?(a=n,o=i):i.isUnaryExpression({operator:"typeof"})&&(a=i,o=n),(o||a)&&(o=o.resolve(),o.isLiteral())){var u=o.node.value;if("string"==typeof u&&a.get("argument").isIdentifier({name:e}))return h.createTypeAnnotationBasedOnTypeof(o.node.value)}}}function u(e){for(var t=void 0;t=e.parentPath;){if(t.isIfStatement()||t.isConditionalExpression())return"test"===e.key?void 0:t;e=t}}function l(e,t){var r=u(e);if(r){var i=r.get("test"),n=[i],s=[];do{var a=n.shift().resolve();if(a.isLogicalExpression()&&(n.push(a.get("left")),n.push(a.get("right"))),a.isBinaryExpression()){var p=o(t,a);p&&s.push(p)}}while(n.length);return s.length?{typeAnnotation:h.createUnionTypeAnnotation(s),ifStatement:r}:l(r,t)}}t.__esModule=!0;var p=r(1),c=n(p);t.default=function(e){if(this.isReferenced()){var t=this.scope.getBinding(e.name);return t?t.identifier.typeAnnotation?t.identifier.typeAnnotation:s(this,e.name):"undefined"===e.name?h.voidTypeAnnotation():"NaN"===e.name||"Infinity"===e.name?h.numberTypeAnnotation():void("arguments"===e.name)}};var f=r(3),h=i(f);e.exports=t.default},[6870,4649],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){function r(e){var t=i[s];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var i=e.split("."),n=[this.node],s=0;n.length;){var a=n.shift();if(t&&s===i.length)return!0;if(C.isIdentifier(a)){if(!r(a.name))return!1}else if(C.isLiteral(a)){if(!r(a.value))return!1}else{if(C.isMemberExpression(a)){if(a.computed&&!C.isLiteral(a.property))return!1;n.unshift(a.property),n.unshift(a.object);continue}if(!C.isThisExpression(a))return!1;if(!r("this"))return!1}if(++s>i.length)return!1}return s===i.length}function a(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}function o(){return this.scope.isStatic(this.node)}function u(e){return!this.has(e)}function l(e,t){return this.node[e]===t}function p(e){return C.isType(this.type,e)}function c(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()}function f(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?C.isBlockStatement(e):!!this.isBlockStatement()&&C.isExpression(e))}function h(e){var t=this,r=!0;do{var i=t.container;if(t.isFunction()&&!r)return!!e;if(r=!1,Array.isArray(i)&&t.key!==i.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0}function d(){return!this.parentPath.isLabeledStatement()&&!C.isBlockStatement(this.container)&&(0,w.default)(C.STATEMENT_OR_BLOCK_KEYS,this.key)}function y(e,t){if(!this.isReferencedIdentifier())return!1;var r=this.scope.getBinding(this.node.name);if(!r||"module"!==r.kind)return!1;var i=r.path,n=i.parentPath;return!!n.isImportDeclaration()&&(n.node.source.value===e&&(!t||(!(!i.isImportDefaultSpecifier()||"default"!==t)||(!(!i.isImportNamespaceSpecifier()||"*"!==t)||!(!i.isImportSpecifier()||i.node.imported.name!==t)))))}function v(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""}function m(e){return"after"!==this._guessExecutionStatusRelativeTo(e)}function g(e){var t=e.scope.getFunctionParent(),r=this.scope.getFunctionParent();if(t.node!==r.node){var i=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(i)return i;e=t.path}var n=e.getAncestry();if(n.indexOf(this)>=0)return"after";var s=this.getAncestry(),a=void 0,o=void 0,u=void 0;for(u=0;u<s.length;u++){var l=s[u];if(o=n.indexOf(l),o>=0){a=l;break}}if(!a)return"before";var p=n[o-1],c=s[u-1];if(!p||!c)return"before";if(p.listKey&&p.container===c.container)return p.key>c.key?"before":"after";var f=C.VISITOR_KEYS[p.type].indexOf(p.key),h=C.VISITOR_KEYS[c.type].indexOf(c.key);return f>h?"before":"after"}function b(e){var t=e.path;if(t.isFunctionDeclaration()){var r=t.scope.getBinding(t.node.id.name);if(!r.references)return"before";for(var i=r.referencePaths,n=i,s=Array.isArray(n),a=0,n=s?n:(0,T.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if("callee"!==u.key||!u.parentPath.isCallExpression())return}for(var l=void 0,p=i,c=Array.isArray(p),f=0,p=c?p:(0,T.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h,y=!!d.find(function(e){return e.node===t.node});if(!y){var v=this._guessExecutionStatusRelativeTo(d);if(l){if(l!==v)return}else l=v}}return l}}function x(e,t){return this._resolve(e,t)||this}function E(e,t){var r=this;if(!(t&&t.indexOf(this)>=0))if(t=t||[],t.push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var i=this.scope.getBinding(this.node.name);if(!i)return;if(!i.constant)return;if("module"===i.kind)return;if(i.path!==this){var n=function(){var n=i.path.resolve(e,t);return r.find(function(e){return e.node===n.node})?{v:void 0}:{v:n}}();if("object"===("undefined"==typeof n?"undefined":(0,S.default)(n)))return n.v}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var s=this.toComputedKey();if(!C.isLiteral(s))return;var a=s.value,o=this.get("object").resolve(e,t);if(o.isObjectExpression())for(var u=o.get("properties"),l=u,p=Array.isArray(l),c=0,l=p?l:(0,T.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;if(h.isProperty()){var d=h.get("key"),y=h.isnt("computed")&&d.isIdentifier({name:a});if(y=y||d.isLiteral({value:a}))return h.get("value").resolve(e,t)}}else if(o.isArrayExpression()&&!isNaN(+a)){var v=o.get("elements"),m=v[a];if(m)return m.resolve(e,t)}}}}t.__esModule=!0,t.is=void 0;var A=r(11),S=n(A),_=r(1),T=n(_);t.matchesPattern=s,t.has=a,t.isStatic=o,t.isnt=u,t.equals=l,t.isNodeType=p,t.canHaveVariableDeclarationOrExpression=c,t.canSwapBetweenExpressionAndStatement=f,t.isCompletionRecord=h,t.isStatementOrBlock=d,t.referencesImport=y,t.getSource=v,t.willIMaybeExecuteBefore=m,t._guessExecutionStatusRelativeTo=g,t._guessExecutionStatusRelativeToDifferentFunctions=b,t.resolve=x,t._resolve=E;var P=r(50),w=n(P),k=r(3),C=i(k);t.is=a},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(2),a=n(s),o=r(1),u=n(o),l=r(3),p=i(l),c={ReferencedIdentifier:function(e,t){if(!e.isJSXIdentifier()||!l.react.isCompatTag(e.node.name)){var r=e.scope.getBinding(e.node.name);if(r&&r===t.scope.getBinding(e.node.name))if(r.constant)t.bindings[e.node.name]=r;else for(var i=r.constantViolations,n=Array.isArray(i),s=0,i=n?i:(0,u.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;t.breakOnScopePaths=t.breakOnScopePaths.concat(o.getAncestry())}}}},f=function(){function e(t,r){(0,a.default)(this,e),this.breakOnScopePaths=[],this.bindings={},this.scopes=[],this.scope=r,this.path=t}return e.prototype.isCompatibleScope=function(e){for(var t in this.bindings){var r=this.bindings[t];if(!e.bindingIdentifierEquals(t,r.identifier))return!1}return!0},e.prototype.getCompatibleScopes=function(){var e=this.path.scope;do{if(!this.isCompatibleScope(e))break;if(this.scopes.push(e),this.breakOnScopePaths.indexOf(e.path)>=0)break}while(e=e.parent)},e.prototype.getAttachmentPath=function(){var e=this._getAttachmentPath();if(e){var t=e.scope;if(t.path===e&&(t=e.scope.parent),t.path.isProgram()||t.path.isFunction())for(var r in this.bindings)if(t.hasOwnBinding(r)){var i=this.bindings[r];if("param"!==i.kind&&i.path.getStatementParent().key>e.key)return}return e}},e.prototype._getAttachmentPath=function(){var e=this.scopes,t=e.pop();if(t){if(t.path.isFunction()){if(this.hasOwnParamBindings(t)){if(this.scope===t)return;return t.path.get("body").get("body")[0]}return this.getNextScopeStatementParent()}return t.path.isProgram()?this.getNextScopeStatementParent():void 0}},e.prototype.getNextScopeStatementParent=function(){var e=this.scopes.pop();if(e)return e.path.getStatementParent()},e.prototype.hasOwnParamBindings=function(e){for(var t in this.bindings)if(e.hasOwnBinding(t)){var r=this.bindings[t];if("param"===r.kind)return!0}return!1},e.prototype.run=function(){var e=this.path.node;if(!e._hoisted){e._hoisted=!0,this.path.traverse(c,this),this.getCompatibleScopes();var t=this.getAttachmentPath();if(t&&t.getFunctionParent()!==this.path.getFunctionParent()){var r=t.scope.generateUidIdentifier("ref");t.insertBefore([p.variableDeclaration("var",[p.variableDeclarator(r,this.path.node)])]);var i=this.path.parentPath;i.isJSXElement()&&this.path.container===i.node.children&&(r=p.JSXExpressionContainer(r)),this.path.replaceWith(r)}}},e}();t.default=f,e.exports=t.default},function(e,t){"use strict";t.__esModule=!0;t.hooks=[function(e,t){if("body"===e.key&&t.isArrowFunctionExpression())return e.replaceWith(e.scope.buildUndefinedNode()),!0},function(e,t){var r=!1;if(r=r||"test"===e.key&&(t.isWhile()||t.isSwitchCase()),r=r||"declaration"===e.key&&t.isExportDeclaration(),r=r||"body"===e.key&&t.isLabeledStatement(),r=r||"declarations"===e.listKey&&t.isVariableDeclaration()&&1===t.node.declarations.length,r=r||"expression"===e.key&&t.isExpressionStatement())return t.remove(),!0},function(e,t){if(t.isSequenceExpression()&&1===t.node.expressions.length)return t.replaceWith(t.node.expressions[0]),!0},function(e,t){if(t.isBinary())return"left"===e.key?t.replaceWith(t.node.right):t.replaceWith(t.node.left),!0},function(e,t){if(t.isIfStatement()&&("consequent"===e.key||"alternate"===e.key)||t.isLoop()&&"body"===e.key)return e.replaceWith({type:"BlockStatement",body:[]}),!0}]},[6871,877,4652,417],[6872,4653],[6873,635,417],[6875,2065],[6876,2064,52],[6668,4672],[6670,4674],[6671,4675],[6672,4676],[6674,4678],[6675,4680],[6676,4679],[6677,4681],[6678,4682],[6680,4663,636,418],[6681,418],[6506,1365,2080,4704],[6683,61],[6684,4706],[6685,4707,61],[6686,4708,61],[6687,1364,61],[6688,4709,61],[6689,4710,61],[6690,4711,61],[6691,1364,61],[6692,1364,2079,4713,4714,61],[6693,2080,1365,1363],[6694,2079,1365,4712,61],2607,2608,[6508,420,1360,4703],[6696,222,2070,153],[6697,4686],[6509,1349,153],[6698,2077,882,219,222,2066,2068,1348,221],[6699,220,323,882,419,324,2077,2068,2066,222,885,325,1348,322],[6700,518,1355,883],[6515,220],[6702,637,153],[6704,219],[6518,1354,884,885,324,153],2445,[6705,518,420],[6707,518,1355,883,638,1352,419],[6522,325,219,518,322],[6709,420,2073],[6713,222,219,881,2072],[6530,1359,1350],[6531,1359],[6538,219,2078,61],[6539,4684,4696,637,420,2071],[6716,323],[6717,323,1354],[6718,323,322,325],[6719,638,2074,2076],[6720,638,518,2076],[6721,323,4701],[6723,1348,1356,882,4698,4689,222,221,4690],[6724,1362],[6725,1362],[6624,4659,879,42,4823,4822,4824,2101,35,519],[6625,35,1366,326],[6626,326],[6627,326],[6628,326],[6630,326,4716,4717,4719,4721,4722,4718],[6631,326],[6632,326],[6633,35],[6635,35],[6637,42,2081,2087,35,1366],[6583,42,71,421,35],[6586,42,35,421],2688,[6587,42,519],[6588,35],[6589,418,42],[6590,42,421,35],[6592,42,4735,35],[6593,42,35],[6594,4734,35],[6595,418,42,1369,35],[6596,71,42,35],2698,[6598,418,42,887,4737,421,35],[6599,42,4738],[6600,42,4744,519,421,4754,35],[6603,71,2084,35],[6604,418,1347,42,2083,1368,35,2100],[6605,4753,2087,4745],[6606,4747,4746,4750,4748,4752],2491,2707,[6607,4749],1615,[6608,4751],1615,2712,2716,[6475,154,4762,4761,4759,4757,4760,4758,4756,155,2085,888,4763,4764],2531,[6544,154],[6545,636,42,155,154,639],[6479,889,154],[6546,42,155,154,639],[6547,71,880,154,889],[6548,42,636,155,154,520],[6549,155,154,520],[6550,155,154],[6551,4765,155,888,154,639,520],2541,[6554,71,880,889,888,155],[6611,4768],[6612,4769],2732,[6613,6285],456,[6621,4773],[6622,4774],2766,2713,[6609,2086],2781,1784,[6638,4787,4799,892,4819],[6639,4781],[6640,2089,4790,4809],[6641,4803,891],2657,2788,2737,[6555,521],[6642,4794,4795,890,2104,4829],[6557,4783,2089,2090,2092,4815,4816,4817,223,91],2661,[6643,2092,4805],[6644,2091,2103],[6646,4810,4811,4812,223,4825],[6647,2095,328],[6648,4793,4813,328],[6649,2093,2095,4797,223,2097,2098,4778,328,2099],[6650,2093,2099],1794,2667,[6651,2094,4802,4807],2745,2668,[6652,91],[6653,91],[6562,890,892,2088],[6654,1370,422,328],[6563,328],[6655,4782,891],[6616,2088],[6656,890,223],[6657,4784],2812,[6658,521],[6659,2098,4827],2750,2672,[6566,4801],2674,[6570,1373,223,1372,422,2103],2820,[6576,91],[6577,4820,327],[6661,327],[6662,4791,1373,327],[6663,91],[6664,422,327],[6619,2102,4785,4808],[6665,521,328],[6620,4800,521],[6666,2096,4796,2097],257,[6505,4832],[6506,4860,4859,4857],2607,2608,[6508,1380,4853,4852],[6509,2105,523],[6510,4833],[6513,522,1374,4837,640],[6515,522],[6516,895,2108,2106],[6517,2105],[6518,4845,2110,2111,640,523],2445,1090,[6520,894,4846,2107,1378,2106,4839],[6522,1377,894,4849,895],[6523,896,4854,1378],[6524,896,1380,4835,1378],[6525,4848,2107],[6526,640],[6530,1379,1375],[6531,1379],[6533,1379],[6534,1375],[6535,1376],[6537,4836,523,897,1374],[6538,894,4856,1374],[6539,4834,4843,897,1380,2109],[6540,4851,2109],[6541,4858,522,640,897,523],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return p.isRegExpLiteral(e)&&e.flags.indexOf(t)>=0}function a(e,t){var r=e.flags.split("");e.flags.indexOf(t)<0||((0,u.default)(r,t),e.flags=r.join(""))}t.__esModule=!0,t.is=s,t.pullFlag=a;var o=r(4862),u=n(o),l=r(25),p=i(l)},function(e,t,r){function i(){var e=arguments,t=e[0];if(!t||!t.length)return t;for(var r=0,i=n,s=e.length;++r<s;)for(var o=0,u=e[r];(o=i(t,u,o))>-1;)a.call(t,o,1);return t}var n=r(4863),s=Array.prototype,a=s.splice;e.exports=i},[6615,4864],2750,[6668,4878],[6670,4880],[6671,4881],[6672,4882],[6674,4884],[6675,4886],[6676,4885],[6677,4887],[6678,4888],[6680,4869,641,423],[6681,423],[6506,1399,2128,4910],[6683,62],[6684,4912],[6685,4913,62],[6686,4914,62],[6687,1398,62],[6688,4915,62],[6689,4916,62],[6690,4917,62],[6691,1398,62],[6692,1398,2127,4919,4920,62],[6693,2128,1399,1397],[6694,2127,1399,4918,62],2607,2608,[6508,425,1394,4909],[6696,227,2118,156],[6697,4892],[6509,1383,156],[6698,2125,902,224,227,2114,2116,1382,226],[6699,225,330,902,424,331,2125,2116,2114,227,905,332,1382,329],[6700,524,1389,903],[6515,225],[6702,642,156],[6704,224],[6518,1388,904,905,331,156],2445,[6705,524,425],[6707,524,1389,903,643,1386,424],[6522,332,224,524,329],[6709,425,2121],[6713,227,224,901,2120],[6530,1393,1384],[6531,1393],[6538,224,2126,62],[6539,4890,4902,642,425,2119],[6716,330],[6717,330,1388],[6718,330,329,332],[6719,643,2122,2124],[6720,643,524,2124],[6721,330,4907],[6723,1382,1390,902,4904,4895,227,226,4896],[6724,1396],[6725,1396],[6624,4865,899,43,5029,5028,5030,2149,25,525],[6625,25,1400,333],[6626,333],[6627,333],[6628,333],[6630,333,4922,4923,4925,4927,4928,4924],[6631,333],[6632,333],[6633,25],[6635,25],[6637,43,2129,2135,25,1400],[6583,43,72,426,25],[6586,43,25,426],2688,[6587,43,525],[6588,25],[6589,423,43],[6590,43,426,25],[6592,43,4941,25],[6593,43,25],[6594,4940,25],[6595,423,43,1403,25],[6596,72,43,25],2698,[6598,423,43,907,4943,426,25],[6599,43,4944],[6600,43,4950,525,426,4960,25],[6603,72,2132,25],[6604,423,1381,43,2131,1402,25,2148],[6605,4959,2135,4951],[6606,4953,4952,4956,4954,4958],2491,2707,[6607,4955],1615,[6608,4957],1615,2712,2716,[6475,157,4968,4967,4965,4963,4966,4964,4962,158,2133,908,4969,4970],2531,[6544,157],[6545,641,43,158,157,644],[6479,909,157],[6546,43,158,157,644],[6547,72,900,157,909],[6548,43,641,158,157,526],[6549,158,157,526],[6550,158,157],[6551,4971,158,908,157,644,526],2541,[6554,72,900,909,908,158],[6611,4974],[6612,4975],2732,[6613,6286],456,[6621,4979],[6622,4980],2766,2713,[6609,2134],2781,1784,[6638,4993,5005,912,5025],[6639,4987],[6640,2137,4996,5015],[6641,5009,911],2657,2788,2737,[6555,527],[6642,5e3,5001,910,2152,5035],[6557,4989,2137,2138,2140,5021,5022,5023,228,92],2661,[6643,2140,5011],[6644,2139,2151],[6646,5016,5017,5018,228,5031],[6647,2143,335],[6648,4999,5019,335],[6649,2141,2143,5003,228,2145,2146,4984,335,2147],[6650,2141,2147],1794,2667,[6651,2142,5008,5013],2745,2668,[6652,92],[6653,92],[6562,910,912,2136],[6654,1404,427,335],[6563,335],[6655,4988,911],[6616,2136],[6656,910,228],[6657,4990],2812,[6658,527],[6659,2146,5033],2750,2672,[6566,5007],2674,[6570,1407,228,1406,427,2151],2820,[6576,92],[6577,5026,334],[6661,334],[6662,4997,1407,334],[6663,92],[6664,427,334],[6619,2150,4991,5014],[6665,527,335],[6620,5006,527],[6666,2144,5002,2145],257,[6505,5038],[6506,5066,5065,5063],2607,2608,[6508,1414,5059,5058],[6509,2153,529],[6510,5039],[6513,528,1408,5043,645],[6515,528],[6516,915,2156,2154],[6517,2153],[6518,5051,2158,2159,645,529],2445,1090,[6520,914,5052,2155,1412,2154,5045],[6522,1411,914,5055,915],[6523,916,5060,1412],[6524,916,1414,5041,1412],[6525,5054,2155],[6526,645],[6530,1413,1409],[6531,1413],[6533,1413],[6534,1409],[6535,1410],[6537,5042,529,917,1408],[6538,914,5062,1408],[6539,5040,5049,917,1414,2157],[6540,5057,2157],[6541,5064,528,645,917,529],[6675,5068],[6692,5089,5088,5090,5091,1415],2607,[6508,532,5087,5086],[6510,5069],1019,[6700,922,2167,1418],[6513,428,1415,5071,1417],[6515,428],[6517,2162],[6703,2162],[6705,922,532],[6706,923,921,646,531,920],[6520,919,5081,1416,2169,2163,5075],[6522,531,919,922,530],[6708,1418,1419,532,1421,646,2164,530],[6709,532,2166],[6526,1417],[6527,531,646,1423],[6531,2170],[6533,2170],685,[6722,428,646,530,5074,5084,5079,920,1420,5085,923,1423,2171,1422,5078,5073,5077,919,532,1421,1419,5080,5083,5082,531,922,2166,1418,2167,2165,1417],[6724,1422],[6725,1422],function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types;return{visitor:{MemberExpression:{exit:function(e){var r=e.node,i=r.property;r.computed||!t.isIdentifier(i)||t.isValidIdentifier(i.name)||(r.property=t.stringLiteral(i.name),r.computed=!0)}}}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types;return{visitor:{ObjectProperty:{exit:function(e){var r=e.node,i=r.key;r.computed||!t.isIdentifier(i)||t.isValidIdentifier(i.name)||(r.key=t.stringLiteral(i.name))}}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(4),a=n(s);t.default=function(e){var t=e.types;return{visitor:{ObjectExpression:function(e,r){for(var i=e.node,n=!1,s=i.properties,o=Array.isArray(s),l=0,s=o?s:(0,a.default)(s);;){var p;if(o){if(l>=s.length)break;p=s[l++]}else{if(l=s.next(),l.done)break;p=l.value}var c=p;if("get"===c.kind||"set"===c.kind){n=!0;break}}if(n){var f={};i.properties=i.properties.filter(function(e){return!!(e.computed||"get"!==e.kind&&"set"!==e.kind)||(u.push(f,e,null,r),!1)}),e.replaceWith(t.callExpression(t.memberExpression(t.identifier("Object"),t.identifier("defineProperties")),[i,u.toDefineObject(f)]))}}}}};var o=r(5095),u=i(o);e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return!g.isClassMethod(e)&&!g.isObjectMethod(e)||"get"!==e.kind&&"set"!==e.kind?"value":e.kind}function a(e,t,r,i,n){var a=g.toKeyAlias(t),o={};if((0,v.default)(e,a)&&(o=e[a]),e[a]=o,o._inherits=o._inherits||[],o._inherits.push(t),o._key=t.key,t.computed&&(o._computed=!0),t.decorators){var u=o.decorators=o.decorators||g.arrayExpression([]);u.elements=u.elements.concat(t.decorators.map(function(e){return e.expression}).reverse())}if(o.value||o.initializer)throw i.buildCodeFrameError(t,"Key conflict with sibling node");var l=void 0,p=void 0;(g.isObjectProperty(t)||g.isObjectMethod(t)||g.isClassMethod(t))&&(l=g.toComputedKey(t,t.key)),g.isObjectProperty(t)||g.isClassProperty(t)?p=t.value:(g.isObjectMethod(t)||g.isClassMethod(t))&&(p=g.functionExpression(null,t.params,t.body,t.generator,t.async));var c=s(t);return r&&"value"===c||(r=c),n&&g.isStringLiteral(l)&&("value"===r||"initializer"===r)&&g.isFunctionExpression(p)&&(p=(0,f.default)({id:l,node:p,scope:n})),p&&(g.inheritsComments(p,t),o[r]=p),o}function o(e){for(var t in e)if(e[t]._computed)return!0;return!1}function u(e){for(var t=g.arrayExpression([]),r=0;r<e.properties.length;r++){var i=e.properties[r],n=i.value;n.properties.unshift(g.objectProperty(g.identifier("key"),g.toComputedKey(i))),t.elements.push(n)}return t}function l(e){var t=g.objectExpression([]);return(0,d.default)(e,function(e){var r=g.objectExpression([]),i=g.objectProperty(e._key,r,e._computed);(0,d.default)(e,function(e,t){if("_"!==t[0]){var i=e;(g.isClassMethod(e)||g.isClassProperty(e))&&(e=e.value);var n=g.objectProperty(g.identifier(t),e);g.inheritsComments(n,i),g.removeComments(i),r.properties.push(n)}}),t.properties.push(i)}),t}function p(e){return(0,d.default)(e,function(e){e.value&&(e.writable=g.booleanLiteral(!0)),e.configurable=g.booleanLiteral(!0),e.enumerable=g.booleanLiteral(!0)}),l(e)}t.__esModule=!0,t.push=a,t.hasComputed=o,t.toComputedObjectFromClass=u,t.toClassObject=l,t.toDefineObject=p;var c=r(5096),f=n(c),h=r(2186),d=n(h),y=r(2200),v=n(y),m=r(8),g=i(m)},[6491,5097,5098,8],[6492,8],[6543,2204,5266,937,2200,648,5099,8],[6475,159,5107,5106,5104,5102,5105,5103,5101,160,2172,925,5108,5109],2531,[6544,159],[6545,166,4,160,159,647],[6479,926,159],[6546,4,160,159,647],[6547,14,81,159,926],[6548,4,166,160,159,533],[6549,160,159,533],[6550,160,159],[6551,5110,160,925,159,647,533],2541,[6554,14,81,926,925,160],[6583,4,14,429,8],[6586,4,8,429],2688,[6587,4,648],[6588,8],[6589,94,4],[6590,4,429,8],[6592,4,5121,8],[6593,4,8],[6594,5120,8],[6595,94,4,537,8],[6596,14,4,8],2698,[6598,94,4,927,5123,429,8],[6599,4,5124],[6600,4,5130,648,429,5143,8],[6603,14,2175,8],[6604,94,653,4,2174,1425,8,1434],[6605,5142,5141,5131],[6606,5133,5132,5136,5134,5138],2491,2707,[6607,5135],1615,[6608,5137],1615,2712,2713,[6609,2176],[6610,5139,2176,5140],2716,[6475,161,5151,5150,5148,5146,5149,5147,5145,162,2177,928,5152,5153],2531,[6544,161],[6545,166,4,162,161,649],[6479,929,161],[6546,4,162,161,649],[6547,14,81,161,929],[6548,4,166,162,161,534],[6549,162,161,534],[6550,162,161],[6551,5154,162,928,161,649,534],2541,[6554,14,81,929,928,162],[6611,5157],[6612,5158],2732,[6613,6287],456,[6621,5162],[6622,5163],2766,[6624,5276,652,4,5270,5269,5271,2198,8,535],[6625,8,1426,336],[6626,336],[6627,336],[6628,336],[6630,336,5165,5166,5168,5170,5171,5167],[6631,336],[6632,336],[6633,8],[6635,8],[6637,4,2178,2184,8,1426],[6583,4,14,430,8],[6586,4,8,430],2688,[6587,4,535],[6588,8],[6589,94,4],[6590,4,430,8],[6592,4,5184,8],[6593,4,8],[6594,5183,8],[6595,94,4,537,8],[6596,14,4,8],2698,[6598,94,4,930,5186,430,8],[6599,4,5187],[6600,4,5193,535,430,5203,8],[6603,14,2181,8],[6604,94,653,4,2180,1428,8,1434],[6605,5202,2184,5194],[6606,5196,5195,5199,5197,5201],2491,2707,[6607,5198],1615,[6608,5200],1615,2712,2716,[6475,163,5211,5210,5208,5206,5209,5207,5205,164,2182,931,5212,5213],2531,[6544,163],[6545,166,4,164,163,650],[6479,932,163],[6546,4,164,163,650],[6547,14,81,163,932],[6548,4,166,164,163,536],[6549,164,163,536],[6550,164,163],[6551,5214,164,931,163,650,536],2541,[6554,14,81,932,931,164],[6611,5217],[6612,5218],2732,[6613,6288],456,[6621,5222],[6622,5223],2766,2713,[6609,2183],257,2781,[6638,5235,5245,935,5265],[6640,2188,5237,5255],[6641,5249,933],2657,2788,2737,[6555,538],[6642,5241,5242,651,2202,5275],2661,[6643,2192,5251],[6644,2191,2201],[6646,5256,5257,5258,165,5272],[6647,2194,339],[6648,5240,5259,339],[6649,1429,2194,2196,165,1432,2197,2185,339,1433],[6650,1429,1433],2667,[6651,2193,5248,5253],2745,2668,[6652,93],[6653,93],[6562,651,935,2187],[6654,1430,337,339],[6563,339],[6655,5230,933],[6616,2187],[6656,651,165],[6657,5232],2812,[6658,538],[6659,2197,5273],2750,2672,[6566,5247],2674,[6570,936,165,934,337,2201],2820,[6573,2190,651],[6576,93],[6577,5267,338],[6661,338],[6662,5238,936,338],[6663,93],[6664,337,338],[6665,538,339],[6620,5246,538],[6666,2195,5243,1432],[6668,5283],[6670,5285],[6674,5289],[6676,5290],[6677,5292],[6506,1455,2220,5315],[6683,63],[6684,5317],[6685,5318,63],[6686,5319,63],[6687,1454,63],[6688,5320,63],[6689,5321,63],[6690,5322,63],[6691,1454,63],[6692,1454,2219,5324,5325,63],[6693,2220,1455,1453],[6694,2219,1455,5323,63],2607,2608,[6508,432,1450,5314],[6696,232,2210,167],[6697,5297],[6509,1439,167],[6698,2217,939,229,232,2206,2208,1438,231],[6699,230,341,939,431,342,2217,2208,2206,232,942,343,1438,340],[6700,539,1445,940],[6515,230],[6702,654,167],[6704,229],[6518,1444,941,942,342,167],2445,[6705,539,432],[6707,539,1445,940,655,1442,431],[6522,343,229,539,340],[6709,432,2213],[6713,232,229,938,2212],[6530,1449,1440],[6531,1449],[6538,229,2218,63],[6539,5295,5307,654,432,2211],[6716,341],[6717,341,1444],[6718,341,340,343],[6719,655,2214,2216],[6720,655,539,2216],[6721,341,5312],[6723,1438,1446,939,5309,5300,232,231,5301],[6724,1452],[6725,1452],function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.parse,r=e.traverse;return{visitor:{CallExpression:function(e){if(e.get("callee").isIdentifier({name:"eval"})&&1===e.node.arguments.length){var i=e.get("arguments")[0].evaluate();if(!i.confident)return;var n=i.value;if("string"!=typeof n)return;var s=t(n);return r.removeProperties(s),s.program}}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(e){function t(t){return t.operator===e.operator+"="}function r(e,t){return u.assignmentExpression("=",e,t)}var i={};return i.ExpressionStatement=function(i,n){if(!i.isCompletionRecord()){var s=i.node.expression;if(t(s)){var o=[],l=(0,a.default)(s.left,o,n,i.scope,!0);o.push(u.expressionStatement(r(l.ref,e.build(l.uid,s.right)))),i.replaceWithMultiple(o)}}},i.AssignmentExpression=function(i,n){var s=i.node,o=i.scope;if(t(s)){var u=[],l=(0,a.default)(s.left,u,n,o);u.push(r(l.ref,e.build(l.uid,s.right))),i.replaceWithMultiple(u)}},i.BinaryExpression=function(t){var r=t.node;r.operator===e.operator&&t.replaceWith(e.build(r.left,r.right))},i};var s=r(5328),a=n(s),o=r(26),u=i(o);e.exports=t.default},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e,t,r,i){var n=void 0;if(o.isIdentifier(e)){if(i.hasBinding(e.name))return e;n=e}else{if(!o.isMemberExpression(e))throw new Error("We can't explode this node type "+e.type);if(n=e.object,o.isIdentifier(n)&&i.hasBinding(n.name))return n}var s=i.generateUidIdentifierBasedOnNode(n);return t.push(o.variableDeclaration("var",[o.variableDeclarator(s,n)])),s}function s(e,t,r,i){var n=e.property,s=o.toComputedKey(e,n);if(o.isLiteral(s))return s;var a=i.generateUidIdentifierBasedOnNode(n);return t.push(o.variableDeclaration("var",[o.variableDeclarator(a,n)])),a}t.__esModule=!0,t.default=function(e,t,r,i,a){var u=void 0;u=o.isIdentifier(e)&&a?e:n(e,t,r,i);var l=void 0,p=void 0;if(o.isIdentifier(e))l=e,p=u;else{var c=s(e,t,r,i),f=e.computed||o.isLiteral(c);p=l=o.memberExpression(u,c,f)}return{uid:p,ref:l}};var a=r(26),o=i(a);e.exports=t.default},[6624,5445,950,44,5437,5436,5438,2241,26,540],[6625,26,1457,344],[6626,344],[6627,344],[6628,344],[6630,344,5330,5331,5333,5335,5336,5332],[6631,344],[6632,344],[6633,26],[6635,26],[6637,44,2221,2227,26,1457],[6583,44,73,433,26],[6586,44,26,433],2688,[6587,44,540],[6588,26],[6589,435,44],[6590,44,433,26],[6592,44,5349,26],[6593,44,26],[6594,5348,26],[6595,435,44,1460,26],[6596,73,44,26],2698,[6598,435,44,944,5351,433,26],[6599,44,5352],[6600,44,5358,540,433,5368,26],[6603,73,2224,26],[6604,435,1465,44,2223,1459,26,2240],[6605,5367,2227,5359],[6606,5361,5360,5364,5362,5366],2491,2707,[6607,5363],1615,[6608,5365],1615,2712,2716,[6475,168,5376,5375,5373,5371,5374,5372,5370,169,2225,945,5377,5378],2531,[6544,168],[6545,657,44,169,168,656],[6479,946,168],[6546,44,169,168,656],[6547,73,951,168,946],[6548,44,657,169,168,541],[6549,169,168,541],[6550,169,168],[6551,5379,169,945,168,656,541],2541,[6554,73,951,946,945,169],[6611,5382],[6612,5383],2732,[6613,6289],456,[6621,5387],[6622,5388],2766,2713,[6609,2226],2781,1784,[6638,5401,5413,949,5433],[6639,5395],[6640,2229,5404,5423],[6641,5417,948],2657,2788,2737,[6555,542],[6642,5408,5409,947,2244,5443],[6557,5397,2229,2230,2232,5429,5430,5431,233,95],2661,[6643,2232,5419],[6644,2231,2243],[6646,5424,5425,5426,233,5439],[6647,2235,346],[6648,5407,5427,346],[6649,2233,2235,5411,233,2237,2238,5392,346,2239],[6650,2233,2239],1794,2667,[6651,2234,5416,5421],2745,2668,[6652,95],[6653,95],[6562,947,949,2228],[6654,1461,434,346],[6563,346],[6655,5396,948],[6616,2228],[6656,947,233],[6657,5398],2812,[6658,542],[6659,2238,5441],2750,2672,[6566,5415],2674,[6570,1464,233,1463,434,2243],2820,[6576,95],[6577,5434,345],[6661,345],[6662,5405,1464,345],[6663,95],[6664,434,345],[6619,2242,5399,5422],[6665,542,346],[6620,5414,542],[6666,2236,5410,2237],257,[6668,5458],[6670,5460],[6671,5461],[6672,5462],[6674,5464],[6675,5466],[6676,5465],[6677,5467],[6678,5468],[6680,5449,657,435],[6681,435],[6506,1483,2259,5490],[6683,64],[6684,5492],[6685,5493,64],[6686,5494,64],[6687,1482,64],[6688,5495,64],[6689,5496,64],[6690,5497,64],[6691,1482,64],[6692,1482,2258,5499,5500,64],[6693,2259,1483,1481],[6694,2258,1483,5498,64],2607,2608,[6508,437,1478,5489],[6696,237,2249,170],[6697,5472],[6509,1467,170],[6698,2256,953,234,237,2245,2247,1466,236],[6699,235,348,953,436,349,2256,2247,2245,237,956,350,1466,347],[6700,543,1473,954],[6515,235],[6702,658,170],[6704,234],[6518,1472,955,956,349,170],2445,[6705,543,437],[6707,543,1473,954,659,1470,436],[6522,350,234,543,347],[6709,437,2252],[6713,237,234,952,2251],[6530,1477,1468],[6531,1477],[6538,234,2257,64],[6539,5470,5482,658,437,2250],[6716,348],[6717,348,1472],[6718,348,347,350],[6719,659,2253,2255],[6720,659,543,2255],[6721,348,5487],[6723,1466,1474,953,5484,5475,237,236,5476],[6724,1480],[6725,1480],function(e,t,r){
+"use strict";t.__esModule=!0,t.default=function(e){function t(e,t){e.addComment("trailing",i(e,t)),e.replaceWith(n.noop())}function i(e,t){var r=e.getSource().replace(/\*-\//g,"*-ESCAPED/").replace(/\*\//g,"*-/");return t&&t.optional&&(r="?"+r),":"!==r[0]&&(r=":: "+r),r}var n=e.types;return{inherits:r(698),visitor:{TypeCastExpression:function(e){var t=e.node;e.get("expression").addComment("trailing",i(e.get("typeAnnotation"))),e.replaceWith(n.parenthesizedExpression(t.expression))},Identifier:function(e){var t=e.node;t.optional&&!t.typeAnnotation&&e.addComment("trailing",":: ?")},Function:{exit:function(e){var t=e.node;t.params.forEach(function(e){return e.optional=!1})}},"ExportNamedDeclaration|Flow":function(e){var r=e.node,i=e.parent;n.isExportNamedDeclaration(r)&&!n.isFlow(r.declaration)||t(e,i)},ImportDeclaration:function(e){var r=e.node,i=e.parent;n.isImportDeclaration(r)&&"type"!==r.importKind&&"typeof"!==r.importKind||t(e,i)}}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types;return{visitor:{FunctionExpression:{exit:function(e){var r=e.node;r.id&&(r._ignoreUserWhitespace=!0,e.replaceWith(t.callExpression(t.functionExpression(null,[],t.blockStatement([t.toStatement(r),t.returnStatement(r.id)])),[])))}}}}},e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{visitor:{CallExpression:function(e,t){e.get("callee").matchesPattern("Object.assign")&&(e.node.callee=t.addHelper("extends"))}}}},e.exports=t.default},[6505,5505],[6506,5533,5532,5530],2607,2608,[6508,1490,5526,5525],[6509,2264,545],[6510,5506],[6513,544,1484,5510,660],[6515,544],[6516,959,2267,2265],[6517,2264],[6518,5518,2269,2270,660,545],2445,1090,[6520,958,5519,2266,1488,2265,5512],[6522,1487,958,5522,959],[6523,960,5527,1488],[6524,960,1490,5508,1488],[6525,5521,2266],[6526,660],[6530,1489,1485],[6531,1489],[6533,1489],[6534,1485],[6535,1486],[6537,5509,545,961,1484],[6538,958,5529,1484],[6539,5507,5516,961,1490,2268],[6540,5524,2268],[6541,5531,544,660,961,545],function(e,t){"use strict";t.__esModule=!0,t.default=function(){return{visitor:{CallExpression:function(e,t){e.get("callee").matchesPattern("Object.setPrototypeOf")&&(e.node.callee=t.addHelper("defaults"))}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(5536),s=i(n);t.default=function(e){function t(e){return n.isLiteral(n.toComputedKey(e,e.key),{value:"__proto__"})}function r(e){var t=e.left;return n.isMemberExpression(t)&&n.isLiteral(n.toComputedKey(t,t.property),{value:"__proto__"})}function i(e,t,r){return n.expressionStatement(n.callExpression(r.addHelper("defaults"),[t,e.right]))}var n=e.types;return{visitor:{AssignmentExpression:function(e,t){if(r(e.node)){var s=[],a=e.node.left.object,o=e.scope.maybeGenerateMemoised(a);o&&s.push(n.expressionStatement(n.assignmentExpression("=",o,a))),s.push(i(e.node,o||a,t)),o&&s.push(o),e.replaceWithMultiple(s)}},ExpressionStatement:function(e,t){var s=e.node.expression;n.isAssignmentExpression(s,{operator:"="})&&r(s)&&e.replaceWith(i(s,s.left.object,t))},ObjectExpression:function(e,r){for(var i=void 0,a=e.node,u=a.properties,l=Array.isArray(u),p=0,u=l?u:(0,s.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;t(f)&&(i=f.value,(0,o.default)(a.properties,f))}if(i){var h=[n.objectExpression([]),i];a.properties.length&&h.push(a),e.replaceWith(n.callExpression(r.addHelper("extends"),h))}}}}};var a=r(5577),o=i(a);e.exports=t.default},[6505,5537],[6506,5565,5564,5562],2607,2608,[6508,1497,5558,5557],[6509,2273,547],[6510,5538],[6513,546,1491,5542,661],[6515,546],[6516,963,2276,2274],[6517,2273],[6518,5550,2278,2279,661,547],2445,1090,[6520,962,5551,2275,1495,2274,5544],[6522,1494,962,5554,963],[6523,964,5559,1495],[6524,964,1497,5540,1495],[6525,5553,2275],[6526,661],[6530,1496,1492],[6531,1496],[6533,1496],[6534,1492],[6535,1493],[6537,5541,547,965,1491],[6538,962,5561,1491],[6539,5539,5548,965,1497,2277],[6540,5556,2277],[6541,5563,546,661,965,547],1902,1603,[6494,5573],2577,[6495,5567,5568,5569,5571,5572],2579,2467,2581,[6496,2282],373,[6497,5575],[6498,5578,5579],[6499,5570],[6500,5566,5581],[6501,5582],[6502,5580],[6503,5574,2282,5576],function(e,t){"use strict";t.__esModule=!0,t.default=function(){var e={enter:function(e,t){var r=function(){t.isImmutable=!1,e.stop()};return e.isJSXClosingElement()?void e.skip():e.isJSXIdentifier({name:"ref"})&&e.parentPath.isJSXAttribute({name:e.node})?r():void(e.isJSXIdentifier()||e.isIdentifier()||e.isJSXMemberExpression()||e.isImmutable()||r())}};return{visitor:{JSXElement:function(t){if(!t.node._hoisted){var r={isImmutable:!0};t.traverse(e,r),r.isImmutable?t.hoist():t.node._hoisted=!0}}}}},e.exports=t.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=r(5585),s=i(n);t.default=function(e){function t(e){for(var t=0;t<e.length;t++){var i=e[t];if(n.isJSXSpreadAttribute(i))return!0;if(r(i,"ref"))return!0}return!1}function r(e,t){return n.isJSXAttribute(e)&&n.isJSXIdentifier(e.name,{name:t})}function i(e){var t=e.value;return t?(n.isJSXExpressionContainer(t)&&(t=t.expression),t):n.identifier("true")}var n=e.types;return{visitor:{JSXElement:function(e,a){function o(e,t,r){e.push(n.objectProperty(t,r))}var u=e.node,l=u.openingElement;if(!t(l.attributes)){var p=n.objectExpression([]),c=null,f=l.name;n.isJSXIdentifier(f)&&n.react.isCompatTag(f.name)&&(f=n.stringLiteral(f.name));for(var h=l.attributes,d=Array.isArray(h),y=0,h=d?h:(0,s.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;if(r(m,"key"))c=i(m);else{var g=m.name.name,b=n.isValidIdentifier(g)?n.identifier(g):n.stringLiteral(g);o(p.properties,b,i(m))}}var x=[f,p];if(c||u.children.length){var E=n.react.buildChildren(u);x.push.apply(x,[c||n.unaryExpression("void",n.numericLiteral(0),!0)].concat(E))}var A=n.callExpression(a.addHelper("jsx"),x);e.replaceWith(A)}}}}},e.exports=t.default},[6505,5586],[6506,5614,5613,5611],2607,2608,[6508,1504,5607,5606],[6509,2284,549],[6510,5587],[6513,548,1498,5591,662],[6515,548],[6516,967,2287,2285],[6517,2284],[6518,5599,2289,2290,662,549],2445,1090,[6520,966,5600,2286,1502,2285,5593],[6522,1501,966,5603,967],[6523,968,5608,1502],[6524,968,1504,5589,1502],[6525,5602,2286],[6526,662],[6530,1503,1499],[6531,1503],[6533,1503],[6534,1499],[6535,1500],[6537,5590,549,969,1498],[6538,966,5610,1498],[6539,5588,5597,969,1504,2288],[6540,5605,2288],[6541,5612,548,662,969,549],function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types;return{manipulateOptions:function(e,t){t.plugins.push("jsx")},visitor:r(5616)({pre:function(e){e.callee=e.tagExpr},post:function(e){t.react.isCompatTag(e.tagName)&&(e.call=t.callExpression(t.memberExpression(t.memberExpression(t.identifier("React"),t.identifier("DOM")),e.tagExpr,t.isLiteral(e.tagExpr)),e.args))}})}},e.exports=t.default},[6877,1508,36],[6624,5733,976,45,5726,5725,5727,2312,36,550],[6625,36,1505,351],[6626,351],[6627,351],[6628,351],[6630,351,5618,5619,5621,5623,5624,5620],[6631,351],[6632,351],[6633,36],[6635,36],[6637,45,2293,1508,36,1505],[6583,45,74,438,36],[6586,45,36,438],2688,[6587,45,550],[6588,36],[6589,440,45],[6590,45,438,36],[6592,45,5637,36],[6593,45,36],[6594,5636,36],[6595,440,45,1509,36],[6596,74,45,36],2698,[6598,440,45,970,5639,438,36],[6599,45,5640],[6600,45,5646,550,438,5656,36],[6603,74,2296,36],[6604,440,1514,45,2295,1507,36,2311],[6605,5655,1508,5647],[6606,5649,5648,5652,5650,5654],2491,2707,[6607,5651],1615,[6608,5653],1615,2712,2716,[6475,171,5664,5663,5661,5659,5662,5660,5658,172,2297,971,5665,5666],2531,[6544,171],[6545,664,45,172,171,663],[6479,972,171],[6546,45,172,171,663],[6547,74,977,171,972],[6548,45,664,172,171,551],[6549,172,171,551],[6550,172,171],[6551,5667,172,971,171,663,551],2541,[6554,74,977,972,971,172],[6611,5670],[6612,5671],2732,[6613,6290],456,[6621,5675],[6622,5676],2766,257,2713,[6609,2298],2781,1784,[6638,5690,5702,975,5722],[6639,5684],[6640,2300,5693,5712],[6641,5706,974],2657,2788,2737,[6555,552],[6642,5697,5698,973,2315,5732],[6557,5686,2300,2301,2303,5718,5719,5720,238,96],2661,[6643,2303,5708],[6644,2302,2314],[6646,5713,5714,5715,238,5728],[6647,2306,353],[6648,5696,5716,353],[6649,2304,2306,5700,238,2308,2309,5681,353,2310],[6650,2304,2310],1794,2667,[6651,2305,5705,5710],2745,2668,[6652,96],[6653,96],[6562,973,975,2299],[6654,1510,439,353],[6563,353],[6655,5685,974],[6616,2299],[6656,973,238],[6657,5687],2812,[6658,552],[6659,2309,5730],2750,2672,[6566,5704],2674,[6570,1513,238,1512,439,2314],2820,[6576,96],[6577,5723,352],[6661,352],[6662,5694,1513,352],[6663,96],[6664,439,352],[6619,2313,5688,5711],[6665,552,353],[6620,5703,552],[6666,2307,5699,2308],[6668,5746],[6670,5748],[6671,5749],[6672,5750],[6674,5752],[6675,5754],[6676,5753],[6677,5755],[6678,5756],[6680,5737,664,440],[6681,440],[6506,1532,2330,5778],[6683,65],[6684,5780],[6685,5781,65],[6686,5782,65],[6687,1531,65],[6688,5783,65],[6689,5784,65],[6690,5785,65],[6691,1531,65],[6692,1531,2329,5787,5788,65],[6693,2330,1532,1530],[6694,2329,1532,5786,65],2607,2608,[6508,442,1527,5777],[6696,242,2320,173],[6697,5760],[6509,1516,173],[6698,2327,979,239,242,2316,2318,1515,241],[6699,240,355,979,441,356,2327,2318,2316,242,982,357,1515,354],[6700,553,1522,980],[6515,240],[6702,665,173],[6704,239],[6518,1521,981,982,356,173],2445,[6705,553,442],[6707,553,1522,980,666,1519,441],[6522,357,239,553,354],[6709,442,2323],[6713,242,239,978,2322],[6530,1526,1517],[6531,1526],[6538,239,2328,65],[6539,5758,5770,665,442,2321],[6716,355],[6717,355,1521],[6718,355,354,357],[6719,666,2324,2326],[6720,666,553,2326],[6721,355,5775],[6723,1515,1523,979,5772,5763,242,241,5764],[6724,1529],[6725,1529],function(e,t){"use strict";t.__esModule=!0,t.default=function(e){var t=e.types,i={JSXOpeningElement:function(e){var i=e.node,n=t.jSXIdentifier(r),s=t.thisExpression();i.attributes.push(t.jSXAttribute(n,t.jSXExpressionContainer(s)))}};return{visitor:i}};var r="__self";e.exports=t.default},function(e,t){"use strict";t.__esModule=!0,t.default=function(e){function t(e,t){var r=null!=t?n.numericLiteral(t):n.nullLiteral(),i=n.objectProperty(n.identifier("fileName"),e),s=n.objectProperty(n.identifier("lineNumber"),r);return n.objectExpression([i,s])}var n=e.types,s={JSXOpeningElement:function(e,s){var a=n.jSXIdentifier(r),o=e.container.openingElement.loc;if(o){for(var u=e.container.openingElement.attributes,l=0;l<u.length;l++){var p=u[l].name;if(p&&p.name===r)return}if(!s.fileNameIdentifier){var c="unknown"!==s.file.log.filename?s.file.log.filename:null,f=e.scope.generateUidIdentifier(i);e.hub.file.scope.push({id:f,init:n.stringLiteral(c)}),s.fileNameIdentifier=f}var h=t(s.fileNameIdentifier,o.start.line);u.push(n.jSXAttribute(a,n.jSXExpressionContainer(h)))}}};return{visitor:s}};var r="__source",i="_jsxFileName";e.exports=t.default},[6877,1536,37],[6624,5908,990,38,5901,5900,5902,2351,37,554],[6625,37,1533,358],[6626,358],[6627,358],[6628,358],[6630,358,5793,5794,5796,5798,5799,5795],[6631,358],[6632,358],[6633,37],[6635,37],[6637,38,2332,1536,37,1533],[6583,38,75,443,37],[6586,38,37,443],2688,[6587,38,554],[6588,37],[6589,445,38],[6590,38,443,37],[6592,38,5812,37],[6593,38,37],[6594,5811,37],[6595,445,38,1537,37],[6596,75,38,37],2698,[6598,445,38,984,5814,443,37],[6599,38,5815],[6600,38,5821,554,443,5831,37],[6603,75,2335,37],[6604,445,1542,38,2334,1535,37,2350],[6605,5830,1536,5822],[6606,5824,5823,5827,5825,5829],2491,2707,[6607,5826],1615,[6608,5828],1615,2712,2716,[6475,174,5839,5838,5836,5834,5837,5835,5833,175,2336,985,5840,5841],2531,[6544,174],[6545,668,38,175,174,667],[6479,986,174],[6546,38,175,174,667],[6547,75,991,174,986],[6548,38,668,175,174,555],[6549,175,174,555],[6550,175,174],[6551,5842,175,985,174,667,555],2541,[6554,75,991,986,985,175],[6611,5845],[6612,5846],2732,[6613,6291],456,[6621,5850],[6622,5851],2766,257,2713,[6609,2337],2781,1784,[6638,5865,5877,989,5897],[6639,5859],[6640,2339,5868,5887],[6641,5881,988],2657,2788,2737,[6555,556],[6642,5872,5873,987,2354,5907],[6557,5861,2339,2340,2342,5893,5894,5895,243,97],2661,[6643,2342,5883],[6644,2341,2353],[6646,5888,5889,5890,243,5903],[6647,2345,360],[6648,5871,5891,360],[6649,2343,2345,5875,243,2347,2348,5856,360,2349],[6650,2343,2349],1794,2667,[6651,2344,5880,5885],2745,2668,[6652,97],[6653,97],[6562,987,989,2338],[6654,1538,444,360],[6563,360],[6655,5860,988],[6616,2338],[6656,987,243],[6657,5862],2812,[6658,556],[6659,2348,5905],2750,2672,[6566,5879],2674,[6570,1541,243,1540,444,2353],2820,[6576,97],[6577,5898,359],[6661,359],[6662,5869,1541,359],[6663,97],[6664,444,359],[6619,2352,5863,5886],[6665,556,360],[6620,5878,556],[6666,2346,5874,2347],[6668,5921],[6670,5923],[6671,5924],[6672,5925],[6674,5927],[6675,5929],[6676,5928],[6677,5930],[6678,5931],[6680,5912,668,445],[6681,445],[6506,1560,2369,5953],[6683,66],[6684,5955],[6685,5956,66],[6686,5957,66],[6687,1559,66],[6688,5958,66],[6689,5959,66],[6690,5960,66],[6691,1559,66],[6692,1559,2368,5962,5963,66],[6693,2369,1560,1558],[6694,2368,1560,5961,66],2607,2608,[6508,447,1555,5952],[6696,247,2359,176],[6697,5935],[6509,1544,176],[6698,2366,993,244,247,2355,2357,1543,246],[6699,245,362,993,446,363,2366,2357,2355,247,996,364,1543,361],[6700,557,1550,994],[6515,245],[6702,669,176],[6704,244],[6518,1549,995,996,363,176],2445,[6705,557,447],[6707,557,1550,994,670,1547,446],[6522,364,244,557,361],[6709,447,2362],[6713,247,244,992,2361],[6530,1554,1545],[6531,1554],[6538,244,2367,66],[6539,5933,5945,669,447,2360],[6716,362],[6717,362,1549],[6718,362,361,364],[6719,670,2363,2365],[6720,670,557,2365],[6721,362,5950],[6723,1543,1551,993,5947,5938,247,246,5939],[6724,1557],[6725,1557],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}var s=r(39),a=n(s),o=r(77),u=i(o),l=Object.prototype.hasOwnProperty;t.hoist=function(e){function t(e,t){u.assertVariableDeclaration(e);var i=[];return e.declarations.forEach(function(e){r[e.id.name]=u.identifier(e.id.name),e.init?i.push(u.assignmentExpression("=",e.id,e.init)):t&&i.push(e.id)}),0===i.length?null:1===i.length?i[0]:u.sequenceExpression(i)}u.assertFunction(e.node);var r={};e.get("body").traverse({VariableDeclaration:{exit:function(e){var r=t(e.node,!1);null===r?e.remove():e.replaceWith(u.expressionStatement(r)),e.skip()}},ForStatement:function(e){var r=e.node.init;u.isVariableDeclaration(r)&&e.get("init").replaceWith(t(r,!1))},ForXStatement:function(e){var r=e.get("left");r.isVariableDeclaration()&&r.replaceWith(t(r.node,!0))},FunctionDeclaration:function(e){var t=e.node;r[t.id.name]=t.id;var i=u.expressionStatement(u.assignmentExpression("=",t.id,u.functionExpression(t.id,t.params,t.body,t.generator,t.expression)));e.parentPath.isBlockStatement()?(e.parentPath.unshiftContainer("body",i),e.remove()):e.replaceWith(i),e.skip()},FunctionExpression:function(e){e.skip()}});var i={};e.get("params").forEach(function(e){var t=e.node;u.isIdentifier(t)&&(i[t.name]=t)});var n=[];return(0,a.default)(r).forEach(function(e){l.call(i,e)||n.push(u.variableDeclarator(r[e],null))}),0===n.length?null:u.variableDeclaration("var",n)}},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(){y.default.ok(this instanceof s)}function a(e){s.call(this),m.assertLiteral(e),this.returnLoc=e}function o(e,t,r){s.call(this),m.assertLiteral(e),m.assertLiteral(t),r?m.assertIdentifier(r):r=null,this.breakLoc=e,this.continueLoc=t,this.label=r}function u(e){s.call(this),m.assertLiteral(e),this.breakLoc=e}function l(e,t,r){s.call(this),m.assertLiteral(e),t?y.default.ok(t instanceof p):t=null,r?y.default.ok(r instanceof c):r=null,y.default.ok(t||r),this.firstLoc=e,this.catchEntry=t,this.finallyEntry=r}function p(e,t){s.call(this),m.assertLiteral(e),m.assertIdentifier(t),this.firstLoc=e,this.paramId=t}function c(e,t){s.call(this),m.assertLiteral(e),m.assertLiteral(t),this.firstLoc=e,this.afterLoc=t}function f(e,t){s.call(this),m.assertLiteral(e),m.assertIdentifier(t),this.breakLoc=e,this.label=t}function h(e){y.default.ok(this instanceof h);var t=r(2370).Emitter;y.default.ok(e instanceof t),this.emitter=e,this.entryStack=[new a(e.finalLoc)]}var d=r(687),y=n(d),v=r(77),m=i(v),g=r(48);(0,g.inherits)(a,s),t.FunctionEntry=a,(0,g.inherits)(o,s),t.LoopEntry=o,(0,g.inherits)(u,s),t.SwitchEntry=u,(0,g.inherits)(l,s),t.TryEntry=l,(0,g.inherits)(p,s),t.CatchEntry=p,(0,g.inherits)(c,s),t.FinallyEntry=c,(0,g.inherits)(f,s),t.LabeledEntry=f;var b=h.prototype;t.LeapManager=h,b.withEntry=function(e,t){y.default.ok(e instanceof s),this.entryStack.push(e);try{t.call(this.emitter)}finally{var r=this.entryStack.pop();y.default.strictEqual(r,e)}},b._findLeapLocation=function(e,t){for(var r=this.entryStack.length-1;r>=0;--r){var i=this.entryStack[r],n=i[e];if(n)if(t){if(i.label&&i.label.name===t.name)return n}else if(!(i instanceof f))return n}return null},b.getBreakLoc=function(e){return this._findLeapLocation("breakLoc",e)},b.getContinueLoc=function(e){return this._findLeapLocation("continueLoc",e)}},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){function r(e){function t(e){return r||(Array.isArray(e)?e.some(t):l.isNode(e)&&(o.default.strictEqual(r,!1),r=i(e))),r}l.assertNode(e);var r=!1,n=l.VISITOR_KEYS[e.type];if(n)for(var s=0;s<n.length;s++){var a=n[s],u=e[a];t(u)}return r}function i(i){l.assertNode(i);var n=p(i);return c.call(n,e)?n[e]:c.call(f,i.type)?n[e]=!1:c.call(t,i.type)?n[e]=!0:n[e]=r(i)}return i.onlyChildren=r,i}var a=r(687),o=n(a),u=r(77),l=i(u),p=r(2484).makeAccessor(),c=Object.prototype.hasOwnProperty,f={FunctionExpression:!0},h={CallExpression:!0,ForInStatement:!0,UnaryExpression:!0,BinaryExpression:!0,AssignmentExpression:!0,UpdateExpression:!0,NewExpression:!0},d={YieldExpression:!0,BreakStatement:!0,ContinueStatement:!0,ReturnStatement:!0,ThrowStatement:!0};for(var y in d)c.call(d,y)&&(h[y]=d[y]);t.hasSideEffects=s("hasSideEffects",h),t.containsLeap=s("containsLeap",d)},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e){var t=e.node;if(c.assertFunction(t),t.id||(t.id=e.scope.parent.generateUidIdentifier("callee")),t.generator&&c.isFunctionDeclaration(t)){var r=e.findParent(function(e){return e.isProgram()||e.isBlockStatement()});if(!r)return t.id;var i=a(r),n=i.declarations[0].id,s=i.declarations[0].init.callee.object;c.assertArrayExpression(s);var o=s.elements.length;return s.elements.push(t.id),c.memberExpression(n,c.numericLiteral(o),!0)}return t.id}function a(e){var t=e.node;l.default.ok(Array.isArray(t.body));var r=v(t);return r.decl?r.decl:(r.decl=c.variableDeclaration("var",[c.variableDeclarator(e.scope.generateUidIdentifier("marked"),c.callExpression(c.memberExpression(c.arrayExpression([]),c.identifier("map"),!1),[y.runtimeProperty("mark")]))]),e.unshiftContainer("body",r.decl),r.decl)}function o(e,t){var r={didRenameArguments:!1,argsId:t};return e.traverse(m,r),r.didRenameArguments}var u=r(687),l=n(u),p=r(77),c=i(p),f=r(5964),h=r(2370),d=r(2371),y=i(d),v=r(2484).makeAccessor();t.visitor={Function:{exit:function(e,t){var r=e.node;if(r.generator){if(r.async){if(t.opts.asyncGenerators===!1)return}else if(t.opts.generators===!1)return}else{if(!r.async)return;if(t.opts.async===!1)return}var i=e.scope.generateUidIdentifier("context"),n=e.scope.generateUidIdentifier("args");e.ensureBlock();var a=e.get("body");r.async&&a.traverse(b),a.traverse(g,{context:i});var u=[],l=[];a.get("body").forEach(function(e){var t=e.node;t&&null!=t._blockHoist?u.push(t):l.push(t)}),u.length>0&&(a.node.body=l);var p=s(e);c.assertIdentifier(r.id);var d=c.identifier(r.id.name+"$"),v=(0,f.hoist)(e),m=o(e,n);m&&(v=v||c.variableDeclaration("var",[]),v.declarations.push(c.variableDeclarator(n,c.identifier("arguments"))));var x=new h.Emitter(i);x.explode(e.get("body")),v&&v.declarations.length>0&&u.push(v);var E=[x.getContextFunction(d),r.generator?p:c.nullLiteral(),c.thisExpression()],A=x.getTryLocsList();A&&E.push(A);var S=c.callExpression(y.runtimeProperty(r.async?"async":"wrap"),E);u.push(c.returnStatement(S)),r.body=c.blockStatement(u);var _=r.generator;_&&(r.generator=!1),r.async&&(r.async=!1),_&&c.isExpression(r)&&e.replaceWith(c.callExpression(y.runtimeProperty("mark"),[r])),e.requeue()}}};var m={"FunctionExpression|FunctionDeclaration":function(e){e.skip()},Identifier:function(e,t){"arguments"===e.node.name&&y.isReference(e)&&(e.replaceWith(t.argsId),t.didRenameArguments=!0)}},g={MetaProperty:function(e){var t=e.node;"function"===t.meta.name&&"sent"===t.property.name&&e.replaceWith(c.memberExpression(this.context,c.identifier("_sent")))}},b={Function:function(e){e.skip()},AwaitExpression:function(e){var t=e.node.argument;e.replaceWith(c.yieldExpression(c.callExpression(y.runtimeProperty("awrap"),[t]),!1))}}},[6461,366,17,1,77],[6462,77,1561,365],[6463,365],[6464,365],[6465,365],[6467,365,5969,5970,5972,5974,5975,5971],[6468,365],[6469,365],[6470,77],[6472,77],[6474,1,2372,77,1561],function(e,t){"use strict";e.exports={builtins:{Symbol:"symbol",Promise:"promise",Map:"map",WeakMap:"weak-map",Set:"set",WeakSet:"weak-set",Observable:"observable",setImmediate:"set-immediate",clearImmediate:"clear-immediate",asap:"asap"},methods:{Array:{concat:"array/concat",copyWithin:"array/copy-within",entries:"array/entries",every:"array/every",fill:"array/fill",filter:"array/filter",findIndex:"array/find-index",find:"array/find",forEach:"array/for-each",from:"array/from",includes:"array/includes",indexOf:"array/index-of",join:"array/join",keys:"array/keys",lastIndexOf:"array/last-index-of",map:"array/map",of:"array/of",pop:"array/pop",push:"array/push",reduceRight:"array/reduce-right",reduce:"array/reduce",reverse:"array/reverse",shift:"array/shift",slice:"array/slice",some:"array/some",sort:"array/sort",splice:"array/splice",unshift:"array/unshift",values:"array/values"},JSON:{stringify:"json/stringify"},Object:{assign:"object/assign",create:"object/create",defineProperties:"object/define-properties",defineProperty:"object/define-property",entries:"object/entries",freeze:"object/freeze",getOwnPropertyDescriptor:"object/get-own-property-descriptor",getOwnPropertyDescriptors:"object/get-own-property-descriptors",getOwnPropertyNames:"object/get-own-property-names",getOwnPropertySymbols:"object/get-own-property-symbols",getPrototypeOf:"object/get-prototype-of",isExtensible:"object/is-extensible",isFrozen:"object/is-frozen",isSealed:"object/is-sealed",is:"object/is",keys:"object/keys",preventExtensions:"object/prevent-extensions",seal:"object/seal",setPrototypeOf:"object/set-prototype-of",values:"object/values"},RegExp:{escape:"regexp/escape"},Math:{acosh:"math/acosh",asinh:"math/asinh",atanh:"math/atanh",cbrt:"math/cbrt",clz32:"math/clz32",cosh:"math/cosh",expm1:"math/expm1",fround:"math/fround",hypot:"math/hypot",imul:"math/imul",log10:"math/log10",log1p:"math/log1p",log2:"math/log2",sign:"math/sign",sinh:"math/sinh",tanh:"math/tanh",trunc:"math/trunc",iaddh:"math/iaddh",isubh:"math/isubh",imulh:"math/imulh",umulh:"math/umulh"},Symbol:{asyncIterator:"symbol/async-iterator",for:"symbol/for",hasInstance:"symbol/has-instance",isConcatSpreadable:"symbol/is-concat-spreadable",iterator:"symbol/iterator",keyFor:"symbol/key-for",match:"symbol/match",observable:"symbol/observable",replace:"symbol/replace",search:"symbol/search",species:"symbol/species",split:"symbol/split",toPrimitive:"symbol/to-primitive",toStringTag:"symbol/to-string-tag",unscopables:"symbol/unscopables"},String:{at:"string/at",codePointAt:"string/code-point-at",endsWith:"string/ends-with",fromCodePoint:"string/from-code-point",includes:"string/includes",matchAll:"string/match-all",padLeft:"string/pad-left",padRight:"string/pad-right",padStart:"string/pad-start",padEnd:"string/pad-end",raw:"string/raw",repeat:"string/repeat",startsWith:"string/starts-with",trim:"string/trim",trimLeft:"string/trim-left",trimRight:"string/trim-right",trimStart:"string/trim-start",trimEnd:"string/trim-end"},Number:{EPSILON:"number/epsilon",isFinite:"number/is-finite",isInteger:"number/is-integer",isNaN:"number/is-nan",isSafeInteger:"number/is-safe-integer",MAX_SAFE_INTEGER:"number/max-safe-integer",MIN_SAFE_INTEGER:"number/min-safe-integer",parseFloat:"number/parse-float",parseInt:"number/parse-int"},Reflect:{apply:"reflect/apply",construct:"reflect/construct",defineProperty:"reflect/define-property",deleteProperty:"reflect/delete-property",enumerate:"reflect/enumerate",getOwnPropertyDescriptor:"reflect/get-own-property-descriptor",getPrototypeOf:"reflect/get-prototype-of",get:"reflect/get",has:"reflect/has",isExtensible:"reflect/is-extensible",ownKeys:"reflect/own-keys",preventExtensions:"reflect/prevent-extensions",setPrototypeOf:"reflect/set-prototype-of",set:"reflect/set",defineMetadata:"reflect/define-metadata",deleteMetadata:"reflect/delete-metadata",getMetadata:"reflect/get-metadata",getMetadataKeys:"reflect/get-metadata-keys",getOwnMetadata:"reflect/get-own-metadata",getOwnMetadataKeys:"reflect/get-own-metadata-keys",hasMetadata:"reflect/has-metadata",hasOwnMetadata:"reflect/has-own-metadata",metadata:"reflect/metadata"},System:{global:"system/global"},Error:{isError:"error/is-error"},Date:{},Function:{}}}},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.definitions=void 0,t.default=function(e){function t(e){return e.moduleName||"babel-runtime"}function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var i=e.types,n=["interopRequireWildcard","interopRequireDefault"];return{pre:function(e){var r=t(this.opts);this.opts.helpers!==!1&&e.set("helperGenerator",function(t){if(n.indexOf(t)<0)return e.addImport(r+"/helpers/"+t,"default",t)}),this.setDynamic("regeneratorIdentifier",function(){return e.addImport(r+"/regenerator","default","regeneratorRuntime")})},visitor:{ReferencedIdentifier:function(e,n){var a=e.node,o=e.parent,u=e.scope;if("regeneratorRuntime"===a.name&&n.opts.regenerator!==!1)return void e.replaceWith(n.get("regeneratorIdentifier"));if(n.opts.polyfill!==!1&&!i.isMemberExpression(o)&&r(s.default.builtins,a.name)&&!u.getBindingIdentifier(a.name)){var l=t(n.opts);e.replaceWith(n.addImport(l+"/core-js/"+s.default.builtins[a.name],"default",a.name))}},CallExpression:function(e,r){if(r.opts.polyfill!==!1&&!e.node.arguments.length){var n=e.node.callee;if(i.isMemberExpression(n)&&n.computed&&e.get("callee.property").matchesPattern("Symbol.iterator")){var s=t(r.opts);e.replaceWith(i.callExpression(r.addImport(s+"/core-js/get-iterator","default","getIterator"),[n.object]))}}},BinaryExpression:function(e,r){if(r.opts.polyfill!==!1&&"in"===e.node.operator&&e.get("left").matchesPattern("Symbol.iterator")){var n=t(r.opts);e.replaceWith(i.callExpression(r.addImport(n+"/core-js/is-iterable","default","isIterable"),[e.node.right]))}},MemberExpression:{enter:function(e,n){if(n.opts.polyfill!==!1&&e.isReferenced()){var a=e.node,o=a.object,u=a.property;if(i.isReferenced(o,a)&&!a.computed&&r(s.default.methods,o.name)){var l=s.default.methods[o.name];if(r(l,u.name)&&!e.scope.getBindingIdentifier(o.name)){if("Object"===o.name&&"defineProperty"===u.name&&e.parentPath.isCallExpression()){var p=e.parentPath.node;if(3===p.arguments.length&&i.isLiteral(p.arguments[1]))return}var c=t(n.opts);e.replaceWith(n.addImport(c+"/core-js/"+l[u.name],"default",o.name+"$"+u.name))}}}},exit:function(e,n){if(n.opts.polyfill!==!1&&e.isReferenced()){var a=e.node,o=a.object;if(r(s.default.builtins,o.name)&&!e.scope.getBindingIdentifier(o.name)){var u=t(n.opts);e.replaceWith(i.memberExpression(n.addImport(u+"/core-js/"+s.default.builtins[o.name],"default",o.name),a.property,a.computed))}}}}}}};var n=r(5979),s=i(n);t.definitions=s.default},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(e){var t=e.messages;return{visitor:{ReferencedIdentifier:function(e){var r=e.node,i=e.scope,n=i.getBinding(r.name);if(n&&"type"===n.kind&&!e.parentPath.isFlow())throw e.buildCodeFrameError(t.get("undeclaredVariableType",r.name),ReferenceError);if(!i.hasBinding(r.name)){var a=i.getAllBindings(),o=void 0,u=-1;for(var l in a){var p=(0,s.default)(r.name,l);p<=0||p>3||p<=u||(o=l,u=p)}var c=void 0;throw c=o?t.get("undeclaredVariableSuggestion",r.name,o):t.get("undeclaredVariable",r.name),e.buildCodeFrameError(c,ReferenceError)}}}}};var n=r(5982),s=i(n);e.exports=t.default},function(e,t){"use strict";var r=[],i=[];e.exports=function(e,t){if(e===t)return 0;var n=e.length,s=t.length;if(0===n)return s;if(0===s)return n;for(var a,o,u,l,p=0,c=0;p<n;)i[p]=e.charCodeAt(p),r[p]=++p;for(;c<s;)for(a=t.charCodeAt(c),u=c++,o=c,p=0;p<n;p++)l=a===i[p]?u:u+1,u=r[p],o=r[p]=u>o?l>o?o+1:l:l>u?u+1:l;return o}},function(e,t,r){"use strict";var i=r(2374),n=i.buildPreset;e.exports=function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return{presets:[t.es2015!==!1&&[n,t.es2015],t.es2016!==!1&&r(2375),t.es2017!==!1&&r(2376)].filter(Boolean)}}},function(e,t,r){e.exports={plugins:[r(2331),r(2261),r(698),r(1065),r(2283)],env:{development:{plugins:[]}}}},function(e,t,r){e.exports={presets:[r(2377)],plugins:[r(1842),r(2262)]}},[6670,2431],[6674,2435],[6677,2438],function(e,t,r){e.exports={default:r(6228),__esModule:!0}},[6863,450],[6865,450],4643,[6866,449],4645,4646,[6867,450],[6869,5999],4649,[6870,5998],function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){function r(e){var t=i[s];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var i=e.split("."),n=[this.node],s=0;n.length;){var a=n.shift();if(t&&s===i.length)return!0;if(C.isIdentifier(a)){if(!r(a.name))return!1}else if(C.isLiteral(a)){if(!r(a.value))return!1}else{if(C.isMemberExpression(a)){if(a.computed&&!C.isLiteral(a.property))return!1;n.unshift(a.property),n.unshift(a.object);continue}if(!C.isThisExpression(a))return!1;if(!r("this"))return!1}if(++s>i.length)return!1}return s===i.length}function a(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}function o(){return this.scope.isStatic(this.node)}function u(e){return!this.has(e)}function l(e,t){return this.node[e]===t}function p(e){return C.isType(this.type,e)}function c(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()}function f(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?C.isBlockStatement(e):!!this.isBlockStatement()&&C.isExpression(e))}function h(e){var t=this,r=!0;do{var i=t.container;if(t.isFunction()&&!r)return!!e;if(r=!1,Array.isArray(i)&&t.key!==i.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0}function d(){return!this.parentPath.isLabeledStatement()&&!C.isBlockStatement(this.container)&&(0,w.default)(C.STATEMENT_OR_BLOCK_KEYS,this.key)}function y(e,t){if(!this.isReferencedIdentifier())return!1;var r=this.scope.getBinding(this.node.name);if(!r||"module"!==r.kind)return!1;var i=r.path,n=i.parentPath;return!!n.isImportDeclaration()&&(n.node.source.value===e&&(!t||(!(!i.isImportDefaultSpecifier()||"default"!==t)||(!(!i.isImportNamespaceSpecifier()||"*"!==t)||!(!i.isImportSpecifier()||i.node.imported.name!==t)))));
+}function v(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""}function m(e){return"after"!==this._guessExecutionStatusRelativeTo(e)}function g(e){var t=e.scope.getFunctionParent(),r=this.scope.getFunctionParent();if(t.node!==r.node){var i=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(i)return i;e=t.path}var n=e.getAncestry();if(n.indexOf(this)>=0)return"after";var s=this.getAncestry(),a=void 0,o=void 0,u=void 0;for(u=0;u<s.length;u++){var l=s[u];if(o=n.indexOf(l),o>=0){a=l;break}}if(!a)return"before";var p=n[o-1],c=s[u-1];if(!p||!c)return"before";if(p.listKey&&p.container===c.container)return p.key>c.key?"before":"after";var f=C.VISITOR_KEYS[p.type].indexOf(p.key),h=C.VISITOR_KEYS[c.type].indexOf(c.key);return f>h?"before":"after"}function b(e){var t=e.path;if(t.isFunctionDeclaration()){var r=t.scope.getBinding(t.node.id.name);if(!r.references)return"before";for(var i=r.referencePaths,n=i,s=Array.isArray(n),a=0,n=s?n:(0,T.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if("callee"!==u.key||!u.parentPath.isCallExpression())return}for(var l=void 0,p=i,c=Array.isArray(p),f=0,p=c?p:(0,T.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h,y=!!d.find(function(e){return e.node===t.node});if(!y){var v=this._guessExecutionStatusRelativeTo(d);if(l){if(l!==v)return}else l=v}}return l}}function x(e,t){return this._resolve(e,t)||this}function E(e,t){var r=this;if(!(t&&t.indexOf(this)>=0))if(t=t||[],t.push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var i=this.scope.getBinding(this.node.name);if(!i)return;if(!i.constant)return;if("module"===i.kind)return;if(i.path!==this){var n=function(){var n=i.path.resolve(e,t);return r.find(function(e){return e.node===n.node})?{v:void 0}:{v:n}}();if("object"===("undefined"==typeof n?"undefined":(0,S.default)(n)))return n.v}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var s=this.toComputedKey();if(!C.isLiteral(s))return;var a=s.value,o=this.get("object").resolve(e,t);if(o.isObjectExpression())for(var u=o.get("properties"),l=u,p=Array.isArray(l),c=0,l=p?l:(0,T.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;if(h.isProperty()){var d=h.get("key"),y=h.isnt("computed")&&d.isIdentifier({name:a});if(y=y||d.isLiteral({value:a}))return h.get("value").resolve(e,t)}}else if(o.isArrayExpression()&&!isNaN(+a)){var v=o.get("elements"),m=v[a];if(m)return m.resolve(e,t)}}}}t.__esModule=!0,t.is=void 0;var A=r(11),S=n(A),_=r(1),T=n(_);t.matchesPattern=s,t.has=a,t.isStatic=o,t.isnt=u,t.equals=l,t.isNodeType=p,t.canHaveVariableDeclarationOrExpression=c,t.canSwapBetweenExpressionAndStatement=f,t.isCompletionRecord=h,t.isStatementOrBlock=d,t.referencesImport=y,t.getSource=v,t.willIMaybeExecuteBefore=m,t._guessExecutionStatusRelativeTo=g,t._guessExecutionStatusRelativeToDifferentFunctions=b,t.resolve=x,t._resolve=E;var P=r(1566),w=n(P),k=r(3),C=i(k);t.is=a},function(e,t,r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(2),a=n(s),o=r(1),u=n(o),l=r(3),p=i(l),c={ReferencedIdentifier:function(e,t){if(!e.isJSXIdentifier()||!l.react.isCompatTag(e.node.name)){var r=e.scope.getBinding(e.node.name);if(r&&r===t.scope.getBinding(e.node.name))if(r.constant)t.bindings[e.node.name]=r;else for(var i=r.constantViolations,n=Array.isArray(i),s=0,i=n?i:(0,u.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;t.breakOnScopePaths=t.breakOnScopePaths.concat(o.getAncestry())}}}},f=function(){function e(t,r){(0,a.default)(this,e),this.breakOnScopePaths=[],this.bindings={},this.scopes=[],this.scope=r,this.path=t}return e.prototype.isCompatibleScope=function(e){for(var t in this.bindings){var r=this.bindings[t];if(!e.bindingIdentifierEquals(t,r.identifier))return!1}return!0},e.prototype.getCompatibleScopes=function(){var e=this.path.scope;do{if(!this.isCompatibleScope(e))break;if(this.scopes.push(e),this.breakOnScopePaths.indexOf(e.path)>=0)break}while(e=e.parent)},e.prototype.getAttachmentPath=function(){var e=this.scopes,t=e.pop();if(t){if(t.path.isFunction()){if(this.hasOwnParamBindings(t)){if(this.scope===t)return;return t.path.get("body").get("body")[0]}return this.getNextScopeStatementParent()}return t.path.isProgram()?this.getNextScopeStatementParent():void 0}},e.prototype.getNextScopeStatementParent=function(){var e=this.scopes.pop();if(e)return e.path.getStatementParent()},e.prototype.hasOwnParamBindings=function(e){for(var t in this.bindings)if(e.hasOwnBinding(t)){var r=this.bindings[t];if("param"===r.kind)return!0}return!1},e.prototype.run=function(){var e=this.path.node;if(!e._hoisted){e._hoisted=!0,this.path.traverse(c,this),this.getCompatibleScopes();var t=this.getAttachmentPath();if(t&&t.getFunctionParent()!==this.path.getFunctionParent()){var r=t.scope.generateUidIdentifier("ref");t.insertBefore([p.variableDeclaration("var",[p.variableDeclarator(r,this.path.node)])]);var i=this.path.parentPath;i.isJSXElement()&&this.path.container===i.node.children&&(r=p.JSXExpressionContainer(r)),this.path.replaceWith(r)}}},e}();t.default=f,e.exports=t.default},function(e,t){"use strict";t.__esModule=!0;t.hooks=[function(e,t){if("body"===e.key&&t.isArrowFunctionExpression())return e.replaceWith(e.scope.buildUndefinedNode()),!0},function(e,t){var r=!1;if(r=r||"test"===e.key&&(t.isWhile()||t.isSwitchCase()),r=r||"declaration"===e.key&&t.isExportDeclaration(),r=r||"body"===e.key&&t.isLabeledStatement(),r=r||"declarations"===e.listKey&&t.isVariableDeclaration()&&1===t.node.declarations.length,r=r||"expression"===e.key&&t.isExpressionStatement())return t.remove(),!0},function(e,t){if(t.isSequenceExpression()&&1===t.node.expressions.length)return t.replaceWith(t.node.expressions[0]),!0},function(e,t){if(t.isBinary())return"left"===e.key?t.replaceWith(t.node.right):t.replaceWith(t.node.left),!0}]},[6871,1e3,6001,450],[6872,6002],[6873,449,450],[6875,2382],[6876,2381,6083],[6728,560,177],[6729,6052,6053,6054,6055,6056],[6732,6069,6070,6071,6072,6073],[6733,560,177],[6807,177],[6734,560,177],[6735,1001,6076,6077,6078,6079,6080],[6737,177],[6738,560,177],3728,3729,1602,1603,2458,[6808,1007],[6741,1003,673],[6742,6014,6019,1563,6023,6038,6045,6046,6048,6050,6058,6059,6060,1008,6087,2391,561,673],[6743,561],[6744,6021,1008],[6745,2388],[6494,6057],[6746,1567,2391,6062,561,2393],3738,[6809,6012,6063],1951,3879,3740,[6747,2384,2396],[6810,6020],3743,3744,[6750,1564],[6751,6017,2386,6074],3747,[6752,6018,2386,6075],[6753,2384],[6754,1564],2467,[6756,1003,2389],[6757,177],[6759,6026,2389,673],[6760,6032],[6764,6008,2383,6011,6013,6016,2393],3758,[6766,1006],3761,[6767,1006],[6768,1006],[6769,1006],2581,3766,[6771,1564,6039,6040,6041,6042,6043,6044],[6772,6025,2388,1005],3771,[6775,6047],3909,3773,[6776,1002],[6777,1002],[6778,1002],[6779,1002],[6780,6009,1001,2383],[6781,1004],[6782,1004],[6783,1004],[6784,1004],1960,830,[6787,1001],3786,3787,3788,[6788,1001,6010],[6791,1563,1003,2387,672,1005,673],[6811,1003,2387,6088],[6812,6024],[6813,2385,6022,6082,2397],[6794,6086],[6796,672,1568],[6797,177,6091],[6815,6031,2390,1565,1005],[6816,6033,2392,1569,6094],3799,3800,[6501,6093],[6503,1567,561,2396],[6801,6035],[6817,6036,673],[6823,366,17,1,6199,6198,6200,1577,3,449],[6824,3,1570,368],[6825,368],[6826,368],[6827,368],[6467,368,6097,6098,6100,6102,6103,6099],[6468,368],[6469,368],[6828,3],[6830,3],[6832,1,2398,185,3,1570],[6728,562,249],[6729,6159,6160,6161,6162,6163],[6733,562,249],[6738,562,249],3728,3729,[6834,6125],4059,2458,4062,[6741,2411,563],[6742,1572,2403,2405,6117,6139,6146,6147,6154,2414,6166,6167,6168,178,6197,1012,451,563],[6743,451],[6835,6122,6149],[6836,6150],[6837,6121,563],[6744,6115,178],4071,[6494,6165],[6840,1572,2412,6152,6153,2414,178,1012,6201],[6841,1572,2408],[6746,2423,1012,6170,451,2420],[6842,6131,6132,6195,178,6204],3738,[6843,6127,6156,2419],[6844,2408,6193,6194,1013,2417,2419,1016],[6845,2406],3740,[6747,1573,1578],[6846,2401,6113,6114,6137,6151,1015],4086,3743,3744,[6750,1574],[6751,6111,2404,2418],3747,[6752,6112,2404,1015],[6753,1573],[6754,1574],2467,[6756,2411,2413],[6757,249],[6847,1576],4099,[6848,2400,6203,1015],[6850,1573,2402,2412,2418,1015],[6851,2407,563],[6759,6123,2413,563],[6760,2409],[6852,2417,563],3758,[6765,2410,2422,178,2415,1013,1017,1577,1016],[6766,1014],3761,[6767,1014],[6768,1014],[6769,1014],[6770,6134,2422,178,1017,1577],2581,3766,[6771,1574,6140,6141,6142,6143,6144,6145],[6772,6119,1575,2416],3771,[6775,6148],3773,[6776,1010],[6777,1010],[6778,1010],[6779,1010],[6780,6108,1009,2399],[6781,1011],[6782,1011],[6783,1011],[6784,1011],4130,4131,[6787,1009],3786,3787,3788,[6788,1009,1571],[6789,6202,6207],[6812,6118],372,[6639,6192],[6854,2403,6120,6129,178],[6855,2406],[6856,6124,6158],4146,[6796,1576,452],[6797,249,6206],[6857,452],[6858,1575,1012,452],[6859,451],[6860,1017,452],[6800,1571],4155,[6861,2409,6133,1013,1016],3799,3800,[6801,6135],[6862,6136],2531,function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){return e[e.length-1]}var s=r(179),a=i(s),o=a.default.prototype;o.addComment=function(e){this.state.trailingComments.push(e),this.state.leadingComments.push(e)},o.processComment=function(e){if(!("Program"===e.type&&e.body.length>0)){var t=this.state.commentStack,r=void 0,i=void 0,s=void 0,a=void 0;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=e.end?(i=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var o=n(t);t.length>0&&o.trailingComments&&o.trailingComments[0].start>=e.end&&(i=o.trailingComments,o.trailingComments=null)}for(;t.length>0&&n(t).start>=e.start;)r=t.pop();if(r){if(r.leadingComments)if(r!==e&&n(r.leadingComments).end<=e.start)e.leadingComments=r.leadingComments,r.leadingComments=null;else for(s=r.leadingComments.length-2;s>=0;--s)if(r.leadingComments[s].end<=e.start){e.leadingComments=r.leadingComments.splice(0,s+1);break}}else if(this.state.leadingComments.length>0)if(n(this.state.leadingComments).end<=e.start){if(this.state.commentPreviousNode)for(a=0;a<this.state.leadingComments.length;a++)this.state.leadingComments[a].end<this.state.commentPreviousNode.end&&(this.state.leadingComments.splice(a,1),a--);this.state.leadingComments.length>0&&(e.leadingComments=this.state.leadingComments,this.state.leadingComments=[])}else{for(s=0;s<this.state.leadingComments.length&&!(this.state.leadingComments[s].end>e.start);s++);e.leadingComments=this.state.leadingComments.slice(0,s),0===e.leadingComments.length&&(e.leadingComments=null),i=this.state.leadingComments.slice(s),0===i.length&&(i=null)}this.state.commentPreviousNode=e,i&&(i.length&&i[0].start>=e.start&&n(i).end<=e.end?e.innerComments=i:e.trailingComments=i),t.push(e)}}},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var n=r(16),s=i(n),a=r(1),o=i(a),u=r(180),l=r(179),p=i(l),c=r(675),f=p.default.prototype;f.checkPropClash=function(e,t){if(!e.computed){var r=e.key,i=void 0;switch(r.type){case"Identifier":i=r.name;break;case"StringLiteral":case"NumericLiteral":i=String(r.value);break;default:return}"__proto__"===i&&"init"===e.kind&&(t.proto&&this.raise(r.start,"Redefinition of __proto__ property"),t.proto=!0)}},f.parseExpression=function(e,t){var r=this.state.start,i=this.state.startLoc,n=this.parseMaybeAssign(e,t);if(this.match(u.types.comma)){var s=this.startNodeAt(r,i);for(s.expressions=[n];this.eat(u.types.comma);)s.expressions.push(this.parseMaybeAssign(e,t));return this.toReferencedList(s.expressions),this.finishNode(s,"SequenceExpression")}return n},f.parseMaybeAssign=function(e,t,r,i){if(this.match(u.types._yield)&&this.state.inGenerator)return this.parseYield();var n=void 0;t?n=!1:(t={start:0},n=!0);var s=this.state.start,a=this.state.startLoc;(this.match(u.types.parenL)||this.match(u.types.name))&&(this.state.potentialArrowAt=this.state.start);var o=this.parseMaybeConditional(e,t,i);if(r&&(o=r.call(this,o,s,a)),this.state.type.isAssign){var l=this.startNodeAt(s,a);if(l.operator=this.state.value,l.left=this.match(u.types.eq)?this.toAssignable(o):o,t.start=0,this.checkLVal(o),o.extra&&o.extra.parenthesized){var p=void 0;"ObjectPattern"===o.type?p="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===o.type&&(p="`([a]) = 0` use `([a] = 0)`"),p&&this.raise(o.start,"You're trying to assign to a parenthesized expression, eg. instead of "+p)}return this.next(),l.right=this.parseMaybeAssign(e),this.finishNode(l,"AssignmentExpression")}return n&&t.start&&this.unexpected(t.start),o},f.parseMaybeConditional=function(e,t,r){var i=this.state.start,n=this.state.startLoc,s=this.parseExprOps(e,t);return t&&t.start?s:this.parseConditional(s,e,i,n,r)},f.parseConditional=function(e,t,r,i){if(this.eat(u.types.question)){var n=this.startNodeAt(r,i);return n.test=e,n.consequent=this.parseMaybeAssign(),this.expect(u.types.colon),n.alternate=this.parseMaybeAssign(t),this.finishNode(n,"ConditionalExpression")}return e},f.parseExprOps=function(e,t){var r=this.state.start,i=this.state.startLoc,n=this.parseMaybeUnary(t);return t&&t.start?n:this.parseExprOp(n,r,i,-1,e)},f.parseExprOp=function(e,t,r,i,n){var s=this.state.type.binop;if(!(null==s||n&&this.match(u.types._in))&&s>i){var a=this.startNodeAt(t,r);a.left=e,a.operator=this.state.value,"**"===a.operator&&"UnaryExpression"===e.type&&e.extra&&!e.extra.parenthesizedArgument&&this.raise(e.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var o=this.state.type;this.next();var l=this.state.start,p=this.state.startLoc;return a.right=this.parseExprOp(this.parseMaybeUnary(),l,p,o.rightAssociative?s-1:s,n),this.finishNode(a,o===u.types.logicalOR||o===u.types.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(a,t,r,i,n)}return e},f.parseMaybeUnary=function(e){if(this.state.type.prefix){var t=this.startNode(),r=this.match(u.types.incDec);t.operator=this.state.value,t.prefix=!0,this.next();var i=this.state.type;return this.addExtra(t,"parenthesizedArgument",i===u.types.parenL),t.argument=this.parseMaybeUnary(),e&&e.start&&this.unexpected(e.start),r?this.checkLVal(t.argument):this.state.strict&&"delete"===t.operator&&"Identifier"===t.argument.type&&this.raise(t.start,"Deleting local variable in strict mode"),this.finishNode(t,r?"UpdateExpression":"UnaryExpression")}var n=this.state.start,s=this.state.startLoc,a=this.parseExprSubscripts(e);if(e&&e.start)return a;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(n,s);o.operator=this.state.value,o.prefix=!1,o.argument=a,this.checkLVal(a),this.next(),a=this.finishNode(o,"UpdateExpression")}return a},f.parseExprSubscripts=function(e){var t=this.state.start,r=this.state.startLoc,i=this.state.potentialArrowAt,n=this.parseExprAtom(e);return"ArrowFunctionExpression"===n.type&&n.start===i?n:e&&e.start?n:this.parseSubscripts(n,t,r)},f.parseSubscripts=function(e,t,r,i){for(;;){if(!i&&this.eat(u.types.doubleColon)){var n=this.startNodeAt(t,r);return n.object=e,n.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(n,"BindExpression"),t,r,i)}if(this.eat(u.types.dot)){var s=this.startNodeAt(t,r);s.object=e,s.property=this.parseIdentifier(!0),s.computed=!1,e=this.finishNode(s,"MemberExpression")}else if(this.eat(u.types.bracketL)){var a=this.startNodeAt(t,r);a.object=e,a.property=this.parseExpression(),a.computed=!0,this.expect(u.types.bracketR),e=this.finishNode(a,"MemberExpression")}else if(!i&&this.match(u.types.parenL)){var o=this.state.potentialArrowAt===e.start&&"Identifier"===e.type&&"async"===e.name&&!this.canInsertSemicolon();this.next();var l=this.startNodeAt(t,r);if(l.callee=e,l.arguments=this.parseCallExpressionArguments(u.types.parenR,this.hasPlugin("trailingFunctionCommas"),o),e=this.finishNode(l,"CallExpression"),o&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(t,r),l);this.toReferencedList(l.arguments)}else{if(!this.match(u.types.backQuote))return e;var p=this.startNodeAt(t,r);p.tag=e,p.quasi=this.parseTemplate(),e=this.finishNode(p,"TaggedTemplateExpression")}}},f.parseCallExpressionArguments=function(e,t,r){for(var i=void 0,n=[],s=!0;!this.eat(e);){if(s)s=!1;else if(this.expect(u.types.comma),t&&this.eat(e))break;this.match(u.types.parenL)&&!i&&(i=this.state.start),n.push(this.parseExprListItem())}return r&&i&&this.shouldParseAsyncArrow()&&this.unexpected(),n},f.shouldParseAsyncArrow=function(){return this.match(u.types.arrow)},f.parseAsyncArrowFromCallExpression=function(e,t){return this.hasPlugin("asyncFunctions")||this.unexpected(),this.expect(u.types.arrow),this.parseArrowExpression(e,t.arguments,!0)},f.parseNoCallExpr=function(){var e=this.state.start,t=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,t,!0)},f.parseExprAtom=function(e){var t=void 0,r=this.state.potentialArrowAt===this.state.start;switch(this.state.type){case u.types._super:return this.state.inMethod||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),t=this.startNode(),this.next(),this.match(u.types.parenL)||this.match(u.types.bracketL)||this.match(u.types.dot)||this.unexpected(),this.match(u.types.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(t.start,"super() outside of class constructor"),this.finishNode(t,"Super");case u.types._this:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case u.types._yield:this.state.inGenerator&&this.unexpected();case u.types.name:t=this.startNode();var i=this.hasPlugin("asyncFunctions")&&"await"===this.state.value&&this.state.inAsync,n=this.shouldAllowYieldIdentifier(),s=this.parseIdentifier(i||n);if(this.hasPlugin("asyncFunctions"))if("await"===s.name){if(this.state.inAsync||this.inModule)return this.parseAwait(t)}else{if("async"===s.name&&this.match(u.types._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(t,!1,!1,!0);if(r&&"async"===s.name&&this.match(u.types.name)){var a=[this.parseIdentifier()];return this.expect(u.types.arrow),this.parseArrowExpression(t,a,!0)}}return r&&!this.canInsertSemicolon()&&this.eat(u.types.arrow)?this.parseArrowExpression(t,[s]):s;case u.types._do:if(this.hasPlugin("doExpressions")){var o=this.startNode();this.next();var l=this.state.inFunction,p=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,o.body=this.parseBlock(!1,!0),this.state.inFunction=l,this.state.labels=p,this.finishNode(o,"DoExpression")}case u.types.regexp:var c=this.state.value;return t=this.parseLiteral(c.value,"RegExpLiteral"),t.pattern=c.pattern,t.flags=c.flags,t;case u.types.num:return this.parseLiteral(this.state.value,"NumericLiteral");case u.types.string:return this.parseLiteral(this.state.value,"StringLiteral");case u.types._null:return t=this.startNode(),this.next(),this.finishNode(t,"NullLiteral");case u.types._true:case u.types._false:return t=this.startNode(),t.value=this.match(u.types._true),this.next(),this.finishNode(t,"BooleanLiteral");case u.types.parenL:return this.parseParenAndDistinguishExpression(null,null,r);case u.types.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(u.types.bracketR,!0,!0,e),this.toReferencedList(t.elements),this.finishNode(t,"ArrayExpression");case u.types.braceL:return this.parseObj(!1,e);case u.types._function:return this.parseFunctionExpression();case u.types.at:this.parseDecorators();case u.types._class:return t=this.startNode(),this.takeDecorators(t),this.parseClass(t,!1);case u.types._new:return this.parseNew();case u.types.backQuote:return this.parseTemplate();case u.types.doubleColon:t=this.startNode(),this.next(),t.object=null;var f=t.callee=this.parseNoCallExpr();if("MemberExpression"===f.type)return this.finishNode(t,"BindExpression");this.raise(f.start,"Binding should be performed on object property.");default:this.unexpected()}},f.parseFunctionExpression=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(u.types.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(e,t,"sent"):this.parseFunction(e,!1)},f.parseMetaProperty=function(e,t,r){return e.meta=t,e.property=this.parseIdentifier(!0),e.property.name!==r&&this.raise(e.property.start,"The only valid meta property for new is "+t.name+"."+r),this.finishNode(e,"MetaProperty")},f.parseLiteral=function(e,t){var r=this.startNode();return this.addExtra(r,"rawValue",e),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),r.value=e,this.next(),this.finishNode(r,t)},f.parseParenExpression=function(){this.expect(u.types.parenL);var e=this.parseExpression();return this.expect(u.types.parenR),e},f.parseParenAndDistinguishExpression=function(e,t,r,i){e=e||this.state.start,t=t||this.state.startLoc;var n=void 0;this.expect(u.types.parenL);for(var s=this.state.start,a=this.state.startLoc,l=[],p=!0,c={start:0},f=void 0,h=void 0,d={start:0};!this.match(u.types.parenR);){if(p)p=!1;else if(this.expect(u.types.comma),this.match(u.types.parenR)&&this.hasPlugin("trailingFunctionCommas")){h=this.state.start;break}if(this.match(u.types.ellipsis)){var y=this.state.start,v=this.state.startLoc;f=this.state.start,l.push(this.parseParenItem(this.parseRest(),v,y));break}l.push(this.parseMaybeAssign(!1,c,this.parseParenItem,d))}var m=this.state.start,g=this.state.startLoc;this.expect(u.types.parenR);var b=this.startNodeAt(e,t);if(r&&!this.canInsertSemicolon()&&(b=this.parseArrow(b))){var x=!0,E=!1,A=void 0;try{for(var S,_=(0,o.default)(l);!(x=(S=_.next()).done);x=!0){var T=S.value;T.extra&&T.extra.parenthesized&&this.unexpected(T.extra.parenStart)}}catch(e){E=!0,A=e}finally{try{!x&&_.return&&_.return()}finally{if(E)throw A}}return this.parseArrowExpression(b,l,i)}if(!l.length){if(i)return;this.unexpected(this.state.lastTokStart)}return h&&this.unexpected(h),f&&this.unexpected(f),c.start&&this.unexpected(c.start),d.start&&this.unexpected(d.start),l.length>1?(n=this.startNodeAt(s,a),n.expressions=l,this.toReferencedList(n.expressions),this.finishNodeAt(n,"SequenceExpression",m,g)):n=l[0],this.addExtra(n,"parenthesized",!0),this.addExtra(n,"parenStart",e),n},f.parseArrow=function(e){if(this.eat(u.types.arrow))return e},f.parseParenItem=function(e){return e},f.parseNew=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.eat(u.types.dot)?this.parseMetaProperty(e,t,"target"):(e.callee=this.parseNoCallExpr(),this.eat(u.types.parenL)?(e.arguments=this.parseExprList(u.types.parenR,this.hasPlugin("trailingFunctionCommas")),this.toReferencedList(e.arguments)):e.arguments=[],this.finishNode(e,"NewExpression"))},f.parseTemplateElement=function(){var e=this.startNode();return e.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),e.tail=this.match(u.types.backQuote),this.finishNode(e,"TemplateElement")},f.parseTemplate=function(){var e=this.startNode();this.next(),e.expressions=[];var t=this.parseTemplateElement();for(e.quasis=[t];!t.tail;)this.expect(u.types.dollarBraceL),e.expressions.push(this.parseExpression()),this.expect(u.types.braceR),e.quasis.push(t=this.parseTemplateElement());return this.next(),this.finishNode(e,"TemplateLiteral")},f.parseObj=function(e,t){var r=[],i=(0,s.default)(null),n=!0,a=this.startNode();for(a.properties=[],this.next();!this.eat(u.types.braceR);){if(n)n=!1;else if(this.expect(u.types.comma),this.eat(u.types.braceR))break;for(;this.match(u.types.at);)r.push(this.parseDecorator());var o=this.startNode(),l=!1,p=!1,c=void 0,f=void 0;if(r.length&&(o.decorators=r,r=[]),this.hasPlugin("objectRestSpread")&&this.match(u.types.ellipsis))o=this.parseSpread(),o.type=e?"RestProperty":"SpreadProperty",a.properties.push(o);else{if(o.method=!1,o.shorthand=!1,(e||t)&&(c=this.state.start,f=this.state.startLoc),e||(l=this.eat(u.types.star)),!e&&this.hasPlugin("asyncFunctions")&&this.isContextual("async")){l&&this.unexpected();var h=this.parseIdentifier();this.match(u.types.colon)||this.match(u.types.parenL)||this.match(u.types.braceR)?o.key=h:(p=!0,this.hasPlugin("asyncGenerators")&&(l=this.eat(u.types.star)),this.parsePropertyName(o))}else this.parsePropertyName(o);this.parseObjPropValue(o,c,f,l,p,e,t),this.checkPropClash(o,i),o.shorthand&&this.addExtra(o,"shorthand",!0),a.properties.push(o)}}return r.length&&this.raise(this.state.start,"You have trailing decorators with no property"),this.finishNode(a,e?"ObjectPattern":"ObjectExpression")},f.parseObjPropValue=function(e,t,r,i,n,s,a){if(n||i||this.match(u.types.parenL))return s&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,i,n),this.finishNode(e,"ObjectMethod");if(this.eat(u.types.colon))return e.value=s?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,a),this.finishNode(e,"ObjectProperty");if(!(e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.match(u.types.comma)||this.match(u.types.braceR))){(i||n||s)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),this.parseMethod(e,!1);var o="get"===e.kind?0:1;if(e.params.length!==o){var l=e.start;"get"===e.kind?this.raise(l,"getter should have no params"):this.raise(l,"setter should have exactly one param")}return this.finishNode(e,"ObjectMethod")}if(!e.computed&&"Identifier"===e.key.type){if(s){var p=this.isKeyword(e.key.name);!p&&this.state.strict&&(p=c.reservedWords.strictBind(e.key.name)||c.reservedWords.strict(e.key.name)),p&&this.raise(e.key.start,"Binding "+e.key.name),e.value=this.parseMaybeDefault(t,r,e.key.__clone())}else this.match(u.types.eq)&&a?(a.start||(a.start=this.state.start),e.value=this.parseMaybeDefault(t,r,e.key.__clone())):e.value=e.key.__clone();return e.shorthand=!0,this.finishNode(e,"ObjectProperty")}this.unexpected()},f.parsePropertyName=function(e){return this.eat(u.types.bracketL)?(e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(u.types.bracketR),e.key):(e.computed=!1,e.key=this.match(u.types.num)||this.match(u.types.string)?this.parseExprAtom():this.parseIdentifier(!0))},f.initFunction=function(e,t){e.id=null,e.generator=!1,e.expression=!1,this.hasPlugin("asyncFunctions")&&(e.async=!!t)},f.parseMethod=function(e,t,r){var i=this.state.inMethod;return this.state.inMethod=e.kind||!0,this.initFunction(e,r),this.expect(u.types.parenL),e.params=this.parseBindingList(u.types.parenR,!1,this.hasPlugin("trailingFunctionCommas")),e.generator=t,this.parseFunctionBody(e),this.state.inMethod=i,e},f.parseArrowExpression=function(e,t,r){return this.initFunction(e,r),e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0),this.finishNode(e,"ArrowFunctionExpression")},f.parseFunctionBody=function(e,t){var r=t&&!this.match(u.types.braceL),i=this.state.inAsync;if(this.state.inAsync=e.async,r)e.body=this.parseMaybeAssign(),e.expression=!0;else{var n=this.state.inFunction,a=this.state.inGenerator,l=this.state.labels;this.state.inFunction=!0,this.state.inGenerator=e.generator,this.state.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.state.inFunction=n,this.state.inGenerator=a,this.state.labels=l}this.state.inAsync=i;var p=this.state.strict,c=!1,f=!1;if(t&&(p=!0),!r&&e.body.directives.length){var h=!0,d=!1,y=void 0;try{for(var v,m=(0,o.default)(e.body.directives);!(h=(v=m.next()).done);h=!0){var g=v.value;if("use strict"===g.value.value){f=!0,p=!0,c=!0;break}}}catch(e){d=!0,y=e}finally{try{!h&&m.return&&m.return()}finally{if(d)throw y}}}if(f&&e.id&&"Identifier"===e.id.type&&"yield"===e.id.name&&this.raise(e.id.start,"Binding yield in strict mode"),p){var b=(0,s.default)(null),x=this.state.strict;c&&(this.state.strict=!0),e.id&&this.checkLVal(e.id,!0);var E=!0,A=!1,S=void 0;try{for(var _,T=(0,o.default)(e.params);!(E=(_=T.next()).done);E=!0){var P=_.value;this.checkLVal(P,!0,b)}}catch(e){A=!0,S=e}finally{try{!E&&T.return&&T.return()}finally{if(A)throw S}}this.state.strict=x}},f.parseExprList=function(e,t,r,i){for(var n=[],s=!0;!this.eat(e);){if(s)s=!1;else if(this.expect(u.types.comma),t&&this.eat(e))break;n.push(this.parseExprListItem(r,i))}return n},f.parseExprListItem=function(e,t){var r=void 0;return r=e&&this.match(u.types.comma)?null:this.match(u.types.ellipsis)?this.parseSpread(t):this.parseMaybeAssign(!1,t)},f.parseIdentifier=function(e){var t=this.startNode();return this.match(u.types.name)?(!e&&this.state.strict&&c.reservedWords.strict(this.state.value)&&this.raise(this.state.start,"The keyword '"+this.state.value+"' is reserved"),t.name=this.state.value):e&&this.state.type.keyword?t.name=this.state.type.keyword:this.unexpected(),!e&&"await"===t.name&&this.state.inAsync&&this.raise(t.start,"invalid use of await inside of an async function"),this.next(),this.finishNode(t,"Identifier")},f.parseAwait=function(e){return this.state.inAsync||this.unexpected(),this.match(u.types.star)&&this.raise(e.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),e.argument=this.parseMaybeUnary(),this.finishNode(e,"AwaitExpression")},f.parseYield=function(){var e=this.startNode();return this.next(),this.match(u.types.semi)||this.canInsertSemicolon()||!this.match(u.types.star)&&!this.state.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(u.types.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")}},[6479,1018,179],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var n=r(1),s=i(n),a=r(180),o=r(179),u=i(o),l=r(675),p=u.default.prototype;p.toAssignable=function(e,t){if(e)switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":e.type="ObjectPattern";var r=!0,i=!1,n=void 0;try{for(var a,o=(0,s.default)(e.properties);!(r=(a=o.next()).done);r=!0){var u=a.value;"ObjectMethod"===u.type?"get"===u.kind||"set"===u.kind?this.raise(u.key.start,"Object pattern can't contain getter or setter"):this.raise(u.key.start,"Object pattern can't contain methods"):this.toAssignable(u,t)}}catch(e){i=!0,n=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw n}}break;case"ObjectProperty":this.toAssignable(e.value,t);break;case"SpreadProperty":e.type="RestProperty";break;case"ArrayExpression":e.type="ArrayPattern",this.toAssignableList(e.elements,t);break;case"AssignmentExpression":"="===e.operator?(e.type="AssignmentPattern",delete e.operator):this.raise(e.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!t)break;default:this.raise(e.start,"Assigning to rvalue")}return e},p.toAssignableList=function(e,t){var r=e.length;if(r){var i=e[r-1];if(i&&"RestElement"===i.type)--r;else if(i&&"SpreadElement"===i.type){i.type="RestElement";var n=i.argument;this.toAssignable(n,t),"Identifier"!==n.type&&"MemberExpression"!==n.type&&"ArrayPattern"!==n.type&&this.unexpected(n.start),--r}}for(var s=0;s<r;s++){var a=e[s];a&&this.toAssignable(a,t)}return e},p.toReferencedList=function(e){return e},p.parseSpread=function(e){var t=this.startNode();return this.next(),t.argument=this.parseMaybeAssign(e),this.finishNode(t,"SpreadElement")},p.parseRest=function(){var e=this.startNode();return this.next(),e.argument=this.parseBindingIdentifier(),this.finishNode(e,"RestElement")},p.shouldAllowYieldIdentifier=function(){return this.match(a.types._yield)&&!this.state.strict&&!this.state.inGenerator},p.parseBindingIdentifier=function(){return this.parseIdentifier(this.shouldAllowYieldIdentifier())},p.parseBindingAtom=function(){switch(this.state.type){
+case a.types._yield:(this.state.strict||this.state.inGenerator)&&this.unexpected();case a.types.name:return this.parseIdentifier(!0);case a.types.bracketL:var e=this.startNode();return this.next(),e.elements=this.parseBindingList(a.types.bracketR,!0,!0),this.finishNode(e,"ArrayPattern");case a.types.braceL:return this.parseObj(!0);default:this.unexpected()}},p.parseBindingList=function(e,t,r){for(var i=[],n=!0;!this.eat(e);)if(n?n=!1:this.expect(a.types.comma),t&&this.match(a.types.comma))i.push(null);else{if(r&&this.eat(e))break;if(this.match(a.types.ellipsis)){i.push(this.parseAssignableListItemTypes(this.parseRest())),this.expect(e);break}for(var s=[];this.match(a.types.at);)s.push(this.parseDecorator());var o=this.parseMaybeDefault();s.length&&(o.decorators=s),this.parseAssignableListItemTypes(o),i.push(this.parseMaybeDefault(o.start,o.loc.start,o))}return i},p.parseAssignableListItemTypes=function(e){return e},p.parseMaybeDefault=function(e,t,r){if(t=t||this.state.startLoc,e=e||this.state.start,r=r||this.parseBindingAtom(),!this.eat(a.types.eq))return r;var i=this.startNodeAt(e,t);return i.left=r,i.right=this.parseMaybeAssign(),this.finishNode(i,"AssignmentPattern")},p.checkLVal=function(e,t,r){switch(e.type){case"Identifier":if(this.state.strict&&(l.reservedWords.strictBind(e.name)||l.reservedWords.strict(e.name))&&this.raise(e.start,(t?"Binding ":"Assigning to ")+e.name+" in strict mode"),r){var i="_"+e.name;r[i]?this.raise(e.start,"Argument name clash in strict mode"):r[i]=!0}break;case"MemberExpression":t&&this.raise(e.start,(t?"Binding":"Assigning to")+" member expression");break;case"ObjectPattern":var n=!0,a=!1,o=void 0;try{for(var u,p=(0,s.default)(e.properties);!(n=(u=p.next()).done);n=!0){var c=u.value;"ObjectProperty"===c.type&&(c=c.value),this.checkLVal(c,t,r)}}catch(e){a=!0,o=e}finally{try{!n&&p.return&&p.return()}finally{if(a)throw o}}break;case"ArrayPattern":var f=!0,h=!1,d=void 0;try{for(var y,v=(0,s.default)(e.elements);!(f=(y=v.next()).done);f=!0){var m=y.value;m&&this.checkLVal(m,t,r)}}catch(e){h=!0,d=e}finally{try{!f&&v.return&&v.return()}finally{if(h)throw d}}break;case"AssignmentPattern":this.checkLVal(e.left,t,r);break;case"RestProperty":case"RestElement":this.checkLVal(e.argument,t,r);break;default:this.raise(e.start,(t?"Binding":"Assigning to")+" rvalue")}}},[6481,2,47,179,1018],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var n=r(1),s=i(n),a=r(16),o=i(a),u=r(180),l=r(179),p=i(l),c=r(564),f=p.default.prototype;f.parseTopLevel=function(e,t){return t.sourceType=this.options.sourceType,this.parseBlockBody(t,!0,!0,u.types.eof),e.program=this.finishNode(t,"Program"),e.comments=this.state.comments,e.tokens=this.state.tokens,this.finishNode(e,"File")};var h={kind:"loop"},d={kind:"switch"};f.stmtToDirective=function(e){var t=e.expression,r=this.startNodeAt(t.start,t.loc.start),i=this.startNodeAt(e.start,e.loc.start),n=this.input.slice(t.start,t.end),s=r.value=n.slice(1,-1);return this.addExtra(r,"raw",n),this.addExtra(r,"rawValue",s),i.value=this.finishNodeAt(r,"DirectiveLiteral",t.end,t.loc.end),this.finishNodeAt(i,"Directive",e.end,e.loc.end)},f.parseStatement=function(e,t){this.match(u.types.at)&&this.parseDecorators(!0);var r=this.state.type,i=this.startNode();switch(r){case u.types._break:case u.types._continue:return this.parseBreakContinueStatement(i,r.keyword);case u.types._debugger:return this.parseDebuggerStatement(i);case u.types._do:return this.parseDoStatement(i);case u.types._for:return this.parseForStatement(i);case u.types._function:return e||this.unexpected(),this.parseFunctionStatement(i);case u.types._class:return e||this.unexpected(),this.takeDecorators(i),this.parseClass(i,!0);case u.types._if:return this.parseIfStatement(i);case u.types._return:return this.parseReturnStatement(i);case u.types._switch:return this.parseSwitchStatement(i);case u.types._throw:return this.parseThrowStatement(i);case u.types._try:return this.parseTryStatement(i);case u.types._let:case u.types._const:e||this.unexpected();case u.types._var:return this.parseVarStatement(i,r);case u.types._while:return this.parseWhileStatement(i);case u.types._with:return this.parseWithStatement(i);case u.types.braceL:return this.parseBlock();case u.types.semi:return this.parseEmptyStatement(i);case u.types._export:case u.types._import:return this.options.allowImportExportEverywhere||(t||this.raise(this.state.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.state.start,"'import' and 'export' may appear only with 'sourceType: module'")),r===u.types._import?this.parseImport(i):this.parseExport(i);case u.types.name:if(this.hasPlugin("asyncFunctions")&&"async"===this.state.value){var n=this.state.clone();if(this.next(),this.match(u.types._function)&&!this.canInsertSemicolon())return this.expect(u.types._function),this.parseFunction(i,!0,!1,!0);this.state=n}}var s=this.state.value,a=this.parseExpression();return r===u.types.name&&"Identifier"===a.type&&this.eat(u.types.colon)?this.parseLabeledStatement(i,s,a):this.parseExpressionStatement(i,a)},f.takeDecorators=function(e){this.state.decorators.length&&(e.decorators=this.state.decorators,this.state.decorators=[])},f.parseDecorators=function(e){for(;this.match(u.types.at);)this.state.decorators.push(this.parseDecorator());e&&this.match(u.types._export)||this.match(u.types._class)||this.raise(this.state.start,"Leading decorators must be attached to a class declaration")},f.parseDecorator=function(){this.hasPlugin("decorators")||this.unexpected();var e=this.startNode();return this.next(),e.expression=this.parseMaybeAssign(),this.finishNode(e,"Decorator")},f.parseBreakContinueStatement=function(e,t){var r="break"===t;this.next(),this.isLineTerminator()?e.label=null:this.match(u.types.name)?(e.label=this.parseIdentifier(),this.semicolon()):this.unexpected();var i=void 0;for(i=0;i<this.state.labels.length;++i){var n=this.state.labels[i];if(null==e.label||n.name===e.label.name){if(null!=n.kind&&(r||"loop"===n.kind))break;if(e.label&&r)break}}return i===this.state.labels.length&&this.raise(e.start,"Unsyntactic "+t),this.finishNode(e,r?"BreakStatement":"ContinueStatement")},f.parseDebuggerStatement=function(e){return this.next(),this.semicolon(),this.finishNode(e,"DebuggerStatement")},f.parseDoStatement=function(e){return this.next(),this.state.labels.push(h),e.body=this.parseStatement(!1),this.state.labels.pop(),this.expect(u.types._while),e.test=this.parseParenExpression(),this.eat(u.types.semi),this.finishNode(e,"DoWhileStatement")},f.parseForStatement=function(e){this.next(),this.state.labels.push(h);var t=!1;if(this.hasPlugin("asyncGenerators")&&this.state.inAsync&&this.isContextual("await")&&(t=!0,this.next()),this.expect(u.types.parenL),this.match(u.types.semi))return t&&this.unexpected(),this.parseFor(e,null);if(this.match(u.types._var)||this.match(u.types._let)||this.match(u.types._const)){var r=this.startNode(),i=this.state.type;return this.next(),this.parseVar(r,!0,i),this.finishNode(r,"VariableDeclaration"),!this.match(u.types._in)&&!this.isContextual("of")||1!==r.declarations.length||r.declarations[0].init?(t&&this.unexpected(),this.parseFor(e,r)):this.parseForIn(e,r,t)}var n={start:0},s=this.parseExpression(!0,n);return this.match(u.types._in)||this.isContextual("of")?(this.toAssignable(s),this.checkLVal(s),this.parseForIn(e,s,t)):(n.start&&this.unexpected(n.start),t&&this.unexpected(),this.parseFor(e,s))},f.parseFunctionStatement=function(e){return this.next(),this.parseFunction(e,!0)},f.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(!1),e.alternate=this.eat(u.types._else)?this.parseStatement(!1):null,this.finishNode(e,"IfStatement")},f.parseReturnStatement=function(e){return this.state.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.state.start,"'return' outside of function"),this.next(),this.isLineTerminator()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},f.parseSwitchStatement=function(e){this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(u.types.braceL),this.state.labels.push(d);for(var t,r=void 0;!this.match(u.types.braceR);)if(this.match(u.types._case)||this.match(u.types._default)){var i=this.match(u.types._case);r&&this.finishNode(r,"SwitchCase"),e.cases.push(r=this.startNode()),r.consequent=[],this.next(),i?r.test=this.parseExpression():(t&&this.raise(this.state.lastTokStart,"Multiple default clauses"),t=!0,r.test=null),this.expect(u.types.colon)}else r?r.consequent.push(this.parseStatement(!0)):this.unexpected();return r&&this.finishNode(r,"SwitchCase"),this.next(),this.state.labels.pop(),this.finishNode(e,"SwitchStatement")},f.parseThrowStatement=function(e){return this.next(),c.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start))&&this.raise(this.state.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var y=[];f.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.match(u.types._catch)){var t=this.startNode();this.next(),this.expect(u.types.parenL),t.param=this.parseBindingAtom(),this.checkLVal(t.param,!0,(0,o.default)(null)),this.expect(u.types.parenR),t.body=this.parseBlock(),e.handler=this.finishNode(t,"CatchClause")}return e.guardedHandlers=y,e.finalizer=this.eat(u.types._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},f.parseVarStatement=function(e,t){return this.next(),this.parseVar(e,!1,t),this.semicolon(),this.finishNode(e,"VariableDeclaration")},f.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.state.labels.push(h),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"WhileStatement")},f.parseWithStatement=function(e){return this.state.strict&&this.raise(this.state.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(!1),this.finishNode(e,"WithStatement")},f.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},f.parseLabeledStatement=function(e,t,r){var i=!0,n=!1,a=void 0;try{for(var o,l=(0,s.default)(this.state.labels);!(i=(o=l.next()).done);i=!0){var p=o.value;p.name===t&&this.raise(r.start,"Label '"+t+"' is already declared")}}catch(e){n=!0,a=e}finally{try{!i&&l.return&&l.return()}finally{if(n)throw a}}for(var c=this.state.type.isLoop?"loop":this.match(u.types._switch)?"switch":null,f=this.state.labels.length-1;f>=0;f--){var h=this.state.labels[f];if(h.statementStart!==e.start)break;h.statementStart=this.state.start,h.kind=c}return this.state.labels.push({name:t,kind:c,statementStart:this.state.start}),e.body=this.parseStatement(!0),this.state.labels.pop(),e.label=r,this.finishNode(e,"LabeledStatement")},f.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},f.parseBlock=function(e){var t=this.startNode();return this.expect(u.types.braceL),this.parseBlockBody(t,e,!1,u.types.braceR),this.finishNode(t,"BlockStatement")},f.parseBlockBody=function(e,t,r,i){e.body=[],e.directives=[];for(var n=!1,s=void 0,a=void 0;!this.eat(i);){n||!this.state.containsOctal||a||(a=this.state.octalPosition);var o=this.parseStatement(!0,r);if(!t||n||"ExpressionStatement"!==o.type||"StringLiteral"!==o.expression.type||o.expression.extra.parenthesized)n=!0,e.body.push(o);else{var u=this.stmtToDirective(o);e.directives.push(u),void 0===s&&"use strict"===u.value.value&&(s=this.state.strict,this.setStrict(!0),a&&this.raise(a,"Octal literal in strict mode"))}}s===!1&&this.setStrict(!1)},f.parseFor=function(e,t){return e.init=t,this.expect(u.types.semi),e.test=this.match(u.types.semi)?null:this.parseExpression(),this.expect(u.types.semi),e.update=this.match(u.types.parenR)?null:this.parseExpression(),this.expect(u.types.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"ForStatement")},f.parseForIn=function(e,t,r){var i=void 0;return r?(this.eatContextual("of"),i="ForAwaitStatement"):(i=this.match(u.types._in)?"ForInStatement":"ForOfStatement",this.next()),e.left=t,e.right=this.parseExpression(),this.expect(u.types.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,i)},f.parseVar=function(e,t,r){for(e.declarations=[],e.kind=r.keyword;;){var i=this.startNode();if(this.parseVarHead(i),this.eat(u.types.eq)?i.init=this.parseMaybeAssign(t):r!==u.types._const||this.match(u.types._in)||this.isContextual("of")?"Identifier"===i.id.type||t&&(this.match(u.types._in)||this.isContextual("of"))?i.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(i,"VariableDeclarator")),!this.eat(u.types.comma))break}return e},f.parseVarHead=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0)},f.parseFunction=function(e,t,r,i,n){var s=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(e,i),this.match(u.types.star)&&(e.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(e.generator=!0,this.next())),!t||n||this.match(u.types.name)||this.match(u.types._yield)||this.unexpected(),(this.match(u.types.name)||this.match(u.types._yield))&&(e.id=this.parseBindingIdentifier()),this.parseFunctionParams(e),this.parseFunctionBody(e,r),this.state.inMethod=s,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},f.parseFunctionParams=function(e){this.expect(u.types.parenL),e.params=this.parseBindingList(u.types.parenR,!1,this.hasPlugin("trailingFunctionCommas"))},f.parseClass=function(e,t,r){return this.next(),this.parseClassId(e,t,r),this.parseClassSuper(e),this.parseClassBody(e),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},f.isClassProperty=function(){return this.match(u.types.eq)||this.isLineTerminator()},f.isClassMutatorStarter=function(){return!1},f.parseClassBody=function(e){var t=this.state.strict;this.state.strict=!0;var r=!1,i=!1,n=[],s=this.startNode();for(s.body=[],this.expect(u.types.braceL);!this.eat(u.types.braceR);)if(!this.eat(u.types.semi))if(this.match(u.types.at))n.push(this.parseDecorator());else{var a=this.startNode();n.length&&(a.decorators=n,n=[]);var o=!1,l=this.match(u.types.name)&&"static"===this.state.value,p=this.eat(u.types.star),c=!1,f=!1;if(this.parsePropertyName(a),a.static=l&&!this.match(u.types.parenL),a.static&&(p&&this.unexpected(),p=this.eat(u.types.star),this.parsePropertyName(a)),!p&&"Identifier"===a.key.type&&!a.computed){if(this.isClassProperty()){s.body.push(this.parseClassProperty(a));continue}this.hasPlugin("classConstructorCall")&&"call"===a.key.name&&this.match(u.types.name)&&"constructor"===this.state.value&&(o=!0,this.parsePropertyName(a))}var h=this.hasPlugin("asyncFunctions")&&!this.match(u.types.parenL)&&!a.computed&&"Identifier"===a.key.type&&"async"===a.key.name;if(h&&(this.hasPlugin("asyncGenerators")&&this.eat(u.types.star)&&(p=!0),f=!0,this.parsePropertyName(a)),a.kind="method",!a.computed){var d=a.key;f||p||this.isClassMutatorStarter()||"Identifier"!==d.type||this.match(u.types.parenL)||"get"!==d.name&&"set"!==d.name||(c=!0,a.kind=d.name,d=this.parsePropertyName(a));var y=!o&&!a.static&&("Identifier"===d.type&&"constructor"===d.name||"StringLiteral"===d.type&&"constructor"===d.value);y&&(i&&this.raise(d.start,"Duplicate constructor in the same class"),c&&this.raise(d.start,"Constructor can't have get/set modifier"),p&&this.raise(d.start,"Constructor can't be a generator"),f&&this.raise(d.start,"Constructor can't be an async function"),a.kind="constructor",i=!0);var v=a.static&&("Identifier"===d.type&&"prototype"===d.name||"StringLiteral"===d.type&&"prototype"===d.value);v&&this.raise(d.start,"Classes may not have static property named prototype")}if(o&&(r&&this.raise(a.start,"Duplicate constructor call in the same class"),a.kind="constructorCall",r=!0),"constructor"!==a.kind&&"constructorCall"!==a.kind||!a.decorators||this.raise(a.start,"You can't attach decorators to a class constructor"),this.parseClassMethod(s,a,p,f),c){var m="get"===a.kind?0:1;if(a.params.length!==m){var g=a.start;"get"===a.kind?this.raise(g,"getter should have no params"):this.raise(g,"setter should have exactly one param")}}}n.length&&this.raise(this.state.start,"You have trailing decorators with no method"),e.body=this.finishNode(s,"ClassBody"),this.state.strict=t},f.parseClassProperty=function(e){return this.match(u.types.eq)?(this.hasPlugin("classProperties")||this.unexpected(),this.next(),e.value=this.parseMaybeAssign()):e.value=null,this.semicolon(),this.finishNode(e,"ClassProperty")},f.parseClassMethod=function(e,t,r,i){this.parseMethod(t,r,i),e.body.push(this.finishNode(t,"ClassMethod"))},f.parseClassId=function(e,t,r){this.match(u.types.name)?e.id=this.parseIdentifier():r||!t?e.id=null:this.unexpected()},f.parseClassSuper=function(e){e.superClass=this.eat(u.types._extends)?this.parseExprSubscripts():null},f.parseExport=function(e){if(this.next(),this.match(u.types.star)){var t=this.startNode();if(this.next(),!this.hasPlugin("exportExtensions")||!this.eatContextual("as"))return this.parseExportFrom(e,!0),this.finishNode(e,"ExportAllDeclaration");t.exported=this.parseIdentifier(),e.specifiers=[this.finishNode(t,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(e),this.parseExportFrom(e,!0)}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var r=this.startNode();if(r.exported=this.parseIdentifier(!0),e.specifiers=[this.finishNode(r,"ExportDefaultSpecifier")],this.match(u.types.comma)&&this.lookahead().type===u.types.star){this.expect(u.types.comma);var i=this.startNode();this.expect(u.types.star),this.expectContextual("as"),i.exported=this.parseIdentifier(),e.specifiers.push(this.finishNode(i,"ExportNamespaceSpecifier"))}else this.parseExportSpecifiersMaybe(e);this.parseExportFrom(e,!0)}else{if(this.eat(u.types._default)){var n=this.startNode(),s=!1;return this.eat(u.types._function)?n=this.parseFunction(n,!0,!1,!1,!0):this.match(u.types._class)?n=this.parseClass(n,!0,!0):(s=!0,n=this.parseMaybeAssign()),e.declaration=n,s&&this.semicolon(),this.checkExport(e),this.finishNode(e,"ExportDefaultDeclaration")}this.state.type.keyword||this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,e.declaration=this.parseExportDeclaration(e)):(e.declaration=null,e.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(e))}return this.checkExport(e),this.finishNode(e,"ExportNamedDeclaration")},f.parseExportDeclaration=function(){return this.parseStatement(!0)},f.isExportDefaultSpecifier=function(){if(this.match(u.types.name))return"type"!==this.state.value&&"async"!==this.state.value&&"interface"!==this.state.value;if(!this.match(u.types._default))return!1;var e=this.lookahead();return e.type===u.types.comma||e.type===u.types.name&&"from"===e.value},f.parseExportSpecifiersMaybe=function(e){this.eat(u.types.comma)&&(e.specifiers=e.specifiers.concat(this.parseExportSpecifiers()))},f.parseExportFrom=function(e,t){this.eatContextual("from")?(e.source=this.match(u.types.string)?this.parseExprAtom():this.unexpected(),this.checkExport(e)):t?this.unexpected():e.source=null,this.semicolon()},f.shouldParseExportDeclaration=function(){return this.hasPlugin("asyncFunctions")&&this.isContextual("async")},f.checkExport=function(e){if(this.state.decorators.length){var t=e.declaration&&("ClassDeclaration"===e.declaration.type||"ClassExpression"===e.declaration.type);e.declaration&&t||this.raise(e.start,"You can only use decorators on an export when exporting a class"),this.takeDecorators(e.declaration)}},f.parseExportSpecifiers=function(){var e=[],t=!0,r=void 0;for(this.expect(u.types.braceL);!this.eat(u.types.braceR);){if(t)t=!1;else if(this.expect(u.types.comma),this.eat(u.types.braceR))break;var i=this.match(u.types._default);i&&!r&&(r=!0);var n=this.startNode();n.local=this.parseIdentifier(i),n.exported=this.eatContextual("as")?this.parseIdentifier(!0):n.local.__clone(),e.push(this.finishNode(n,"ExportSpecifier"))}return r&&!this.isContextual("from")&&this.unexpected(),e},f.parseImport=function(e){return this.next(),this.match(u.types.string)?(e.specifiers=[],e.source=this.parseExprAtom()):(e.specifiers=[],this.parseImportSpecifiers(e),this.expectContextual("from"),e.source=this.match(u.types.string)?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},f.parseImportSpecifiers=function(e){var t=!0;if(this.match(u.types.name)){var r=this.state.start,i=this.state.startLoc;if(e.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(),r,i)),!this.eat(u.types.comma))return}if(this.match(u.types.star)){var n=this.startNode();return this.next(),this.expectContextual("as"),n.local=this.parseIdentifier(),this.checkLVal(n.local,!0),void e.specifiers.push(this.finishNode(n,"ImportNamespaceSpecifier"))}for(this.expect(u.types.braceL);!this.eat(u.types.braceR);){if(t)t=!1;else if(this.expect(u.types.comma),this.eat(u.types.braceR))break;var s=this.startNode();s.imported=this.parseIdentifier(!0),s.local=this.eatContextual("as")?this.parseIdentifier():s.imported.__clone(),this.checkLVal(s.local,!0),e.specifiers.push(this.finishNode(s,"ImportSpecifier"))}},f.parseImportSpecifierDefault=function(e,t,r){var i=this.startNodeAt(t,r);return i.local=e,this.checkLVal(i.local,!0),this.finishNode(i,"ImportDefaultSpecifier")}},[6549,180,179,564],function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(e){return e.expression.typeAnnotation=e.typeAnnotation,e.expression}e.extend("parseFunctionBody",function(e){return function(t,r){return this.match(n.types.colon)&&!r&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("parseStatement",function(e){return function(t,r){if(this.state.strict&&this.match(n.types.name)&&"interface"===this.state.value){var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t,r)}}),e.extend("parseExpressionStatement",function(e){return function(t,r){if("Identifier"===r.type)if("declare"===r.name){if(this.match(n.types._class)||this.match(n.types.name)||this.match(n.types._function)||this.match(n.types._var))return this.flowParseDeclare(t)}else if(this.match(n.types.name)){if("interface"===r.name)return this.flowParseInterface(t);if("type"===r.name)return this.flowParseTypeAlias(t)}return e.call(this,t,r)}}),e.extend("shouldParseExportDeclaration",function(e){return function(){return this.isContextual("type")||this.isContextual("interface")||e.call(this)}}),e.extend("parseConditional",function(e){return function(t,r,i,s,a){if(a&&this.match(n.types.question)){var o=this.state.clone();try{return e.call(this,t,r,i,s)}catch(e){if(e instanceof SyntaxError)return this.state=o,a.start=e.pos||this.state.start,t;throw e}}return e.call(this,t,r,i,s)}}),e.extend("parseParenItem",function(e){return function(t,r,i){if(t=e.call(this,t,r,i),this.eat(n.types.question)&&(t.optional=!0),this.match(n.types.colon)){var s=this.startNodeAt(r,i);return s.expression=t,s.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(s,"TypeCastExpression")}return t}}),e.extend("parseExport",function(e){return function(t){return t=e.call(this,t),"ExportNamedDeclaration"===t.type&&(t.exportKind=t.exportKind||"value"),t}}),e.extend("parseExportDeclaration",function(e){return function(t){if(this.isContextual("type")){t.exportKind="type";var r=this.startNode();return this.next(),this.match(n.types.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(r)}if(this.isContextual("interface")){t.exportKind="type";var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t)}}),e.extend("parseClassId",function(e){return function(t){e.apply(this,arguments),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}}),e.extend("isKeyword",function(e){return function(t){return(!this.state.inType||"void"!==t)&&e.call(this,t)}}),e.extend("readToken",function(e){return function(t){return!this.state.inType||62!==t&&60!==t?e.call(this,t):this.finishOp(n.types.relational,1)}}),e.extend("jsx_readToken",function(e){return function(){if(!this.state.inType)return e.call(this)}}),e.extend("toAssignable",function(e){return function(r){return"TypeCastExpression"===r.type?t(r):e.apply(this,arguments)}}),e.extend("toAssignableList",function(e){return function(r,i){for(var n=0;n<r.length;n++){var s=r[n];s&&"TypeCastExpression"===s.type&&(r[n]=t(s))}return e.call(this,r,i)}}),e.extend("toReferencedList",function(){return function(e){for(var t=0;t<e.length;t++){var r=e[t];r&&r._exprListItem&&"TypeCastExpression"===r.type&&this.raise(r.start,"Unexpected type cast")}return e}}),e.extend("parseExprListItem",function(e){return function(t,r){var i=this.startNode(),s=e.call(this,t,r);return this.match(n.types.colon)?(i._exprListItem=!0,i.expression=s,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")):s}}),e.extend("checkLVal",function(e){return function(t){if("TypeCastExpression"!==t.type)return e.apply(this,arguments)}}),e.extend("parseClassProperty",function(e){return function(t){return this.match(n.types.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),e.call(this,t)}}),e.extend("isClassProperty",function(e){return function(){return this.match(n.types.colon)||e.call(this)}}),e.extend("parseClassMethod",function(){return function(e,t,r,i){this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.parseMethod(t,r,i),e.body.push(this.finishNode(t,"ClassMethod"))}}),e.extend("parseClassSuper",function(e){return function(t,r){if(e.call(this,t,r),t.superClass&&this.isRelational("<")&&(t.superTypeParameters=this.flowParseTypeParameterInstantiation()),this.isContextual("implements")){this.next();var i=t.implements=[];do{var s=this.startNode();s.id=this.parseIdentifier(),this.isRelational("<")?s.typeParameters=this.flowParseTypeParameterInstantiation():s.typeParameters=null,i.push(this.finishNode(s,"ClassImplements"))}while(this.eat(n.types.comma))}}}),e.extend("parseObjPropValue",function(e){return function(t){var r=void 0;this.isRelational("<")&&(r=this.flowParseTypeParameterDeclaration(),this.match(n.types.parenL)||this.unexpected()),e.apply(this,arguments),r&&((t.value||t).typeParameters=r)}}),e.extend("parseAssignableListItemTypes",function(){return function(e){return this.eat(n.types.question)&&(e.optional=!0),this.match(n.types.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),this.finishNode(e,e.type),e}}),e.extend("parseImportSpecifiers",function(e){return function(t){t.importKind="value";var r=null;if(this.match(n.types._typeof)?r="typeof":this.isContextual("type")&&(r="type"),r){var i=this.lookahead();(i.type===n.types.name&&"from"!==i.value||i.type===n.types.braceL||i.type===n.types.star)&&(this.next(),t.importKind=r)}e.call(this,t)}}),e.extend("parseFunctionParams",function(e){return function(t){var r=this.state.inType;this.state.inType=!0,this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.state.inType=r,e.call(this,t)}}),e.extend("parseVarHead",function(e){return function(t){e.call(this,t),this.match(n.types.colon)&&(t.id.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(t.id,t.id.type))}}),e.extend("parseAsyncArrowFromCallExpression",function(e){return function(t,r){return this.match(n.types.colon)&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("shouldParseAsyncArrow",function(e){return function(){return this.match(n.types.colon)||e.call(this)}}),e.extend("parseMaybeAssign",function(e){return function(){for(var t=null,r=arguments.length,i=Array(r),a=0;a<r;a++)i[a]=arguments[a];if(n.types.jsxTagStart&&this.match(n.types.jsxTagStart)){var o=this.state.clone();try{return e.apply(this,i)}catch(e){if(!(e instanceof SyntaxError))throw e;this.state=o,t=e}}if(this.state.context.push(s.types.parenExpression),null!=t||this.isRelational("<")){var u=void 0,l=void 0;try{var p=this.state.inType;this.state.inType=!0,l=this.flowParseTypeParameterDeclaration(),this.state.inType=p,u=e.apply(this,i),u.typeParameters=l}catch(e){throw t||e}if("ArrowFunctionExpression"===u.type)return u;if(null!=t)throw t;this.raise(l.start,"Expected an arrow function after this type parameter declaration")}return this.state.context.pop(),e.apply(this,i)}}),e.extend("parseArrow",function(e){return function(t){if(this.match(n.types.colon)){var r=this.state.clone();try{var i=this.flowParseTypeAnnotation();this.match(n.types.arrow)||this.unexpected(),t.returnType=i}catch(e){if(!(e instanceof SyntaxError))throw e;this.state=r}}return e.call(this,t)}}),e.extend("isClassMutatorStarter",function(e){return function(){return!!this.isRelational("<")||e.call(this)}})};var n=r(180),s=r(674),a=r(179),o=i(a),u=o.default.prototype;u.flowParseTypeInitialiser=function(e,t){var r=this.state.inType;this.state.inType=!0,this.expect(e||n.types.colon),t&&(this.match(n.types.bitwiseAND)||this.match(n.types.bitwiseOR))&&this.next();var i=this.flowParseType();return this.state.inType=r,i},u.flowParseDeclareClass=function(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")},u.flowParseDeclareFunction=function(e){this.next();var t=e.id=this.parseIdentifier(),r=this.startNode(),i=this.startNode();this.isRelational("<")?r.typeParameters=this.flowParseTypeParameterDeclaration():r.typeParameters=null,this.expect(n.types.parenL);var s=this.flowParseFunctionTypeParams();return r.params=s.params,r.rest=s.rest,this.expect(n.types.parenR),r.returnType=this.flowParseTypeInitialiser(),i.typeAnnotation=this.finishNode(r,"FunctionTypeAnnotation"),t.typeAnnotation=this.finishNode(i,"TypeAnnotation"),this.finishNode(t,t.type),this.semicolon(),this.finishNode(e,"DeclareFunction")},u.flowParseDeclare=function(e){return this.match(n.types._class)?this.flowParseDeclareClass(e):this.match(n.types._function)?this.flowParseDeclareFunction(e):this.match(n.types._var)?this.flowParseDeclareVariable(e):this.isContextual("module")?this.flowParseDeclareModule(e):this.isContextual("type")?this.flowParseDeclareTypeAlias(e):this.isContextual("interface")?this.flowParseDeclareInterface(e):void this.unexpected()},u.flowParseDeclareVariable=function(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(e,"DeclareVariable")},u.flowParseDeclareModule=function(e){this.next(),this.match(n.types.string)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();var t=e.body=this.startNode(),r=t.body=[];for(this.expect(n.types.braceL);!this.match(n.types.braceR);){var i=this.startNode();this.next(),r.push(this.flowParseDeclare(i))}return this.expect(n.types.braceR),this.finishNode(t,"BlockStatement"),this.finishNode(e,"DeclareModule")},u.flowParseDeclareTypeAlias=function(e){return this.next(),this.flowParseTypeAlias(e),this.finishNode(e,"DeclareTypeAlias")},u.flowParseDeclareInterface=function(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")},u.flowParseInterfaceish=function(e,t){if(e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.mixins=[],this.eat(n.types._extends))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(n.types.comma));if(this.isContextual("mixins")){this.next();do e.mixins.push(this.flowParseInterfaceExtends());while(this.eat(n.types.comma))}e.body=this.flowParseObjectType(t)},u.flowParseInterfaceExtends=function(){var e=this.startNode();
+return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")},u.flowParseInterface=function(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,"InterfaceDeclaration")},u.flowParseTypeAlias=function(e){return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(n.types.eq,!0),this.semicolon(),this.finishNode(e,"TypeAlias")},u.flowParseTypeParameter=function(){var e=this.startNode(),t=void 0;this.match(n.types.plusMin)&&("+"===this.state.value?t="plus":"-"===this.state.value&&(t="minus"),this.eat(n.types.plusMin));var r=this.flowParseTypeAnnotatableIdentifier(!1,!1);return e.name=r.name,e.variance=t,e.bound=r.typeAnnotation,this.match(n.types.eq)&&(this.eat(n.types.eq),e.default=this.flowParseType()),this.finishNode(e,"TypeParameter")},u.flowParseTypeParameterDeclaration=function(){var e=this.startNode();e.params=[],this.isRelational("<")||this.match(n.types.jsxTagStart)?this.next():this.unexpected();do e.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(n.types.comma);while(!this.isRelational(">"));return this.expectRelational(">"),this.finishNode(e,"TypeParameterDeclaration")},u.flowParseTypeParameterInstantiation=function(){var e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseType()),this.isRelational(">")||this.expect(n.types.comma);return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterInstantiation")},u.flowParseObjectPropertyKey=function(){return this.match(n.types.num)||this.match(n.types.string)?this.parseExprAtom():this.parseIdentifier(!0)},u.flowParseObjectTypeIndexer=function(e,t){return e.static=t,this.expect(n.types.bracketL),e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser(),this.expect(n.types.bracketR),e.value=this.flowParseTypeInitialiser(),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeIndexer")},u.flowParseObjectTypeMethodish=function(e){for(e.params=[],e.rest=null,e.typeParameters=null,this.isRelational("<")&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(n.types.parenL);this.match(n.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(n.types.parenR)||this.expect(n.types.comma);return this.eat(n.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),this.expect(n.types.parenR),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")},u.flowParseObjectTypeMethod=function(e,t,r,i){var n=this.startNodeAt(e,t);return n.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e,t)),n.static=r,n.key=i,n.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(n,"ObjectTypeProperty")},u.flowParseObjectTypeCallProperty=function(e,t){var r=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(r),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeCallProperty")},u.flowParseObjectType=function(e){var t=this.startNode(),r=void 0,i=void 0,s=void 0;for(t.callProperties=[],t.properties=[],t.indexers=[],this.expect(n.types.braceL);!this.match(n.types.braceR);){var a=!1,o=this.state.start,u=this.state.startLoc;r=this.startNode(),e&&this.isContextual("static")&&(this.next(),s=!0),this.match(n.types.bracketL)?t.indexers.push(this.flowParseObjectTypeIndexer(r,s)):this.match(n.types.parenL)||this.isRelational("<")?t.callProperties.push(this.flowParseObjectTypeCallProperty(r,e)):(i=s&&this.match(n.types.colon)?this.parseIdentifier():this.flowParseObjectPropertyKey(),this.isRelational("<")||this.match(n.types.parenL)?t.properties.push(this.flowParseObjectTypeMethod(o,u,s,i)):(this.eat(n.types.question)&&(a=!0),r.key=i,r.value=this.flowParseTypeInitialiser(),r.optional=a,r.static=s,this.flowObjectTypeSemicolon(),t.properties.push(this.finishNode(r,"ObjectTypeProperty"))))}return this.expect(n.types.braceR),this.finishNode(t,"ObjectTypeAnnotation")},u.flowObjectTypeSemicolon=function(){this.eat(n.types.semi)||this.eat(n.types.comma)||this.match(n.types.braceR)||this.unexpected()},u.flowParseGenericType=function(e,t,r){var i=this.startNodeAt(e,t);for(i.typeParameters=null,i.id=r;this.eat(n.types.dot);){var s=this.startNodeAt(e,t);s.qualification=i.id,s.id=this.parseIdentifier(),i.id=this.finishNode(s,"QualifiedTypeIdentifier")}return this.isRelational("<")&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")},u.flowParseTypeofType=function(){var e=this.startNode();return this.expect(n.types._typeof),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")},u.flowParseTupleType=function(){var e=this.startNode();for(e.types=[],this.expect(n.types.bracketL);this.state.pos<this.input.length&&!this.match(n.types.bracketR)&&(e.types.push(this.flowParseType()),!this.match(n.types.bracketR));)this.expect(n.types.comma);return this.expect(n.types.bracketR),this.finishNode(e,"TupleTypeAnnotation")},u.flowParseFunctionTypeParam=function(){var e=!1,t=this.startNode();return t.name=this.parseIdentifier(),this.eat(n.types.question)&&(e=!0),t.optional=e,t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeParam")},u.flowParseFunctionTypeParams=function(){for(var e={params:[],rest:null};this.match(n.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(n.types.parenR)||this.expect(n.types.comma);return this.eat(n.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),e},u.flowIdentToTypeAnnotation=function(e,t,r,i){switch(i.name){case"any":return this.finishNode(r,"AnyTypeAnnotation");case"void":return this.finishNode(r,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(r,"BooleanTypeAnnotation");case"mixed":return this.finishNode(r,"MixedTypeAnnotation");case"number":return this.finishNode(r,"NumberTypeAnnotation");case"string":return this.finishNode(r,"StringTypeAnnotation");default:return this.flowParseGenericType(e,t,i)}},u.flowParsePrimaryType=function(){var e=this.state.start,t=this.state.startLoc,r=this.startNode(),i=void 0,s=void 0,a=!1;switch(this.state.type){case n.types.name:return this.flowIdentToTypeAnnotation(e,t,r,this.parseIdentifier());case n.types.braceL:return this.flowParseObjectType();case n.types.bracketL:return this.flowParseTupleType();case n.types.relational:if("<"===this.state.value)return r.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(n.types.parenL),i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(n.types.parenR),this.expect(n.types.arrow),r.returnType=this.flowParseType(),this.finishNode(r,"FunctionTypeAnnotation");case n.types.parenL:if(this.next(),!this.match(n.types.parenR)&&!this.match(n.types.ellipsis))if(this.match(n.types.name)){var o=this.lookahead().type;a=o!==n.types.question&&o!==n.types.colon}else a=!0;return a?(s=this.flowParseType(),this.expect(n.types.parenR),s):(i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(n.types.parenR),this.expect(n.types.arrow),r.returnType=this.flowParseType(),r.typeParameters=null,this.finishNode(r,"FunctionTypeAnnotation"));case n.types.string:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"StringLiteralTypeAnnotation");case n.types._true:case n.types._false:return r.value=this.match(n.types._true),this.next(),this.finishNode(r,"BooleanLiteralTypeAnnotation");case n.types.plusMin:if("-"===this.state.value)return this.next(),this.match(n.types.num)||this.unexpected(),r.value=-this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"NumericLiteralTypeAnnotation");case n.types.num:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"NumericLiteralTypeAnnotation");case n.types._null:return r.value=this.match(n.types._null),this.next(),this.finishNode(r,"NullLiteralTypeAnnotation");case n.types._this:return r.value=this.match(n.types._this),this.next(),this.finishNode(r,"ThisTypeAnnotation");case n.types.star:return this.next(),this.finishNode(r,"ExistentialTypeParam");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}this.unexpected()},u.flowParsePostfixType=function(){var e=this.startNode(),t=e.elementType=this.flowParsePrimaryType();return this.match(n.types.bracketL)?(this.expect(n.types.bracketL),this.expect(n.types.bracketR),this.finishNode(e,"ArrayTypeAnnotation")):t},u.flowParsePrefixType=function(){var e=this.startNode();return this.eat(n.types.question)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()},u.flowParseIntersectionType=function(){var e=this.startNode(),t=this.flowParsePrefixType();for(e.types=[t];this.eat(n.types.bitwiseAND);)e.types.push(this.flowParsePrefixType());return 1===e.types.length?t:this.finishNode(e,"IntersectionTypeAnnotation")},u.flowParseUnionType=function(){var e=this.startNode(),t=this.flowParseIntersectionType();for(e.types=[t];this.eat(n.types.bitwiseOR);)e.types.push(this.flowParseIntersectionType());return 1===e.types.length?t:this.finishNode(e,"UnionTypeAnnotation")},u.flowParseType=function(){var e=this.state.inType;this.state.inType=!0;var t=this.flowParseUnionType();return this.state.inType=e,t},u.flowParseTypeAnnotation=function(){var e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")},u.flowParseTypeAnnotatableIdentifier=function(e,t){var r=this.parseIdentifier(),i=!1;return t&&this.eat(n.types.question)&&(this.expect(n.types.question),i=!0),(e||this.match(n.types.colon))&&(r.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(r,r.type)),i&&(r.optional=!0,this.finishNode(r,r.type)),r}},function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e){return"JSXIdentifier"===e.type?e.name:"JSXNamespacedName"===e.type?e.namespace.name+":"+e.name.name:"JSXMemberExpression"===e.type?n(e.object)+"."+n(e.property):void 0}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.extend("parseExprAtom",function(e){return function(t){if(this.match(o.types.jsxText)){var r=this.parseLiteral(this.state.value,"JSXText");return r.extra=null,r}return this.match(o.types.jsxTagStart)?this.jsxParseElement():e.call(this,t)}}),e.extend("readToken",function(e){return function(t){var r=this.curContext();if(r===u.types.j_expr)return this.jsxReadToken();if(r===u.types.j_oTag||r===u.types.j_cTag){if((0,c.isIdentifierStart)(t))return this.jsxReadWord();if(62===t)return++this.state.pos,this.finishToken(o.types.jsxTagEnd);if((34===t||39===t)&&r===u.types.j_oTag)return this.jsxReadString(t)}return 60===t&&this.state.exprAllowed?(++this.state.pos,this.finishToken(o.types.jsxTagStart)):e.call(this,t)}}),e.extend("updateContext",function(e){return function(t){if(this.match(o.types.braceL)){var r=this.curContext();r===u.types.j_oTag?this.state.context.push(u.types.braceExpression):r===u.types.j_expr?this.state.context.push(u.types.templateQuasi):e.call(this,t),this.state.exprAllowed=!0}else{if(!this.match(o.types.slash)||t!==o.types.jsxTagStart)return e.call(this,t);this.state.context.length-=2,this.state.context.push(u.types.j_cTag),this.state.exprAllowed=!1}}})};var s=r(6219),a=i(s),o=r(180),u=r(674),l=r(179),p=i(l),c=r(675),f=r(564),h=/^[\da-fA-F]+$/,d=/^\d+$/;u.types.j_oTag=new u.TokContext("<tag",(!1)),u.types.j_cTag=new u.TokContext("</tag",(!1)),u.types.j_expr=new u.TokContext("<tag>...</tag>",(!0),(!0)),o.types.jsxName=new o.TokenType("jsxName"),o.types.jsxText=new o.TokenType("jsxText",{beforeExpr:!0}),o.types.jsxTagStart=new o.TokenType("jsxTagStart",{startsExpr:!0}),o.types.jsxTagEnd=new o.TokenType("jsxTagEnd"),o.types.jsxTagStart.updateContext=function(){this.state.context.push(u.types.j_expr),this.state.context.push(u.types.j_oTag),this.state.exprAllowed=!1},o.types.jsxTagEnd.updateContext=function(e){var t=this.state.context.pop();t===u.types.j_oTag&&e===o.types.slash||t===u.types.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===u.types.j_expr):this.state.exprAllowed=!0};var y=p.default.prototype;y.jsxReadToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var r=this.input.charCodeAt(this.state.pos);switch(r){case 60:case 123:return this.state.pos===this.state.start?60===r&&this.state.exprAllowed?(++this.state.pos,this.finishToken(o.types.jsxTagStart)):this.getTokenFromCode(r):(e+=this.input.slice(t,this.state.pos),this.finishToken(o.types.jsxText,e));case 38:e+=this.input.slice(t,this.state.pos),e+=this.jsxReadEntity(),t=this.state.pos;break;default:(0,f.isNewLine)(r)?(e+=this.input.slice(t,this.state.pos),e+=this.jsxReadNewLine(!0),t=this.state.pos):++this.state.pos}}},y.jsxReadNewLine=function(e){var t=this.input.charCodeAt(this.state.pos),r=void 0;return++this.state.pos,13===t&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,r=e?"\n":"\r\n"):r=String.fromCharCode(t),++this.state.curLine,this.state.lineStart=this.state.pos,r},y.jsxReadString=function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===e)break;38===i?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadEntity(),r=this.state.pos):(0,f.isNewLine)(i)?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadNewLine(!1),r=this.state.pos):++this.state.pos}return t+=this.input.slice(r,this.state.pos++),this.finishToken(o.types.string,t)},y.jsxReadEntity=function(){for(var e="",t=0,r=void 0,i=this.input[this.state.pos],n=++this.state.pos;this.state.pos<this.input.length&&t++<10;){if(i=this.input[this.state.pos++],";"===i){"#"===e[0]?"x"===e[1]?(e=e.substr(2),h.test(e)&&(r=String.fromCharCode(parseInt(e,16)))):(e=e.substr(1),d.test(e)&&(r=String.fromCharCode(parseInt(e,10)))):r=a.default[e];break}e+=i}return r?r:(this.state.pos=n,"&")},y.jsxReadWord=function(){var e=void 0,t=this.state.pos;do e=this.input.charCodeAt(++this.state.pos);while((0,c.isIdentifierChar)(e)||45===e);return this.finishToken(o.types.jsxName,this.input.slice(t,this.state.pos))},y.jsxParseIdentifier=function(){var e=this.startNode();return this.match(o.types.jsxName)?e.name=this.state.value:this.state.type.keyword?e.name=this.state.type.keyword:this.unexpected(),this.next(),this.finishNode(e,"JSXIdentifier")},y.jsxParseNamespacedName=function(){var e=this.state.start,t=this.state.startLoc,r=this.jsxParseIdentifier();if(!this.eat(o.types.colon))return r;var i=this.startNodeAt(e,t);return i.namespace=r,i.name=this.jsxParseIdentifier(),this.finishNode(i,"JSXNamespacedName")},y.jsxParseElementName=function(){for(var e=this.state.start,t=this.state.startLoc,r=this.jsxParseNamespacedName();this.eat(o.types.dot);){var i=this.startNodeAt(e,t);i.object=r,i.property=this.jsxParseIdentifier(),r=this.finishNode(i,"JSXMemberExpression")}return r},y.jsxParseAttributeValue=function(){var e=void 0;switch(this.state.type){case o.types.braceL:if(e=this.jsxParseExpressionContainer(),"JSXEmptyExpression"!==e.expression.type)return e;this.raise(e.start,"JSX attributes must only be assigned a non-empty expression");case o.types.jsxTagStart:case o.types.string:return e=this.parseExprAtom(),e.extra=null,e;default:this.raise(this.state.start,"JSX value should be either an expression or a quoted JSX text")}},y.jsxParseEmptyExpression=function(){var e=this.startNodeAt(this.lastTokEnd,this.lastTokEndLoc);return this.finishNodeAt(e,"JSXEmptyExpression",this.start,this.startLoc)},y.jsxParseExpressionContainer=function(){var e=this.startNode();return this.next(),this.match(o.types.braceR)?e.expression=this.jsxParseEmptyExpression():e.expression=this.parseExpression(),this.expect(o.types.braceR),this.finishNode(e,"JSXExpressionContainer")},y.jsxParseAttribute=function(){var e=this.startNode();return this.eat(o.types.braceL)?(this.expect(o.types.ellipsis),e.argument=this.parseMaybeAssign(),this.expect(o.types.braceR),this.finishNode(e,"JSXSpreadAttribute")):(e.name=this.jsxParseNamespacedName(),e.value=this.eat(o.types.eq)?this.jsxParseAttributeValue():null,this.finishNode(e,"JSXAttribute"))},y.jsxParseOpeningElementAt=function(e,t){var r=this.startNodeAt(e,t);for(r.attributes=[],r.name=this.jsxParseElementName();!this.match(o.types.slash)&&!this.match(o.types.jsxTagEnd);)r.attributes.push(this.jsxParseAttribute());return r.selfClosing=this.eat(o.types.slash),this.expect(o.types.jsxTagEnd),this.finishNode(r,"JSXOpeningElement")},y.jsxParseClosingElementAt=function(e,t){var r=this.startNodeAt(e,t);return r.name=this.jsxParseElementName(),this.expect(o.types.jsxTagEnd),this.finishNode(r,"JSXClosingElement")},y.jsxParseElementAt=function(e,t){var r=this.startNodeAt(e,t),i=[],s=this.jsxParseOpeningElementAt(e,t),a=null;if(!s.selfClosing){e:for(;;)switch(this.state.type){case o.types.jsxTagStart:if(e=this.state.start,t=this.state.startLoc,this.next(),this.eat(o.types.slash)){a=this.jsxParseClosingElementAt(e,t);break e}i.push(this.jsxParseElementAt(e,t));break;case o.types.jsxText:i.push(this.parseExprAtom());break;case o.types.braceL:i.push(this.jsxParseExpressionContainer());break;default:this.unexpected()}n(a.name)!==n(s.name)&&this.raise(a.start,"Expected corresponding JSX closing tag for <"+n(s.name)+">")}return r.openingElement=s,r.closingElement=a,r.children=i,this.match(o.types.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(r,"JSXElement")},y.jsxParseElement=function(){var e=this.state.start,t=this.state.startLoc;return this.next(),this.jsxParseElementAt(e,t)}},2541,[6488,2,47,1018,674,180],function(e,t){function r(e,t,r){e instanceof RegExp&&(e=i(e,r)),t instanceof RegExp&&(t=i(t,r));var s=n(e,t,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+e.length,s[1]),post:r.slice(s[1]+t.length)}}function i(e,t){var r=t.match(e);return r?r[0]:null}function n(e,t,r){var i,n,s,a,o,u=r.indexOf(e),l=r.indexOf(t,u+1),p=u;if(u>=0&&l>0){for(i=[],s=r.length;p<r.length&&p>=0&&!o;)p==u?(i.push(p),u=r.indexOf(e,p+1)):1==i.length?o=[i.pop(),l]:(n=i.pop(),n<s&&(s=n,a=l),l=r.indexOf(t,p+1)),p=u<l&&u>=0?u:l;i.length&&(o=[s,a])}return o}e.exports=r,r.range=n},function(e,t){"use strict";function r(){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t<r;++t)o[t]=e[t],u[e.charCodeAt(t)]=t;u["-".charCodeAt(0)]=62,u["_".charCodeAt(0)]=63}function i(e){var t,r,i,n,s,a,o=e.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");s="="===e[o-2]?2:"="===e[o-1]?1:0,a=new l(3*o/4-s),i=s>0?o-4:o;var p=0;for(t=0,r=0;t<i;t+=4,r+=3)n=u[e.charCodeAt(t)]<<18|u[e.charCodeAt(t+1)]<<12|u[e.charCodeAt(t+2)]<<6|u[e.charCodeAt(t+3)],a[p++]=n>>16&255,a[p++]=n>>8&255,a[p++]=255&n;return 2===s?(n=u[e.charCodeAt(t)]<<2|u[e.charCodeAt(t+1)]>>4,a[p++]=255&n):1===s&&(n=u[e.charCodeAt(t)]<<10|u[e.charCodeAt(t+1)]<<4|u[e.charCodeAt(t+2)]>>2,a[p++]=n>>8&255,a[p++]=255&n),a}function n(e){return o[e>>18&63]+o[e>>12&63]+o[e>>6&63]+o[63&e]}function s(e,t,r){for(var i,s=[],a=t;a<r;a+=3)i=(e[a]<<16)+(e[a+1]<<8)+e[a+2],s.push(n(i));return s.join("")}function a(e){for(var t,r=e.length,i=r%3,n="",a=[],u=16383,l=0,p=r-i;l<p;l+=u)a.push(s(e,l,l+u>p?p:l+u));return 1===i?(t=e[r-1],n+=o[t>>2],n+=o[t<<4&63],n+="=="):2===i&&(t=(e[r-2]<<8)+e[r-1],n+=o[t>>10],n+=o[t>>4&63],n+=o[t<<2&63],n+="="),a.push(n),a.join("")}t.toByteArray=i,t.fromByteArray=a;var o=[],u=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array;r()},function(e,t,r){function i(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function n(e){return e.split("\\\\").join(y).split("\\{").join(v).split("\\}").join(m).split("\\,").join(g).split("\\.").join(b)}function s(e){return e.split(y).join("\\").split(v).join("{").split(m).join("}").split(g).join(",").split(b).join(".")}function a(e){if(!e)return[""];var t=[],r=d("{","}",e);if(!r)return e.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var u=a(s);return s.length&&(o[o.length-1]+=u.shift(),o.push.apply(o,u)),t.push.apply(t,o),t}function o(e){return e?f(n(e),!0).map(s):[]}function u(e){return"{"+e+"}"}function l(e){return/^-?0\d/.test(e)}function p(e,t){return e<=t}function c(e,t){return e>=t}function f(e,t){var r=[],n=d("{","}",e);if(!n||/\$$/.test(n.pre))return[e];var s=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(n.body),o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(n.body),y=s||o,v=/^(.*,)+(.+)?$/.test(n.body);if(!y&&!v)return n.post.match(/,.*\}/)?(e=n.pre+"{"+n.body+m+n.post,f(e)):[e];var g;if(y)g=n.body.split(/\.\./);else if(g=a(n.body),1===g.length&&(g=f(g[0],!1).map(u),1===g.length)){var b=n.post.length?f(n.post,!1):[""];return b.map(function(e){return n.pre+g[0]+e})}var x,E=n.pre,b=n.post.length?f(n.post,!1):[""];if(y){var A=i(g[0]),S=i(g[1]),_=Math.max(g[0].length,g[1].length),T=3==g.length?Math.abs(i(g[2])):1,P=p,w=S<A;w&&(T*=-1,P=c);var k=g.some(l);x=[];for(var C=A;P(C,S);C+=T){var D;if(o)D=String.fromCharCode(C),"\\"===D&&(D="");else if(D=String(C),k){var O=_-D.length;if(O>0){var N=new Array(O+1).join("0");D=C<0?"-"+N+D.slice(1):N+D}}x.push(D)}}else x=h(g,function(e){return f(e,!1)});for(var I=0;I<x.length;I++)for(var F=0;F<b.length;F++){var B=E+x[I]+b[F];(!t||y||B)&&r.push(B)}return r}var h=r(6225),d=r(6221);e.exports=o;var y="\0SLASH"+Math.random()+"\0",v="\0OPEN"+Math.random()+"\0",m="\0CLOSE"+Math.random()+"\0",g="\0COMMA"+Math.random()+"\0",b="\0PERIOD"+Math.random()+"\0"},[6606,6266,2491,6433,6269,6434],function(e,t){e.exports=function(e,t){for(var i=[],n=0;n<e.length;n++){var s=t(e[n],n);r(s)?i.push.apply(i,s):i.push(s)}return i};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){(function(e){"use strict";function i(t){return new e(t,"base64").toString()}function n(e){return e.split(",").pop()}function s(e,t){var r=c.exec(e);c.lastIndex=0;var i=r[1]||r[2],n=l.resolve(t,i);try{return u.readFileSync(n,"utf8")}catch(e){throw new Error("An error occurred while trying to read the map file at "+n+"\n"+e)}}function a(e,t){t=t||{},t.isFileComment&&(e=s(e,t.commentFileDir)),t.hasComment&&(e=n(e)),t.isEncoded&&(e=i(e)),(t.isJSON||t.isEncoded)&&(e=JSON.parse(e)),this.sourcemap=e}function o(e){for(var r,i=e.split("\n"),n=i.length-1;n>0;n--)if(r=i[n],~r.indexOf("sourceMappingURL=data:"))return t.fromComment(r)}var u=r(685),l=r(187),p=/^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+;)?base64,(.*)$/gm,c=/(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/gm;a.prototype.toJSON=function(e){return JSON.stringify(this.sourcemap,null,e)},a.prototype.toBase64=function(){var t=this.toJSON();return new e(t).toString("base64")},a.prototype.toComment=function(e){var t=this.toBase64(),r="sourceMappingURL=data:application/json;base64,"+t;return e&&e.multiline?"/*# "+r+" */":"//# "+r},a.prototype.toObject=function(){return JSON.parse(this.toJSON())},a.prototype.addProperty=function(e,t){if(this.sourcemap.hasOwnProperty(e))throw new Error("property %s already exists on the sourcemap, use set property instead");return this.setProperty(e,t)},a.prototype.setProperty=function(e,t){return this.sourcemap[e]=t,this},a.prototype.getProperty=function(e){return this.sourcemap[e]},t.fromObject=function(e){return new a(e)},t.fromJSON=function(e){return new a(e,{isJSON:!0})},t.fromBase64=function(e){return new a(e,{isEncoded:!0})},t.fromComment=function(e){return e=e.replace(/^\/\*/g,"//").replace(/\*\/$/g,""),new a(e,{isEncoded:!0,hasComment:!0})},t.fromMapFileComment=function(e,t){return new a(e,{commentFileDir:t,isFileComment:!0,isJSON:!0})},t.fromSource=function(e,r){if(r){var i=o(e);return i?i:null}var n=e.match(p);return p.lastIndex=0,n?t.fromComment(n.pop()):null},t.fromMapFileSource=function(e,r){var i=e.match(c);return c.lastIndex=0,i?t.fromMapFileComment(i.pop(),r):null},t.removeComments=function(e){return p.lastIndex=0,e.replace(p,"")},t.removeMapFileComments=function(e){return c.lastIndex=0,e.replace(c,"")},t.generateMapFileComment=function(e,t){var r="sourceMappingURL="+e;return t&&t.multiline?"/*# "+r+" */":"//# "+r},Object.defineProperty(t,"commentRegex",{get:function(){return p.lastIndex=0,p}}),Object.defineProperty(t,"mapFileCommentRegex",{get:function(){return c.lastIndex=0,c}})}).call(t,r(2425).Buffer)},function(e,t,r){r(6253),e.exports=r(49).Object.assign},function(e,t,r){r(1026),r(680),r(6260),e.exports=r(49).WeakSet},2607,2608,function(e,t,r){var i=r(1020);e.exports=function(e,t){var r=[];return i(e,!1,r.push,r,t),r}},[6508,454,1594,6248],function(e,t,r){var i=r(251),n=r(2444),s=r(101)("species");e.exports=function(e){var t;return n(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!n(t.prototype)||(t=void 0),i(t)&&(t=t[s],null===t&&(t=void 0))),void 0===t?Array:t}},[6697,6233],function(e,t,r){"use strict";var i=r(184).f,n=r(1021),s=r(1589),a=r(676),o=r(1580),u=r(1019),l=r(1020),p=r(1586),c=r(2445),f=r(6246),h=r(181),d=r(678).fastKey,y=h?"_s":"size",v=function(e,t){var r,i=d(t);if("F"!==i)return e._i[i];for(r=e._f;r;r=r.n)if(r.k==t)return r};e.exports={getConstructor:function(e,t,r,p){var c=e(function(e,i){o(e,c,t,"_i"),e._i=n(null),e._f=void 0,e._l=void 0,e[y]=0,void 0!=i&&l(i,r,e[p],e)});return s(c.prototype,{clear:function(){for(var e=this,t=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete t[r.i];e._f=e._l=void 0,e[y]=0},delete:function(e){var t=this,r=v(t,e);if(r){var i=r.n,n=r.p;delete t._i[r.i],r.r=!0,n&&(n.n=i),i&&(i.p=n),t._f==r&&(t._f=i),t._l==r&&(t._l=n),t[y]--}return!!r},forEach:function(e){o(this,c,"forEach");for(var t,r=a(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.n:this._f;)for(r(t.v,t.k,this);t&&t.r;)t=t.p},has:function(e){return!!v(this,e)}}),h&&i(c.prototype,"size",{get:function(){return u(this[y])}}),c},def:function(e,t,r){var i,n,s=v(e,t);return s?s.v=r:(e._l=s={i:n=d(t,!0),k:t,v:r,p:i=e._l,n:void 0,r:!1},e._f||(e._f=s),i&&(i.n=s),e[y]++,"F"!==n&&(e._i[n]=s)),e},getEntry:v,setStrong:function(e,t,r){p(e,t,function(e,t){this._t=e,this._k=t,this._l=void 0},function(){for(var e=this,t=e._k,r=e._l;r&&r.r;)r=r.p;return e._t&&(e._l=r=r?r.n:e._t._f)?"keys"==t?c(0,r.k):"values"==t?c(0,r.v):c(0,[r.k,r.v]):(e._t=void 0,c(1))},r?"entries":"values",!r,!0),f(t)}}},function(e,t,r){var i=r(2440),n=r(6231);e.exports=function(e){return function(){if(i(this)!=e)throw TypeError(e+"#toJSON isn't generic");return n(this)}}},[6700,565,1588,1022],[6515,183],[6702,677,101],[6704,250],[6518,1021,1023,1024,370,101],[6705,565,454],function(e,t,r){var i=r(184),n=r(250),s=r(565);e.exports=r(181)?Object.defineProperties:function(e,t){n(e);for(var r,a=s(t),o=a.length,u=0;o>u;)i.f(e,r=a[u++],t[r]);return e}},[6709,454,2448],[6713,251,250,676,2447],function(e,t,r){"use strict";var i=r(183),n=r(49),s=r(184),a=r(181),o=r(101)("species");e.exports=function(e){var t="function"==typeof n[e]?n[e]:i[e];a&&t&&!t[o]&&s.f(t,o,{configurable:!0,get:function(){return this}})}},[6530,1593,1019],[6531,1593],[6538,250,2452,49],[6539,6230,2445,677,454,1586],function(e,t,r){"use strict";var i=r(6235);e.exports=r(1583)("Map",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{get:function(e){var t=i.getEntry(this,e);return t&&t.v},set:function(e,t){return i.def(this,0===e?0:e,t)}},i,!0)},[6716,182],function(e,t,r){var i=r(182);i(i.S+i.F,"Object",{assign:r(2446)})},function(e,t,r){var i=r(182);i(i.S,"Object",{create:r(1021)})},function(e,t,r){var i=r(182);i(i.S+i.F*!r(181),"Object",{defineProperty:r(184).f})},[6719,679,2449,2451],[6720,679,565,2451],[6721,182,6245],function(e,t,r){"use strict";var i,n=r(1581)(0),s=r(1590),a=r(678),o=r(2446),u=r(2441),l=r(251),p=a.getWeak,c=Object.isExtensible,f=u.ufstore,h={},d=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},y={get:function(e){if(l(e)){var t=p(e);return t===!0?f(this).get(e):t?t[this._i]:void 0}},set:function(e,t){return u.def(this,e,t)}},v=e.exports=r(1583)("WeakMap",d,y,u,!0,!0);7!=(new v).set((Object.freeze||Object)(h),7).get(h)&&(i=u.getConstructor(d),o(i.prototype,y),a.NEED=!0,n(["delete","has","get","set"],function(e){var t=v.prototype,r=t[e];s(t,e,function(t,n){if(l(t)&&!c(t)){this._f||(this._f=new i);var s=this._f[e](t,n);return"set"==e?this:s}return r.call(this,t,n)})}))},function(e,t,r){"use strict";var i=r(2441);r(1583)("WeakSet",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return i.def(this,e,!0)}},i,!1,!0)},function(e,t,r){var i=r(182);i(i.P+i.R,"Map",{toJSON:r(6236)("Map")})},[6724,1596],[6725,1596],[6612,6417],function(e,t,r){"use strict";function i(e){var t=0,r=0,i=0;for(var n in e){var s=e[n],a=s[0],o=s[1];(a>r||a===r&&o>i)&&(r=a,i=o,t=+n)}return t}var n=r(6425),s=/^(?:( )+|\t+)/;e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");var t,r,a=0,o=0,u=0,l={};e.split(/\n/g).forEach(function(e){if(e){var i,n=e.match(s);n?(i=n[0].length,n[1]?o++:a++):i=0;var p=i-u;u=i,p?(r=p>0,t=l[r?p:-p],t?t[0]++:t=l[p]=[1,0]):t&&(t[1]+=+r)}});var p,c,f=i(l);return f?o>=a?(p="space",c=n(" ",f)):(p="tab",c=n("\t",f)):(p=null,c=""),{amount:f,type:p,indent:c}}},2707,2713,[6609,2453],[6607,1615],function(e,t){t.read=function(e,t,r,i,n){var s,a,o=8*n-i-1,u=(1<<o)-1,l=u>>1,p=-7,c=r?n-1:0,f=r?-1:1,h=e[t+c];for(c+=f,s=h&(1<<-p)-1,h>>=-p,p+=o;p>0;s=256*s+e[t+c],c+=f,p-=8);for(a=s&(1<<-p)-1,s>>=-p,p+=i;p>0;a=256*a+e[t+c],c+=f,p-=8);if(0===s)s=1-l;else{if(s===u)return a?NaN:(h?-1:1)*(1/0);a+=Math.pow(2,i),s-=l}return(h?-1:1)*a*Math.pow(2,s-i)},t.write=function(e,t,r,i,n,s){var a,o,u,l=8*s-n-1,p=(1<<l)-1,c=p>>1,f=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:s-1,d=i?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=p):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),t+=a+c>=1?f/u:f*Math.pow(2,1-c),t*u>=2&&(a++,u/=2),a+c>=p?(o=0,a=p):a+c>=1?(o=(t*u-1)*Math.pow(2,n),a+=c):(o=t*Math.pow(2,c-1)*Math.pow(2,n),a=0));n>=8;e[r+h]=255&o,h+=d,o/=256,n-=8);for(a=a<<n|o,l+=n;l>0;e[r+h]=255&a,h+=d,a/=256,l-=8);e[r+h-d]|=128*y}},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},[6622,6418],function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t){e.exports=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,e.exports.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",
+t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},function(e,t){e.exports={_args:[[{name:"babel-core",raw:"babel-core@6.14.0",rawSpec:"6.14.0",scope:null,spec:"6.14.0",type:"version"},"C:\\src\\babel-standalone"]],_from:"babel-core@6.14.0",_id:"babel-core@6.14.0",_inCache:!0,_installable:!0,_location:"/babel-core",_nodeVersion:"5.11.1",_npmOperationalInternal:{host:"packages-12-west.internal.npmjs.com",tmp:"tmp/babel-core-6.14.0.tgz_1472082048405_0.022966341115534306"},_npmUser:{email:"hi@henryzoo.com",name:"hzoo"},_npmVersion:"3.10.6",_phantomChildren:{"babel-code-frame":"6.11.0","babel-messages":"6.8.0","babel-runtime":"6.9.2",debug:"2.2.0",esutils:"2.0.2",globals:"8.18.0",invariant:"2.2.1",lodash:"4.14.1","to-fast-properties":"1.0.2"},_requested:{name:"babel-core",raw:"babel-core@6.14.0",rawSpec:"6.14.0",scope:null,spec:"6.14.0",type:"version"},_requiredBy:["#DEV:/","/babel-plugin-transform-regenerator","/babel-register"],_resolved:"https://registry.npmjs.org/babel-core/-/babel-core-6.14.0.tgz",_shasum:"c9e13ed4e2f97329215496fd9fb48f2b3bcb9b42",_shrinkwrap:null,_spec:"babel-core@6.14.0",_where:"C:\\src\\babel-standalone",author:{email:"sebmck@gmail.com",name:"Sebastian McKenzie"},dependencies:{"babel-code-frame":"^6.8.0","babel-generator":"^6.14.0","babel-helpers":"^6.8.0","babel-messages":"^6.8.0","babel-register":"^6.14.0","babel-runtime":"^6.9.1","babel-template":"^6.14.0","babel-traverse":"^6.14.0","babel-types":"^6.14.0",babylon:"^6.9.0","convert-source-map":"^1.1.0",debug:"^2.1.1",json5:"^0.4.0",lodash:"^4.2.0",minimatch:"^3.0.2","path-exists":"^1.0.0","path-is-absolute":"^1.0.0",private:"^0.1.6","shebang-regex":"^1.0.0",slash:"^1.0.0","source-map":"^0.5.0"},description:"Babel compiler core.",devDependencies:{"babel-helper-fixtures":"^6.9.0","babel-helper-transform-fixture-test-runner":"^6.13.2","babel-polyfill":"^6.13.0"},directories:{},dist:{shasum:"c9e13ed4e2f97329215496fd9fb48f2b3bcb9b42",tarball:"https://registry.npmjs.org/babel-core/-/babel-core-6.14.0.tgz"},homepage:"https://babeljs.io/",keywords:["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var"],license:"MIT",maintainers:[{email:"amjad.masad@gmail.com",name:"amasad"},{email:"hi@henryzoo.com",name:"hzoo"},{email:"npm-public@jessemccarthy.net",name:"jmm"},{email:"loganfsmyth@gmail.com",name:"loganfsmyth"},{email:"sebmck@gmail.com",name:"sebmck"},{email:"me@thejameskyle.com",name:"thejameskyle"}],name:"babel-core",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"https://github.com/babel/babel/tree/master/packages/babel-core"},scripts:{bench:"make bench",test:"make test"},version:"6.14.0"}},function(e,t){e.exports={builtin:{Array:!1,ArrayBuffer:!1,Boolean:!1,constructor:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,hasOwnProperty:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,isFinite:!1,isNaN:!1,isPrototypeOf:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,propertyIsEnumerable:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,String:!1,Symbol:!1,SyntaxError:!1,System:!1,toLocaleString:!1,toString:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,valueOf:!1,WeakMap:!1,WeakSet:!1},es5:{Array:!1,Boolean:!1,constructor:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,hasOwnProperty:!1,Infinity:!1,isFinite:!1,isNaN:!1,isPrototypeOf:!1,JSON:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,propertyIsEnumerable:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,toLocaleString:!1,toString:!1,TypeError:!1,undefined:!1,unescape:!1,URIError:!1,valueOf:!1},es6:{Array:!1,ArrayBuffer:!1,Boolean:!1,constructor:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,hasOwnProperty:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,isFinite:!1,isNaN:!1,isPrototypeOf:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,propertyIsEnumerable:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,String:!1,Symbol:!1,SyntaxError:!1,System:!1,toLocaleString:!1,toString:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,valueOf:!1,WeakMap:!1,WeakSet:!1},browser:{addEventListener:!1,alert:!1,AnalyserNode:!1,AnimationEvent:!1,applicationCache:!1,ApplicationCache:!1,ApplicationCacheErrorEvent:!1,atob:!1,Attr:!1,Audio:!1,AudioBuffer:!1,AudioBufferSourceNode:!1,AudioContext:!1,AudioDestinationNode:!1,AudioListener:!1,AudioNode:!1,AudioParam:!1,AudioProcessingEvent:!1,AutocompleteErrorEvent:!1,BarProp:!1,BatteryManager:!1,BeforeUnloadEvent:!1,BiquadFilterNode:!1,Blob:!1,blur:!1,btoa:!1,Cache:!1,caches:!1,CacheStorage:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CDATASection:!1,ChannelMergerNode:!1,ChannelSplitterNode:!1,CharacterData:!1,clearInterval:!1,clearTimeout:!1,clientInformation:!1,ClientRect:!1,ClientRectList:!1,ClipboardEvent:!1,close:!1,closed:!1,CloseEvent:!1,Comment:!1,CompositionEvent:!1,confirm:!1,console:!1,ConvolverNode:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CSS:!1,CSSFontFaceRule:!1,CSSImportRule:!1,CSSKeyframeRule:!1,CSSKeyframesRule:!1,CSSMediaRule:!1,CSSPageRule:!1,CSSRule:!1,CSSRuleList:!1,CSSStyleDeclaration:!1,CSSStyleRule:!1,CSSStyleSheet:!1,CSSSupportsRule:!1,CSSUnknownRule:!1,CSSViewportRule:!1,CustomEvent:!1,DataTransfer:!1,DataTransferItem:!1,DataTransferItemList:!1,Debug:!1,defaultStatus:!1,defaultstatus:!1,DelayNode:!1,DeviceMotionEvent:!1,DeviceOrientationEvent:!1,devicePixelRatio:!1,dispatchEvent:!1,document:!1,Document:!1,DocumentFragment:!1,DocumentType:!1,DOMError:!1,DOMException:!1,DOMImplementation:!1,DOMParser:!1,DOMSettableTokenList:!1,DOMStringList:!1,DOMStringMap:!1,DOMTokenList:!1,DragEvent:!1,DynamicsCompressorNode:!1,Element:!1,ElementTimeControl:!1,ErrorEvent:!1,event:!1,Event:!1,EventSource:!1,EventTarget:!1,external:!1,fetch:!1,File:!1,FileError:!1,FileList:!1,FileReader:!1,find:!1,focus:!1,FocusEvent:!1,FontFace:!1,FormData:!1,frameElement:!1,frames:!1,GainNode:!1,Gamepad:!1,GamepadButton:!1,GamepadEvent:!1,getComputedStyle:!1,getSelection:!1,HashChangeEvent:!1,Headers:!1,history:!1,History:!1,HTMLAllCollection:!1,HTMLAnchorElement:!1,HTMLAppletElement:!1,HTMLAreaElement:!1,HTMLAudioElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLContentElement:!1,HTMLDataListElement:!1,HTMLDetailsElement:!1,HTMLDialogElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLDocument:!1,HTMLElement:!1,HTMLEmbedElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormControlsCollection:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLKeygenElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMarqueeElement:!1,HTMLMediaElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLMeterElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLOptionsCollection:!1,HTMLOutputElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPictureElement:!1,HTMLPreElement:!1,HTMLProgressElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLShadowElement:!1,HTMLSourceElement:!1,HTMLSpanElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLTrackElement:!1,HTMLUListElement:!1,HTMLUnknownElement:!1,HTMLVideoElement:!1,IDBCursor:!1,IDBCursorWithValue:!1,IDBDatabase:!1,IDBEnvironment:!1,IDBFactory:!1,IDBIndex:!1,IDBKeyRange:!1,IDBObjectStore:!1,IDBOpenDBRequest:!1,IDBRequest:!1,IDBTransaction:!1,IDBVersionChangeEvent:!1,Image:!1,ImageBitmap:!1,ImageData:!1,indexedDB:!1,innerHeight:!1,innerWidth:!1,InputEvent:!1,InputMethodContext:!1,Intl:!1,KeyboardEvent:!1,length:!1,localStorage:!1,location:!1,Location:!1,locationbar:!1,matchMedia:!1,MediaElementAudioSourceNode:!1,MediaEncryptedEvent:!1,MediaError:!1,MediaKeyError:!1,MediaKeyEvent:!1,MediaKeyMessageEvent:!1,MediaKeys:!1,MediaKeySession:!1,MediaKeyStatusMap:!1,MediaKeySystemAccess:!1,MediaList:!1,MediaQueryList:!1,MediaQueryListEvent:!1,MediaSource:!1,MediaStreamAudioDestinationNode:!1,MediaStreamAudioSourceNode:!1,MediaStreamEvent:!1,MediaStreamTrack:!1,menubar:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MIDIAccess:!1,MIDIConnectionEvent:!1,MIDIInput:!1,MIDIInputMap:!1,MIDIMessageEvent:!1,MIDIOutput:!1,MIDIOutputMap:!1,MIDIPort:!1,MimeType:!1,MimeTypeArray:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationEvent:!1,MutationObserver:!1,MutationRecord:!1,name:!1,NamedNodeMap:!1,navigator:!1,Navigator:!1,Node:!1,NodeFilter:!1,NodeIterator:!1,NodeList:!1,Notification:!1,OfflineAudioCompletionEvent:!1,OfflineAudioContext:!1,offscreenBuffering:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,opera:!1,Option:!1,OscillatorNode:!1,outerHeight:!1,outerWidth:!1,PageTransitionEvent:!1,pageXOffset:!1,pageYOffset:!1,parent:!1,Path2D:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceNavigation:!1,PerformanceResourceTiming:!1,PerformanceTiming:!1,PeriodicWave:!1,Permissions:!1,PermissionStatus:!1,personalbar:!1,Plugin:!1,PluginArray:!1,PopStateEvent:!1,postMessage:!1,print:!1,ProcessingInstruction:!1,ProgressEvent:!1,prompt:!1,PushManager:!1,PushSubscription:!1,RadioNodeList:!1,Range:!1,ReadableByteStream:!1,ReadableStream:!1,removeEventListener:!1,Request:!1,requestAnimationFrame:!1,resizeBy:!1,resizeTo:!1,Response:!1,RTCIceCandidate:!1,RTCSessionDescription:!1,screen:!1,Screen:!1,screenLeft:!1,ScreenOrientation:!1,screenTop:!1,screenX:!1,screenY:!1,ScriptProcessorNode:!1,scroll:!1,scrollbars:!1,scrollBy:!1,scrollTo:!1,scrollX:!1,scrollY:!1,SecurityPolicyViolationEvent:!1,Selection:!1,self:!1,ServiceWorker:!1,ServiceWorkerContainer:!1,ServiceWorkerRegistration:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,ShadowRoot:!1,SharedWorker:!1,showModalDialog:!1,speechSynthesis:!1,SpeechSynthesisEvent:!1,SpeechSynthesisUtterance:!1,status:!1,statusbar:!1,stop:!1,Storage:!1,StorageEvent:!1,styleMedia:!1,StyleSheet:!1,StyleSheetList:!1,SubtleCrypto:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimationElement:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCSSRule:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDiscardElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGEvent:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEDropShadowElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGeometryElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGGraphicsElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLinearGradientElement:!1,SVGLineElement:!1,SVGLocatable:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGMPathElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSVGElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformable:!1,SVGTransformList:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGUnitTypes:!1,SVGURIReference:!1,SVGUseElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGVKernElement:!1,SVGZoomAndPan:!1,SVGZoomEvent:!1,Text:!1,TextDecoder:!1,TextEncoder:!1,TextEvent:!1,TextMetrics:!1,TextTrack:!1,TextTrackCue:!1,TextTrackCueList:!1,TextTrackList:!1,TimeEvent:!1,TimeRanges:!1,toolbar:!1,top:!1,Touch:!1,TouchEvent:!1,TouchList:!1,TrackEvent:!1,TransitionEvent:!1,TreeWalker:!1,UIEvent:!1,URL:!1,ValidityState:!1,VTTCue:!1,WaveShaperNode:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,WheelEvent:!1,window:!1,Window:!1,Worker:!1,XDomainRequest:!1,XMLDocument:!1,XMLHttpRequest:!1,XMLHttpRequestEventTarget:!1,XMLHttpRequestProgressEvent:!1,XMLHttpRequestUpload:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1,XSLTProcessor:!1},worker:{applicationCache:!1,atob:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,Cache:!1,caches:!1,clearInterval:!1,clearTimeout:!1,close:!0,console:!1,fetch:!1,FileReaderSync:!1,FormData:!1,Headers:!1,IDBCursor:!1,IDBCursorWithValue:!1,IDBDatabase:!1,IDBFactory:!1,IDBIndex:!1,IDBKeyRange:!1,IDBObjectStore:!1,IDBOpenDBRequest:!1,IDBRequest:!1,IDBTransaction:!1,IDBVersionChangeEvent:!1,ImageData:!1,importScripts:!0,indexedDB:!1,location:!1,MessageChannel:!1,MessagePort:!1,name:!1,navigator:!1,Notification:!1,onclose:!0,onconnect:!0,onerror:!0,onlanguagechange:!0,onmessage:!0,onoffline:!0,ononline:!0,onrejectionhandled:!0,onunhandledrejection:!0,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceNavigation:!1,PerformanceResourceTiming:!1,PerformanceTiming:!1,postMessage:!0,Promise:!1,Request:!1,Response:!1,self:!0,ServiceWorkerRegistration:!1,setInterval:!1,setTimeout:!1,TextDecoder:!1,TextEncoder:!1,URL:!1,WebSocket:!1,Worker:!1,XMLHttpRequest:!1},node:{__dirname:!1,__filename:!1,arguments:!1,Buffer:!1,clearImmediate:!1,clearInterval:!1,clearTimeout:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,require:!1,root:!1,setImmediate:!1,setInterval:!1,setTimeout:!1},commonjs:{exports:!0,module:!1,require:!1,global:!1},amd:{define:!1,require:!1},mocha:{after:!1,afterEach:!1,before:!1,beforeEach:!1,context:!1,describe:!1,it:!1,mocha:!1,setup:!1,specify:!1,suite:!1,suiteSetup:!1,suiteTeardown:!1,teardown:!1,test:!1,xcontext:!1,xdescribe:!1,xit:!1,xspecify:!1},jasmine:{afterAll:!1,afterEach:!1,beforeAll:!1,beforeEach:!1,describe:!1,expect:!1,fail:!1,fdescribe:!1,fit:!1,it:!1,jasmine:!1,pending:!1,runs:!1,spyOn:!1,waits:!1,waitsFor:!1,xdescribe:!1,xit:!1},jest:{afterEach:!1,beforeEach:!1,describe:!1,expect:!1,it:!1,jest:!1,pit:!1,require:!1,xdescribe:!1,xit:!1},qunit:{asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notOk:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,throws:!1},phantomjs:{console:!0,exports:!0,phantom:!0,require:!0,WebPage:!0},couch:{emit:!1,exports:!1,getRow:!1,log:!1,module:!1,provides:!1,require:!1,respond:!1,send:!1,start:!1,sum:!1},rhino:{defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},nashorn:{__DIR__:!1,__FILE__:!1,__LINE__:!1,com:!1,edu:!1,exit:!1,Java:!1,java:!1,javafx:!1,JavaImporter:!1,javax:!1,JSAdapter:!1,load:!1,loadWithNewGlobal:!1,org:!1,Packages:!1,print:!1,quit:!1},wsh:{ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WScript:!0,WSH:!0,XDomainRequest:!0},jquery:{$:!1,jQuery:!1},yui:{Y:!1,YUI:!1,YUI_config:!1},shelljs:{cat:!1,cd:!1,chmod:!1,config:!1,cp:!1,dirs:!1,echo:!1,env:!1,error:!1,exec:!1,exit:!1,find:!1,grep:!1,ls:!1,ln:!1,mkdir:!1,mv:!1,popd:!1,pushd:!1,pwd:!1,rm:!1,sed:!1,target:!1,tempdir:!1,test:!1,which:!1},prototypejs:{$:!1,$$:!1,$A:!1,$break:!1,$continue:!1,$F:!1,$H:!1,$R:!1,$w:!1,Abstract:!1,Ajax:!1,Autocompleter:!1,Builder:!1,Class:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Element:!1,Enumerable:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Scriptaculous:!1,Selector:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Template:!1,Toggle:!1,Try:!1},meteor:{$:!1,_:!1,Accounts:!1,App:!1,Assets:!1,Blaze:!1,check:!1,Cordova:!1,DDP:!1,DDPServer:!1,Deps:!1,EJSON:!1,Email:!1,HTTP:!1,Log:!1,Match:!1,Meteor:!1,Mongo:!1,MongoInternals:!1,Npm:!1,Package:!1,Plugin:!1,process:!1,Random:!1,ReactiveDict:!1,ReactiveVar:!1,Router:!1,Session:!1,share:!1,Spacebars:!1,Template:!1,Tinytest:!1,Tracker:!1,UI:!1,Utils:!1,WebApp:!1,WebAppInternals:!1},mongo:{_isWindows:!1,_rand:!1,BulkWriteResult:!1,cat:!1,cd:!1,connect:!1,db:!1,getHostName:!1,getMemInfo:!1,hostname:!1,listFiles:!1,load:!1,ls:!1,md5sumFile:!1,mkdir:!1,Mongo:!1,ObjectId:!1,PlanCache:!1,print:!1,printjson:!1,pwd:!1,quit:!1,removeFile:!1,rs:!1,sh:!1,UUID:!1,version:!1,WriteResult:!1},applescript:{$:!1,Application:!1,Automation:!1,console:!1,delay:!1,Library:!1,ObjC:!1,ObjectSpecifier:!1,Path:!1,Progress:!1,Ref:!1},serviceworker:{caches:!1,Cache:!1,CacheStorage:!1,Client:!1,clients:!1,Clients:!1,ExtendableEvent:!1,ExtendableMessageEvent:!1,FetchEvent:!1,importScripts:!1,registration:!1,self:!1,ServiceWorker:!1,ServiceWorkerContainer:!1,ServiceWorkerGlobalScope:!1,ServiceWorkerMessageEvent:!1,ServiceWorkerRegistration:!1,skipWaiting:!1,WindowClient:!1},atomtest:{advanceClock:!1,fakeClearInterval:!1,fakeClearTimeout:!1,fakeSetInterval:!1,fakeSetTimeout:!1,resetTimeouts:!1,waitsForPromise:!1},embertest:{andThen:!1,click:!1,currentPath:!1,currentRouteName:!1,currentURL:!1,fillIn:!1,find:!1,findWithAssert:!1,keyEvent:!1,pauseTest:!1,triggerEvent:!1,visit:!1},protractor:{$:!1,$$:!1,browser:!1,By:!1,by:!1,DartObject:!1,element:!1,protractor:!1},"shared-node-browser":{clearInterval:!1,clearTimeout:!1,console:!1,setInterval:!1,setTimeout:!1},webextensions:{browser:!1,chrome:!1,opr:!1},greasemonkey:{GM_addStyle:!1,GM_deleteValue:!1,GM_getResourceText:!1,GM_getResourceURL:!1,GM_getValue:!1,GM_info:!1,GM_listValues:!1,GM_log:!1,GM_openInTab:!1,GM_registerMenuCommand:!1,GM_setClipboard:!1,GM_setValue:!1,GM_xmlhttpRequest:!1,unsafeWindow:!1}}},6276,6276,6276,6276,6276,6276,6276,6276,6276,6276,6276,6276,6276,6276,6276,6276,function(e,t){e.exports={75:8490,83:383,107:8490,115:383,181:924,197:8491,383:83,452:453,453:452,455:456,456:455,458:459,459:458,497:498,498:497,837:8126,914:976,917:1013,920:1012,921:8126,922:1008,924:181,928:982,929:1009,931:962,934:981,937:8486,962:931,976:914,977:1012,981:934,982:928,1008:922,1009:929,1012:[920,977],1013:917,7776:7835,7835:7776,8126:[837,921],8486:937,8490:75,8491:197,66560:66600,66561:66601,66562:66602,66563:66603,66564:66604,66565:66605,66566:66606,66567:66607,66568:66608,66569:66609,66570:66610,66571:66611,66572:66612,66573:66613,66574:66614,66575:66615,66576:66616,66577:66617,66578:66618,66579:66619,66580:66620,66581:66621,66582:66622,66583:66623,66584:66624,66585:66625,66586:66626,66587:66627,66588:66628,66589:66629,66590:66630,66591:66631,66592:66632,66593:66633,66594:66634,66595:66635,66596:66636,66597:66637,66598:66638,66599:66639,66600:66560,66601:66561,66602:66562,66603:66563,66604:66564,66605:66565,66606:66566,66607:66567,66608:66568,66609:66569,66610:66570,66611:66571,66612:66572,66613:66573,66614:66574,66615:66575,66616:66576,66617:66577,66618:66578,66619:66579,66620:66580,66621:66581,66622:66582,66623:66583,66624:66584,66625:66585,66626:66586,66627:66587,66628:66588,66629:66589,66630:66590,66631:66591,66632:66592,66633:66593,66634:66594,66635:66595,66636:66596,66637:66597,66638:66598,66639:66599,68736:68800,68737:68801,68738:68802,68739:68803,68740:68804,68741:68805,68742:68806,68743:68807,68744:68808,68745:68809,68746:68810,68747:68811,68748:68812,68749:68813,68750:68814,68751:68815,68752:68816,68753:68817,68754:68818,68755:68819,68756:68820,68757:68821,68758:68822,68759:68823,68760:68824,68761:68825,68762:68826,68763:68827,68764:68828,68765:68829,68766:68830,68767:68831,68768:68832,68769:68833,68770:68834,68771:68835,68772:68836,68773:68837,68774:68838,68775:68839,68776:68840,68777:68841,68778:68842,68779:68843,68780:68844,68781:68845,68782:68846,68783:68847,68784:68848,68785:68849,68786:68850,68800:68736,68801:68737,68802:68738,68803:68739,68804:68740,68805:68741,68806:68742,68807:68743,68808:68744,68809:68745,68810:68746,68811:68747,68812:68748,68813:68749,68814:68750,68815:68751,68816:68752,68817:68753,68818:68754,68819:68755,68820:68756,68821:68757,68822:68758,68823:68759,68824:68760,68825:68761,68826:68762,68827:68763,68828:68764,68829:68765,68830:68766,68831:68767,68832:68768,68833:68769,68834:68770,68835:68771,68836:68772,68837:68773,68838:68774,68839:68775,68840:68776,68841:68777,68842:68778,68843:68779,68844:68780,68845:68781,68846:68782,68847:68783,68848:68784,68849:68785,68850:68786,71840:71872,71841:71873,71842:71874,71843:71875,71844:71876,71845:71877,71846:71878,71847:71879,71848:71880,71849:71881,71850:71882,71851:71883,71852:71884,71853:71885,71854:71886,71855:71887,71856:71888,71857:71889,71858:71890,71859:71891,71860:71892,71861:71893,71862:71894,71863:71895,71864:71896,71865:71897,71866:71898,71867:71899,71868:71900,71869:71901,71870:71902,71871:71903,71872:71840,71873:71841,71874:71842,71875:71843,71876:71844,71877:71845,71878:71846,71879:71847,71880:71848,71881:71849,71882:71850,71883:71851,71884:71852,71885:71853,71886:71854,71887:71855,71888:71856,71889:71857,71890:71858,71891:71859,71892:71860,71893:71861,71894:71862,71895:71863,71896:71864,71897:71865,71898:71866,71899:71867,71900:71868,71901:71869,71902:71870,71903:71871}},function(e,t,r){var i=t;i.parse=function(){"use strict";var e,t,r,i,n={"'":"'",'"':'"',"\\":"\\","/":"/","\n":"",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},s=[" ","\t","\r","\n","\v","\f"," ","\ufeff"],a=function(t){var i=new SyntaxError;throw i.message=t,i.at=e,i.text=r,i},o=function(i){return i&&i!==t&&a("Expected '"+i+"' instead of '"+t+"'"),t=r.charAt(e),e+=1,t},u=function(){return r.charAt(e)},l=function(){var e=t;for("_"!==t&&"$"!==t&&(t<"a"||t>"z")&&(t<"A"||t>"Z")&&a("Bad identifier");o()&&("_"===t||"$"===t||t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9");)e+=t;return e},p=function(){var e,r="",i="",n=10;if("-"!==t&&"+"!==t||(r=t,o(t)),"I"===t)return e=v(),("number"!=typeof e||isNaN(e))&&a("Unexpected word for number"),"-"===r?-e:e;if("N"===t)return e=v(),isNaN(e)||a("expected word to be NaN"),e;switch("0"===t&&(i+=t,o(),"x"===t||"X"===t?(i+=t,o(),n=16):t>="0"&&t<="9"&&a("Octal literal")),n){case 10:for(;t>="0"&&t<="9";)i+=t,o();if("."===t)for(i+=".";o()&&t>="0"&&t<="9";)i+=t;if("e"===t||"E"===t)for(i+=t,o(),"-"!==t&&"+"!==t||(i+=t,o());t>="0"&&t<="9";)i+=t,o();break;case 16:for(;t>="0"&&t<="9"||t>="A"&&t<="F"||t>="a"&&t<="f";)i+=t,o()}return e="-"===r?-i:+i,isFinite(e)?e:void a("Bad number")},c=function(){var e,r,i,s,l="";if('"'===t||"'"===t)for(i=t;o();){if(t===i)return o(),l;if("\\"===t)if(o(),"u"===t){for(s=0,r=0;r<4&&(e=parseInt(o(),16),isFinite(e));r+=1)s=16*s+e;l+=String.fromCharCode(s)}else if("\r"===t)"\n"===u()&&o();else{if("string"!=typeof n[t])break;l+=n[t]}else{if("\n"===t)break;l+=t}}a("Bad string")},f=function(){"/"!==t&&a("Not an inline comment");do if(o(),"\n"===t||"\r"===t)return void o();while(t)},h=function(){"*"!==t&&a("Not a block comment");do for(o();"*"===t;)if(o("*"),"/"===t)return void o("/");while(t);a("Unterminated block comment")},d=function(){"/"!==t&&a("Not a comment"),o("/"),"/"===t?f():"*"===t?h():a("Unrecognized comment")},y=function(){for(;t;)if("/"===t)d();else{if(!(s.indexOf(t)>=0))return;o()}},v=function(){switch(t){case"t":return o("t"),o("r"),o("u"),o("e"),!0;case"f":return o("f"),o("a"),o("l"),o("s"),o("e"),!1;case"n":return o("n"),o("u"),o("l"),o("l"),null;case"I":return o("I"),o("n"),o("f"),o("i"),o("n"),o("i"),o("t"),o("y"),1/0;case"N":return o("N"),o("a"),o("N"),NaN}a("Unexpected '"+t+"'")},m=function(){var e=[];if("["===t)for(o("["),y();t;){if("]"===t)return o("]"),e;if(","===t?a("Missing array element"):e.push(i()),y(),","!==t)return o("]"),e;o(","),y()}a("Bad array")},g=function(){var e,r={};if("{"===t)for(o("{"),y();t;){if("}"===t)return o("}"),r;if(e='"'===t||"'"===t?c():l(),y(),o(":"),r[e]=i(),y(),","!==t)return o("}"),r;o(","),y()}a("Bad object")};return i=function(){switch(y(),t){case"{":return g();case"[":return m();case'"':case"'":return c();case"-":case"+":case".":return p();default:return t>="0"&&t<="9"?p():v()}},function(n,s){var o;return r=String(n),e=0,t=" ",o=i(),y(),t&&a("Syntax error"),"function"==typeof s?function e(t,r){var i,n,a=t[r];if(a&&"object"==typeof a)for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(n=e(a,i),void 0!==n?a[i]=n:delete a[i]);return s.call(t,r,a)}({"":o},""):o}}(),i.stringify=function(e,t,r){function n(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"_"===e||"$"===e}function s(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e||"$"===e}function a(e){if("string"!=typeof e)return!1;if(!s(e[0]))return!1;for(var t=1,r=e.length;t<r;){if(!n(e[t]))return!1;t++}return!0}function o(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}function u(e){return"[object Date]"===Object.prototype.toString.call(e)}function l(e){for(var t=0;t<y.length;t++)if(y[t]===e)throw new TypeError("Converting circular structure to JSON")}function p(e,t,r){if(!e)return"";e.length>10&&(e=e.substring(0,10));for(var i=r?"":"\n",n=0;n<t;n++)i+=e;return i}function c(e){return v.lastIndex=0,v.test(e)?'"'+e.replace(v,function(e){var t=m[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function f(e,t,r){var i,n,s=h(e,t,r);switch(s&&!u(s)&&(s=s.valueOf()),typeof s){case"boolean":return s.toString();case"number":return isNaN(s)||!isFinite(s)?"null":s.toString();case"string":return c(s.toString());case"object":if(null===s)return"null";if(o(s)){l(s),i="[",y.push(s);for(var v=0;v<s.length;v++)n=f(s,v,!1),i+=p(d,y.length),i+=null===n||"undefined"==typeof n?"null":n,v<s.length-1?i+=",":d&&(i+="\n");y.pop(),i+=p(d,y.length,!0)+"]"}else{l(s),i="{";var m=!1;y.push(s);for(var g in s)if(s.hasOwnProperty(g)){var b=f(s,g,!1);if(r=!1,"undefined"!=typeof b&&null!==b){i+=p(d,y.length),m=!0;var t=a(g)?g:c(g);i+=t+":"+(d?" ":"")+b+","}}y.pop(),i=m?i.substring(0,i.length-1)+p(d,y.length)+"}":"{}"}return i;default:return}}if(t&&"function"!=typeof t&&!o(t))throw new Error("Replacer must be a function or an array");var h=function(e,r,i){var n=e[r];return n&&n.toJSON&&"function"==typeof n.toJSON&&(n=n.toJSON()),"function"==typeof t?t.call(e,r,n):t?i||o(e)||t.indexOf(r)>=0?n:void 0:n};i.isWord=a,isNaN=isNaN||function(e){return"number"==typeof e&&e!==e};var d,y=[];r&&("string"==typeof r?d=r:"number"==typeof r&&r>=0&&(d=p(" ",r,!0)));var v=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},g={"":e};return void 0===e?h(g,"",!0):f(g,"",!0)}},[6728,568,186],[6729,6358,6359,6360,6361,6362],[6733,568,186],[6807,186],[6738,568,186],function(e,t){function r(e,t){return e.set(t[0],t[1]),e}e.exports=r},function(e,t){function r(e,t){return e.add(t),e}e.exports=r},[6834,1606],4059,4062,[6808,570],[6741,567,256],function(e,t){function r(e,t,r){return e===e&&(void 0!==r&&(e=e<=r?e:r),void 0!==t&&(e=e>=t?e:t)),e}e.exports=r},[6743,103],function(e,t,r){function i(e,t,r,a,o){var u=-1,l=e.length;for(r||(r=s),o||(o=[]);++u<l;){var p=e[u];t>0&&r(p)?t>1?i(p,t-1,r,a,o):n(o,p):a||(o[o.length]=p)}return o}var n=r(2458),s=r(6366);e.exports=i},[6836,6350],[6837,6310,256],[6744,2458,76],function(e,t){function r(e){return n.call(e)}var i=Object.prototype,n=i.toString;e.exports=r},4071,[6840,1028,2469,6352,6353,2472,76,1035,1614],[6841,1028,2463],function(e,t){function r(e){return e!==e}e.exports=r},[6746,682,1035,6368,103,2479],function(e,t,r){function i(e){return n(e)&&o.call(e)==s}var n=r(103),s="[object RegExp]",a=Object.prototype,o=a.toString;e.exports=i},function(e,t,r){function i(e){return s(e)&&n(e.length)&&!!D[N.call(e)]}var n=r(1042),s=r(373),a="[object Arguments]",o="[object Array]",u="[object Boolean]",l="[object Date]",p="[object Error]",c="[object Function]",f="[object Map]",h="[object Number]",d="[object Object]",y="[object RegExp]",v="[object Set]",m="[object String]",g="[object WeakMap]",b="[object ArrayBuffer]",x="[object DataView]",E="[object Float32Array]",A="[object Float64Array]",S="[object Int8Array]",_="[object Int16Array]",T="[object Int32Array]",P="[object Uint8Array]",w="[object Uint8ClampedArray]",k="[object Uint16Array]",C="[object Uint32Array]",D={};D[E]=D[A]=D[S]=D[_]=D[T]=D[P]=D[w]=D[k]=D[C]=!0,D[a]=D[o]=D[b]=D[u]=D[x]=D[l]=D[p]=D[c]=D[f]=D[h]=D[d]=D[y]=D[v]=D[m]=D[g]=!1;var O=Object.prototype,N=O.toString;e.exports=i},function(e,t,r){var i=r(1613),n=Object.keys,s=i(n,Object);e.exports=s},[6809,6298,6369],[6843,6316,6356,2477],[6844,2463,6399,6400,1037,2475,2477,1040],function(e,t,r){function i(e,t,r,f,h){
+if(e!==t){if(!u(t)&&!p(t))var d=c(t);s(d||t,function(s,u){if(d&&(u=s,s=t[u]),l(s))h||(h=new n),o(e,t,u,r,i,f,h);else{var p=f?f(e[u],s,u+"",e,t,h):void 0;void 0===p&&(p=s),a(e,u,p)}})}}var n=r(1028),s=r(1602),a=r(2460),o=r(6326),u=r(76),l=r(103),p=r(1614),c=r(1043);e.exports=i},function(e,t,r){function i(e,t,r,i,y,v,m){var g=e[r],b=t[r],x=m.get(b);if(x)return void n(e,r,x);var E=v?v(g,b,r+"",e,t,m):void 0,A=void 0===E;A&&(E=b,u(b)||h(b)?u(g)?E=g:l(g)?E=a(g):(A=!1,E=s(b,!0)):f(b)||o(b)?o(g)?E=d(g):!c(g)||i&&p(g)?(A=!1,E=s(b,!0)):E=g:A=!1),A&&(m.set(b,E),y(E,b,i,v,m),m.delete(b)),n(e,r,E)}var n=r(2460),s=r(1032),a=r(2467),o=r(1041),u=r(76),l=r(2481),p=r(682),c=r(103),f=r(254),h=r(1614),d=r(6414);e.exports=i},function(e,t,r){function i(e,t,r){var i=-1;t=n(t.length?t:[p],u(s));var c=a(e,function(e,r,s){var a=n(t,function(t){return t(e)});return{criteria:a,index:++i,value:e}});return o(c,function(e,t){return l(e,t,r)})}var n=r(1603),s=r(566),a=r(2464),o=r(6331),u=r(1609),l=r(6346),p=r(2480);e.exports=i},[6845,2462],3879,function(e,t){function r(e,t,r){var i=-1,n=e.length;t<0&&(t=-t>n?0:n+t),r=r>n?n:r,r<0&&(r+=n),n=t>r?0:r-t>>>0,t>>>=0;for(var s=Array(n);++i<n;)s[i]=e[i+t];return s}e.exports=r},function(e,t){function r(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}e.exports=r},3740,[6846,2455,6302,6303,6335,6351,1039],[6810,1603],4086,function(e,t,r){function i(e,t,r){var i=e.length;return r=void 0===r?i:r,!t&&r>=i?e:n(e,t,r)}var n=r(6330);e.exports=i},function(e,t,r){function i(e,t){for(var r=e.length;r--&&n(t,e[r],0)>-1;);return r}var n=r(1606);e.exports=i},3744,[6750,1610],[6751,6300,2459,2476],3747,[6752,6301,2459,1039],[6753,1029],[6754,1610],function(e,t,r){function i(e,t){if(e!==t){var r=void 0!==e,i=null===e,s=e===e,a=n(e),o=void 0!==t,u=null===t,l=t===t,p=n(t);if(!u&&!p&&!a&&e>t||a&&o&&l&&!u&&!p||i&&o&&l||!r&&l||!s)return 1;if(!i&&!a&&!p&&e<t||p&&r&&s&&!i&&!a||u&&r&&s||!o&&s||!l)return-1}return 0}var n=r(683);e.exports=i},function(e,t,r){function i(e,t,r){for(var i=-1,s=e.criteria,a=t.criteria,o=s.length,u=r.length;++i<o;){var l=n(s[i],a[i]);if(l){if(i>=u)return l;var p=r[i];return l*("desc"==p?-1:1)}}return e.index-t.index}var n=r(6345);e.exports=i},[6756,567,2471],[6757,186],[6847,252],4099,function(e,t,r){var i=r(2454),n=r(6406),s=r(1039),a=1/0,o=i&&1/s(new i([,-0]))[1]==a?function(e){return new i(e)}:n;e.exports=o},function(e,t,r){function i(e,t,r,i,n,S,T){switch(r){case A:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case E:return!(e.byteLength!=t.byteLength||!i(new s(e),new s(t)));case f:case h:case v:return a(+e,+t);case d:return e.name==t.name&&e.message==t.message;case m:case b:return e==t+"";case y:var P=u;case g:var w=S&c;if(P||(P=l),e.size!=t.size&&!w)return!1;var k=T.get(e);if(k)return k==t;S|=p,T.set(e,t);var C=o(P(e),P(t),i,n,S,T);return T.delete(e),C;case x:if(_)return _.call(e)==_.call(t)}return!1}var n=r(1029),s=r(2456),a=r(570),o=r(2469),u=r(2476),l=r(1039),p=1,c=2,f="[object Boolean]",h="[object Date]",d="[object Error]",y="[object Map]",v="[object Number]",m="[object RegExp]",g="[object Set]",b="[object String]",x="[object Symbol]",E="[object ArrayBuffer]",A="[object DataView]",S=n?n.prototype:void 0,_=S?S.valueOf:void 0;e.exports=i},function(e,t,r){function i(e,t,r,i,o,u){var l=o&a,p=s(e),c=p.length,f=s(t),h=f.length;if(c!=h&&!l)return!1;for(var d=c;d--;){var y=p[d];if(!(l?y in t:n(t,y)))return!1}var v=u.get(e);if(v&&u.get(t))return v==t;var m=!0;u.set(e,t),u.set(t,e);for(var g=l;++d<c;){y=p[d];var b=e[y],x=t[y];if(i)var E=l?i(x,b,y,t,e,u):i(b,x,y,e,t,u);if(!(void 0===E?b===x||r(b,x,i,o,u):E)){m=!1;break}g||(g="constructor"==y)}if(m&&!g){var A=e.constructor,S=t.constructor;A!=S&&"constructor"in e&&"constructor"in t&&!("function"==typeof A&&A instanceof A&&"function"==typeof S&&S instanceof S)&&(m=!1)}return u.delete(e),u.delete(t),m}var n=r(1605),s=r(256),a=2;e.exports=i},[6759,6312,2471,256],[6760,2465],[6852,2475,256],3758,[6766,1038],3761,[6767,1038],[6768,1038],[6769,1038],3766,[6771,1610,6339,6340,6341,6342,6343,6344],[6772,6308,1611,681],function(e,t,r){function i(e){return a(e)||s(e)||!!(o&&e&&e[o])}var n=r(1029),s=r(1041),a=r(76),o=n?n.isConcatSpreadable:void 0;e.exports=i},3771,[6775,6348],3909,3773,[6776,1031],[6777,1031],[6778,1031],[6779,1031],[6780,6296,1027,1600],[6781,1034],[6782,1034],[6783,1034],[6784,1034],4130,4131,[6787,1027],3786,3787,3788,function(e,t,r){function i(e,t){var r=this.__data__;if(r instanceof n){var i=r.__data__;if(!s||i.length<o-1)return i.push([e,t]),this;r=this.__data__=new a(i)}return r.set(e,t),this}var n=r(1027),s=r(1600),a=r(1601),o=200;e.exports=i},function(e,t){function r(e){return e.match(x)}var i="\\ud800-\\udfff",n="\\u0300-\\u036f\\ufe20-\\ufe23",s="\\u20d0-\\u20f0",a="\\ufe0e\\ufe0f",o="["+i+"]",u="["+n+s+"]",l="\\ud83c[\\udffb-\\udfff]",p="(?:"+u+"|"+l+")",c="[^"+i+"]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",h="[\\ud800-\\udbff][\\udc00-\\udfff]",d="\\u200d",y=p+"?",v="["+a+"]?",m="(?:"+d+"(?:"+[c,f,h].join("|")+")"+v+y+")*",g=v+y+m,b="(?:"+[c+u+"?",u,f,h,o].join("|")+")",x=RegExp(l+"(?="+l+")|"+b+g,"g");e.exports=r},function(e,t,r){var i=r(6404),n=r(684),s=/^\./,a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,u=i(function(e){e=n(e);var t=[];return s.test(e)&&t.push(""),e.replace(a,function(e,r,i,n){t.push(i?n.replace(o,"$1"):r||e)}),t});e.exports=u},function(e,t,r){var i=r(1030),n=r(567),s=r(1033),a=r(252),o=r(681),u=r(1043),l=Object.prototype,p=l.propertyIsEnumerable,c=!p.call({valueOf:1},"valueOf"),f=s(function(e,t){if(c||o(t)||a(t))return void n(t,u(t),e);for(var r in t)i(e,r,t[r])});e.exports=f},[6811,567,1033,1043],function(e,t,r){function i(e,t){return n(e,!0,!0,t)}var n=r(1032);e.exports=i},function(e,t,r){function i(e){return e=n(e),e&&a.test(e)?e.replace(s,"\\$&"):e}var n=r(684),s=/[\\^$.*+?()[\]{}|]/g,a=RegExp(s.source);e.exports=i},function(e,t,r){e.exports=r(6389)},function(e,t,r){var i=r(2468),n=r(6395),s=i(n);e.exports=s},function(e,t,r){function i(e,t,r){var i=e?e.length:0;if(!i)return-1;var u=null==r?0:a(r);return u<0&&(u=o(i+u,0)),n(e,s(t,3),u)}var n=r(1604),s=r(566),a=r(571),o=Math.max;e.exports=i},function(e,t,r){var i=r(2468),n=r(6397),s=i(n);e.exports=s},function(e,t,r){function i(e,t,r){var i=e?e.length:0;if(!i)return-1;var l=i-1;return void 0!==r&&(l=a(r),l=r<0?o(i+l,0):u(l,i-1)),n(e,s(t,3),l,!0)}var n=r(1604),s=r(566),a=r(571),o=Math.max,u=Math.min;e.exports=i},[6854,1602,2461,566,76],function(e,t,r){function i(e,t,r){var i=null==e?void 0:n(e,t);return void 0===i?r:i}var n=r(2462);e.exports=i},[6856,6314,2473],function(e,t,r){(function(e){var i=r(186),n=r(6411),s="object"==typeof t&&t&&!t.nodeType&&t,a=s&&"object"==typeof e&&e&&!e.nodeType&&e,o=a&&a.exports===s,u=o?i.Buffer:void 0,l=u?u.isBuffer:void 0,p=l||n;e.exports=p}).call(t,r(27)(e))},function(e,t,r){function i(e){return"number"==typeof e&&e==n(e)}var n=r(571);e.exports=i},function(e,t,r){function i(e,t){var r=o(e)?n:a;return r(e,s(t,3))}var n=r(1603),s=r(566),a=r(2464),o=r(76);e.exports=i},[6800,1601],function(e,t,r){var i=r(6325),n=r(1033),s=n(function(e,t,r,n){i(e,t,r,n)});e.exports=s},function(e,t){function r(){}e.exports=r},[6861,2465,6328,1037,1040],function(e,t,r){var i=r(6309),n=r(6327),s=r(1607),a=r(1612),o=s(function(e,t){if(null==e)return[];var r=t.length;return r>1&&a(e,t[0],t[1])?t=[]:r>2&&a(t[0],t[1],t[2])&&(t=[t[0]]),n(e,i(t,1),[])});e.exports=o},function(e,t,r){function i(e,t,r){return e=o(e),r=n(a(r),0,e.length),t=s(t),e.slice(r,r+t.length)==t}var n=r(6307),s=r(1608),a=r(571),o=r(684);e.exports=i},function(e,t){function r(){return[]}e.exports=r},function(e,t){function r(){return!1}e.exports=r},[6501,6413],[6503,682,103,683],function(e,t,r){function i(e){return n(e,s(e))}var n=r(567),s=r(1043);e.exports=i},function(e,t,r){function i(e,t,r){if(e=u(e),e&&(r||void 0===t))return e.replace(l,"");if(!e||!(t=n(t)))return e;var i=o(e),p=a(i,o(t))+1;return s(i,0,p).join("")}var n=r(1608),s=r(6336),a=r(6337),o=r(6387),u=r(684),l=/\s+$/;e.exports=i},function(e,t,r){function i(e){return e.split("").reduce(function(e,t){return e[t]=!0,e},{})}function n(e,t){return t=t||{},function(r,i,n){return a(r,e,t)}}function s(e,t){e=e||{},t=t||{};var r={};return Object.keys(t).forEach(function(e){r[e]=t[e]}),Object.keys(e).forEach(function(t){r[t]=e[t]}),r}function a(e,t,r){if("string"!=typeof t)throw new TypeError("glob pattern string required");return r||(r={}),!(!r.nocomment&&"#"===t.charAt(0))&&(""===t.trim()?""===e:new o(t,r).match(e))}function o(e,t){if(!(this instanceof o))return new o(e,t);if("string"!=typeof e)throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),"/"!==v.sep&&(e=e.split(v.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function u(){if(!this._made){var e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate();var r=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error),this.debug(this.pattern,r),r=this.globParts=r.map(function(e){return e.split(_)}),this.debug(this.pattern,r),r=r.map(function(e,t,r){return e.map(this.parse,this)},this),this.debug(this.pattern,r),r=r.filter(function(e){return e.indexOf(!1)===-1}),this.debug(this.pattern,r),this.set=r}}function l(){var e=this.pattern,t=!1,r=this.options,i=0;if(!r.nonegate){for(var n=0,s=e.length;n<s&&"!"===e.charAt(n);n++)t=!t,i++;i&&(this.pattern=e.substr(i)),this.negate=t}}function p(e,t){if(t||(t=this instanceof o?this.options:{}),e="undefined"==typeof e?this.pattern:e,"undefined"==typeof e)throw new TypeError("undefined pattern");return t.nobrace||!e.match(/\{.*\}/)?[e]:g(e)}function c(e,t){function r(){if(s){switch(s){case"*":o+=x,u=!0;break;case"?":o+=b,u=!0;break;default:o+="\\"+s}g.debug("clearStateChar %j %j",s,o),s=!1}}if(e.length>65536)throw new TypeError("pattern is too long");var i=this.options;if(!i.noglobstar&&"**"===e)return m;if(""===e)return"";for(var n,s,a,o="",u=!!i.nocase,l=!1,p=[],c=[],f=!1,h=-1,y=-1,v="."===e.charAt(0)?"":i.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",g=this,E=0,A=e.length;E<A&&(a=e.charAt(E));E++)if(this.debug("%s\t%s %s %j",e,E,o,a),l&&S[a])o+="\\"+a,l=!1;else switch(a){case"/":return!1;case"\\":r(),l=!0;continue;case"?":case"*":case"+":case"@":case"!":if(this.debug("%s\t%s %s %j <-- stateChar",e,E,o,a),f){this.debug(" in class"),"!"===a&&E===y+1&&(a="^"),o+=a;continue}g.debug("call clearStateChar %j",s),r(),s=a,i.noext&&r();continue;case"(":if(f){o+="(";continue}if(!s){o+="\\(";continue}n=s,p.push({type:n,start:E-1,reStart:o.length}),o+="!"===s?"(?:(?!(?:":"(?:",this.debug("plType %j %j",s,o),s=!1;continue;case")":if(f||!p.length){o+="\\)";continue}r(),u=!0,o+=")";var _=p.pop();switch(n=_.type){case"!":c.push(_),o+=")[^/]*?)",_.reEnd=o.length;break;case"?":case"+":case"*":o+=n;break;case"@":}continue;case"|":if(f||!p.length||l){o+="\\|",l=!1;continue}r(),o+="|";continue;case"[":if(r(),f){o+="\\"+a;continue}f=!0,y=E,h=o.length,o+=a;continue;case"]":if(E===y+1||!f){o+="\\"+a,l=!1;continue}if(f){var P=e.substring(y+1,E);try{RegExp("["+P+"]")}catch(e){var w=this.parse(P,T);o=o.substr(0,h)+"\\["+w[0]+"\\]",u=u||w[1],f=!1;continue}}u=!0,f=!1,o+=a;continue;default:r(),l?l=!1:!S[a]||"^"===a&&f||(o+="\\"),o+=a}for(f&&(P=e.substr(y+1),w=this.parse(P,T),o=o.substr(0,h)+"\\["+w[0],u=u||w[1]),_=p.pop();_;_=p.pop()){var k=o.slice(_.reStart+3);k=k.replace(/((?:\\{2}){0,64})(\\?)\|/g,function(e,t,r){return r||(r="\\"),t+t+r+"|"}),this.debug("tail=%j\n %s",k,k);var C="*"===_.type?x:"?"===_.type?b:"\\"+_.type;u=!0,o=o.slice(0,_.reStart)+C+"\\("+k}r(),l&&(o+="\\\\");var D=!1;switch(o.charAt(0)){case".":case"[":case"(":D=!0}for(var O=c.length-1;O>-1;O--){var N=c[O],I=o.slice(0,N.reStart),F=o.slice(N.reStart,N.reEnd-8),B=o.slice(N.reEnd-8,N.reEnd),R=o.slice(N.reEnd);B+=R;var L=I.split("(").length-1,M=R;for(E=0;E<L;E++)M=M.replace(/\)[+*?]?/,"");R=M;var j="";""===R&&t!==T&&(j="$");var V=I+F+R+j+B;o=V}if(""!==o&&u&&(o="(?=.)"+o),D&&(o=v+o),t===T)return[o,u];if(!u)return d(e);var U=i.nocase?"i":"";try{var Y=new RegExp("^"+o+"$",U)}catch(e){return new RegExp("$.")}return Y._glob=e,Y._src=o,Y}function f(){if(this.regexp||this.regexp===!1)return this.regexp;var e=this.set;if(!e.length)return this.regexp=!1,this.regexp;var t=this.options,r=t.noglobstar?x:t.dot?E:A,i=t.nocase?"i":"",n=e.map(function(e){return e.map(function(e){return e===m?r:"string"==typeof e?y(e):e._src}).join("\\/")}).join("|");n="^(?:"+n+")$",this.negate&&(n="^(?!"+n+").*$");try{this.regexp=new RegExp(n,i)}catch(e){this.regexp=!1}return this.regexp}function h(e,t){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;var r=this.options;"/"!==v.sep&&(e=e.split(v.sep).join("/")),e=e.split(_),this.debug(this.pattern,"split",e);var i=this.set;this.debug(this.pattern,"set",i);var n,s;for(s=e.length-1;s>=0&&!(n=e[s]);s--);for(s=0;s<i.length;s++){var a=i[s],o=e;r.matchBase&&1===a.length&&(o=[n]);var u=this.matchOne(o,a,t);if(u)return!!r.flipNegate||!this.negate}return!r.flipNegate&&this.negate}function d(e){return e.replace(/\\(.)/g,"$1")}function y(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}e.exports=a,a.Minimatch=o;var v={sep:"/"};try{v=r(187)}catch(e){}var m=a.GLOBSTAR=o.GLOBSTAR={},g=r(6223),b="[^/]",x=b+"*?",E="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",A="(?:(?!(?:\\/|^)\\.).)*?",S=i("().*{}+?[]^$\\!"),_=/\/+/;a.filter=n,a.defaults=function(e){if(!e||!Object.keys(e).length)return a;var t=a,r=function(r,i,n){return t.minimatch(r,i,s(e,n))};return r.Minimatch=function(r,i){return new t.Minimatch(r,s(e,i))},r},o.defaults=function(e){return e&&Object.keys(e).length?a.defaults(e).Minimatch:o},o.prototype.debug=function(){},o.prototype.make=u,o.prototype.parseNegate=l,a.braceExpand=function(e,t){return p(e,t)},o.prototype.braceExpand=p,o.prototype.parse=c;var T={};a.makeRe=function(e,t){return new o(e,t||{}).makeRe()},o.prototype.makeRe=f,a.match=function(e,t,r){r=r||{};var i=new o(t,r);return e=e.filter(function(e){return i.match(e)}),i.options.nonull&&!e.length&&e.push(t),e},o.prototype.match=h,o.prototype.matchOne=function(e,t,r){var i=this.options;this.debug("matchOne",{this:this,file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var n=0,s=0,a=e.length,o=t.length;n<a&&s<o;n++,s++){this.debug("matchOne loop");var u=t[s],l=e[n];if(this.debug(t,u,l),u===!1)return!1;if(u===m){this.debug("GLOBSTAR",[t,u,l]);var p=n,c=s+1;if(c===o){for(this.debug("** at the end");n<a;n++)if("."===e[n]||".."===e[n]||!i.dot&&"."===e[n].charAt(0))return!1;return!0}for(;p<a;){var f=e[p];if(this.debug("\nglobstar while",e,p,t,c,f),this.matchOne(e.slice(p),t.slice(c),r))return this.debug("globstar found match!",p,a,f),!0;if("."===f||".."===f||!i.dot&&"."===f.charAt(0)){this.debug("dot detected!",e,p,t,c);break}this.debug("globstar swallow a segment, and continue"),p++}return!(!r||(this.debug("\n>>> no match, partial?",e,p,t,c),p!==a))}var h;if("string"==typeof u?(h=i.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,h)):(h=l.match(u),this.debug("pattern match",u,l,h)),!h)return!1}if(n===a&&s===o)return!0;if(n===a)return r;if(s===o){var d=n===a-1&&""===e[n];return d}throw new Error("wtf?")}},2732,2766,function(e,t,r){"use strict";var i=r(685);e.exports=function(e,t){var r="function"==typeof i.access?i.access:i.stat;r(e,function(e){t(null,!e)})},e.exports.sync=function(e){var t="function"==typeof i.accessSync?i.accessSync:i.statSync;try{return t(e),!0}catch(e){return!1}}},function(e,t,r){(function(t){"use strict";function r(e){return"/"===e.charAt(0)}function i(e){var t=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/,r=t.exec(e),i=r[1]||"",n=!!i&&":"!==i.charAt(1);return!!r[2]||n}e.exports="win32"===t.platform?i:r,e.exports.posix=r,e.exports.win32=i}).call(t,r(10))},function(e,t,r){var i=r(2485);t.REGULAR={d:i().addRange(48,57),D:i().addRange(0,47).addRange(58,65535),s:i(32,160,5760,8239,8287,12288,65279).addRange(9,13).addRange(8192,8202).addRange(8232,8233),S:i().addRange(0,8).addRange(14,31).addRange(33,159).addRange(161,5759).addRange(5761,8191).addRange(8203,8231).addRange(8234,8238).addRange(8240,8286).addRange(8288,12287).addRange(12289,65278).addRange(65280,65535),w:i(95).addRange(48,57).addRange(65,90).addRange(97,122),W:i(96).addRange(0,47).addRange(58,64).addRange(91,94).addRange(123,65535)},t.UNICODE={d:i().addRange(48,57),D:i().addRange(0,47).addRange(58,1114111),s:i(32,160,5760,8239,8287,12288,65279).addRange(9,13).addRange(8192,8202).addRange(8232,8233),S:i().addRange(0,8).addRange(14,31).addRange(33,159).addRange(161,5759).addRange(5761,8191).addRange(8203,8231).addRange(8234,8238).addRange(8240,8286).addRange(8288,12287).addRange(12289,65278).addRange(65280,1114111),w:i(95).addRange(48,57).addRange(65,90).addRange(97,122),W:i(96).addRange(0,47).addRange(58,64).addRange(91,94).addRange(123,1114111)},t.UNICODE_IGNORE_CASE={d:i().addRange(48,57),D:i().addRange(0,47).addRange(58,1114111),s:i(32,160,5760,8239,8287,12288,65279).addRange(9,13).addRange(8192,8202).addRange(8232,8233),S:i().addRange(0,8).addRange(14,31).addRange(33,159).addRange(161,5759).addRange(5761,8191).addRange(8203,8231).addRange(8234,8238).addRange(8240,8286).addRange(8288,12287).addRange(12289,65278).addRange(65280,1114111),w:i(95,383,8490).addRange(48,57).addRange(65,90).addRange(97,122),W:i(75,83,96).addRange(0,47).addRange(58,64).addRange(91,94).addRange(123,1114111)}},function(e,t,r){function i(e){return S?A?y.UNICODE_IGNORE_CASE[e]:y.UNICODE[e]:y.REGULAR[e]}function n(e,t){return m.call(e,t)}function s(e,t){for(var r in t)e[r]=t[r]}function a(e,t){if(t){var r=f(t,"");switch(r.type){case"characterClass":case"group":case"value":break;default:r=o(r,t)}s(e,r)}}function o(e,t){return{type:"group",behavior:"ignore",body:[e],raw:"(?:"+t+")"}}function u(e){return!!n(d,e)&&d[e]}function l(e){var t=h();e.body.forEach(function(e){switch(e.type){case"value":if(t.add(e.codePoint),A&&S){var r=u(e.codePoint);r&&t.add(r)}break;case"characterClassRange":var n=e.min.codePoint,s=e.max.codePoint;t.addRange(n,s),A&&S&&t.iuAddRange(n,s);break;case"characterClassEscape":t.add(i(e.value));break;default:throw Error("Unknown term type: "+e.type)}});return e.negative&&(t=(S?g:b).clone().remove(t)),a(e,t.toString()),e}function p(e){switch(e.type){case"dot":a(e,(S?x:E).toString());break;case"characterClass":e=l(e);break;case"characterClassEscape":a(e,i(e.value).toString());break;case"alternative":case"disjunction":case"group":case"quantifier":e.body=e.body.map(p);break;case"value":var t=e.codePoint,r=h(t);if(A&&S){var n=u(t);n&&r.add(n)}a(e,r.toString());break;case"anchor":case"empty":case"group":case"reference":break;default:throw Error("Unknown term type: "+e.type)}return e}var c=r(6423).generate,f=r(6424).parse,h=r(2485),d=r(6293),y=r(6421),v={},m=v.hasOwnProperty,g=h().addRange(0,1114111),b=h().addRange(0,65535),x=g.clone().remove(10,13,8232,8233),E=x.clone().intersection(b);h.prototype.iuAddRange=function(e,t){var r=this;do{var i=u(e);i&&r.add(i)}while(++e<=t);return r};var A=!1,S=!1;e.exports=function(e,t){var r=f(e,t);return A=!!t&&t.indexOf("i")>-1,S=!!t&&t.indexOf("u")>-1,s(r,p(r)),c(r)}},function(e,t,r){var i;(function(e,n){(function(){"use strict";function s(){var e,t,r=16384,i=[],n=-1,s=arguments.length;if(!s)return"";for(var a="";++n<s;){var o=Number(arguments[n]);if(!isFinite(o)||o<0||o>1114111||k(o)!=o)throw RangeError("Invalid code point: "+o);o<=65535?i.push(o):(o-=65536,e=(o>>10)+55296,t=o%1024+56320,i.push(e,t)),(n+1==s||i.length>r)&&(a+=w.apply(null,i),i.length=0)}return a}function a(e,t){if(t.indexOf("|")==-1){if(e==t)return;throw Error("Invalid node type: "+e)}if(t=a.hasOwnProperty(t)?a[t]:a[t]=RegExp("^(?:"+t+")$"),!t.test(e))throw Error("Invalid node type: "+e)}function o(e){var t=e.type;if(o.hasOwnProperty(t)&&"function"==typeof o[t])return o[t](e);throw Error("Invalid node type: "+t)}function u(e){a(e.type,"alternative");var t=e.body,r=t?t.length:0;if(1==r)return x(t[0]);for(var i=-1,n="";++i<r;)n+=x(t[i]);return n}function l(e){switch(a(e.type,"anchor"),e.kind){case"start":return"^";case"end":return"$";case"boundary":return"\\b";case"not-boundary":return"\\B";default:throw Error("Invalid assertion")}}function p(e){return a(e.type,"anchor|characterClass|characterClassEscape|dot|group|reference|value"),o(e)}function c(e){a(e.type,"characterClass");var t=e.body,r=t?t.length:0,i=-1,n="[";for(e.negative&&(n+="^");++i<r;)n+=d(t[i]);return n+="]"}function f(e){return a(e.type,"characterClassEscape"),"\\"+e.value}function h(e){a(e.type,"characterClassRange");var t=e.min,r=e.max;if("characterClassRange"==t.type||"characterClassRange"==r.type)throw Error("Invalid character class range");return d(t)+"-"+d(r)}function d(e){return a(e.type,"anchor|characterClassEscape|characterClassRange|dot|value"),o(e)}function y(e){a(e.type,"disjunction");var t=e.body,r=t?t.length:0;if(0==r)throw Error("No body");if(1==r)return o(t[0]);for(var i=-1,n="";++i<r;)0!=i&&(n+="|"),n+=o(t[i]);return n}function v(e){return a(e.type,"dot"),"."}function m(e){a(e.type,"group");var t="(";switch(e.behavior){case"normal":break;case"ignore":t+="?:";break;case"lookahead":t+="?=";break;case"negativeLookahead":t+="?!";break;default:throw Error("Invalid behaviour: "+e.behaviour)}var r=e.body,i=r?r.length:0;if(1==i)t+=o(r[0]);else for(var n=-1;++n<i;)t+=o(r[n]);return t+=")"}function g(e){a(e.type,"quantifier");var t="",r=e.min,i=e.max;switch(i){case void 0:case null:switch(r){case 0:t="*";break;case 1:t="+";break;default:t="{"+r+",}"}break;default:t=r==i?"{"+r+"}":0==r&&1==i?"?":"{"+r+","+i+"}"}return e.greedy||(t+="?"),p(e.body[0])+t}function b(e){return a(e.type,"reference"),"\\"+e.matchIndex}function x(e){return a(e.type,"anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|value"),o(e)}function E(e){a(e.type,"value");var t=e.kind,r=e.codePoint;switch(t){case"controlLetter":return"\\c"+s(r+64);case"hexadecimalEscape":return"\\x"+("00"+r.toString(16).toUpperCase()).slice(-2);case"identifier":return"\\"+s(r);case"null":return"\\"+r;case"octal":return"\\"+r.toString(8);case"singleEscape":switch(r){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 11:return"\\v";case 12:return"\\f";case 13:return"\\r";default:throw Error("Invalid codepoint: "+r)}case"symbol":return s(r);case"unicodeEscape":return"\\u"+("0000"+r.toString(16).toUpperCase()).slice(-4);case"unicodeCodePointEscape":return"\\u{"+r.toString(16).toUpperCase()+"}";default:throw Error("Unsupported node kind: "+t)}}var A={function:!0,object:!0},S=A[typeof window]&&window||this,_=A[typeof t]&&t,T=A[typeof e]&&e&&!e.nodeType&&e,P=_&&T&&"object"==typeof n&&n;!P||P.global!==P&&P.window!==P&&P.self!==P||(S=P);var w=String.fromCharCode,k=Math.floor;o.alternative=u,o.anchor=l,o.characterClass=c,o.characterClassEscape=f,o.characterClassRange=h,o.disjunction=y,o.dot=v,o.group=m,o.quantifier=g,o.reference=b,o.value=E,i=function(){return{generate:o}}.call(t,r,t,e),!(void 0!==i&&(e.exports=i))}).call(this)}).call(t,r(27)(e),function(){return this}())},function(e,t){!function(){function t(e,t){function r(t){return t.raw=e.substring(t.range[0],t.range[1]),t}function i(e,t){return e.range[0]=t,r(e)}function n(e,t){return r({type:"anchor",kind:e,range:[z-t,z]})}function s(e,t,i,n){return r({type:"value",kind:e,codePoint:t,range:[i,n]})}function a(e,t,r,i){return i=i||0,s(e,t,z-(r.length+i),z)}function o(e){var t=e[0],r=t.charCodeAt(0);if($){var i;if(1===t.length&&r>=55296&&r<=56319&&(i=E().charCodeAt(0),i>=56320&&i<=57343))return z++,s("symbol",1024*(r-55296)+i-56320+65536,z-2,z)}return s("symbol",r,z-1,z)}function u(e,t,i){return r({type:"disjunction",body:e,range:[t,i]})}function l(){return r({type:"dot",range:[z-1,z]})}function p(e){return r({type:"characterClassEscape",value:e,range:[z-2,z]})}function c(e){return r({type:"reference",matchIndex:parseInt(e,10),range:[z-1-e.length,z]})}function f(e,t,i,n){return r({type:"group",behavior:e,body:t,range:[i,n]})}function h(e,t,i,n){return null==n&&(i=z-1,n=z),r({type:"quantifier",min:e,max:t,greedy:!0,body:null,range:[i,n]})}function d(e,t,i){return r({type:"alternative",body:e,range:[t,i]})}function y(e,t,i,n){return r({type:"characterClass",body:e,negative:t,range:[i,n]})}function v(e,t,i,n){return e.codePoint>t.codePoint&&q("invalid range in character class",e.raw+"-"+t.raw,i,n),r({type:"characterClassRange",min:e,max:t,range:[i,n]})}function m(e){return"alternative"===e.type?e.body:[e]}function g(t){t=t||1;var r=e.substring(z,z+t);return z+=t||1,r}function b(e){x(e)||q("character",e)}function x(t){if(e.indexOf(t,z)===z)return g(t.length)}function E(){return e[z]}function A(t){return e.indexOf(t,z)===z}function S(t){return e[z+1]===t}function _(t){var r=e.substring(z),i=r.match(t);return i&&(i.range=[],i.range[0]=z,g(i[0].length),i.range[1]=z),i}function T(){var e=[],t=z;for(e.push(P());x("|");)e.push(P());return 1===e.length?e[0]:u(e,t,z)}function P(){for(var e,t=[],r=z;e=w();)t.push(e);return 1===t.length?t[0]:d(t,r,z)}function w(){if(z>=e.length||A("|")||A(")"))return null;var t=C();if(t)return t;var r=O();r||q("Expected atom");var n=D()||!1;return n?(n.body=m(r),i(n,r.range[0]),n):r}function k(e,t,r,i){var n=null,s=z;if(x(e))n=t;else{if(!x(r))return!1;n=i}var a=T();a||q("Expected disjunction"),b(")");var o=f(n,m(a),s,z);return"normal"==n&&J&&X++,o}function C(){return x("^")?n("start",1):x("$")?n("end",1):x("\\b")?n("boundary",2):x("\\B")?n("not-boundary",2):k("(?=","lookahead","(?!","negativeLookahead")}function D(){var e,t,r,i,n=z;return x("*")?t=h(0):x("+")?t=h(1):x("?")?t=h(0,1):(e=_(/^\{([0-9]+)\}/))?(r=parseInt(e[1],10),t=h(r,r,e.range[0],e.range[1])):(e=_(/^\{([0-9]+),\}/))?(r=parseInt(e[1],10),t=h(r,void 0,e.range[0],e.range[1])):(e=_(/^\{([0-9]+),([0-9]+)\}/))&&(r=parseInt(e[1],10),i=parseInt(e[2],10),r>i&&q("numbers out of order in {} quantifier","",n,z),t=h(r,i,e.range[0],e.range[1])),t&&x("?")&&(t.greedy=!1,t.range[1]+=1),t}function O(){var e;return(e=_(/^[^^$\\.*+?(){[|]/))?o(e):x(".")?l():x("\\")?(e=F(),e||q("atomEscape"),e):(e=j())?e:k("(?:","ignore","(","normal")}function N(e){if($){var t,i;if("unicodeEscape"==e.kind&&(t=e.codePoint)>=55296&&t<=56319&&A("\\")&&S("u")){var n=z;z++;var s=I();"unicodeEscape"==s.kind&&(i=s.codePoint)>=56320&&i<=57343?(e.range[1]=s.range[1],e.codePoint=1024*(t-55296)+i-56320+65536,e.type="value",e.kind="unicodeCodePointEscape",r(e)):z=n}}return e}function I(){return F(!0)}function F(e){var t,r=z;if(t=B())return t;if(e){if(x("b"))return a("singleEscape",8,"\\b");x("B")&&q("\\B not possible inside of CharacterClass","",r)}return t=R()}function B(){var e,t;if(e=_(/^(?!0)\d+/)){t=e[0];var r=parseInt(e[0],10);return r<=X?c(e[0]):(H.push(r),g(-e[0].length),(e=_(/^[0-7]{1,3}/))?a("octal",parseInt(e[0],8),e[0],1):(e=o(_(/^[89]/)),i(e,e.range[0]-1)))}return(e=_(/^[0-7]{1,3}/))?(t=e[0],/^0{1,3}$/.test(t)?a("null",0,"0",t.length+1):a("octal",parseInt(t,8),t,1)):!!(e=_(/^[dDsSwW]/))&&p(e[0])}function R(){var e;if(e=_(/^[fnrtv]/)){var t=0;switch(e[0]){case"t":t=9;break;case"n":t=10;break;case"v":t=11;break;case"f":t=12;break;case"r":t=13}return a("singleEscape",t,"\\"+e[0])}return(e=_(/^c([a-zA-Z])/))?a("controlLetter",e[1].charCodeAt(0)%32,e[1],2):(e=_(/^x([0-9a-fA-F]{2})/))?a("hexadecimalEscape",parseInt(e[1],16),e[1],2):(e=_(/^u([0-9a-fA-F]{4})/))?N(a("unicodeEscape",parseInt(e[1],16),e[1],2)):$&&(e=_(/^u\{([0-9a-fA-F]+)\}/))?a("unicodeCodePointEscape",parseInt(e[1],16),e[1],4):M()}function L(e){var t=new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԯԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠ-ࢲࣤ-ॣ०-९ॱ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఀ-ఃఅ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಁ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲഁ-ഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟ෦-෯ෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤞᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧ᪰-᪽ᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶ᳸᳹ᴀ-᷵᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚝꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꧠ-ꧾꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︭︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]");return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&t.test(String.fromCharCode(e))}function M(){var e,t="",r="";return L(E())?x(t)?a("identifier",8204,t):x(r)?a("identifier",8205,r):null:(e=g(),a("identifier",e.charCodeAt(0),e,1))}function j(){var e,t=z;return(e=_(/^\[\^/))?(e=V(),b("]"),y(e,!0,t,z)):x("[")?(e=V(),b("]"),y(e,!1,t,z)):null}function V(){var e;return A("]")?[]:(e=Y(),e||q("nonEmptyClassRanges"),e)}function U(e){var t,r,i;if(A("-")&&!S("]")){b("-"),i=W(),i||q("classAtom"),r=z;var n=V();return n||q("classRanges"),t=e.range[0],"empty"===n.type?[v(e,i,t,r)]:[v(e,i,t,r)].concat(n)}return i=K(),i||q("nonEmptyClassRangesNoDash"),[e].concat(i)}function Y(){var e=W();return e||q("classAtom"),A("]")?[e]:U(e)}function K(){var e=W();return e||q("classAtom"),A("]")?e:U(e)}function W(){return x("-")?o("-"):G()}function G(){var e;return(e=_(/^[^\\\]-]/))?o(e[0]):x("\\")?(e=I(),e||q("classEscape"),N(e)):void 0}function q(t,r,i,n){i=null==i?z:i,n=null==n?i:n;var s=Math.max(0,i-10),a=Math.min(n+10,e.length),o=" "+e.substring(s,a),u=" "+new Array(i-s+1).join(" ")+"^";throw SyntaxError(t+" at position "+i+(r?": "+r:"")+"\n"+o+"\n"+u)}var H=[],X=0,J=!0,$=(t||"").indexOf("u")!==-1,z=0;e=String(e),""===e&&(e="(?:)");var Q=T();Q.range[1]!==e.length&&q("Could not parse entire input - got stuck","",Q.range[1]);for(var Z=0;Z<H.length;Z++)if(H[Z]<=X)return z=0,J=!1,T();return Q}var r={parse:t};"undefined"!=typeof e&&e.exports?e.exports=r:window.regjsparser=r}()},[6621,6272],function(e,t){"use strict";e.exports=/^#!.*/},function(e,t){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError("Must be between 0 and 63: "+e)},t.decode=function(e){var t=65,r=90,i=97,n=122,s=48,a=57,o=43,u=47,l=26,p=52;return t<=e&&e<=r?e-t:i<=e&&e<=n?e-i+l:s<=e&&e<=a?e-s+p:e==o?62:e==u?63:-1}},function(e,t){function r(e,i,n,s,a,o){var u=Math.floor((i-e)/2)+e,l=a(n,s[u],!0);return 0===l?u:l>0?i-u>1?r(u,i,n,s,a,o):o==t.LEAST_UPPER_BOUND?i<s.length?i:-1:u:u-e>1?r(e,u,n,s,a,o):o==t.LEAST_UPPER_BOUND?u:e<0?-1:e}t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,i,n,s){if(0===i.length)return-1;var a=r(-1,i.length,e,i,n,s||t.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===n(i[a],i[a-1],!0);)--a;return a}},function(e,t,r){function i(e,t){var r=e.generatedLine,i=t.generatedLine,n=e.generatedColumn,a=t.generatedColumn;return i>r||i==r&&a>=n||s.compareByGeneratedPositionsInflated(e,t)<=0}function n(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var s=r(686);n.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},n.prototype.add=function(e){i(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},n.prototype.toArray=function(){return this._sorted||(this._array.sort(s.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.MappingList=n},function(e,t){function r(e,t,r){var i=e[t];e[t]=e[r],e[r]=i}function i(e,t){return Math.round(e+Math.random()*(t-e))}function n(e,t,s,a){if(s<a){var o=i(s,a),u=s-1;r(e,o,a);for(var l=e[a],p=s;p<a;p++)t(e[p],l)<=0&&(u+=1,
+r(e,u,p));r(e,u+1,p);var c=u+1;n(e,t,s,c-1),n(e,t,c+1,a)}}t.quickSort=function(e,t){n(e,t,0,e.length-1)}},function(e,t,r){function i(e){var t=e;return"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=t.sections?new a(t):new n(t)}function n(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=o.getArg(t,"version"),i=o.getArg(t,"sources"),n=o.getArg(t,"names",[]),s=o.getArg(t,"sourceRoot",null),a=o.getArg(t,"sourcesContent",null),u=o.getArg(t,"mappings"),p=o.getArg(t,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);i=i.map(String).map(o.normalize).map(function(e){return s&&o.isAbsolute(s)&&o.isAbsolute(e)?o.relative(s,e):e}),this._names=l.fromArray(n.map(String),!0),this._sources=l.fromArray(i,!0),this.sourceRoot=s,this.sourcesContent=a,this._mappings=u,this.file=p}function s(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function a(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=o.getArg(t,"version"),n=o.getArg(t,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new l,this._names=new l;var s={line:-1,column:0};this._sections=n.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var t=o.getArg(e,"offset"),r=o.getArg(t,"line"),n=o.getArg(t,"column");if(r<s.line||r===s.line&&n<s.column)throw new Error("Section offsets must be ordered and non-overlapping.");return s=t,{generatedOffset:{generatedLine:r+1,generatedColumn:n+1},consumer:new i(o.getArg(e,"map"))}})}var o=r(686),u=r(6428),l=r(2487).ArraySet,p=r(2488),c=r(6430).quickSort;i.fromSourceMap=function(e){return n.fromSourceMap(e)},i.prototype._version=3,i.prototype.__generatedMappings=null,Object.defineProperty(i.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),i.prototype.__originalMappings=null,Object.defineProperty(i.prototype,"_originalMappings",{get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),i.prototype._charIsMappingSeparator=function(e,t){var r=e.charAt(t);return";"===r||","===r},i.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},i.GENERATED_ORDER=1,i.ORIGINAL_ORDER=2,i.GREATEST_LOWER_BOUND=1,i.LEAST_UPPER_BOUND=2,i.prototype.eachMapping=function(e,t,r){var n,s=t||null,a=r||i.GENERATED_ORDER;switch(a){case i.GENERATED_ORDER:n=this._generatedMappings;break;case i.ORIGINAL_ORDER:n=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var u=this.sourceRoot;n.map(function(e){var t=null===e.source?null:this._sources.at(e.source);return null!=t&&null!=u&&(t=o.join(u,t)),{source:t,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}},this).forEach(e,s)},i.prototype.allGeneratedPositionsFor=function(e){var t=o.getArg(e,"line"),r={source:o.getArg(e,"source"),originalLine:t,originalColumn:o.getArg(e,"column",0)};if(null!=this.sourceRoot&&(r.source=o.relative(this.sourceRoot,r.source)),!this._sources.has(r.source))return[];r.source=this._sources.indexOf(r.source);var i=[],n=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,u.LEAST_UPPER_BOUND);if(n>=0){var s=this._originalMappings[n];if(void 0===e.column)for(var a=s.originalLine;s&&s.originalLine===a;)i.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++n];else for(var l=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==l;)i.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++n]}return i},t.SourceMapConsumer=i,n.prototype=Object.create(i.prototype),n.prototype.consumer=i,n.fromSourceMap=function(e){var t=Object.create(n.prototype),r=t._names=l.fromArray(e._names.toArray(),!0),i=t._sources=l.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var a=e._mappings.toArray().slice(),u=t.__generatedMappings=[],p=t.__originalMappings=[],f=0,h=a.length;f<h;f++){var d=a[f],y=new s;y.generatedLine=d.generatedLine,y.generatedColumn=d.generatedColumn,d.source&&(y.source=i.indexOf(d.source),y.originalLine=d.originalLine,y.originalColumn=d.originalColumn,d.name&&(y.name=r.indexOf(d.name)),p.push(y)),u.push(y)}return c(t.__originalMappings,o.compareByOriginalPositions),t},n.prototype._version=3,Object.defineProperty(n.prototype,"sources",{get:function(){return this._sources.toArray().map(function(e){return null!=this.sourceRoot?o.join(this.sourceRoot,e):e},this)}}),n.prototype._parseMappings=function(e,t){for(var r,i,n,a,u,l=1,f=0,h=0,d=0,y=0,v=0,m=e.length,g=0,b={},x={},E=[],A=[];g<m;)if(";"===e.charAt(g))l++,g++,f=0;else if(","===e.charAt(g))g++;else{for(r=new s,r.generatedLine=l,a=g;a<m&&!this._charIsMappingSeparator(e,a);a++);if(i=e.slice(g,a),n=b[i])g+=i.length;else{for(n=[];g<a;)p.decode(e,g,x),u=x.value,g=x.rest,n.push(u);if(2===n.length)throw new Error("Found a source, but no line and column");if(3===n.length)throw new Error("Found a source and line, but no column");b[i]=n}r.generatedColumn=f+n[0],f=r.generatedColumn,n.length>1&&(r.source=y+n[1],y+=n[1],r.originalLine=h+n[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=d+n[3],d=r.originalColumn,n.length>4&&(r.name=v+n[4],v+=n[4])),A.push(r),"number"==typeof r.originalLine&&E.push(r)}c(A,o.compareByGeneratedPositionsDeflated),this.__generatedMappings=A,c(E,o.compareByOriginalPositions),this.__originalMappings=E},n.prototype._findMapping=function(e,t,r,i,n,s){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[i]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[i]);return u.search(e,t,n,s)},n.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(t.generatedLine===r.generatedLine){t.lastGeneratedColumn=r.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},n.prototype.originalPositionFor=function(e){var t={generatedLine:o.getArg(e,"line"),generatedColumn:o.getArg(e,"column")},r=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",o.compareByGeneratedPositionsDeflated,o.getArg(e,"bias",i.GREATEST_LOWER_BOUND));if(r>=0){var n=this._generatedMappings[r];if(n.generatedLine===t.generatedLine){var s=o.getArg(n,"source",null);null!==s&&(s=this._sources.at(s),null!=this.sourceRoot&&(s=o.join(this.sourceRoot,s)));var a=o.getArg(n,"name",null);return null!==a&&(a=this._names.at(a)),{source:s,line:o.getArg(n,"originalLine",null),column:o.getArg(n,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},n.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},n.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=o.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=o.urlParse(this.sourceRoot))){var i=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},n.prototype.generatedPositionFor=function(e){var t=o.getArg(e,"source");if(null!=this.sourceRoot&&(t=o.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};t=this._sources.indexOf(t);var r={source:t,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")},n=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",i.GREATEST_LOWER_BOUND));if(n>=0){var s=this._originalMappings[n];if(s.source===r.source)return{line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},t.BasicSourceMapConsumer=n,a.prototype=Object.create(i.prototype),a.prototype.constructor=i,a.prototype._version=3,Object.defineProperty(a.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var r=0;r<this._sections[t].consumer.sources.length;r++)e.push(this._sections[t].consumer.sources[r]);return e}}),a.prototype.originalPositionFor=function(e){var t={generatedLine:o.getArg(e,"line"),generatedColumn:o.getArg(e,"column")},r=u.search(t,this._sections,function(e,t){var r=e.generatedLine-t.generatedOffset.generatedLine;return r?r:e.generatedColumn-t.generatedOffset.generatedColumn}),i=this._sections[r];return i?i.consumer.originalPositionFor({line:t.generatedLine-(i.generatedOffset.generatedLine-1),column:t.generatedColumn-(i.generatedOffset.generatedLine===t.generatedLine?i.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},a.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})},a.prototype.sourceContentFor=function(e,t){for(var r=0;r<this._sections.length;r++){var i=this._sections[r],n=i.consumer.sourceContentFor(e,!0);if(n)return n}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},a.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var r=this._sections[t];if(r.consumer.sources.indexOf(o.getArg(e,"source"))!==-1){var i=r.consumer.generatedPositionFor(e);if(i){var n={line:i.line+(r.generatedOffset.generatedLine-1),column:i.column+(r.generatedOffset.generatedLine===i.line?r.generatedOffset.generatedColumn-1:0)};return n}}}return{line:null,column:null}},a.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var i=this._sections[r],n=i.consumer._generatedMappings,s=0;s<n.length;s++){var a=n[s],u=i.consumer._sources.at(a.source);null!==i.consumer.sourceRoot&&(u=o.join(i.consumer.sourceRoot,u)),this._sources.add(u),u=this._sources.indexOf(u);var l=i.consumer._names.at(a.name);this._names.add(l),l=this._names.indexOf(l);var p={source:u,generatedLine:a.generatedLine+(i.generatedOffset.generatedLine-1),generatedColumn:a.generatedColumn+(i.generatedOffset.generatedLine===a.generatedLine?i.generatedOffset.generatedColumn-1:0),originalLine:a.originalLine,originalColumn:a.originalColumn,name:l};this.__generatedMappings.push(p),"number"==typeof p.originalLine&&this.__originalMappings.push(p)}c(this.__generatedMappings,o.compareByGeneratedPositionsDeflated),c(this.__originalMappings,o.compareByOriginalPositions)},t.IndexedSourceMapConsumer=a},function(e,t,r){function i(e,t,r,i,n){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==n?null:n,this[u]=!0,null!=i&&this.add(i)}var n=r(2489).SourceMapGenerator,s=r(686),a=/(\r?\n)/,o=10,u="$$$isSourceNode$$$";i.fromStringWithSourceMap=function(e,t,r){function n(e,t){if(null===e||void 0===e.source)o.add(t);else{var n=r?s.join(r,e.source):e.source;o.add(new i(e.originalLine,e.originalColumn,n,t,e.name))}}var o=new i,u=e.split(a),l=function(){var e=u.shift(),t=u.shift()||"";return e+t},p=1,c=0,f=null;return t.eachMapping(function(e){if(null!==f){if(!(p<e.generatedLine)){var t=u[0],r=t.substr(0,e.generatedColumn-c);return u[0]=t.substr(e.generatedColumn-c),c=e.generatedColumn,n(f,r),void(f=e)}n(f,l()),p++,c=0}for(;p<e.generatedLine;)o.add(l()),p++;if(c<e.generatedColumn){var t=u[0];o.add(t.substr(0,e.generatedColumn)),u[0]=t.substr(e.generatedColumn),c=e.generatedColumn}f=e},this),u.length>0&&(f&&n(f,l()),o.add(u.join(""))),t.sources.forEach(function(e){var i=t.sourceContentFor(e);null!=i&&(null!=r&&(e=s.join(r,e)),o.setSourceContent(e,i))}),o},i.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},i.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},i.prototype.walk=function(e){for(var t,r=0,i=this.children.length;r<i;r++)t=this.children[r],t[u]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},i.prototype.join=function(e){var t,r,i=this.children.length;if(i>0){for(t=[],r=0;r<i-1;r++)t.push(this.children[r]),t.push(e);t.push(this.children[r]),this.children=t}return this},i.prototype.replaceRight=function(e,t){var r=this.children[this.children.length-1];return r[u]?r.replaceRight(e,t):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,t):this.children.push("".replace(e,t)),this},i.prototype.setSourceContent=function(e,t){this.sourceContents[s.toSetString(e)]=t},i.prototype.walkSourceContents=function(e){for(var t=0,r=this.children.length;t<r;t++)this.children[t][u]&&this.children[t].walkSourceContents(e);for(var i=Object.keys(this.sourceContents),t=0,r=i.length;t<r;t++)e(s.fromSetString(i[t]),this.sourceContents[i[t]])},i.prototype.toString=function(){var e="";return this.walk(function(t){e+=t}),e},i.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},r=new n(e),i=!1,s=null,a=null,u=null,l=null;return this.walk(function(e,n){t.code+=e,null!==n.source&&null!==n.line&&null!==n.column?(s===n.source&&a===n.line&&u===n.column&&l===n.name||r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name}),s=n.source,a=n.line,u=n.column,l=n.name,i=!0):i&&(r.addMapping({generated:{line:t.line,column:t.column}}),s=null,i=!1);for(var p=0,c=e.length;p<c;p++)e.charCodeAt(p)===o?(t.line++,t.column=0,p+1===c?(s=null,i=!1):i&&r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name})):t.column++}),this.walkSourceContents(function(e,t){r.setSourceContent(e,t)}),{code:t.code,map:r}},t.SourceNode=i},[6608,1615],2712,function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}function l(e,t){e=(0,h.default)(e);var r=e,i=r.program;return t.length&&(0,b.default)(e,P,null,t),i.body.length>1?i.body:i.body[0]}t.__esModule=!0;var p=r(i),c=u(p);t.default=function(e,t){var r=void 0;try{throw new Error}catch(e){e.stack&&(r=e.stack.split("\n").slice(1).join("\n"))}t=(0,y.default)({allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,preserveComments:!1},t);var i=function(){var n=void 0;try{n=E.parse(e,t),n=b.default.removeProperties(n,{preserveComments:t.preserveComments}),b.default.cheap(n,function(e){e[_]=!0})}catch(e){throw e.stack=e.stack+"from\n"+r,e}return i=function(){return n},n};return function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return l(i(),t)}};var f=r(569),h=u(f),d=r(78),y=u(d),v=r(458),m=u(v),g=r(n),b=u(g),x=r(s),E=o(x),A=r(a),S=o(A),_="_fromTemplate",T=(0,c.default)(),P={noScope:!0,enter:function(e,t){var r=e.node;if(r[T])return e.skip();S.isExpressionStatement(r)&&(r=r.expression);var i=void 0;if(S.isIdentifier(r)&&r[_])if((0,m.default)(t[0],r.name))i=t[0][r.name];else if("$"===r.name[0]){var n=+r.name.slice(1);t[n]&&(i=t[n])}null===i&&e.remove(),i&&(i[T]=!0,e.replaceInline(i))},exit:function(e){var t=e.node;t.loc||b.default.clearNode(t)}};e.exports=t.default},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(){t.path=u=new o.default,t.scope=l=new o.default}t.__esModule=!0,t.scope=t.path=void 0;var a=r(i),o=n(a);t.clear=s;var u=t.path=new o.default,l=t.scope=new o.default},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=u(h),y=r(a),v=o(y),m=!1,g=function(){function e(t,r,i,n){(0,f.default)(this,e),this.queue=null,this.parentPath=n,this.scope=t,this.state=i,this.opts=r}return e.prototype.shouldVisit=function(e){var t=this.opts;if(t.enter||t.exit)return!0;if(t[e.type])return!0;var r=v.VISITOR_KEYS[e.type];if(!r||!r.length)return!1;for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,p.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e[o])return!0}return!1},e.prototype.create=function(e,t,r,i){return d.default.get({parentPath:this.parentPath,parent:e,container:t,key:r,listKey:i})},e.prototype.maybeQueue=function(e,t){if(this.trap)throw new Error("Infinite cycle detected");this.queue&&(t?this.queue.push(e):this.priorityQueue.push(e))},e.prototype.visitMultiple=function(e,t,r){if(0===e.length)return!1;for(var i=[],n=0;n<e.length;n++){var s=e[n];s&&this.shouldVisit(s)&&i.push(this.create(t,e,n,r))}return this.visitQueue(i)},e.prototype.visitSingle=function(e,t){return!!this.shouldVisit(e[t])&&this.visitQueue([this.create(e,e,t)])},e.prototype.visitQueue=function(e){this.queue=e,this.priorityQueue=[];for(var t=[],r=!1,i=e,n=Array.isArray(i),s=0,i=n?i:(0,p.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(o.resync(),0!==o.contexts.length&&o.contexts[o.contexts.length-1]===this||o.pushContext(this),null!==o.key&&(m&&e.length>=1e3&&(this.trap=!0),!(t.indexOf(o.node)>=0))){if(t.push(o.node),o.visit()){r=!0;break}if(this.priorityQueue.length&&(r=this.visitQueue(this.priorityQueue),this.priorityQueue=[],this.queue=e,r))break}}for(var u=e,l=Array.isArray(u),c=0,u=l?u:(0,p.default)(u);;){var f;if(l){if(c>=u.length)break;f=u[c++]}else{if(c=u.next(),c.done)break;f=c.value}var h=f;h.popContext()}return this.queue=null,r},e.prototype.visit=function(e,t){var r=e[t];return!!r&&(Array.isArray(r)?this.visitMultiple(r,e,t):this.visitSingle(e,t))},e}();t.default=g,e.exports=t.default},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s),o=function e(t,r){(0,a.default)(this,e),this.file=t,this.options=r};t.default=o,e.exports=t.default},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h){"use strict";function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function y(e){return e&&e.__esModule?e:{default:e}}function v(e,t,r,i,n){if(e){if(t||(t={}),!t.noScope&&!r&&"Program"!==e.type&&"File"!==e.type)throw new Error(k.get("traverseNeedsParent",e.type));P.explode(t),v.node(e,t,r,i,n)}}function m(e,t){e.node.type===t.type&&(t.has=!0,e.stop())}t.__esModule=!0,t.visitors=t.Hub=t.Scope=t.NodePath=void 0;var g=r(i),b=y(g),x=r(n);Object.defineProperty(t,"NodePath",{enumerable:!0,get:function(){return y(x).default}});var E=r(s);Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return y(E).default}});var A=r(a);Object.defineProperty(t,"Hub",{enumerable:!0,get:function(){return y(A).default}}),t.default=v;var S=r(o),_=y(S),T=r(u),P=d(T),w=r(20),k=d(w),C=r(50),D=y(C),O=r(l),N=d(O),I=r(p),F=d(I);t.visitors=P,v.visitors=P,v.verify=P.verify,v.explode=P.explode,v.NodePath=r(c),v.Scope=r(f),v.Hub=r(h),v.cheap=function(e,t){return N.traverseFast(e,t)},v.node=function(e,t,r,i,n,s){var a=N.VISITOR_KEYS[e.type];if(a)for(var o=new _.default(r,t,i,n),u=a,l=Array.isArray(u),p=0,u=l?u:(0,b.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if((!s||!s[f])&&o.visit(e,f))return}},v.clearNode=function(e,t){N.removeProperties(e,t),F.path.delete(e)},v.removeProperties=function(e,t){return N.traverseFast(e,v.clearNode,t),e},v.hasType=function(e,t,r,i){if((0,D.default)(i,e.type))return!1;if(e.type===r)return!0;var n={has:!1,type:r};return v(e,{blacklist:i,enter:m},t,n),n.has},v.clearCache=function(){F.clear()},v.copyCache=function(e,t){F.path.has(e)&&F.path.set(t,F.path.get(e))}},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(e){for(var t=this;t=t.parentPath;)if(e(t))return t;return null}function l(e){var t=this;do if(e(t))return t;while(t=t.parentPath);return null}function p(){return this.findParent(function(e){return e.isFunction()||e.isProgram()})}function c(){var e=this;do if(Array.isArray(e.container))return e;while(e=e.parentPath)}function f(e){return this.getDeepestCommonAncestorFrom(e,function(e,t,r){for(var i=void 0,n=x.VISITOR_KEYS[e.type],s=r,a=Array.isArray(s),o=0,s=a?s:(0,g.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u,p=l[t+1];if(i)if(p.listKey&&i.listKey===p.listKey&&p.key<i.key)i=p;else{var c=n.indexOf(i.parentKey),f=n.indexOf(p.parentKey);c>f&&(i=p)}else i=p}return i})}function h(e,t){var r=this;if(!e.length)return this;if(1===e.length)return e[0];var i=1/0,n=void 0,s=void 0,a=e.map(function(e){var t=[];do t.unshift(e);while((e=e.parentPath)&&e!==r);return t.length<i&&(i=t.length),t}),o=a[0];e:for(var u=0;u<i;u++){for(var l=o[u],p=a,c=Array.isArray(p),f=0,p=c?p:(0,g.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h;if(d[u]!==l)break e}n=u,s=l}if(s)return t?t(s,n,a):s;throw new Error("Couldn't find intersection")}function d(){var e=this,t=[];do t.push(e);while(e=e.parentPath);return t}function y(){for(var e=this;e;){for(var t=arguments,r=Array.isArray(t),i=0,t=r?t:(0,g.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(e.node.type===s)return!0}e=e.parentPath}return!1}function v(e){var t=this.isFunction()?this:this.findParent(function(e){return e.isFunction()});if(t){if(t.isFunctionExpression()||t.isFunctionDeclaration()){var r=t.node.shadow;if(r&&(!e||r[e]!==!1))return t}else if(t.isArrowFunctionExpression())return t;return null}}t.__esModule=!0;var m=r(i),g=o(m);t.findParent=u,t.find=l,t.getFunctionParent=p,t.getStatementParent=c,t.getEarliestCommonAncestorFrom=f,t.getDeepestCommonAncestorFrom=h,t.getAncestry=d,t.inType=y,t.inShadow=v;var b=r(n),x=a(b),E=r(s);o(E)},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=this.opts;return this.debug(function(){return e}),!(!this.node||!this._call(t[e]))||!!this.node&&this._call(t[this.node.type]&&t[this.node.type][e])}function o(e){if(!e)return!1;for(var t=e,r=Array.isArray(t),i=0,t=r?t:(0,w.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(s){var a=this.node;if(!a)return!0;var o=s.call(this.state,this,this.state);if(o)throw new Error("Unexpected return value from visitor method "+s);if(this.node!==a)return!0;if(this.shouldStop||this.shouldSkip||this.removed)return!0}}return!1}function u(){var e=this.opts.blacklist;return e&&e.indexOf(this.node.type)>-1}function l(){return!!this.node&&(!this.isBlacklisted()&&((!this.opts.shouldSkip||!this.opts.shouldSkip(this))&&(this.call("enter")||this.shouldSkip?(this.debug(function(){return"Skip..."}),this.shouldStop):(this.debug(function(){return"Recursing into..."}),C.default.node(this.node,this.opts,this.scope,this.state,this,this.skipKeys),this.call("exit"),this.shouldStop))))}function p(){this.shouldSkip=!0}function c(e){this.skipKeys[e]=!0}function f(){this.shouldStop=!0,this.shouldSkip=!0}function h(){if(!this.opts||!this.opts.noScope){var e=this.context&&this.context.scope;if(!e)for(var t=this.parentPath;t&&!e;){if(t.opts&&t.opts.noScope)return;e=t.scope,t=t.parentPath}this.scope=this.getScope(e),this.scope&&this.scope.init()}}function d(e){return this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.skipKeys={},e&&(this.context=e,this.state=e.state,this.opts=e.opts),this.setScope(),this}function y(){this.removed||(this._resyncParent(),this._resyncList(),this._resyncKey())}function v(){this.parentPath&&(this.parent=this.parentPath.node)}function m(){if(this.container&&this.node!==this.container[this.key]){if(Array.isArray(this.container)){for(var e=0;e<this.container.length;e++)if(this.container[e]===this.node)return this.setKey(e)}else for(var t in this.container)if(this.container[t]===this.node)return this.setKey(t);this.key=null}}function g(){if(this.parent&&this.inList){var e=this.parent[this.listKey];this.container!==e&&(this.container=e||null)}}function b(){null!=this.key&&this.container&&this.container[this.key]===this.node||this._markRemoved()}function x(){this.contexts.pop(),this.setContext(this.contexts[this.contexts.length-1])}function E(e){this.contexts.push(e),this.setContext(e)}function A(e,t,r,i){this.inList=!!r,this.listKey=r,this.parentKey=r||i,this.container=t,this.parentPath=e||this.parentPath,this.setKey(i)}function S(e){this.key=e,this.node=this.container[this.key],this.type=this.node&&this.node.type}function _(){var e=arguments.length<=0||void 0===arguments[0]?this:arguments[0];if(!e.removed)for(var t=this.contexts,r=t,i=Array.isArray(r),n=0,r=i?r:(0,w.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;a.maybeQueue(e)}}function T(){for(var e=this,t=this.contexts;!t.length;)e=e.parentPath,t=e.contexts;return t}t.__esModule=!0;var P=r(i),w=s(P);t.call=a,t._call=o,t.isBlacklisted=u,t.visit=l,t.skip=p,t.skipKey=c,t.stop=f,t.setScope=h,t.setContext=d,t.resync=y,t._resyncParent=v,t._resyncKey=m,t._resyncList=g,t._resyncRemoved=b,t.popContext=x,t.pushContext=E,t.setup=A,t.setKey=S,t.requeue=_,t._getQueueContexts=T;var k=r(n),C=s(k)},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(){var e=this.node,t=void 0;if(this.isMemberExpression())t=e.property;else{if(!this.isProperty()&&!this.isMethod())throw new ReferenceError("todo");t=e.key}return e.computed||l.isIdentifier(t)&&(t=l.stringLiteral(t.name)),t}function a(){return l.ensureBlock(this.node)}function o(){if(this.isArrowFunctionExpression()){this.ensureBlock();var e=this.node;e.expression=!1,e.type="FunctionExpression",e.shadow=e.shadow||!0}}t.__esModule=!0,t.toComputedKey=s,t.ensureBlock=a,t.arrowFunctionToShadowed=o;var u=r(i),l=n(u)},function(e,t,r,i,n,s){(function(e){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(){var e=this.evaluate();if(e.confident)return!!e.value}function u(){function t(e){n&&(s=e,n=!1)}function r(e){var r=e.node;if(a.has(r)){var s=a.get(r);return s.resolved?s.value:void t(e)}var o={resolved:!1};a.set(r,o);var u=i(e);return n&&(o.resolved=!0,o.value=u),u}function i(i){if(n){var s=i.node;if(i.isSequenceExpression()){var a=i.get("expressions");return r(a[a.length-1])}if(i.isStringLiteral()||i.isNumericLiteral()||i.isBooleanLiteral())return s.value;if(i.isNullLiteral())return null;if(i.isTemplateLiteral()){for(var o="",u=0,l=i.get("expressions"),c=s.quasis,h=Array.isArray(c),d=0,c=h?c:(0,f.default)(c);;){var m;if(h){if(d>=c.length)break;m=c[d++]}else{if(d=c.next(),d.done)break;m=d.value}var g=m;if(!n)break;o+=g.value.cooked;var b=l[u++];b&&(o+=String(r(b)))}if(!n)return;return o}if(i.isConditionalExpression()){var x=r(i.get("test"));if(!n)return;return r(x?i.get("consequent"):i.get("alternate"))}if(i.isExpressionWrapper())return r(i.get("expression"));if(i.isMemberExpression()&&!i.parentPath.isCallExpression({callee:s})){var E=i.get("property"),A=i.get("object");if(A.isLiteral()&&E.isIdentifier()){var S=A.node.value,_="undefined"==typeof S?"undefined":(0,p.default)(S);if("number"===_||"string"===_)return S[E.node.name]}}if(i.isReferencedIdentifier()){var T=i.scope.getBinding(s.name);if(T&&T.constantViolations.length>0)return t(T.path);if(T&&T.hasValue)return T.value;if("undefined"===s.name)return;if("Infinity"===s.name)return 1/0;if("NaN"===s.name)return NaN;var P=i.resolve();return P===i?t(i):r(P)}if(i.isUnaryExpression({prefix:!0})){if("void"===s.operator)return;var w=i.get("argument");if("typeof"===s.operator&&(w.isFunction()||w.isClass()))return"function";var k=r(w);if(!n)return;switch(s.operator){case"!":return!k;case"+":return+k;case"-":return-k;case"~":return~k;case"typeof":return"undefined"==typeof k?"undefined":(0,p.default)(k)}}if(i.isArrayExpression()){for(var C=[],D=i.get("elements"),O=D,N=Array.isArray(O),I=0,O=N?O:(0,f.default)(O);;){var F;if(N){if(I>=O.length)break;F=O[I++]}else{if(I=O.next(),I.done)break;F=I.value}var B=F;if(B=B.evaluate(),!B.confident)return t(B);C.push(B.value)}return C}if(i.isObjectExpression(),i.isLogicalExpression()){var R=n,L=r(i.get("left")),M=n;n=R;var j=r(i.get("right")),V=n;switch(n=M&&V,s.operator){case"||":if(L&&M)return n=!0,L;if(!n)return;return L||j;case"&&":if((!L&&M||!j&&V)&&(n=!0),!n)return;return L&&j}}if(i.isBinaryExpression()){var U=r(i.get("left"));if(!n)return;var Y=r(i.get("right"));if(!n)return;switch(s.operator){case"-":return U-Y;case"+":return U+Y;case"/":return U/Y;case"*":return U*Y;case"%":return U%Y;case"**":return Math.pow(U,Y);case"<":return U<Y;case">":return U>Y;case"<=":return U<=Y;case">=":return U>=Y;case"==":return U==Y;case"!=":return U!=Y;case"===":return U===Y;case"!==":return U!==Y;case"|":return U|Y;case"&":return U&Y;case"^":return U^Y;case"<<":return U<<Y;case">>":return U>>Y;case">>>":return U>>>Y}}if(i.isCallExpression()){var K=i.get("callee"),W=void 0,G=void 0;if(K.isIdentifier()&&!i.scope.getBinding(K.node.name,!0)&&y.indexOf(K.node.name)>=0&&(G=e[s.callee.name]),K.isMemberExpression()){var q=K.get("object"),H=K.get("property");if(q.isIdentifier()&&H.isIdentifier()&&y.indexOf(q.node.name)>=0&&v.indexOf(H.node.name)<0&&(W=e[q.node.name],G=W[H.node.name]),q.isLiteral()&&H.isIdentifier()){var X=(0,p.default)(q.node.value);"string"!==X&&"number"!==X||(W=q.node.value,G=W[H.node.name])}}if(G){var J=i.get("arguments").map(r);if(!n)return;return G.apply(W,J)}}t(i)}}var n=!0,s=void 0,a=new d.default,o=r(this);return n||(o=void 0),{confident:n,deopt:s,value:o}}t.__esModule=!0;var l=r(i),p=a(l),c=r(n),f=a(c),h=r(s),d=a(h);t.evaluateTruthy=o,t.evaluate=u;var y=["String","Number","Math"],v=["random"]}).call(t,function(){return this}())},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(){var e=this;do{if(!e.parentPath||Array.isArray(e.container)&&e.isStatement())break;e=e.parentPath}while(e);if(e&&(e.isProgram()||e.isFile()))throw new Error("File/Program node, we can't possibly find a statement parent to this");return e}function l(){
+return"left"===this.key?this.getSibling("right"):"right"===this.key?this.getSibling("left"):void 0}function p(){var e=[],t=function(t){t&&(e=e.concat(t.getCompletionRecords()))};if(this.isIfStatement())t(this.get("consequent")),t(this.get("alternate"));else if(this.isDoExpression()||this.isFor()||this.isWhile())t(this.get("body"));else if(this.isProgram()||this.isBlockStatement())t(this.get("body").pop());else{if(this.isFunction())return this.get("body").getCompletionRecords();this.isTryStatement()?(t(this.get("block")),t(this.get("handler")),t(this.get("finalizer"))):e.push(this)}return e}function c(e){return x.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:e})}function f(e,t){t===!0&&(t=this.context);var r=e.split(".");return 1===r.length?this._getKey(e,t):this._getPattern(r,t)}function h(e,t){var r=this,i=this.node,n=i[e];return Array.isArray(n)?n.map(function(s,a){return x.default.get({listKey:e,parentPath:r,parent:i,container:n,key:a}).setContext(t)}):x.default.get({parentPath:this,parent:i,container:i,key:e}).setContext(t)}function d(e,t){for(var r=this,i=e,n=Array.isArray(i),s=0,i=n?i:(0,g.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;r="."===o?r.parentPath:Array.isArray(r)?r[o]:r.get(o,t)}return r}function y(e){return A.getBindingIdentifiers(this.node,e)}function v(e){return A.getOuterBindingIdentifiers(this.node,e)}t.__esModule=!0;var m=r(i),g=o(m);t.getStatementParent=u,t.getOpposite=l,t.getCompletionRecords=p,t.getSibling=c,t.get=f,t._getKey=h,t._getPattern=d,t.getBindingIdentifiers=y,t.getOuterBindingIdentifiers=v;var b=r(n),x=o(b),E=r(s),A=a(E)},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g,b,x){"use strict";function E(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function A(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var S=r(i),_=A(S),T=r(n),P=A(T),w=r(s),k=E(w),C=r(371),D=A(C),O=r(456),N=A(O),I=r(a),F=A(I),B=r(78),R=A(B),L=r(o),M=A(L),j=r(u),V=E(j),U=r(l),Y=(0,D.default)("babel"),K=function(){function e(t,r){(0,P.default)(this,e),this.parent=r,this.hub=t,this.contexts=[],this.data={},this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.state=null,this.opts=null,this.skipKeys=null,this.parentPath=null,this.context=null,this.container=null,this.listKey=null,this.inList=!1,this.parentKey=null,this.key=null,this.node=null,this.scope=null,this.type=null,this.typeAnnotation=null}return e.get=function(t){var r=t.hub,i=t.parentPath,n=t.parent,s=t.container,a=t.listKey,o=t.key;!r&&i&&(r=i.hub),(0,N.default)(n,"To get a node path the parent needs to exist");var u=s[o],l=U.path.get(n)||[];U.path.has(n)||U.path.set(n,l);for(var p=void 0,c=0;c<l.length;c++){var f=l[c];if(f.node===u){p=f;break}}return p||(p=new e(r,n),l.push(p)),p.setup(i,s,a,o),p},e.prototype.getScope=function(e){var t=e;return this.isScope()&&(t=new M.default(this,e)),t},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e,t){var r=this.data[e];return!r&&t&&(r=this.data[e]=t),r},e.prototype.buildCodeFrameError=function(e){var t=arguments.length<=1||void 0===arguments[1]?SyntaxError:arguments[1];return this.hub.file.buildCodeFrameError(this.node,e,t)},e.prototype.traverse=function(e,t){(0,F.default)(this.node,e,this.scope,t,this)},e.prototype.mark=function(e,t){this.hub.file.metadata.marked.push({type:e,message:t,loc:this.node.loc})},e.prototype.set=function(e,t){V.validate(this.node,e,t),this.node[e]=t},e.prototype.getPathLocation=function(){var e=[],t=this;do{var r=t.key;t.inList&&(r=t.listKey+"["+r+"]"),e.unshift(r)}while(t=t.parentPath);return e.join(".")},e.prototype.debug=function(e){Y.enabled&&Y(this.getPathLocation()+" "+this.type+": "+e())},e}();t.default=K,(0,R.default)(K.prototype,r(p)),(0,R.default)(K.prototype,r(c)),(0,R.default)(K.prototype,r(f)),(0,R.default)(K.prototype,r(h)),(0,R.default)(K.prototype,r(d)),(0,R.default)(K.prototype,r(y)),(0,R.default)(K.prototype,r(v)),(0,R.default)(K.prototype,r(m)),(0,R.default)(K.prototype,r(g)),(0,R.default)(K.prototype,r(b)),(0,R.default)(K.prototype,r(x));for(var W=function(){if(q){if(H>=G.length)return"break";X=G[H++]}else{if(H=G.next(),H.done)return"break";X=H.value}var e=X,t="is"+e;K.prototype[t]=function(e){return V[t](this.node,e)},K.prototype["assert"+e]=function(r){if(!this[t](r))throw new TypeError("Expected node path of type "+e)}},G=V.TYPES,q=Array.isArray(G),H=0,G=q?G:(0,_.default)(G);;){var X,J=W();if("break"===J)break}var $=function(e){if("_"===e[0])return"continue";V.TYPES.indexOf(e)<0&&V.TYPES.push(e);var t=k[e];K.prototype["is"+e]=function(e){return t.checkPath(this,e)}};for(var z in k){$(z)}e.exports=t.default},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(){if(this.typeAnnotation)return this.typeAnnotation;var e=this._getTypeAnnotation()||x.anyTypeAnnotation();return x.isTypeAnnotation(e)&&(e=e.typeAnnotation),this.typeAnnotation=e}function l(){var e=this.node;{if(e){if(e.typeAnnotation)return e.typeAnnotation;var t=g[e.type];return t?t.call(this,e):(t=g[this.parentPath.type],t&&t.validParent?this.parentPath.getTypeAnnotation():void 0)}if("init"===this.key&&this.parentPath.isVariableDeclarator()){var r=this.parentPath.parentPath,i=r.parentPath;return"left"===r.key&&i.isForInStatement()?x.stringTypeAnnotation():"left"===r.key&&i.isForOfStatement()?x.anyTypeAnnotation():x.voidTypeAnnotation()}}}function p(e,t){return c(e,this.getTypeAnnotation(),t)}function c(e,t,r){if("string"===e)return x.isStringTypeAnnotation(t);if("number"===e)return x.isNumberTypeAnnotation(t);if("boolean"===e)return x.isBooleanTypeAnnotation(t);if("any"===e)return x.isAnyTypeAnnotation(t);if("mixed"===e)return x.isMixedTypeAnnotation(t);if("void"===e)return x.isVoidTypeAnnotation(t);if(r)return!1;throw new Error("Unknown base type "+e)}function f(e){var t=this.getTypeAnnotation();if(x.isAnyTypeAnnotation(t))return!0;if(x.isUnionTypeAnnotation(t)){for(var r=t.types,i=Array.isArray(r),n=0,r=i?r:(0,v.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;if(x.isAnyTypeAnnotation(a)||c(e,a,!0))return!0}return!1}return c(e,t,!0)}function h(e){var t=this.getTypeAnnotation();if(e=e.getTypeAnnotation(),!x.isAnyTypeAnnotation(t)&&x.isFlowBaseAnnotation(t))return e.type===t.type}function d(e){var t=this.getTypeAnnotation();return x.isGenericTypeAnnotation(t)&&x.isIdentifier(t.id,{name:e})}t.__esModule=!0;var y=r(i),v=o(y);t.getTypeAnnotation=u,t._getTypeAnnotation=l,t.isBaseType=p,t.couldBeBaseType=f,t.baseTypeStrictlyMatches=h,t.isGenericType=d;var m=r(n),g=a(m),b=r(s),x=a(b)},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r=e.scope.getBinding(t),i=[];e.typeAnnotation=y.unionTypeAnnotation(i);var n=[],s=u(r,e,n),a=c(e,t);if(a&&!function(){var e=u(r,a.ifStatement);s=s.filter(function(t){return e.indexOf(t)<0}),i.push(a.typeAnnotation)}(),s.length){s=s.concat(n);for(var o=s,l=Array.isArray(o),p=0,o=l?o:(0,h.default)(o);;){var f;if(l){if(p>=o.length)break;f=o[p++]}else{if(p=o.next(),p.done)break;f=p.value}var d=f;i.push(d.getTypeAnnotation())}}if(i.length)return y.createUnionTypeAnnotation(i)}function u(e,t,r){var i=e.constantViolations.slice();return i.unshift(e.path),i.filter(function(e){e=e.resolve();var i=e._guessExecutionStatusRelativeTo(t);return r&&"function"===i&&r.push(e),"before"===i})}function l(e,t){var r=t.node.operator,i=t.get("right").resolve(),n=t.get("left").resolve(),s=void 0;if(n.isIdentifier({name:e})?s=i:i.isIdentifier({name:e})&&(s=n),s)return"==="===r?s.getTypeAnnotation():y.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(r)>=0?y.numberTypeAnnotation():void 0;if("==="===r){var a=void 0,o=void 0;if(n.isUnaryExpression({operator:"typeof"})?(a=n,o=i):i.isUnaryExpression({operator:"typeof"})&&(a=i,o=n),(o||a)&&(o=o.resolve(),o.isLiteral())){var u=o.node.value;if("string"==typeof u&&a.get("argument").isIdentifier({name:e}))return y.createTypeAnnotationBasedOnTypeof(o.node.value)}}}function p(e){for(var t=void 0;t=e.parentPath;){if(t.isIfStatement()||t.isConditionalExpression())return"test"===e.key?void 0:t;e=t}}function c(e,t){var r=p(e);if(r){var i=r.get("test"),n=[i],s=[];do{var a=n.shift().resolve();if(a.isLogicalExpression()&&(n.push(a.get("left")),n.push(a.get("right"))),a.isBinaryExpression()){var o=l(t,a);o&&s.push(o)}}while(n.length);return s.length?{typeAnnotation:y.createUnionTypeAnnotation(s),ifStatement:r}:c(r,t)}}t.__esModule=!0;var f=r(i),h=a(f);t.default=function(e){if(this.isReferenced()){var t=this.scope.getBinding(e.name);return t?t.identifier.typeAnnotation?t.identifier.typeAnnotation:o(this,e.name):"undefined"===e.name?y.voidTypeAnnotation():"NaN"===e.name||"Infinity"===e.name?y.numberTypeAnnotation():void("arguments"===e.name)}};var d=r(n),y=s(d);e.exports=t.default},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(){var e=this.get("id");return e.isIdentifier()?this.get("init").getTypeAnnotation():void 0}function u(e){return e.typeAnnotation}function l(e){if(this.get("callee").isIdentifier())return N.genericTypeAnnotation(e.callee)}function p(){return N.stringTypeAnnotation()}function c(e){var t=e.operator;return"void"===t?N.voidTypeAnnotation():N.NUMBER_UNARY_OPERATORS.indexOf(t)>=0?N.numberTypeAnnotation():N.STRING_UNARY_OPERATORS.indexOf(t)>=0?N.stringTypeAnnotation():N.BOOLEAN_UNARY_OPERATORS.indexOf(t)>=0?N.booleanTypeAnnotation():void 0}function f(e){var t=e.operator;if(N.NUMBER_BINARY_OPERATORS.indexOf(t)>=0)return N.numberTypeAnnotation();if(N.BOOLEAN_BINARY_OPERATORS.indexOf(t)>=0)return N.booleanTypeAnnotation();if("+"===t){var r=this.get("right"),i=this.get("left");return i.isBaseType("number")&&r.isBaseType("number")?N.numberTypeAnnotation():i.isBaseType("string")||r.isBaseType("string")?N.stringTypeAnnotation():N.unionTypeAnnotation([N.stringTypeAnnotation(),N.numberTypeAnnotation()])}}function h(){return N.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(),this.get("right").getTypeAnnotation()])}function d(){return N.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(),this.get("alternate").getTypeAnnotation()])}function y(){return this.get("expressions").pop().getTypeAnnotation()}function v(){return this.get("right").getTypeAnnotation()}function m(e){var t=e.operator;if("++"===t||"--"===t)return N.numberTypeAnnotation()}function g(){return N.stringTypeAnnotation()}function b(){return N.numberTypeAnnotation()}function x(){return N.booleanTypeAnnotation()}function E(){return N.nullLiteralTypeAnnotation()}function A(){return N.genericTypeAnnotation(N.identifier("RegExp"))}function S(){return N.genericTypeAnnotation(N.identifier("Object"))}function _(){return N.genericTypeAnnotation(N.identifier("Array"))}function T(){return _()}function P(){return N.genericTypeAnnotation(N.identifier("Function"))}function w(){return C(this.get("callee"))}function k(){return C(this.get("tag"))}function C(e){if(e=e.resolve(),e.isFunction()){if(e.is("async"))return e.is("generator")?N.genericTypeAnnotation(N.identifier("AsyncIterator")):N.genericTypeAnnotation(N.identifier("Promise"));if(e.node.returnType)return e.node.returnType}}t.__esModule=!0,t.Class=t.Function=t.Identifier=void 0;var D=r(i);Object.defineProperty(t,"Identifier",{enumerable:!0,get:function(){return a(D).default}}),t.VariableDeclarator=o,t.TypeCastExpression=u,t.NewExpression=l,t.TemplateLiteral=p,t.UnaryExpression=c,t.BinaryExpression=f,t.LogicalExpression=h,t.ConditionalExpression=d,t.SequenceExpression=y,t.AssignmentExpression=v,t.UpdateExpression=m,t.StringLiteral=g,t.NumericLiteral=b,t.BooleanLiteral=x,t.NullLiteral=E,t.RegExpLiteral=A,t.ObjectExpression=S,t.ArrayExpression=_,t.RestElement=T,t.CallExpression=w,t.TaggedTemplateExpression=k;var O=r(n),N=s(O);u.validParent=!0,T.validParent=!0,t.Function=P,t.Class=P},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(e,t){function r(e){var t=i[s];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var i=e.split("."),n=[this.node],s=0;n.length;){var a=n.shift();if(t&&s===i.length)return!0;if(N.isIdentifier(a)){if(!r(a.name))return!1}else if(N.isLiteral(a)){if(!r(a.value))return!1}else{if(N.isMemberExpression(a)){if(a.computed&&!N.isLiteral(a.property))return!1;n.unshift(a.property),n.unshift(a.object);continue}if(!N.isThisExpression(a))return!1;if(!r("this"))return!1}if(++s>i.length)return!1}return s===i.length}function l(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}function p(){return this.scope.isStatic(this.node)}function c(e){return!this.has(e)}function f(e,t){return this.node[e]===t}function h(e){return N.isType(this.type,e)}function d(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()}function y(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?N.isBlockStatement(e):!!this.isBlockStatement()&&N.isExpression(e))}function v(e){var t=this,r=!0;do{var i=t.container;if(t.isFunction()&&!r)return!!e;if(r=!1,Array.isArray(i)&&t.key!==i.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0}function m(){return!this.parentPath.isLabeledStatement()&&!N.isBlockStatement(this.container)&&(0,D.default)(N.STATEMENT_OR_BLOCK_KEYS,this.key)}function g(e,t){if(!this.isReferencedIdentifier())return!1;var r=this.scope.getBinding(this.node.name);if(!r||"module"!==r.kind)return!1;var i=r.path,n=i.parentPath;return!!n.isImportDeclaration()&&(n.node.source.value===e&&(!t||(!(!i.isImportDefaultSpecifier()||"default"!==t)||(!(!i.isImportNamespaceSpecifier()||"*"!==t)||!(!i.isImportSpecifier()||i.node.imported.name!==t)))))}function b(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""}function x(e){return"after"!==this._guessExecutionStatusRelativeTo(e)}function E(e){var t=e.scope.getFunctionParent(),r=this.scope.getFunctionParent();if(t.node!==r.node){var i=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(i)return i;e=t.path}var n=e.getAncestry();if(n.indexOf(this)>=0)return"after";var s=this.getAncestry(),a=void 0,o=void 0,u=void 0;for(u=0;u<s.length;u++){var l=s[u];if(o=n.indexOf(l),o>=0){a=l;break}}if(!a)return"before";var p=n[o-1],c=s[u-1];if(!p||!c)return"before";if(p.listKey&&p.container===c.container)return p.key>c.key?"before":"after";var f=N.VISITOR_KEYS[p.type].indexOf(p.key),h=N.VISITOR_KEYS[c.type].indexOf(c.key);return f>h?"before":"after"}function A(e){var t=e.path;if(t.isFunctionDeclaration()){var r=t.scope.getBinding(t.node.id.name);if(!r.references)return"before";for(var i=r.referencePaths,n=i,s=Array.isArray(n),a=0,n=s?n:(0,k.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if("callee"!==u.key||!u.parentPath.isCallExpression())return}for(var l=void 0,p=i,c=Array.isArray(p),f=0,p=c?p:(0,k.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h,y=!!d.find(function(e){return e.node===t.node});if(!y){var v=this._guessExecutionStatusRelativeTo(d);if(l){if(l!==v)return}else l=v}}return l}}function S(e,t){return this._resolve(e,t)||this}function _(e,t){var r=this;if(!(t&&t.indexOf(this)>=0))if(t=t||[],t.push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var i=this.scope.getBinding(this.node.name);if(!i)return;if(!i.constant)return;if("module"===i.kind)return;if(i.path!==this){var n=function(){var n=i.path.resolve(e,t);return r.find(function(e){return e.node===n.node})?{v:void 0}:{v:n}}();if("object"===("undefined"==typeof n?"undefined":(0,P.default)(n)))return n.v}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var s=this.toComputedKey();if(!N.isLiteral(s))return;var a=s.value,o=this.get("object").resolve(e,t);if(o.isObjectExpression())for(var u=o.get("properties"),l=u,p=Array.isArray(l),c=0,l=p?l:(0,k.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;if(h.isProperty()){var d=h.get("key"),y=h.isnt("computed")&&d.isIdentifier({name:a});if(y=y||d.isLiteral({value:a}))return h.get("value").resolve(e,t)}}else if(o.isArrayExpression()&&!isNaN(+a)){var v=o.get("elements"),m=v[a];if(m)return m.resolve(e,t)}}}}t.__esModule=!0,t.is=void 0;var T=r(i),P=o(T),w=r(n),k=o(w);t.matchesPattern=u,t.has=l,t.isStatic=p,t.isnt=c,t.equals=f,t.isNodeType=h,t.canHaveVariableDeclarationOrExpression=d,t.canSwapBetweenExpressionAndStatement=y,t.isCompletionRecord=v,t.isStatementOrBlock=m,t.referencesImport=g,t.getSource=b,t.willIMaybeExecuteBefore=x,t._guessExecutionStatusRelativeTo=E,t._guessExecutionStatusRelativeToDifferentFunctions=A,t.resolve=S,t._resolve=_;var C=r(50),D=o(C),O=r(s),N=a(O);t.is=l},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var u=r(i),l=o(u),p=r(n),c=o(p),f=r(s),h=a(f),d={ReferencedIdentifier:function(e,t){if(!e.isJSXIdentifier()||!f.react.isCompatTag(e.node.name)){var r=e.scope.getBinding(e.node.name);if(r&&r===t.scope.getBinding(e.node.name))if(r.constant)t.bindings[e.node.name]=r;else for(var i=r.constantViolations,n=Array.isArray(i),s=0,i=n?i:(0,c.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;t.breakOnScopePaths=t.breakOnScopePaths.concat(o.getAncestry())}}}},y=function(){function e(t,r){(0,l.default)(this,e),this.breakOnScopePaths=[],this.bindings={},this.scopes=[],this.scope=r,this.path=t}return e.prototype.isCompatibleScope=function(e){for(var t in this.bindings){var r=this.bindings[t];if(!e.bindingIdentifierEquals(t,r.identifier))return!1}return!0},e.prototype.getCompatibleScopes=function(){var e=this.path.scope;do{if(!this.isCompatibleScope(e))break;if(this.scopes.push(e),this.breakOnScopePaths.indexOf(e.path)>=0)break}while(e=e.parent)},e.prototype.getAttachmentPath=function(){var e=this._getAttachmentPath();if(e){var t=e.scope;if(t.path===e&&(t=e.scope.parent),t.path.isProgram()||t.path.isFunction())for(var r in this.bindings)if(t.hasOwnBinding(r)){var i=this.bindings[r];if("param"!==i.kind&&i.path.getStatementParent().key>e.key)return}return e}},e.prototype._getAttachmentPath=function(){var e=this.scopes,t=e.pop();if(t){if(t.path.isFunction()){if(this.hasOwnParamBindings(t)){if(this.scope===t)return;return t.path.get("body").get("body")[0]}return this.getNextScopeStatementParent()}return t.path.isProgram()?this.getNextScopeStatementParent():void 0}},e.prototype.getNextScopeStatementParent=function(){var e=this.scopes.pop();if(e)return e.path.getStatementParent()},e.prototype.hasOwnParamBindings=function(e){for(var t in this.bindings)if(e.hasOwnBinding(t)){var r=this.bindings[t];if("param"===r.kind)return!0}return!1},e.prototype.run=function(){var e=this.path.node;if(!e._hoisted){e._hoisted=!0,this.path.traverse(d,this),this.getCompatibleScopes();var t=this.getAttachmentPath();if(t&&t.getFunctionParent()!==this.path.getFunctionParent()){var r=t.scope.generateUidIdentifier("ref");t.insertBefore([h.variableDeclaration("var",[h.variableDeclarator(r,this.path.node)])]);var i=this.path.parentPath;i.isJSXElement()&&this.path.container===i.node.children&&(r=h.JSXExpressionContainer(r)),this.path.replaceWith(r)}}},e}();t.default=y,e.exports=t.default},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.Flow=t.Pure=t.Generated=t.User=t.Var=t.BlockScoped=t.Referenced=t.Scope=t.Expression=t.Statement=t.BindingIdentifier=t.ReferencedMemberExpression=t.ReferencedIdentifier=void 0;var s=r(i),a=n(s);t.ReferencedIdentifier={types:["Identifier","JSXIdentifier"],checkPath:function(e,t){var r=e.node,i=e.parent;if(!a.isIdentifier(r,t)){if(!a.isJSXIdentifier(r,t))return!1;if(s.react.isCompatTag(r.name))return!1}return a.isReferenced(r,i)}},t.ReferencedMemberExpression={types:["MemberExpression"],checkPath:function(e){var t=e.node,r=e.parent;return a.isMemberExpression(t)&&a.isReferenced(t,r)}},t.BindingIdentifier={types:["Identifier"],checkPath:function(e){var t=e.node,r=e.parent;return a.isIdentifier(t)&&a.isBinding(t,r)}},t.Statement={types:["Statement"],checkPath:function(e){var t=e.node,r=e.parent;if(a.isStatement(t)){if(a.isVariableDeclaration(t)){if(a.isForXStatement(r,{left:t}))return!1;if(a.isForStatement(r,{init:t}))return!1}return!0}return!1}},t.Expression={types:["Expression"],checkPath:function(e){return e.isIdentifier()?e.isReferencedIdentifier():a.isExpression(e.node)}},t.Scope={types:["Scopable"],checkPath:function(e){return a.isScope(e.node,e.parent)}},t.Referenced={checkPath:function(e){return a.isReferenced(e.node,e.parent)}},t.BlockScoped={checkPath:function(e){return a.isBlockScoped(e.node)}},t.Var={types:["VariableDeclaration"],checkPath:function(e){return a.isVar(e.node)}},t.User={checkPath:function(e){return e.node&&!!e.node.loc}},t.Generated={checkPath:function(e){return!e.isUser()}},t.Pure={checkPath:function(e,t){return e.scope.isPure(e.node,t)}},t.Flow={types:["Flow","ImportDeclaration","ExportDeclaration"],checkPath:function(e){var t=e.node;return!!a.isFlow(t)||(a.isImportDeclaration(t)?"type"===t.importKind||"typeof"===t.importKind:!!a.isExportDeclaration(t)&&"type"===t.exportKind)}}},function(e,t,r,i,n,s,a,o,u){"use strict";function l(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function p(e){return e&&e.__esModule?e:{default:e}}function c(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertBefore(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key)this.node&&e.push(this.node),this.replaceExpressionWithStatements(e);else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertBefore(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.push(this.node),this._replaceWith(N.blockStatement(e))}return[this]}function f(e,t){this.updateSiblingKeys(e,t.length);for(var r=[],i=0;i<t.length;i++){var n=e+i,s=t[i];if(this.container.splice(n,0,s),this.context){var a=this.context.create(this.parent,this.container,n,this.listKey);this.context.queue&&a.pushContext(this.context),r.push(a)}else r.push(D.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:n}))}for(var o=this._getQueueContexts(),u=r,l=Array.isArray(u),p=0,u=l?u:(0,T.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;f.setScope(),f.debug(function(){return"Inserted."});for(var h=o,d=Array.isArray(h),y=0,h=d?h:(0,T.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;m.maybeQueue(f,!0)}}return r}function h(e){return this._containerInsert(this.key,e)}function d(e){return this._containerInsert(this.key+1,e)}function y(e){var t=e[e.length-1],r=N.isIdentifier(t)||N.isExpressionStatement(t)&&N.isIdentifier(t.expression);r&&!this.isCompletionRecord()&&e.pop()}function v(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertAfter(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key){if(this.node){var t=this.scope.generateDeclaredUidIdentifier();e.unshift(N.expressionStatement(N.assignmentExpression("=",t,this.node))),e.push(N.expressionStatement(t))}this.replaceExpressionWithStatements(e)}else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertAfter(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.unshift(this.node),this._replaceWith(N.blockStatement(e))}return[this]}function m(e,t){if(this.parent)for(var r=P.path.get(this.parent),i=0;i<r.length;i++){var n=r[i];n.key>=e&&(n.key+=t)}}function g(e){if(!e)return[];e.constructor!==Array&&(e=[e]);for(var t=0;t<e.length;t++){var r=e[t],i=void 0;if(r?"object"!==("undefined"==typeof r?"undefined":(0,S.default)(r))?i="contains a non-object node":r.type?r instanceof D.default&&(i="has a NodePath when it expected a raw object"):i="without a type":i="has falsy node",i){var n=Array.isArray(r)?"array":"undefined"==typeof r?"undefined":(0,S.default)(r);throw new Error("Node list "+i+" with the index of "+t+" and type of "+n)}}return e}function b(e,t){this._assertUnremoved(),t=this._verifyNodeList(t);var r=D.default.get({parentPath:this,parent:this.node,container:this.node[e],listKey:e,key:0});return r.insertBefore(t)}function x(e,t){this._assertUnremoved(),t=this._verifyNodeList(t);var r=this.node[e],i=D.default.get({parentPath:this,parent:this.node,container:r,listKey:e,key:r.length});return i.replaceWithMultiple(t)}function E(){var e=arguments.length<=0||void 0===arguments[0]?this.scope:arguments[0],t=new k.default(this,e);return t.run()}t.__esModule=!0;var A=r(i),S=p(A),_=r(n),T=p(_);t.insertBefore=c,t._containerInsert=f,t._containerInsertBefore=h,t._containerInsertAfter=d,t._maybePopFromStatements=y,t.insertAfter=v,t.updateSiblingKeys=m,t._verifyNodeList=g,t.unshiftContainer=b,t.pushContainer=x,t.hoist=E;var P=r(s),w=r(a),k=p(w),C=r(o),D=p(C),O=r(u),N=l(O)},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}function a(){return this._assertUnremoved(),this.resync(),this._callRemovalHooks()?void this._markRemoved():(this.shareCommentsWithSiblings(),this._remove(),void this._markRemoved())}function o(){for(var e=h.hooks,t=Array.isArray(e),r=0,e=t?e:(0,f.default)(e);;){var i;if(t){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var n=i;if(n(this,this.parentPath))return!0}}function u(){Array.isArray(this.container)?(this.container.splice(this.key,1),this.updateSiblingKeys(this.key,-1)):this._replaceWith(null)}function l(){this.shouldSkip=!0,this.removed=!0,this.node=null}function p(){if(this.removed)throw this.buildCodeFrameError("NodePath has been removed so is read-only.")}t.__esModule=!0;var c=r(i),f=s(c);t.remove=a,t._callRemovalHooks=o,t._remove=u,t._markRemoved=l,t._assertUnremoved=p;var h=r(n)},function(e,t,r,i,n,s,a,o){"use strict";function u(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function l(e){return e&&e.__esModule?e:{default:e}}function p(e){this.resync(),e=this._verifyNodeList(e),P.inheritLeadingComments(e[0],this.node),P.inheritTrailingComments(e[e.length-1],this.node),this.node=this.container[this.key]=null,this.insertAfter(e),this.node?this.requeue():this.remove()}function c(e){this.resync();try{e="("+e+")",e=(0,_.parse)(e)}catch(r){var t=r.loc;throw t&&(r.message+=" - make sure this is an expression.",r.message+="\n"+(0,b.default)(e,t.line,t.column+1)),r}return e=e.program.body[0].expression,E.default.removeProperties(e),this.replaceWith(e)}function f(e){if(this.resync(),this.removed)throw new Error("You can't replace this node, we've already removed it");if(e instanceof S.default&&(e=e.node),!e)throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");if(this.node!==e){if(this.isProgram()&&!P.isProgram(e))throw new Error("You can only replace a Program root node with another Program node");if(Array.isArray(e))throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");if("string"==typeof e)throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");if(this.isNodeType("Statement")&&P.isExpression(e)&&(this.canHaveVariableDeclarationOrExpression()||this.canSwapBetweenExpressionAndStatement(e)||(e=P.expressionStatement(e))),this.isNodeType("Expression")&&P.isStatement(e)&&!this.canHaveVariableDeclarationOrExpression()&&!this.canSwapBetweenExpressionAndStatement(e))return this.replaceExpressionWithStatements([e]);var t=this.node;t&&(P.inheritsComments(e,t),P.removeComments(t)),this._replaceWith(e),this.type=e.type,this.setScope(),this.requeue()}}function h(e){if(!this.container)throw new ReferenceError("Container is falsy");this.inList?P.validate(this.parent,this.key,[e]):P.validate(this.parent,this.key,e),this.debug(function(){return"Replace with "+(e&&e.type)}),this.node=this.container[this.key]=e}function d(e){this.resync();var t=P.toSequenceExpression(e,this.scope);if(P.isSequenceExpression(t)){var r=t.expressions;r.length>=2&&this.parentPath.isExpressionStatement()&&this._maybePopFromStatements(r),1===r.length?this.replaceWith(r[0]):this.replaceWith(t)}else{if(!t){var i=P.functionExpression(null,[],P.blockStatement(e));i.shadow=!0,this.replaceWith(P.callExpression(i,[])),this.traverse(w);for(var n=this.get("callee").getCompletionRecords(),s=n,a=Array.isArray(s),o=0,s=a?s:(0,m.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(l.isExpressionStatement()){var p=l.findParent(function(e){return e.isLoop()});if(p){var c=this.get("callee"),f=c.scope.generateDeclaredUidIdentifier("ret");c.get("body").pushContainer("body",P.returnStatement(f)),l.get("expression").replaceWith(P.assignmentExpression("=",f,l.node.expression))}else l.replaceWith(P.returnStatement(l.node.expression))}}return this.node}this.replaceWith(t)}}function y(e){return this.resync(),Array.isArray(e)?Array.isArray(this.container)?(e=this._verifyNodeList(e),this._containerInsertAfter(e),this.remove()):this.replaceWithMultiple(e):this.replaceWith(e)}t.__esModule=!0;var v=r(i),m=l(v);t.replaceWithMultiple=p,t.replaceWithSourceString=c,t.replaceWith=f,t._replaceWith=h,t.replaceExpressionWithStatements=d,t.replaceInline=y;var g=r(258),b=l(g),x=r(n),E=l(x),A=r(s),S=l(A),_=r(a),T=r(o),P=u(T),w={Function:function(e){e.skip()},VariableDeclaration:function(e){if("var"===e.node.kind){var t=e.getBindingIdentifiers();for(var r in t)e.scope.push({id:t[r]});for(var i=[],n=e.node.declarations,s=Array.isArray(n),a=0,n=s?n:(0,m.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;u.init&&i.push(P.expressionStatement(P.assignmentExpression("=",u.id,u.init)))}e.replaceWithMultiple(i)}}}},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s),o=function(){function e(t){var r=t.existing,i=t.identifier,n=t.scope,s=t.path,o=t.kind;(0,a.default)(this,e),this.identifier=i,this.scope=n,this.path=s,this.kind=o,this.constantViolations=[],this.constant=!0,this.referencePaths=[],
+this.referenced=!1,this.references=0,this.clearValue(),r&&(this.constantViolations=[].concat(r.path,r.constantViolations,this.constantViolations))}return e.prototype.deoptValue=function(){this.clearValue(),this.hasDeoptedValue=!0},e.prototype.setValue=function(e){this.hasDeoptedValue||(this.hasValue=!0,this.value=e)},e.prototype.clearValue=function(){this.hasDeoptedValue=!1,this.hasValue=!1,this.value=null},e.prototype.reassign=function(e){this.constant=!1,this.constantViolations.indexOf(e)===-1&&this.constantViolations.push(e)},e.prototype.reference=function(e){this.referencePaths.indexOf(e)===-1&&(this.referenced=!0,this.references++,this.referencePaths.push(e))},e.prototype.dereference=function(){this.references--,this.referenced=!!this.references},e}();t.default=o,e.exports=t.default},function(e,t,r,i,n,s,a,o,u,l,p,c){"use strict";function f(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function h(e){return e&&e.__esModule?e:{default:e}}function d(e,t,r){for(var i=U.scope.get(e.node)||[],n=i,s=Array.isArray(n),a=0,n=s?n:(0,A.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if(u.parent===t&&u.path===e)return u}i.push(r),U.scope.has(e.node)||U.scope.set(e.node,i)}t.__esModule=!0;var y=r(i),v=h(y),m=r(n),g=h(m),b=r(s),x=h(b),E=r(a),A=h(E),S=r(50),_=h(S),T=r(459),P=h(T),w=r(o),k=h(w),C=r(u),D=h(C),O=r(457),N=h(O),I=r(20),F=f(I),B=r(l),R=h(B),L=r(455),M=h(L),j=r(p),V=f(j),U=r(c),Y=0,K={For:function(e){for(var t=V.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,A.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isVar()&&e.scope.getFunctionParent().registerBinding("var",a)}},Declaration:function(e){e.isBlockScoped()||e.isExportDeclaration()&&e.get("declaration").isDeclaration()||e.scope.getFunctionParent().registerDeclaration(e)},ReferencedIdentifier:function(e,t){t.references.push(e)},ForXStatement:function(e,t){var r=e.get("left");(r.isPattern()||r.isIdentifier())&&t.constantViolations.push(r)},ExportDeclaration:{exit:function(e){var t=e.node,r=e.scope,i=t.declaration;if(V.isClassDeclaration(i)||V.isFunctionDeclaration(i)){var n=i.id;if(!n)return;var s=r.getBinding(n.name);s&&s.reference(e)}else if(V.isVariableDeclaration(i))for(var a=i.declarations,o=Array.isArray(a),u=0,a=o?a:(0,A.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var p=l,c=V.getBindingIdentifiers(p);for(var f in c){var h=r.getBinding(f);h&&h.reference(e)}}}},LabeledStatement:function(e){e.scope.getProgramParent().addGlobal(e.node),e.scope.getBlockParent().registerDeclaration(e)},AssignmentExpression:function(e,t){t.assignments.push(e)},UpdateExpression:function(e,t){t.constantViolations.push(e.get("argument"))},UnaryExpression:function(e,t){"delete"===e.node.operator&&t.constantViolations.push(e.get("argument"))},BlockScoped:function(e){var t=e.scope;t.path===e&&(t=t.parent),t.getBlockParent().registerDeclaration(e)},ClassDeclaration:function(e){var t=e.node.id;if(t){var r=t.name;e.scope.bindings[r]=e.scope.getBinding(r)}},Block:function(e){for(var t=e.get("body"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,A.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;a.isFunctionDeclaration()&&e.scope.getBlockParent().registerDeclaration(a)}}},W=0,G=function(){function e(t,r){if((0,x.default)(this,e),r&&r.block===t.node)return r;var i=d(t,r,this);return i?i:(this.uid=W++,this.parent=r,this.hub=t.hub,this.parentBlock=t.parent,this.block=t.node,void(this.path=t))}return e.prototype.traverse=function(e,t,r){(0,D.default)(e,t,this,r,this.path)},e.prototype.generateDeclaredUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0],t=this.generateUidIdentifier(e);return this.push({id:t}),t},e.prototype.generateUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];return V.identifier(this.generateUid(e))},e.prototype.generateUid=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];e=V.toIdentifier(e).replace(/^_+/,"").replace(/[0-9]+$/g,"");var t=void 0,r=0;do t=this._generateUid(e,r),r++;while(this.hasBinding(t)||this.hasGlobal(t)||this.hasReference(t));var i=this.getProgramParent();return i.references[t]=!0,i.uids[t]=!0,t},e.prototype._generateUid=function(e,t){var r=e;return t>1&&(r+=t),"_"+r},e.prototype.generateUidIdentifierBasedOnNode=function(e,t){var r=e;V.isAssignmentExpression(e)?r=e.left:V.isVariableDeclarator(e)?r=e.id:(V.isObjectProperty(r)||V.isObjectMethod(r))&&(r=r.key);var i=[],n=function e(t){if(V.isModuleDeclaration(t))if(t.source)e(t.source);else if(t.specifiers&&t.specifiers.length)for(var r=t.specifiers,n=Array.isArray(r),s=0,r=n?r:(0,A.default)(r);;){var a;if(n){if(s>=r.length)break;a=r[s++]}else{if(s=r.next(),s.done)break;a=s.value}var o=a;e(o)}else t.declaration&&e(t.declaration);else if(V.isModuleSpecifier(t))e(t.local);else if(V.isMemberExpression(t))e(t.object),e(t.property);else if(V.isIdentifier(t))i.push(t.name);else if(V.isLiteral(t))i.push(t.value);else if(V.isCallExpression(t))e(t.callee);else if(V.isObjectExpression(t)||V.isObjectPattern(t))for(var u=t.properties,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e(f.key||f.argument)}};n(r);var s=i.join("$");return s=s.replace(/^_/,"")||t||"ref",this.generateUidIdentifier(s.slice(0,20))},e.prototype.isStatic=function(e){if(V.isThisExpression(e)||V.isSuper(e))return!0;if(V.isIdentifier(e)){var t=this.getBinding(e.name);return t?t.constant:this.hasBinding(e.name)}return!1},e.prototype.maybeGenerateMemoised=function(e,t){if(this.isStatic(e))return null;var r=this.generateUidIdentifierBasedOnNode(e);return t||this.push({id:r}),r},e.prototype.checkBlockScopedCollisions=function(e,t,r,i){if("param"!==t&&("hoisted"!==t||"let"!==e.kind)){var n=!1;if(n||(n="let"===t||"let"===e.kind||"const"===e.kind||"module"===e.kind),n||(n="param"===e.kind&&("let"===t||"const"===t)),n)throw this.hub.file.buildCodeFrameError(i,F.get("scopeDuplicateDeclaration",r),TypeError)}},e.prototype.rename=function(e,t,r){var i=this.getBinding(e);if(i)return t=t||this.generateUidIdentifier(e).name,new k.default(i,e,t).rename(r)},e.prototype._renameFromMap=function(e,t,r,i){e[t]&&(e[r]=i,e[t]=null)},e.prototype.dump=function(){var e=(0,P.default)("-",60);console.log(e);var t=this;do{console.log("#",t.block.type);for(var r in t.bindings){var i=t.bindings[r];console.log(" -",r,{constant:i.constant,references:i.references,violations:i.constantViolations.length,kind:i.kind})}}while(t=t.parent);console.log(e)},e.prototype.toArray=function(e,t){var r=this.hub.file;if(V.isIdentifier(e)){var i=this.getBinding(e.name);if(i&&i.constant&&i.path.isGenericType("Array"))return e}if(V.isArrayExpression(e))return e;if(V.isIdentifier(e,{name:"arguments"}))return V.callExpression(V.memberExpression(V.memberExpression(V.memberExpression(V.identifier("Array"),V.identifier("prototype")),V.identifier("slice")),V.identifier("call")),[e]);var n="toArray",s=[e];return t===!0?n="toConsumableArray":t&&(s.push(V.numericLiteral(t)),n="slicedToArray"),V.callExpression(r.addHelper(n),s)},e.prototype.registerDeclaration=function(e){if(e.isLabeledStatement())this.registerBinding("label",e);else if(e.isFunctionDeclaration())this.registerBinding("hoisted",e.get("id"),e);else if(e.isVariableDeclaration())for(var t=e.get("declarations"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,A.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;this.registerBinding(e.node.kind,a)}else if(e.isClassDeclaration())this.registerBinding("let",e);else if(e.isImportDeclaration())for(var o=e.get("specifiers"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("module",f)}else if(e.isExportDeclaration()){var h=e.get("declaration");(h.isClassDeclaration()||h.isFunctionDeclaration()||h.isVariableDeclaration())&&this.registerDeclaration(h)}else this.registerBinding("unknown",e)},e.prototype.buildUndefinedNode=function(){return this.hasBinding("undefined")?V.unaryExpression("void",V.numericLiteral(0),!0):V.identifier("undefined")},e.prototype.registerConstantViolation=function(e){var t=e.getBindingIdentifiers();for(var r in t){var i=this.getBinding(r);i&&i.reassign(e)}},e.prototype.registerBinding=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?t:arguments[2];if(!e)throw new ReferenceError("no `kind`");if(t.isVariableDeclaration())for(var i=t.get("declarations"),n=i,s=Array.isArray(n),a=0,n=s?n:(0,A.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;this.registerBinding(e,u)}else{var l=this.getProgramParent(),p=t.getBindingIdentifiers(!0);for(var c in p)for(var f=p[c],h=Array.isArray(f),d=0,f=h?f:(0,A.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y,m=this.getOwnBinding(c);if(m){if(m.identifier===v)continue;this.checkBlockScopedCollisions(m,e,c,v)}m&&m.path.isFlow()&&(m=null),l.references[c]=!0,this.bindings[c]=new R.default({identifier:v,existing:m,scope:this,path:r,kind:e})}}},e.prototype.addGlobal=function(e){this.globals[e.name]=e},e.prototype.hasUid=function(e){var t=this;do if(t.uids[e])return!0;while(t=t.parent);return!1},e.prototype.hasGlobal=function(e){var t=this;do if(t.globals[e])return!0;while(t=t.parent);return!1},e.prototype.hasReference=function(e){var t=this;do if(t.references[e])return!0;while(t=t.parent);return!1},e.prototype.isPure=function(e,t){if(V.isIdentifier(e)){var r=this.getBinding(e.name);return!!r&&(!t||r.constant)}if(V.isClass(e))return!(e.superClass&&!this.isPure(e.superClass,t))&&this.isPure(e.body,t);if(V.isClassBody(e)){for(var i=e.body,n=Array.isArray(i),s=0,i=n?i:(0,A.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(!this.isPure(o,t))return!1}return!0}if(V.isBinary(e))return this.isPure(e.left,t)&&this.isPure(e.right,t);if(V.isArrayExpression(e)){for(var u=e.elements,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if(!this.isPure(f,t))return!1}return!0}if(V.isObjectExpression(e)){for(var h=e.properties,d=Array.isArray(h),y=0,h=d?h:(0,A.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;if(!this.isPure(m,t))return!1}return!0}return V.isClassMethod(e)?!(e.computed&&!this.isPure(e.key,t))&&("get"!==e.kind&&"set"!==e.kind):V.isClassProperty(e)||V.isObjectProperty(e)?!(e.computed&&!this.isPure(e.key,t))&&this.isPure(e.value,t):V.isUnaryExpression(e)?this.isPure(e.argument,t):V.isPureish(e)},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e){var t=this;do{var r=t.data[e];if(null!=r)return r}while(t=t.parent)},e.prototype.removeData=function(e){var t=this;do{var r=t.data[e];null!=r&&(t.data[e]=null)}while(t=t.parent)},e.prototype.init=function(){this.references||this.crawl()},e.prototype.crawl=function(){Y++,this._crawl(),Y--},e.prototype._crawl=function(){var e=this.path;if(this.references=(0,g.default)(null),this.bindings=(0,g.default)(null),this.globals=(0,g.default)(null),this.uids=(0,g.default)(null),this.data=(0,g.default)(null),e.isLoop())for(var t=V.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,A.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isBlockScoped()&&this.registerBinding(a.node.kind,a)}if(e.isFunctionExpression()&&e.has("id")&&(e.get("id").node[V.NOT_LOCAL_BINDING]||this.registerBinding("local",e.get("id"),e)),e.isClassExpression()&&e.has("id")&&(e.get("id").node[V.NOT_LOCAL_BINDING]||this.registerBinding("local",e)),e.isFunction())for(var o=e.get("params"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("param",f)}e.isCatchClause()&&this.registerBinding("let",e);var h=this.getProgramParent();if(!h.crawling){var d={references:[],constantViolations:[],assignments:[]};this.crawling=!0,e.traverse(K,d),this.crawling=!1;for(var y=d.assignments,v=Array.isArray(y),m=0,y=v?y:(0,A.default)(y);;){var b;if(v){if(m>=y.length)break;b=y[m++]}else{if(m=y.next(),m.done)break;b=m.value}var x=b,E=x.getBindingIdentifiers(),S=void 0;for(var _ in E)x.scope.getBinding(_)||(S=S||x.scope.getProgramParent(),S.addGlobal(E[_]));x.scope.registerConstantViolation(x)}for(var T=d.references,P=Array.isArray(T),w=0,T=P?T:(0,A.default)(T);;){var k;if(P){if(w>=T.length)break;k=T[w++]}else{if(w=T.next(),w.done)break;k=w.value}var C=k,D=C.scope.getBinding(C.node.name);D?D.reference(C):C.scope.getProgramParent().addGlobal(C.node)}for(var O=d.constantViolations,N=Array.isArray(O),I=0,O=N?O:(0,A.default)(O);;){var F;if(N){if(I>=O.length)break;F=O[I++]}else{if(I=O.next(),I.done)break;F=I.value}var B=F;B.scope.registerConstantViolation(B)}}},e.prototype.push=function(e){var t=this.path;t.isBlockStatement()||t.isProgram()||(t=this.getBlockParent().path),t.isSwitchStatement()&&(t=this.getFunctionParent().path),(t.isLoop()||t.isCatchClause()||t.isFunction())&&(V.ensureBlock(t.node),t=t.get("body"));var r=e.unique,i=e.kind||"var",n=null==e._blockHoist?2:e._blockHoist,s="declaration:"+i+":"+n,a=!r&&t.getData(s);if(!a){var o=V.variableDeclaration(i,[]);o._generated=!0,o._blockHoist=n;var u=t.unshiftContainer("body",[o]);a=u[0],r||t.setData(s,a)}var l=V.variableDeclarator(e.id,e.init);a.node.declarations.push(l),this.registerBinding(i,a.get("declarations").pop())},e.prototype.getProgramParent=function(){var e=this;do if(e.path.isProgram())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getFunctionParent=function(){var e=this;do if(e.path.isFunctionParent())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getBlockParent=function(){var e=this;do if(e.path.isBlockParent())return e;while(e=e.parent);throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...")},e.prototype.getAllBindings=function(){var e=(0,g.default)(null),t=this;do(0,N.default)(e,t.bindings),t=t.parent;while(t);return e},e.prototype.getAllBindingsOfKind=function(){for(var e=(0,g.default)(null),t=arguments,r=Array.isArray(t),i=0,t=r?t:(0,A.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=this;do{for(var o in a.bindings){var u=a.bindings[o];u.kind===s&&(e[o]=u)}a=a.parent}while(a)}return e},e.prototype.bindingIdentifierEquals=function(e,t){return this.getBindingIdentifier(e)===t},e.prototype.warnOnFlowBinding=function(e){return 0===Y&&e&&e.path.isFlow()&&console.warn("\n You or one of the Babel plugins you are using are using Flow declarations as bindings.\n Support for this will be removed in version 6.8. To find out the caller, grep for this\n message and change it to a `console.trace()`.\n "),e},e.prototype.getBinding=function(e){var t=this;do{var r=t.getOwnBinding(e);if(r)return this.warnOnFlowBinding(r)}while(t=t.parent)},e.prototype.getOwnBinding=function(e){return this.warnOnFlowBinding(this.bindings[e])},e.prototype.getBindingIdentifier=function(e){var t=this.getBinding(e);return t&&t.identifier},e.prototype.getOwnBindingIdentifier=function(e){var t=this.bindings[e];return t&&t.identifier},e.prototype.hasOwnBinding=function(e){return!!this.getOwnBinding(e)},e.prototype.hasBinding=function(t,r){return!!t&&(!!this.hasOwnBinding(t)||(!!this.parentHasBinding(t,r)||(!!this.hasUid(t)||(!(r||!(0,_.default)(e.globals,t))||!(r||!(0,_.default)(e.contextVariables,t))))))},e.prototype.parentHasBinding=function(e,t){return this.parent&&this.parent.hasBinding(e,t)},e.prototype.moveBindingTo=function(e,t){var r=this.getBinding(e);r&&(r.scope.removeOwnBinding(e),r.scope=t,t.bindings[e]=r)},e.prototype.removeOwnBinding=function(e){delete this.bindings[e]},e.prototype.removeBinding=function(e){var t=this.getBinding(e);t&&t.scope.removeOwnBinding(e);var r=this;do r.uids[e]&&(r.uids[e]=!1);while(r=r.parent)},e}();G.globals=(0,v.default)(M.default.builtin),G.contextVariables=["arguments","undefined","Infinity","NaN"],t.default=G,e.exports=t.default},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var u=r(i),l=o(u),p=r(n),c=(o(p),r(s)),f=a(c),h={ReferencedIdentifier:function(e,t){var r=e.node;r.name===t.oldName&&(r.name=t.newName)},Scope:function(e,t){e.scope.bindingIdentifierEquals(t.oldName,t.binding.identifier)||e.skip()},"AssignmentExpression|Declaration":function(e,t){var r=e.getOuterBindingIdentifiers();for(var i in r)i===t.oldName&&(r[i].name=t.newName)}},d=function(){function e(t,r,i){(0,l.default)(this,e),this.newName=i,this.oldName=r,this.binding=t}return e.prototype.maybeConvertFromExportDeclaration=function(e){var t=e.parentPath.isExportDeclaration()&&e.parentPath;if(t){var r=t.isExportDefaultDeclaration();r&&(e.isFunctionDeclaration()||e.isClassDeclaration())&&!e.node.id&&(e.node.id=e.scope.generateUidIdentifier("default"));var i=e.getOuterBindingIdentifiers(),n=[];for(var s in i){var a=s===this.oldName?this.newName:s,o=r?"default":s;n.push(f.exportSpecifier(f.identifier(a),f.identifier(o)))}var u=f.exportNamedDeclaration(null,n);e.isFunctionDeclaration()&&(u._blockHoist=3),t.insertAfter(u),t.replaceWith(e.node)}},e.prototype.maybeConvertFromClassFunctionDeclaration=function(e){},e.prototype.maybeConvertFromClassFunctionExpression=function(e){},e.prototype.rename=function(e){var t=this.binding,r=this.oldName,i=this.newName,n=t.scope,s=t.path,a=s.find(function(e){return e.isDeclaration()||e.isFunctionExpression()});a&&this.maybeConvertFromExportDeclaration(a),n.traverse(e||n.block,h,this),e||(n.removeOwnBinding(r),n.bindings[i]=t,this.binding.identifier.name=i),"hoisted"===t.type,a&&(this.maybeConvertFromClassFunctionDeclaration(a),this.maybeConvertFromClassFunctionExpression(a))},e}();t.default=d,e.exports=t.default},function(e,t,r,i,n,s,a,o){"use strict";function u(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function l(e){return e&&e.__esModule?e:{default:e}}function p(e){if(e._exploded)return e;e._exploded=!0;for(var t in e)if(!g(t)){var r=t.split("|");if(1!==r.length){var i=e[t];delete e[t];for(var n=r,s=Array.isArray(n),a=0,n=s?n:(0,T.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;e[u]=i}}}c(e),delete e.__esModule,y(e),v(e);for(var l=(0,S.default)(e),p=Array.isArray(l),f=0,l=p?l:(0,T.default)(l);;){var h;if(p){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var d=h;if(!g(d)){var x=w[d];if(x){var E=e[d];for(var A in E)E[A]=m(x,E[A]);if(delete e[d],x.types)for(var _=x.types,P=Array.isArray(_),k=0,_=P?_:(0,T.default)(_);;){var C;if(P){if(k>=_.length)break;C=_[k++]}else{if(k=_.next(),k.done)break;C=k.value}var D=C;e[D]?b(e[D],E):e[D]=E}else b(e,E)}}}for(var N in e)if(!g(N)){var F=e[N],B=O.FLIPPED_ALIAS_KEYS[N],R=O.DEPRECATED_KEYS[N];if(R&&(console.trace("Visitor defined for "+N+" but it has been renamed to "+R),B=[R]),B){delete e[N];for(var L=B,M=Array.isArray(L),j=0,L=M?L:(0,T.default)(L);;){var V;if(M){if(j>=L.length)break;V=L[j++]}else{if(j=L.next(),j.done)break;V=j.value}var U=V,Y=e[U];Y?b(Y,F):e[U]=(0,I.default)(F)}}}for(var K in e)g(K)||v(e[K]);return e}function c(e){if(!e._verified){if("function"==typeof e)throw new Error(C.get("traverseVerifyRootFunction"));for(var t in e)if("enter"!==t&&"exit"!==t||f(t,e[t]),!g(t)){if(O.TYPES.indexOf(t)<0)throw new Error(C.get("traverseVerifyNodeType",t));var r=e[t];if("object"===("undefined"==typeof r?"undefined":(0,E.default)(r)))for(var i in r){if("enter"!==i&&"exit"!==i)throw new Error(C.get("traverseVerifyVisitorProperty",t,i));f(t+"."+i,r[i])}}e._verified=!0}}function f(e,t){for(var r=[].concat(t),i=r,n=Array.isArray(i),s=0,i=n?i:(0,T.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if("function"!=typeof o)throw new TypeError("Non-function found defined in "+e+" with type "+("undefined"==typeof o?"undefined":(0,E.default)(o)))}}function h(e){for(var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],r=arguments[2],i={},n=0;n<e.length;n++){var s=e[n],a=t[n];p(s);for(var o in s){var u=s[o];(a||r)&&(u=d(u,a,r));var l=i[o]=i[o]||{};b(l,u)}}return i}function d(e,t,r){var i={},n=function(n){var s=e[n];return Array.isArray(s)?(s=s.map(function(e){var i=e;return t&&(i=function(r){return e.call(t,r,t)}),r&&(i=r(t.key,n,i)),i}),void(i[n]=s)):"continue"};for(var s in e){n(s)}return i}function y(e){for(var t in e)if(!g(t)){var r=e[t];"function"==typeof r&&(e[t]={enter:r})}}function v(e){e.enter&&!Array.isArray(e.enter)&&(e.enter=[e.enter]),e.exit&&!Array.isArray(e.exit)&&(e.exit=[e.exit])}function m(e,t){var r=function(r){if(e.checkPath(r))return t.apply(this,arguments)};return r.toString=function(){return t.toString()},r}function g(e){return"_"===e[0]||("enter"===e||"exit"===e||"shouldSkip"===e||("blacklist"===e||"noScope"===e||"skipKeys"===e))}function b(e,t){for(var r in t)e[r]=[].concat(e[r]||[],t[r])}t.__esModule=!0;var x=r(i),E=l(x),A=r(n),S=l(A),_=r(s),T=l(_);t.explode=p,t.verify=c,t.merge=h;var P=r(a),w=u(P),k=r(20),C=u(k),D=r(o),O=u(D),N=r(52),I=l(N)},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.NOT_LOCAL_BINDING=t.BLOCK_SCOPED_SYMBOL=t.INHERIT_KEYS=t.UNARY_OPERATORS=t.STRING_UNARY_OPERATORS=t.NUMBER_UNARY_OPERATORS=t.BOOLEAN_UNARY_OPERATORS=t.BINARY_OPERATORS=t.NUMBER_BINARY_OPERATORS=t.BOOLEAN_BINARY_OPERATORS=t.COMPARISON_BINARY_OPERATORS=t.EQUALITY_BINARY_OPERATORS=t.BOOLEAN_NUMBER_BINARY_OPERATORS=t.UPDATE_OPERATORS=t.LOGICAL_OPERATORS=t.COMMENT_KEYS=t.FOR_INIT_KEYS=t.FLATTENABLE_KEYS=t.STATEMENT_OR_BLOCK_KEYS=void 0;var s=r(i),a=n(s),o=(t.STATEMENT_OR_BLOCK_KEYS=["consequent","body","alternate"],t.FLATTENABLE_KEYS=["body","expressions"],t.FOR_INIT_KEYS=["left","init"],t.COMMENT_KEYS=["leadingComments","trailingComments","innerComments"],t.LOGICAL_OPERATORS=["||","&&"],t.UPDATE_OPERATORS=["++","--"],t.BOOLEAN_NUMBER_BINARY_OPERATORS=[">","<",">=","<="]),u=t.EQUALITY_BINARY_OPERATORS=["==","===","!=","!=="],l=t.COMPARISON_BINARY_OPERATORS=[].concat(u,["in","instanceof"]),p=t.BOOLEAN_BINARY_OPERATORS=[].concat(l,o),c=t.NUMBER_BINARY_OPERATORS=["-","/","%","*","**","&","|",">>",">>>","<<","^"],f=(t.BINARY_OPERATORS=["+"].concat(c,p),t.BOOLEAN_UNARY_OPERATORS=["delete","!"]),h=t.NUMBER_UNARY_OPERATORS=["+","-","++","--","~"],d=t.STRING_UNARY_OPERATORS=["typeof"];t.UNARY_OPERATORS=["void"].concat(f,h,d),t.INHERIT_KEYS={optional:["typeAnnotation","typeParameters","returnType"],force:["start","loc","end"]},t.BLOCK_SCOPED_SYMBOL=(0,a.default)("var used to be block scoped"),t.NOT_LOCAL_BINDING=(0,a.default)("should not be considered a local binding")},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}function l(e){var t=arguments.length<=1||void 0===arguments[1]?e.key||e.property:arguments[1];return e.computed||I.isIdentifier(t)&&(t=I.stringLiteral(t.name)),t}function p(e,t){function r(e){for(var s=!1,a=[],o=e,u=Array.isArray(o),l=0,o=u?o:(0,S.default)(o);;){var p;if(u){if(l>=o.length)break;p=o[l++]}else{if(l=o.next(),l.done)break;p=l.value}var c=p;if(I.isExpression(c))a.push(c);else if(I.isExpressionStatement(c))a.push(c.expression);else{if(I.isVariableDeclaration(c)){if("var"!==c.kind)return n=!0;for(var f=c.declarations,h=Array.isArray(f),d=0,f=h?f:(0,S.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y,m=I.getBindingIdentifiers(v);for(var g in m)i.push({kind:c.kind,id:m[g]});v.init&&a.push(I.assignmentExpression("=",v.id,v.init))}s=!0;continue}if(I.isIfStatement(c)){var b=c.consequent?r([c.consequent]):t.buildUndefinedNode(),x=c.alternate?r([c.alternate]):t.buildUndefinedNode();if(!b||!x)return n=!0;a.push(I.conditionalExpression(c.test,b,x))}else{if(!I.isBlockStatement(c)){if(I.isEmptyStatement(c)){s=!0;continue}return n=!0}a.push(r(c.body))}}s=!1}return(s||0===a.length)&&a.push(t.buildUndefinedNode()),1===a.length?a[0]:I.sequenceExpression(a)}if(e&&e.length){var i=[],n=!1,s=r(e);if(!n){for(var a=0;a<i.length;a++)t.push(i[a]);return s}}}function c(e){var t=arguments.length<=1||void 0===arguments[1]?e.key:arguments[1],r=void 0;return"method"===e.kind?c.increment()+"":(r=I.isIdentifier(t)?t.name:I.isStringLiteral(t)?(0,E.default)(t.value):(0,E.default)(I.removePropertiesDeep(I.cloneDeep(t))),e.computed&&(r="["+r+"]"),e.static&&(r="static:"+r),r)}function f(e){return e+="",e=e.replace(/[^a-zA-Z0-9$_]/g,"-"),e=e.replace(/^[-0-9]+/,""),e=e.replace(/[-\s]+(.)?/g,function(e,t){return t?t.toUpperCase():""}),I.isValidIdentifier(e)||(e="_"+e),e||"_"}function h(e){return e=f(e),"eval"!==e&&"arguments"!==e||(e="_"+e),e}function d(e,t){if(I.isStatement(e))return e;var r=!1,i=void 0;if(I.isClass(e))r=!0,i="ClassDeclaration";else if(I.isFunction(e))r=!0,i="FunctionDeclaration";else if(I.isAssignmentExpression(e))return I.expressionStatement(e);if(r&&!e.id&&(i=!1),!i){if(t)return!1;throw new Error("cannot turn "+e.type+" to a statement")}return e.type=i,e}function y(e){if(I.isExpressionStatement(e)&&(e=e.expression),I.isExpression(e))return e;if(I.isClass(e)?e.type="ClassExpression":I.isFunction(e)&&(e.type="FunctionExpression"),!I.isExpression(e))throw new Error("cannot turn "+e.type+" to an expression");return e}function v(e,t){return I.isBlockStatement(e)?e:(I.isEmptyStatement(e)&&(e=[]),Array.isArray(e)||(I.isStatement(e)||(e=I.isFunction(t)?I.returnStatement(e):I.expressionStatement(e)),e=[e]),I.blockStatement(e))}function m(e){if(void 0===e)return I.identifier("undefined");if(e===!0||e===!1)return I.booleanLiteral(e);if(null===e)return I.nullLiteral();if((0,O.default)(e))return I.stringLiteral(e);if((0,w.default)(e))return I.numericLiteral(e);if((0,C.default)(e)){var t=e.source,r=e.toString().match(/\/([a-z]+|)$/)[1];return I.regExpLiteral(t,r)}if(Array.isArray(e))return I.arrayExpression(e.map(I.valueToNode));if((0,T.default)(e)){var i=[];for(var n in e){var s=void 0;s=I.isValidIdentifier(n)?I.identifier(n):I.stringLiteral(n),i.push(I.objectProperty(s,I.valueToNode(e[n])))}return I.objectExpression(i)}throw new Error("don't know how to turn this value into a node")}t.__esModule=!0;var g=r(i),b=u(g),x=r(n),E=u(x),A=r(s),S=u(A);t.toComputedKey=l,t.toSequenceExpression=p,t.toKeyAlias=c,t.toIdentifier=f,t.toBindingIdentifierName=h,t.toStatement=d,t.toExpression=y,t.toBlock=v,t.valueToNode=m;var _=r(254),T=u(_),P=r(253),w=u(P),k=r(255),C=u(k),D=r(82),O=u(D),N=r(a),I=o(N);c.uid=0,c.increment=function(){return c.uid>=b.default?c.uid=0:c.uid++}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}var u=r(i),l=o(u),p=r(n),c=r(s),f=a(c);(0,f.default)("ArrayExpression",{fields:{elements:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeOrValueType)("null","Expression","SpreadElement"))),default:[]}},visitor:["elements"],aliases:["Expression"]}),(0,f.default)("AssignmentExpression",{fields:{operator:{validate:(0,c.assertValueType)("string")},left:{validate:(0,c.assertNodeType)("LVal")},right:{validate:(0,c.assertNodeType)("Expression")}},builder:["operator","left","right"],visitor:["left","right"],aliases:["Expression"]}),(0,f.default)("BinaryExpression",{builder:["operator","left","right"],fields:{operator:{validate:c.assertOneOf.apply(void 0,p.BINARY_OPERATORS)},left:{validate:(0,c.assertNodeType)("Expression")},right:{validate:(0,c.assertNodeType)("Expression")}},visitor:["left","right"],aliases:["Binary","Expression"]}),(0,f.default)("Directive",{visitor:["value"],fields:{value:{validate:(0,c.assertNodeType)("DirectiveLiteral")}}}),(0,f.default)("DirectiveLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("string")}}}),(0,f.default)("BlockStatement",{builder:["body","directives"],visitor:["directives","body"],fields:{directives:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Directive"))),default:[]},body:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","Statement"]}),(0,f.default)("BreakStatement",{visitor:["label"],fields:{label:{validate:(0,c.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,f.default)("CallExpression",{visitor:["callee","arguments"],fields:{callee:{validate:(0,c.assertNodeType)("Expression")},arguments:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression","SpreadElement")))}},aliases:["Expression"]}),(0,f.default)("CatchClause",{visitor:["param","body"],fields:{param:{validate:(0,c.assertNodeType)("Identifier")},body:{validate:(0,c.assertNodeType)("BlockStatement")}},aliases:["Scopable"]}),(0,f.default)("ConditionalExpression",{visitor:["test","consequent","alternate"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},consequent:{validate:(0,c.assertNodeType)("Expression")},alternate:{validate:(0,c.assertNodeType)("Expression")}},aliases:["Expression","Conditional"]}),(0,f.default)("ContinueStatement",{visitor:["label"],fields:{label:{validate:(0,c.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,f.default)("DebuggerStatement",{aliases:["Statement"]}),(0,f.default)("DoWhileStatement",{visitor:["test","body"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("Statement")}},aliases:["Statement","BlockParent","Loop","While","Scopable"]}),(0,f.default)("EmptyStatement",{aliases:["Statement"]}),(0,f.default)("ExpressionStatement",{visitor:["expression"],fields:{expression:{validate:(0,c.assertNodeType)("Expression")}},aliases:["Statement","ExpressionWrapper"]}),(0,f.default)("File",{builder:["program","comments","tokens"],visitor:["program"],fields:{program:{validate:(0,c.assertNodeType)("Program")}}}),(0,f.default)("ForInStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,c.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("ForStatement",{visitor:["init","test","update","body"],aliases:["Scopable","Statement","For","BlockParent","Loop"],fields:{init:{validate:(0,c.assertNodeType)("VariableDeclaration","Expression"),optional:!0},test:{validate:(0,c.assertNodeType)("Expression"),optional:!0},update:{validate:(0,c.assertNodeType)("Expression"),optional:!0},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("FunctionDeclaration",{builder:["id","params","body","generator","async"],visitor:["id","params","body","returnType","typeParameters"],
+fields:{id:{validate:(0,c.assertNodeType)("Identifier")},params:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("LVal")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}},aliases:["Scopable","Function","BlockParent","FunctionParent","Statement","Pureish","Declaration"]}),(0,f.default)("FunctionExpression",{inherits:"FunctionDeclaration",aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{id:{validate:(0,c.assertNodeType)("Identifier"),optional:!0},params:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("LVal")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}}}),(0,f.default)("Identifier",{builder:["name"],visitor:["typeAnnotation"],aliases:["Expression","LVal"],fields:{name:{validate:function(e,t,r){!l.isValidIdentifier(r)}},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator")))}}}),(0,f.default)("IfStatement",{visitor:["test","consequent","alternate"],aliases:["Statement","Conditional"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},consequent:{validate:(0,c.assertNodeType)("Statement")},alternate:{optional:!0,validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("LabeledStatement",{visitor:["label","body"],aliases:["Statement"],fields:{label:{validate:(0,c.assertNodeType)("Identifier")},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("StringLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("string")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("NumericLiteral",{builder:["value"],deprecatedAlias:"NumberLiteral",fields:{value:{validate:(0,c.assertValueType)("number")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("NullLiteral",{aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("BooleanLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("boolean")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("RegExpLiteral",{builder:["pattern","flags"],deprecatedAlias:"RegexLiteral",aliases:["Expression","Literal"],fields:{pattern:{validate:(0,c.assertValueType)("string")},flags:{validate:(0,c.assertValueType)("string"),default:""}}}),(0,f.default)("LogicalExpression",{builder:["operator","left","right"],visitor:["left","right"],aliases:["Binary","Expression"],fields:{operator:{validate:c.assertOneOf.apply(void 0,p.LOGICAL_OPERATORS)},left:{validate:(0,c.assertNodeType)("Expression")},right:{validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("MemberExpression",{builder:["object","property","computed"],visitor:["object","property"],aliases:["Expression","LVal"],fields:{object:{validate:(0,c.assertNodeType)("Expression")},property:{validate:function(e,t,r){var i=e.computed?"Expression":"Identifier";(0,c.assertNodeType)(i)(e,t,r)}},computed:{default:!1}}}),(0,f.default)("NewExpression",{visitor:["callee","arguments"],aliases:["Expression"],fields:{callee:{validate:(0,c.assertNodeType)("Expression")},arguments:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression","SpreadElement")))}}}),(0,f.default)("Program",{visitor:["directives","body"],builder:["body","directives"],fields:{directives:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Directive"))),default:[]},body:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","FunctionParent"]}),(0,f.default)("ObjectExpression",{visitor:["properties"],aliases:["Expression"],fields:{properties:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("ObjectMethod","ObjectProperty","SpreadProperty")))}}}),(0,f.default)("ObjectMethod",{builder:["kind","key","params","body","computed"],fields:{kind:{validate:(0,c.chain)((0,c.assertValueType)("string"),(0,c.assertOneOf)("method","get","set")),default:"method"},computed:{validate:(0,c.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];c.assertNodeType.apply(void 0,i)(e,t,r)}},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}},visitor:["key","params","body","decorators","returnType","typeParameters"],aliases:["UserWhitespacable","Function","Scopable","BlockParent","FunctionParent","Method","ObjectMember"]}),(0,f.default)("ObjectProperty",{builder:["key","value","computed","shorthand","decorators"],fields:{computed:{validate:(0,c.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];c.assertNodeType.apply(void 0,i)(e,t,r)}},value:{validate:(0,c.assertNodeType)("Expression")},shorthand:{validate:(0,c.assertValueType)("boolean"),default:!1},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator"))),optional:!0}},visitor:["key","value","decorators"],aliases:["UserWhitespacable","Property","ObjectMember"]}),(0,f.default)("RestElement",{visitor:["argument","typeAnnotation"],aliases:["LVal"],fields:{argument:{validate:(0,c.assertNodeType)("LVal")},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator")))}}}),(0,f.default)("ReturnStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,c.assertNodeType)("Expression"),optional:!0}}}),(0,f.default)("SequenceExpression",{visitor:["expressions"],fields:{expressions:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression")))}},aliases:["Expression"]}),(0,f.default)("SwitchCase",{visitor:["test","consequent"],fields:{test:{validate:(0,c.assertNodeType)("Expression"),optional:!0},consequent:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}}}),(0,f.default)("SwitchStatement",{visitor:["discriminant","cases"],aliases:["Statement","BlockParent","Scopable"],fields:{discriminant:{validate:(0,c.assertNodeType)("Expression")},cases:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("SwitchCase")))}}}),(0,f.default)("ThisExpression",{aliases:["Expression"]}),(0,f.default)("ThrowStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("TryStatement",{visitor:["block","handler","finalizer"],aliases:["Statement"],fields:{body:{validate:(0,c.assertNodeType)("BlockStatement")},handler:{optional:!0,handler:(0,c.assertNodeType)("BlockStatement")},finalizer:{optional:!0,validate:(0,c.assertNodeType)("BlockStatement")}}}),(0,f.default)("UnaryExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!0},argument:{validate:(0,c.assertNodeType)("Expression")},operator:{validate:c.assertOneOf.apply(void 0,p.UNARY_OPERATORS)}},visitor:["argument"],aliases:["UnaryLike","Expression"]}),(0,f.default)("UpdateExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!1},argument:{validate:(0,c.assertNodeType)("Expression")},operator:{validate:c.assertOneOf.apply(void 0,p.UPDATE_OPERATORS)}},visitor:["argument"],aliases:["Expression"]}),(0,f.default)("VariableDeclaration",{builder:["kind","declarations"],visitor:["declarations"],aliases:["Statement","Declaration"],fields:{kind:{validate:(0,c.chain)((0,c.assertValueType)("string"),(0,c.assertOneOf)("var","let","const"))},declarations:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("VariableDeclarator")))}}}),(0,f.default)("VariableDeclarator",{visitor:["id","init"],fields:{id:{validate:(0,c.assertNodeType)("LVal")},init:{optional:!0,validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("WhileStatement",{visitor:["test","body"],aliases:["Statement","BlockParent","Loop","While","Scopable"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("BlockStatement","Statement")}}}),(0,f.default)("WithStatement",{visitor:["object","body"],aliases:["Statement"],fields:{object:{object:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("BlockStatement","Statement")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AssignmentPattern",{visitor:["left","right"],aliases:["Pattern","LVal"],fields:{left:{validate:(0,s.assertNodeType)("Identifier")},right:{validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrayPattern",{visitor:["elements","typeAnnotation"],aliases:["Pattern","LVal"],fields:{elements:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression")))},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrowFunctionExpression",{builder:["params","body","async"],visitor:["params","body","returnType"],aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement","Expression")},async:{validate:(0,s.assertValueType)("boolean"),default:!1}}}),(0,a.default)("ClassBody",{visitor:["body"],fields:{body:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ClassMethod","ClassProperty")))}}}),(0,a.default)("ClassDeclaration",{builder:["id","superClass","body","decorators"],visitor:["id","body","superClass","mixins","typeParameters","superTypeParameters","implements","decorators"],aliases:["Scopable","Class","Statement","Declaration","Pureish"],fields:{id:{validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ClassExpression",{inherits:"ClassDeclaration",aliases:["Scopable","Class","Expression","Pureish"],fields:{id:{optional:!0,validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ExportAllDeclaration",{visitor:["source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{source:{validate:(0,s.assertNodeType)("StringLiteral")}}}),(0,a.default)("ExportDefaultDeclaration",{visitor:["declaration"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,s.assertNodeType)("FunctionDeclaration","ClassDeclaration","Expression")}}}),(0,a.default)("ExportNamedDeclaration",{visitor:["declaration","specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,s.assertNodeType)("Declaration"),optional:!0},specifiers:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ExportSpecifier")))},source:{validate:(0,s.assertNodeType)("StringLiteral"),optional:!0}}}),(0,a.default)("ExportSpecifier",{visitor:["local","exported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")},exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ForOfStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,s.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,s.assertNodeType)("Expression")},body:{validate:(0,s.assertNodeType)("Statement")}}}),(0,a.default)("ImportDeclaration",{visitor:["specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration"],fields:{specifiers:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier")))},source:{validate:(0,s.assertNodeType)("StringLiteral")}}}),(0,a.default)("ImportDefaultSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ImportNamespaceSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ImportSpecifier",{visitor:["local","imported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")},imported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("MetaProperty",{visitor:["meta","property"],aliases:["Expression"],fields:{meta:{validate:(0,s.assertValueType)("string")},property:{validate:(0,s.assertValueType)("string")}}}),(0,a.default)("ClassMethod",{aliases:["Function","Scopable","BlockParent","FunctionParent","Method"],builder:["kind","key","params","body","computed","static"],visitor:["key","params","body","decorators","returnType","typeParameters"],fields:{kind:{validate:(0,s.chain)((0,s.assertValueType)("string"),(0,s.assertOneOf)("get","set","method","constructor")),default:"method"},computed:{default:!1,validate:(0,s.assertValueType)("boolean")},static:{default:!1,validate:(0,s.assertValueType)("boolean")},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];s.assertNodeType.apply(void 0,i)(e,t,r)}},params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,s.assertValueType)("boolean")},async:{default:!1,validate:(0,s.assertValueType)("boolean")}}}),(0,a.default)("ObjectPattern",{visitor:["properties","typeAnnotation"],aliases:["Pattern","LVal"],fields:{properties:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("RestProperty","Property")))},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("SpreadElement",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("Super",{aliases:["Expression"]}),(0,a.default)("TaggedTemplateExpression",{visitor:["tag","quasi"],aliases:["Expression"],fields:{tag:{validate:(0,s.assertNodeType)("Expression")},quasi:{validate:(0,s.assertNodeType)("TemplateLiteral")}}}),(0,a.default)("TemplateElement",{builder:["value","tail"],fields:{value:{},tail:{validate:(0,s.assertValueType)("boolean"),default:!1}}}),(0,a.default)("TemplateLiteral",{visitor:["quasis","expressions"],aliases:["Expression","Literal"],fields:{quasis:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("TemplateElement")))},expressions:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression")))}}}),(0,a.default)("YieldExpression",{builder:["argument","delegate"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{delegate:{validate:(0,s.assertValueType)("boolean"),default:!1},argument:{optional:!0,validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AwaitExpression",{builder:["argument"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("BindExpression",{visitor:["object","callee"],aliases:["Expression"],fields:{}}),(0,a.default)("Decorator",{visitor:["expression"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("DoExpression",{visitor:["body"],aliases:["Expression"],fields:{body:{validate:(0,s.assertNodeType)("BlockStatement")}}}),(0,a.default)("ExportDefaultSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ExportNamespaceSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("RestProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("LVal")}}}),(0,a.default)("SpreadProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AnyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ArrayTypeAnnotation",{visitor:["elementType"],aliases:["Flow"],fields:{}}),(0,a.default)("BooleanTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("BooleanLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NullLiteralTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ClassImplements",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("ClassProperty",{visitor:["key","value","typeAnnotation","decorators"],aliases:["Flow","Property"],fields:{}}),(0,a.default)("DeclareClass",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareFunction",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareInterface",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModule",{visitor:["id","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModuleExports",{visitor:["typeAnnotation"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareTypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareVariable",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("ExistentialTypeParam",{aliases:["Flow"]}),(0,a.default)("FunctionTypeAnnotation",{visitor:["typeParameters","params","rest","returnType"],aliases:["Flow"],fields:{}}),(0,a.default)("FunctionTypeParam",{visitor:["name","typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("GenericTypeAnnotation",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceExtends",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceDeclaration",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("IntersectionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("MixedTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,a.default)("NullableTypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("NumericLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NumberTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("StringLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("StringTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ThisTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("TupleTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeofTypeAnnotation",{visitor:["argument"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("TypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeCastExpression",{visitor:["expression","typeAnnotation"],aliases:["Flow","ExpressionWrapper","Expression"],fields:{}}),(0,a.default)("TypeParameter",{visitor:["bound"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterDeclaration",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterInstantiation",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeAnnotation",{visitor:["properties","indexers","callProperties"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeCallProperty",{visitor:["value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeIndexer",{visitor:["id","key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeProperty",{visitor:["key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("QualifiedTypeIdentifier",{visitor:["id","qualification"],aliases:["Flow"],fields:{}}),(0,a.default)("UnionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("VoidTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}})},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}function l(e){return Array.isArray(e)?"array":null===e?"null":void 0===e?"undefined":"undefined"==typeof e?"undefined":(0,A.default)(e)}function p(e){function t(t,r,i){if(Array.isArray(i))for(var n=0;n<i.length;n++)e(t,r+"["+n+"]",i[n])}return t.each=e,t}function c(){function e(e,t,i){if(r.indexOf(i)<0)throw new TypeError("Property "+t+" expected value to be one of "+(0,x.default)(r)+" but got "+(0,x.default)(i))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOf=r,e}function f(){function e(e,t,i){for(var n=!1,s=r,a=Array.isArray(s),o=0,s=a?s:(0,g.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(_.is(l,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,x.default)(r)+" but instead got "+(0,x.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeTypes=r,e}function h(){function e(e,t,i){for(var n=!1,s=r,a=Array.isArray(s),o=0,s=a?s:(0,g.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var p=u;if(l(i)===p||_.is(p,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,x.default)(r)+" but instead got "+(0,x.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeOrValueTypes=r,e}function d(e){function t(t,r,i){var n=l(i)===e;if(!n)throw new TypeError("Property "+r+" expected type of "+e+" but got "+l(i))}return t.type=e,t}function y(){function e(){for(var e=r,t=Array.isArray(e),i=0,e=t?e:(0,g.default)(e);;){var n;if(t){if(i>=e.length)break;n=e[i++]}else{if(i=e.next(),i.done)break;n=i.value}var s=n;s.apply(void 0,arguments)}}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.chainOf=r,e}function v(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=t.inherits&&D[t.inherits]||{};t.fields=t.fields||r.fields||{},t.visitor=t.visitor||r.visitor||[],t.aliases=t.aliases||r.aliases||[],t.builder=t.builder||r.builder||t.visitor||[],t.deprecatedAlias&&(C[t.deprecatedAlias]=e);for(var i=t.visitor.concat(t.builder),n=Array.isArray(i),s=0,i=n?i:(0,g.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;t.fields[o]=t.fields[o]||{}}for(var u in t.fields){var p=t.fields[u];t.builder.indexOf(u)===-1&&(p.optional=!0),void 0===p.default?p.default=null:p.validate||(p.validate=d(l(p.default)))}T[e]=t.visitor,k[e]=t.builder,w[e]=t.fields,P[e]=t.aliases,D[e]=t}t.__esModule=!0,t.DEPRECATED_KEYS=t.BUILDER_KEYS=t.NODE_FIELDS=t.ALIAS_KEYS=t.VISITOR_KEYS=void 0;var m=r(i),g=u(m),b=r(n),x=u(b),E=r(s),A=u(E);t.assertEach=p,t.assertOneOf=c,t.assertNodeType=f,t.assertNodeOrValueType=h,t.assertValueType=d,t.chain=y,t.default=v;var S=r(a),_=o(S),T=t.VISITOR_KEYS={},P=t.ALIAS_KEYS={},w=t.NODE_FIELDS={},k=t.BUILDER_KEYS={},C=t.DEPRECATED_KEYS={},D={}},function(e,t,r,i,n,s,a,o,u,l){"use strict";r(i),r(n),r(s),r(a),r(o),r(u),r(l)},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("JSXAttribute",{visitor:["name","value"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,s.assertNodeType)("JSXIdentifier","JSXNamespacedName")},value:{optional:!0,validate:(0,s.assertNodeType)("JSXElement","StringLiteral","JSXExpressionContainer")}}}),(0,a.default)("JSXClosingElement",{visitor:["name"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,s.assertNodeType)("JSXIdentifier","JSXMemberExpression")}}}),(0,a.default)("JSXElement",{builder:["openingElement","closingElement","children","selfClosing"],visitor:["openingElement","children","closingElement"],aliases:["JSX","Immutable","Expression"],fields:{openingElement:{validate:(0,s.assertNodeType)("JSXOpeningElement")},closingElement:{optional:!0,validate:(0,s.assertNodeType)("JSXClosingElement")},children:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("JSXText","JSXExpressionContainer","JSXElement")))}}}),(0,a.default)("JSXEmptyExpression",{aliases:["JSX","Expression"]}),(0,a.default)("JSXExpressionContainer",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("JSXIdentifier",{builder:["name"],aliases:["JSX","Expression"],fields:{name:{validate:(0,s.assertValueType)("string")}}}),(0,a.default)("JSXMemberExpression",{visitor:["object","property"],aliases:["JSX","Expression"],fields:{object:{validate:(0,s.assertNodeType)("JSXMemberExpression","JSXIdentifier")},property:{validate:(0,s.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXNamespacedName",{visitor:["namespace","name"],aliases:["JSX"],fields:{namespace:{validate:(0,s.assertNodeType)("JSXIdentifier")},name:{validate:(0,s.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXOpeningElement",{builder:["name","attributes","selfClosing"],visitor:["name","attributes"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,s.assertNodeType)("JSXIdentifier","JSXMemberExpression")},selfClosing:{default:!1,validate:(0,s.assertValueType)("boolean")},attributes:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("JSXAttribute","JSXSpreadAttribute")))}}}),(0,a.default)("JSXSpreadAttribute",{visitor:["argument"],aliases:["JSX"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("JSXText",{aliases:["JSX","Immutable"],builder:["value"],fields:{value:{validate:(0,s.assertValueType)("string")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("Noop",{visitor:[]}),(0,a.default)("ParenthesizedExpression",{visitor:["expression"],aliases:["Expression","ExpressionWrapper"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){var t=a(e);return 1===t.length?t[0]:l.unionTypeAnnotation(t)}function a(e){for(var t={},r={},i=[],n=[],s=0;s<e.length;s++){var o=e[s];if(o&&!(n.indexOf(o)>=0)){if(l.isAnyTypeAnnotation(o))return[o];if(l.isFlowBaseAnnotation(o))r[o.type]=o;else if(l.isUnionTypeAnnotation(o))i.indexOf(o.types)<0&&(e=e.concat(o.types),i.push(o.types));else if(l.isGenericTypeAnnotation(o)){var u=o.id.name;if(t[u]){var p=t[u];p.typeParameters?o.typeParameters&&(p.typeParameters.params=a(p.typeParameters.params.concat(o.typeParameters.params))):p=o.typeParameters}else t[u]=o}else n.push(o)}}for(var c in r)n.push(r[c]);for(var f in t)n.push(t[f]);return n}function o(e){if("string"===e)return l.stringTypeAnnotation();if("number"===e)return l.numberTypeAnnotation();if("undefined"===e)return l.voidTypeAnnotation();if("boolean"===e)return l.booleanTypeAnnotation();if("function"===e)return l.genericTypeAnnotation(l.identifier("Function"));if("object"===e)return l.genericTypeAnnotation(l.identifier("Object"));if("symbol"===e)return l.genericTypeAnnotation(l.identifier("Symbol"));throw new Error("Invalid typeof value")}t.__esModule=!0,t.createUnionTypeAnnotation=s,t.removeTypeDuplicates=a,t.createTypeAnnotationBasedOnTypeof=o;var u=r(i),l=n(u)},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d){"use strict";function y(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function v(e){return e&&e.__esModule?e:{default:e}}function m(e){var t=he["is"+e];t||(t=he["is"+e]=function(t,r){return he.is(e,t,r)}),he["assert"+e]=function(r,i){if(i=i||{},!t(r,i))throw new Error("Expected type "+(0,X.default)(e)+" with option "+(0,X.default)(i))}}function g(e,t,r){if(!t)return!1;var i=b(t.type,e);return!!i&&("undefined"==typeof r||he.shallowEqual(t,r))}function b(e,t){if(e===t)return!0;if(he.ALIAS_KEYS[t])return!1;var r=he.FLIPPED_ALIAS_KEYS[t];if(r){if(r[0]===e)return!0;for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e===o)return!0}}return!1}function x(e,t,r){if(e){var i=he.NODE_FIELDS[e.type];if(i){var n=i[t];n&&n.validate&&(n.optional&&null==r||n.validate(e,t,r))}}}function E(e,t){for(var r=(0,q.default)(t),i=r,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e[o]!==t[o])return!1}return!0}function A(e,t,r){return e.object=he.memberExpression(e.object,e.property,e.computed),e.property=t,e.computed=!!r,e}function S(e,t){return e.object=he.memberExpression(t,e.object),e}function _(e){var t=arguments.length<=1||void 0===arguments[1]?"body":arguments[1];return e[t]=he.toBlock(e[t],e)}function T(e){var t={};for(var r in e)"_"!==r[0]&&(t[r]=e[r]);return t}function P(e){var t=T(e);return delete t.loc,t}function w(e){var t={};for(var r in e)if("_"!==r[0]){var i=e[r];i&&(i.type?i=he.cloneDeep(i):Array.isArray(i)&&(i=i.map(he.cloneDeep))),t[r]=i}return t}function k(e,t){var r=e.split(".");return function(e){if(!he.isMemberExpression(e))return!1;for(var i=[e],n=0;i.length;){var s=i.shift();if(t&&n===r.length)return!0;if(he.isIdentifier(s)){if(r[n]!==s.name)return!1}else{if(!he.isStringLiteral(s)){if(he.isMemberExpression(s)){if(s.computed&&!he.isStringLiteral(s.property))return!1;i.push(s.object),i.push(s.property);continue}return!1}if(r[n]!==s.value)return!1}if(++n>r.length)return!1}return!0}}function C(e){for(var t=he.COMMENT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,
+W.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;delete e[s]}return e}function D(e,t){return O(e,t),N(e,t),I(e,t),e}function O(e,t){F("trailingComments",e,t)}function N(e,t){F("leadingComments",e,t)}function I(e,t){F("innerComments",e,t)}function F(e,t,r){t&&r&&(t[e]=(0,le.default)((0,ie.default)([].concat(t[e],r[e]))))}function B(e,t){if(!e||!t)return e;for(var r=he.INHERIT_KEYS.optional,i=Array.isArray(r),n=0,r=i?r:(0,W.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;null==e[a]&&(e[a]=t[a])}for(var o in t)"_"===o[0]&&(e[o]=t[o]);for(var u=he.INHERIT_KEYS.force,l=Array.isArray(u),p=0,u=l?u:(0,W.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e[f]=t[f]}return he.inheritsComments(e,t),e}function R(e){if(!L(e))throw new TypeError("Not a valid node "+(e&&e.type))}function L(e){return!(!e||!pe.VISITOR_KEYS[e.type])}function M(e,t,r){if(e){var i=he.VISITOR_KEYS[e.type];if(i){r=r||{},t(e,r);for(var n=i,s=Array.isArray(n),a=0,n=s?n:(0,W.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o,l=e[u];if(Array.isArray(l))for(var p=l,c=Array.isArray(p),f=0,p=c?p:(0,W.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h;M(d,t,r)}else M(l,t,r)}}}}function j(e,t){t=t||{};for(var r=t.preserveComments?me:ge,i=r,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;null!=e[o]&&(e[o]=void 0)}for(var u in e)"_"===u[0]&&null!=e[u]&&(e[u]=void 0);for(var l=(0,Y.default)(e),p=l,c=Array.isArray(p),f=0,p=c?p:(0,W.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h;e[d]=null}}function V(e,t){return M(e,j,t),e}t.__esModule=!0,t.createTypeAnnotationBasedOnTypeof=t.removeTypeDuplicates=t.createUnionTypeAnnotation=t.valueToNode=t.toBlock=t.toExpression=t.toStatement=t.toBindingIdentifierName=t.toIdentifier=t.toKeyAlias=t.toSequenceExpression=t.toComputedKey=t.isImmutable=t.isScope=t.isSpecifierDefault=t.isVar=t.isBlockScoped=t.isLet=t.isValidIdentifier=t.isReferenced=t.isBinding=t.getOuterBindingIdentifiers=t.getBindingIdentifiers=t.TYPES=t.react=t.DEPRECATED_KEYS=t.BUILDER_KEYS=t.NODE_FIELDS=t.ALIAS_KEYS=t.VISITOR_KEYS=t.NOT_LOCAL_BINDING=t.BLOCK_SCOPED_SYMBOL=t.INHERIT_KEYS=t.UNARY_OPERATORS=t.STRING_UNARY_OPERATORS=t.NUMBER_UNARY_OPERATORS=t.BOOLEAN_UNARY_OPERATORS=t.BINARY_OPERATORS=t.NUMBER_BINARY_OPERATORS=t.BOOLEAN_BINARY_OPERATORS=t.COMPARISON_BINARY_OPERATORS=t.EQUALITY_BINARY_OPERATORS=t.BOOLEAN_NUMBER_BINARY_OPERATORS=t.UPDATE_OPERATORS=t.LOGICAL_OPERATORS=t.COMMENT_KEYS=t.FOR_INIT_KEYS=t.FLATTENABLE_KEYS=t.STATEMENT_OR_BLOCK_KEYS=void 0;var U=r(i),Y=v(U),K=r(n),W=v(K),G=r(s),q=v(G),H=r(a),X=v(H),J=r(o);Object.defineProperty(t,"STATEMENT_OR_BLOCK_KEYS",{enumerable:!0,get:function(){return J.STATEMENT_OR_BLOCK_KEYS}}),Object.defineProperty(t,"FLATTENABLE_KEYS",{enumerable:!0,get:function(){return J.FLATTENABLE_KEYS}}),Object.defineProperty(t,"FOR_INIT_KEYS",{enumerable:!0,get:function(){return J.FOR_INIT_KEYS}}),Object.defineProperty(t,"COMMENT_KEYS",{enumerable:!0,get:function(){return J.COMMENT_KEYS}}),Object.defineProperty(t,"LOGICAL_OPERATORS",{enumerable:!0,get:function(){return J.LOGICAL_OPERATORS}}),Object.defineProperty(t,"UPDATE_OPERATORS",{enumerable:!0,get:function(){return J.UPDATE_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_NUMBER_BINARY_OPERATORS}}),Object.defineProperty(t,"EQUALITY_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.EQUALITY_BINARY_OPERATORS}}),Object.defineProperty(t,"COMPARISON_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.COMPARISON_BINARY_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_BINARY_OPERATORS}}),Object.defineProperty(t,"NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.NUMBER_BINARY_OPERATORS}}),Object.defineProperty(t,"BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BINARY_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_UNARY_OPERATORS}}),Object.defineProperty(t,"NUMBER_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.NUMBER_UNARY_OPERATORS}}),Object.defineProperty(t,"STRING_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.STRING_UNARY_OPERATORS}}),Object.defineProperty(t,"UNARY_OPERATORS",{enumerable:!0,get:function(){return J.UNARY_OPERATORS}}),Object.defineProperty(t,"INHERIT_KEYS",{enumerable:!0,get:function(){return J.INHERIT_KEYS}}),Object.defineProperty(t,"BLOCK_SCOPED_SYMBOL",{enumerable:!0,get:function(){return J.BLOCK_SCOPED_SYMBOL}}),Object.defineProperty(t,"NOT_LOCAL_BINDING",{enumerable:!0,get:function(){return J.NOT_LOCAL_BINDING}}),t.is=g,t.isType=b,t.validate=x,t.shallowEqual=E,t.appendToMemberExpression=A,t.prependToMemberExpression=S,t.ensureBlock=_,t.clone=T,t.cloneWithoutLoc=P,t.cloneDeep=w,t.buildMatchMemberExpression=k,t.removeComments=C,t.inheritsComments=D,t.inheritTrailingComments=O,t.inheritLeadingComments=N,t.inheritInnerComments=I,t.inherits=B,t.assertNode=R,t.isNode=L,t.traverseFast=M,t.removeProperties=j,t.removePropertiesDeep=V;var $=r(u);Object.defineProperty(t,"getBindingIdentifiers",{enumerable:!0,get:function(){return $.getBindingIdentifiers}}),Object.defineProperty(t,"getOuterBindingIdentifiers",{enumerable:!0,get:function(){return $.getOuterBindingIdentifiers}});var z=r(l);Object.defineProperty(t,"isBinding",{enumerable:!0,get:function(){return z.isBinding}}),Object.defineProperty(t,"isReferenced",{enumerable:!0,get:function(){return z.isReferenced}}),Object.defineProperty(t,"isValidIdentifier",{enumerable:!0,get:function(){return z.isValidIdentifier}}),Object.defineProperty(t,"isLet",{enumerable:!0,get:function(){return z.isLet}}),Object.defineProperty(t,"isBlockScoped",{enumerable:!0,get:function(){return z.isBlockScoped}}),Object.defineProperty(t,"isVar",{enumerable:!0,get:function(){return z.isVar}}),Object.defineProperty(t,"isSpecifierDefault",{enumerable:!0,get:function(){return z.isSpecifierDefault}}),Object.defineProperty(t,"isScope",{enumerable:!0,get:function(){return z.isScope}}),Object.defineProperty(t,"isImmutable",{enumerable:!0,get:function(){return z.isImmutable}});var Q=r(p);Object.defineProperty(t,"toComputedKey",{enumerable:!0,get:function(){return Q.toComputedKey}}),Object.defineProperty(t,"toSequenceExpression",{enumerable:!0,get:function(){return Q.toSequenceExpression}}),Object.defineProperty(t,"toKeyAlias",{enumerable:!0,get:function(){return Q.toKeyAlias}}),Object.defineProperty(t,"toIdentifier",{enumerable:!0,get:function(){return Q.toIdentifier}}),Object.defineProperty(t,"toBindingIdentifierName",{enumerable:!0,get:function(){return Q.toBindingIdentifierName}}),Object.defineProperty(t,"toStatement",{enumerable:!0,get:function(){return Q.toStatement}}),Object.defineProperty(t,"toExpression",{enumerable:!0,get:function(){return Q.toExpression}}),Object.defineProperty(t,"toBlock",{enumerable:!0,get:function(){return Q.toBlock}}),Object.defineProperty(t,"valueToNode",{enumerable:!0,get:function(){return Q.valueToNode}});var Z=r(c);Object.defineProperty(t,"createUnionTypeAnnotation",{enumerable:!0,get:function(){return Z.createUnionTypeAnnotation}}),Object.defineProperty(t,"removeTypeDuplicates",{enumerable:!0,get:function(){return Z.removeTypeDuplicates}}),Object.defineProperty(t,"createTypeAnnotationBasedOnTypeof",{enumerable:!0,get:function(){return Z.createTypeAnnotationBasedOnTypeof}});var ee=r(257),te=v(ee),re=r(372),ie=v(re),ne=r(52),se=v(ne),ae=r(102),oe=v(ae),ue=r(374),le=v(ue);r(f);var pe=r(h),ce=r(d),fe=y(ce),he=t;t.VISITOR_KEYS=pe.VISITOR_KEYS,t.ALIAS_KEYS=pe.ALIAS_KEYS,t.NODE_FIELDS=pe.NODE_FIELDS,t.BUILDER_KEYS=pe.BUILDER_KEYS,t.DEPRECATED_KEYS=pe.DEPRECATED_KEYS,t.react=fe;for(var de in he.VISITOR_KEYS)m(de);he.FLIPPED_ALIAS_KEYS={},(0,oe.default)(he.ALIAS_KEYS,function(e,t){(0,oe.default)(e,function(e){var r=he.FLIPPED_ALIAS_KEYS[e]=he.FLIPPED_ALIAS_KEYS[e]||[];r.push(t)})}),(0,oe.default)(he.FLIPPED_ALIAS_KEYS,function(e,t){he[t.toUpperCase()+"_TYPES"]=e,m(t)});t.TYPES=(0,q.default)(he.VISITOR_KEYS).concat((0,q.default)(he.FLIPPED_ALIAS_KEYS)).concat((0,q.default)(he.DEPRECATED_KEYS));(0,oe.default)(he.BUILDER_KEYS,function(e,t){function r(){if(arguments.length>e.length)throw new Error("t."+t+": Too many arguments passed. Received "+arguments.length+" but can receive no more than "+e.length);var r={};r.type=t;for(var i=0,n=e,s=Array.isArray(n),a=0,n=s?n:(0,W.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o,l=he.NODE_FIELDS[t][u],p=arguments[i++];void 0===p&&(p=(0,se.default)(l.default)),r[u]=p}for(var c in r)x(r,c,r[c]);return r}he[t]=r,he[t[0].toLowerCase()+t.slice(1)]=r});var ye=function(e){function t(t){return function(){return console.trace("The node type "+e+" has been renamed to "+r),t.apply(this,arguments)}}var r=he.DEPRECATED_KEYS[e];he[e]=he[e[0].toLowerCase()+e.slice(1)]=t(he[r]),he["is"+e]=t(he["is"+r]),he["assert"+e]=t(he["assert"+r])};for(var ve in he.DEPRECATED_KEYS)ye(ve);(0,te.default)(he),(0,te.default)(he.VISITOR_KEYS);var me=["tokens","start","end","loc","raw","rawValue"],ge=he.COMMENT_KEYS.concat(["comments"]).concat(me)},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return!!e&&/^[a-z]|\-/.test(e)}function a(e,t){for(var r=e.value.split(/\r\n|\n|\r/),i=0,n=0;n<r.length;n++)r[n].match(/[^ \t]/)&&(i=n);for(var s="",a=0;a<r.length;a++){var o=r[a],u=0===a,p=a===r.length-1,c=a===i,f=o.replace(/\t/g," ");u||(f=f.replace(/^[ ]+/,"")),p||(f=f.replace(/[ ]+$/,"")),f&&(c||(f+=" "),s+=f)}s&&t.push(l.stringLiteral(s))}function o(e){for(var t=[],r=0;r<e.children.length;r++){var i=e.children[r];l.isJSXText(i)?a(i,t):(l.isJSXExpressionContainer(i)&&(i=i.expression),l.isJSXEmptyExpression(i)||t.push(i))}return t}t.__esModule=!0,t.isReactComponent=void 0,t.isCompatTag=s,t.buildChildren=o;var u=r(i),l=n(u);t.isReactComponent=l.buildMatchMemberExpression("React.Component")},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t,r){for(var i=[].concat(e),n=(0,p.default)(null);i.length;){var s=i.shift();if(s){var a=f.getBindingIdentifiers.keys[s.type];if(f.isIdentifier(s))if(t){var o=n[s.name]=n[s.name]||[];o.push(s)}else n[s.name]=s;else if(f.isExportDeclaration(s))f.isDeclaration(e.declaration)&&i.push(e.declaration);else{if(r){if(f.isFunctionDeclaration(s)){i.push(s.id);continue}if(f.isFunctionExpression(s))continue}if(a)for(var u=0;u<a.length;u++){var l=a[u];s[l]&&(i=i.concat(s[l]))}}}}return n}function u(e,t){return o(e,t,!0)}t.__esModule=!0;var l=r(i),p=a(l);t.getBindingIdentifiers=o,t.getOuterBindingIdentifiers=u;var c=r(n),f=s(c);o.keys={DeclareClass:["id"],DeclareFunction:["id"],DeclareModule:["id"],DeclareVariable:["id"],InterfaceDeclaration:["id"],TypeAlias:["id"],CatchClause:["param"],LabeledStatement:["label"],UnaryExpression:["argument"],AssignmentExpression:["left"],ImportSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportDefaultSpecifier:["local"],ImportDeclaration:["specifiers"],ExportSpecifier:["exported"],ExportNamespaceSpecifier:["exported"],ExportDefaultSpecifier:["exported"],FunctionDeclaration:["id","params"],FunctionExpression:["id","params"],ClassDeclaration:["id"],ClassExpression:["id"],RestElement:["argument"],UpdateExpression:["argument"],RestProperty:["argument"],ObjectProperty:["value"],AssignmentPattern:["left"],ArrayPattern:["elements"],ObjectPattern:["properties"],VariableDeclaration:["declarations"],VariableDeclarator:["id"]}},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var r=x.getBindingIdentifiers.keys[t.type];if(r)for(var i=0;i<r.length;i++){var n=r[i],s=t[n];if(Array.isArray(s)){if(s.indexOf(e)>=0)return!0}else if(s===e)return!0}return!1}function p(e,t){switch(t.type){case"BindExpression":return t.object===e||t.callee===e;case"MemberExpression":case"JSXMemberExpression":return!(t.property!==e||!t.computed)||t.object===e;case"MetaProperty":return!1;case"ObjectProperty":if(t.key===e)return t.computed;case"VariableDeclarator":return t.id!==e;case"ArrowFunctionExpression":case"FunctionDeclaration":case"FunctionExpression":for(var r=t.params,i=Array.isArray(r),n=0,r=i?r:(0,b.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;if(a===e)return!1}return t.id!==e;case"ExportSpecifier":return!t.source&&t.local===e;case"ExportNamespaceSpecifier":case"ExportDefaultSpecifier":return!1;case"JSXAttribute":return t.name!==e;case"ClassProperty":return t.value===e;case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ImportSpecifier":return!1;case"ClassDeclaration":case"ClassExpression":return t.id!==e;case"ClassMethod":case"ObjectMethod":return t.key===e&&t.computed;case"LabeledStatement":return!1;case"CatchClause":return t.param!==e;case"RestElement":return!1;case"AssignmentExpression":return t.right===e;case"AssignmentPattern":return t.right===e;case"ObjectPattern":case"ArrayPattern":return!1}return!0}function c(e){return"string"==typeof e&&!A.default.keyword.isReservedWordES6(e,!0)&&A.default.keyword.isIdentifierNameES6(e)}function f(e){return _.isVariableDeclaration(e)&&("var"!==e.kind||e[T.BLOCK_SCOPED_SYMBOL])}function h(e){return _.isFunctionDeclaration(e)||_.isClassDeclaration(e)||_.isLet(e)}function d(e){return _.isVariableDeclaration(e,{kind:"var"})&&!e[T.BLOCK_SCOPED_SYMBOL]}function y(e){return _.isImportDefaultSpecifier(e)||_.isIdentifier(e.imported||e.exported,{name:"default"})}function v(e,t){return(!_.isBlockStatement(e)||!_.isFunction(t,{body:e}))&&_.isScopable(e)}function m(e){return!!_.isType(e.type,"Immutable")||!!_.isIdentifier(e)&&"undefined"===e.name}t.__esModule=!0;var g=r(i),b=u(g);t.isBinding=l,t.isReferenced=p,t.isValidIdentifier=c,t.isLet=f,t.isBlockScoped=h,t.isVar=d,t.isSpecifierDefault=y,t.isScope=v,t.isImmutable=m;var x=r(n),E=r(185),A=u(E),S=r(s),_=o(S),T=r(a)},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y){"use strict";function v(e){return e&&e.__esModule?e:{default:e}}function m(e,t){return new b.default(t,e).parse()}Object.defineProperty(t,"__esModule",{value:!0}),t.tokTypes=void 0,t.parse=m;var g=r(i),b=v(g);r(n),r(s),r(a),r(o),r(u),r(l),r(p);var x=r(c);r(f),r(h);var E=r(d),A=v(E),S=r(y),_=v(S);g.plugins.flow=A.default,g.plugins.jsx=_.default,t.tokTypes=x.types},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return e[e.length-1]}var a=r(i),o=n(a),u=o.default.prototype;u.addComment=function(e){this.filename&&(e.loc.filename=this.filename),this.state.trailingComments.push(e),this.state.leadingComments.push(e)},u.processComment=function(e){if(!("Program"===e.type&&e.body.length>0)){var t=this.state.commentStack,r=void 0,i=void 0,n=void 0,a=void 0;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=e.end?(i=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var o=s(t);t.length>0&&o.trailingComments&&o.trailingComments[0].start>=e.end&&(i=o.trailingComments,o.trailingComments=null)}for(;t.length>0&&s(t).start>=e.start;)r=t.pop();if(r){if(r.leadingComments)if(r!==e&&s(r.leadingComments).end<=e.start)e.leadingComments=r.leadingComments,r.leadingComments=null;else for(n=r.leadingComments.length-2;n>=0;--n)if(r.leadingComments[n].end<=e.start){e.leadingComments=r.leadingComments.splice(0,n+1);break}}else if(this.state.leadingComments.length>0)if(s(this.state.leadingComments).end<=e.start){if(this.state.commentPreviousNode)for(a=0;a<this.state.leadingComments.length;a++)this.state.leadingComments[a].end<this.state.commentPreviousNode.end&&(this.state.leadingComments.splice(a,1),a--);this.state.leadingComments.length>0&&(e.leadingComments=this.state.leadingComments,this.state.leadingComments=[])}else{for(n=0;n<this.state.leadingComments.length&&!(this.state.leadingComments[n].end>e.start);n++);e.leadingComments=this.state.leadingComments.slice(0,n),0===e.leadingComments.length&&(e.leadingComments=null),i=this.state.leadingComments.slice(n),0===i.length&&(i=null)}this.state.commentPreviousNode=e,i&&(i.length&&i[0].start>=e.start&&s(i).end<=e.end?e.innerComments=i:e.trailingComments=i),t.push(e)}}},function(e,t,r,i,n,s,a,o){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=r(a),y=u(d),v=r(o),m=y.default.prototype;m.checkPropClash=function(e,t){if(!e.computed){var r=e.key,i=void 0;switch(r.type){case"Identifier":i=r.name;break;case"StringLiteral":case"NumericLiteral":i=String(r.value);break;default:return}"__proto__"===i&&"init"===e.kind&&(t.proto&&this.raise(r.start,"Redefinition of __proto__ property"),t.proto=!0)}},m.parseExpression=function(e,t){var r=this.state.start,i=this.state.startLoc,n=this.parseMaybeAssign(e,t);if(this.match(h.types.comma)){var s=this.startNodeAt(r,i);for(s.expressions=[n];this.eat(h.types.comma);)s.expressions.push(this.parseMaybeAssign(e,t));return this.toReferencedList(s.expressions),this.finishNode(s,"SequenceExpression")}return n},m.parseMaybeAssign=function(e,t,r,i){if(this.match(h.types._yield)&&this.state.inGenerator)return this.parseYield();var n=void 0;t?n=!1:(t={start:0},n=!0);var s=this.state.start,a=this.state.startLoc;(this.match(h.types.parenL)||this.match(h.types.name))&&(this.state.potentialArrowAt=this.state.start);var o=this.parseMaybeConditional(e,t,i);if(r&&(o=r.call(this,o,s,a)),this.state.type.isAssign){var u=this.startNodeAt(s,a);if(u.operator=this.state.value,u.left=this.match(h.types.eq)?this.toAssignable(o):o,t.start=0,this.checkLVal(o),o.extra&&o.extra.parenthesized){var l=void 0;"ObjectPattern"===o.type?l="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===o.type&&(l="`([a]) = 0` use `([a] = 0)`"),l&&this.raise(o.start,"You're trying to assign to a parenthesized expression, eg. instead of "+l)}return this.next(),u.right=this.parseMaybeAssign(e),this.finishNode(u,"AssignmentExpression")}return n&&t.start&&this.unexpected(t.start),o},m.parseMaybeConditional=function(e,t,r){var i=this.state.start,n=this.state.startLoc,s=this.parseExprOps(e,t);return t&&t.start?s:this.parseConditional(s,e,i,n,r)},m.parseConditional=function(e,t,r,i){if(this.eat(h.types.question)){var n=this.startNodeAt(r,i);return n.test=e,n.consequent=this.parseMaybeAssign(),this.expect(h.types.colon),n.alternate=this.parseMaybeAssign(t),this.finishNode(n,"ConditionalExpression")}return e},m.parseExprOps=function(e,t){var r=this.state.start,i=this.state.startLoc,n=this.parseMaybeUnary(t);return t&&t.start?n:this.parseExprOp(n,r,i,-1,e)},m.parseExprOp=function(e,t,r,i,n){var s=this.state.type.binop;if(!(null==s||n&&this.match(h.types._in))&&s>i){var a=this.startNodeAt(t,r);a.left=e,a.operator=this.state.value,"**"!==a.operator||"UnaryExpression"!==e.type||!e.extra||e.extra.parenthesizedArgument||e.extra.parenthesized||this.raise(e.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var o=this.state.type;this.next();var u=this.state.start,l=this.state.startLoc;return a.right=this.parseExprOp(this.parseMaybeUnary(),u,l,o.rightAssociative?s-1:s,n),this.finishNode(a,o===h.types.logicalOR||o===h.types.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(a,t,r,i,n)}return e},m.parseMaybeUnary=function(e){if(this.state.type.prefix){var t=this.startNode(),r=this.match(h.types.incDec);t.operator=this.state.value,t.prefix=!0,this.next();var i=this.state.type;return t.argument=this.parseMaybeUnary(),this.addExtra(t,"parenthesizedArgument",!(i!==h.types.parenL||t.argument.extra&&t.argument.extra.parenthesized)),e&&e.start&&this.unexpected(e.start),r?this.checkLVal(t.argument):this.state.strict&&"delete"===t.operator&&"Identifier"===t.argument.type&&this.raise(t.start,"Deleting local variable in strict mode"),this.finishNode(t,r?"UpdateExpression":"UnaryExpression")}var n=this.state.start,s=this.state.startLoc,a=this.parseExprSubscripts(e);if(e&&e.start)return a;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(n,s);o.operator=this.state.value,o.prefix=!1,o.argument=a,this.checkLVal(a),this.next(),a=this.finishNode(o,"UpdateExpression")}return a},m.parseExprSubscripts=function(e){var t=this.state.start,r=this.state.startLoc,i=this.state.potentialArrowAt,n=this.parseExprAtom(e);return"ArrowFunctionExpression"===n.type&&n.start===i?n:e&&e.start?n:this.parseSubscripts(n,t,r)},m.parseSubscripts=function(e,t,r,i){for(;;){if(!i&&this.eat(h.types.doubleColon)){var n=this.startNodeAt(t,r);return n.object=e,n.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(n,"BindExpression"),t,r,i)}if(this.eat(h.types.dot)){var s=this.startNodeAt(t,r);s.object=e,s.property=this.parseIdentifier(!0),s.computed=!1,e=this.finishNode(s,"MemberExpression")}else if(this.eat(h.types.bracketL)){var a=this.startNodeAt(t,r);a.object=e,a.property=this.parseExpression(),a.computed=!0,this.expect(h.types.bracketR),e=this.finishNode(a,"MemberExpression")}else if(!i&&this.match(h.types.parenL)){var o=this.state.potentialArrowAt===e.start&&"Identifier"===e.type&&"async"===e.name&&!this.canInsertSemicolon();this.next();var u=this.startNodeAt(t,r);if(u.callee=e,u.arguments=this.parseCallExpressionArguments(h.types.parenR,o),e=this.finishNode(u,"CallExpression"),o&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(t,r),u);this.toReferencedList(u.arguments)}else{if(!this.match(h.types.backQuote))return e;var l=this.startNodeAt(t,r);l.tag=e,l.quasi=this.parseTemplate(),e=this.finishNode(l,"TaggedTemplateExpression")}}},m.parseCallExpressionArguments=function(e,t){for(var r=void 0,i=[],n=!0;!this.eat(e);){if(n)n=!1;else if(this.expect(h.types.comma),this.eat(e))break;this.match(h.types.parenL)&&!r&&(r=this.state.start),i.push(this.parseExprListItem(void 0,t?{start:0}:void 0))}return t&&r&&this.shouldParseAsyncArrow()&&this.unexpected(),i},m.shouldParseAsyncArrow=function(){return this.match(h.types.arrow)},m.parseAsyncArrowFromCallExpression=function(e,t){return this.expect(h.types.arrow),this.parseArrowExpression(e,t.arguments,!0)},m.parseNoCallExpr=function(){var e=this.state.start,t=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,t,!0)},m.parseExprAtom=function(e){var t=void 0,r=this.state.potentialArrowAt===this.state.start;switch(this.state.type){case h.types._super:return this.state.inMethod||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),t=this.startNode(),this.next(),this.match(h.types.parenL)||this.match(h.types.bracketL)||this.match(h.types.dot)||this.unexpected(),this.match(h.types.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(t.start,"super() outside of class constructor"),this.finishNode(t,"Super");case h.types._this:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case h.types._yield:this.state.inGenerator&&this.unexpected();case h.types.name:t=this.startNode();var i="await"===this.state.value&&this.state.inAsync,n=this.shouldAllowYieldIdentifier(),s=this.parseIdentifier(i||n);if("await"===s.name){if(this.state.inAsync||this.inModule)return this.parseAwait(t)}else{if("async"===s.name&&this.match(h.types._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(t,!1,!1,!0);if(r&&"async"===s.name&&this.match(h.types.name)){var a=[this.parseIdentifier()];return this.expect(h.types.arrow),this.parseArrowExpression(t,a,!0)}}return r&&!this.canInsertSemicolon()&&this.eat(h.types.arrow)?this.parseArrowExpression(t,[s]):s;case h.types._do:if(this.hasPlugin("doExpressions")){var o=this.startNode();this.next();var u=this.state.inFunction,l=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,o.body=this.parseBlock(!1,!0),this.state.inFunction=u,this.state.labels=l,this.finishNode(o,"DoExpression")}case h.types.regexp:var p=this.state.value;return t=this.parseLiteral(p.value,"RegExpLiteral"),t.pattern=p.pattern,t.flags=p.flags,t;case h.types.num:return this.parseLiteral(this.state.value,"NumericLiteral");case h.types.string:return this.parseLiteral(this.state.value,"StringLiteral");case h.types._null:return t=this.startNode(),this.next(),this.finishNode(t,"NullLiteral");case h.types._true:case h.types._false:return t=this.startNode(),t.value=this.match(h.types._true),this.next(),this.finishNode(t,"BooleanLiteral");case h.types.parenL:return this.parseParenAndDistinguishExpression(null,null,r);case h.types.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(h.types.bracketR,!0,e),this.toReferencedList(t.elements),this.finishNode(t,"ArrayExpression");case h.types.braceL:return this.parseObj(!1,e);case h.types._function:return this.parseFunctionExpression();case h.types.at:this.parseDecorators();case h.types._class:return t=this.startNode(),this.takeDecorators(t),this.parseClass(t,!1);case h.types._new:return this.parseNew();case h.types.backQuote:return this.parseTemplate();case h.types.doubleColon:t=this.startNode(),this.next(),t.object=null;var c=t.callee=this.parseNoCallExpr();if("MemberExpression"===c.type)return this.finishNode(t,"BindExpression");this.raise(c.start,"Binding should be performed on object property.");default:this.unexpected()}},m.parseFunctionExpression=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(h.types.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(e,t,"sent"):this.parseFunction(e,!1)},m.parseMetaProperty=function(e,t,r){return e.meta=t,e.property=this.parseIdentifier(!0),e.property.name!==r&&this.raise(e.property.start,"The only valid meta property for new is "+t.name+"."+r),this.finishNode(e,"MetaProperty")},m.parseLiteral=function(e,t){var r=this.startNode();return this.addExtra(r,"rawValue",e),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),r.value=e,this.next(),this.finishNode(r,t)},m.parseParenExpression=function(){this.expect(h.types.parenL);var e=this.parseExpression();return this.expect(h.types.parenR),e},m.parseParenAndDistinguishExpression=function(e,t,r,i){e=e||this.state.start,t=t||this.state.startLoc;var n=void 0;this.expect(h.types.parenL);for(var s=this.state.start,a=this.state.startLoc,o=[],u=!0,l={start:0},p=void 0,c=void 0,d={start:0};!this.match(h.types.parenR);){if(u)u=!1;else if(this.expect(h.types.comma,d.start||null),this.match(h.types.parenR)){c=this.state.start;break}if(this.match(h.types.ellipsis)){var y=this.state.start,v=this.state.startLoc;p=this.state.start,o.push(this.parseParenItem(this.parseRest(),v,y));break}o.push(this.parseMaybeAssign(!1,l,this.parseParenItem,d))}var m=this.state.start,g=this.state.startLoc;this.expect(h.types.parenR);var b=this.startNodeAt(e,t);if(r&&!this.canInsertSemicolon()&&(b=this.parseArrow(b))){var x=!0,E=!1,A=void 0;try{for(var S,_=(0,f.default)(o);!(x=(S=_.next()).done);x=!0){var T=S.value;T.extra&&T.extra.parenthesized&&this.unexpected(T.extra.parenStart)}}catch(e){E=!0,A=e}finally{try{!x&&_.return&&_.return()}finally{if(E)throw A}}return this.parseArrowExpression(b,o,i)}if(!o.length){if(i)return;this.unexpected(this.state.lastTokStart)}return c&&this.unexpected(c),p&&this.unexpected(p),l.start&&this.unexpected(l.start),d.start&&this.unexpected(d.start),o.length>1?(n=this.startNodeAt(s,a),n.expressions=o,this.toReferencedList(n.expressions),this.finishNodeAt(n,"SequenceExpression",m,g)):n=o[0],this.addExtra(n,"parenthesized",!0),this.addExtra(n,"parenStart",e),n},m.parseArrow=function(e){if(this.eat(h.types.arrow))return e},m.parseParenItem=function(e){return e},m.parseNew=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.eat(h.types.dot)?this.parseMetaProperty(e,t,"target"):(e.callee=this.parseNoCallExpr(),this.eat(h.types.parenL)?(e.arguments=this.parseExprList(h.types.parenR),this.toReferencedList(e.arguments)):e.arguments=[],this.finishNode(e,"NewExpression"))},m.parseTemplateElement=function(){var e=this.startNode();return e.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),e.tail=this.match(h.types.backQuote),this.finishNode(e,"TemplateElement")},m.parseTemplate=function(){var e=this.startNode();this.next(),e.expressions=[];var t=this.parseTemplateElement();for(e.quasis=[t];!t.tail;)this.expect(h.types.dollarBraceL),e.expressions.push(this.parseExpression()),this.expect(h.types.braceR),e.quasis.push(t=this.parseTemplateElement());return this.next(),this.finishNode(e,"TemplateLiteral")},m.parseObj=function(e,t){var r=[],i=(0,p.default)(null),n=!0,s=this.startNode();for(s.properties=[],this.next();!this.eat(h.types.braceR);){if(n)n=!1;else if(this.expect(h.types.comma),this.eat(h.types.braceR))break;for(;this.match(h.types.at);)r.push(this.parseDecorator());var a=this.startNode(),o=!1,u=!1,l=void 0,c=void 0;if(r.length&&(a.decorators=r,r=[]),this.hasPlugin("objectRestSpread")&&this.match(h.types.ellipsis))a=this.parseSpread(),a.type=e?"RestProperty":"SpreadProperty",s.properties.push(a);else{if(a.method=!1,a.shorthand=!1,(e||t)&&(l=this.state.start,c=this.state.startLoc),e||(o=this.eat(h.types.star)),!e&&this.isContextual("async")){o&&this.unexpected();var f=this.parseIdentifier();this.match(h.types.colon)||this.match(h.types.parenL)||this.match(h.types.braceR)?a.key=f:(u=!0,this.hasPlugin("asyncGenerators")&&(o=this.eat(h.types.star)),this.parsePropertyName(a))}else this.parsePropertyName(a);this.parseObjPropValue(a,l,c,o,u,e,t),this.checkPropClash(a,i),a.shorthand&&this.addExtra(a,"shorthand",!0),s.properties.push(a)}}return r.length&&this.raise(this.state.start,"You have trailing decorators with no property"),this.finishNode(s,e?"ObjectPattern":"ObjectExpression")},m.parseObjPropValue=function(e,t,r,i,n,s,a){if(n||i||this.match(h.types.parenL))return s&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,i,n),this.finishNode(e,"ObjectMethod");if(this.eat(h.types.colon))return e.value=s?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,a),this.finishNode(e,"ObjectProperty");if(!(e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.match(h.types.comma)||this.match(h.types.braceR))){(i||n||s)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),this.parseMethod(e,!1);var o="get"===e.kind?0:1;if(e.params.length!==o){var u=e.start;"get"===e.kind?this.raise(u,"getter should have no params"):this.raise(u,"setter should have exactly one param")}return this.finishNode(e,"ObjectMethod")}if(!e.computed&&"Identifier"===e.key.type){if(s){var l=this.isKeyword(e.key.name);!l&&this.state.strict&&(l=v.reservedWords.strictBind(e.key.name)||v.reservedWords.strict(e.key.name)),l&&this.raise(e.key.start,"Binding "+e.key.name),e.value=this.parseMaybeDefault(t,r,e.key.__clone())}else this.match(h.types.eq)&&a?(a.start||(a.start=this.state.start),e.value=this.parseMaybeDefault(t,r,e.key.__clone())):e.value=e.key.__clone();return e.shorthand=!0,this.finishNode(e,"ObjectProperty")}this.unexpected()},m.parsePropertyName=function(e){return this.eat(h.types.bracketL)?(e.computed=!0,
+e.key=this.parseMaybeAssign(),this.expect(h.types.bracketR),e.key):(e.computed=!1,e.key=this.match(h.types.num)||this.match(h.types.string)?this.parseExprAtom():this.parseIdentifier(!0))},m.initFunction=function(e,t){e.id=null,e.generator=!1,e.expression=!1,e.async=!!t},m.parseMethod=function(e,t,r){var i=this.state.inMethod;return this.state.inMethod=e.kind||!0,this.initFunction(e,r),this.expect(h.types.parenL),e.params=this.parseBindingList(h.types.parenR),e.generator=t,this.parseFunctionBody(e),this.state.inMethod=i,e},m.parseArrowExpression=function(e,t,r){return this.initFunction(e,r),e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0),this.finishNode(e,"ArrowFunctionExpression")},m.parseFunctionBody=function(e,t){var r=t&&!this.match(h.types.braceL),i=this.state.inAsync;if(this.state.inAsync=e.async,r)e.body=this.parseMaybeAssign(),e.expression=!0;else{var n=this.state.inFunction,s=this.state.inGenerator,a=this.state.labels;this.state.inFunction=!0,this.state.inGenerator=e.generator,this.state.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.state.inFunction=n,this.state.inGenerator=s,this.state.labels=a}this.state.inAsync=i;var o=this.state.strict,u=!1,l=!1;if(t&&(o=!0),!r&&e.body.directives.length){var c=!0,d=!1,y=void 0;try{for(var v,m=(0,f.default)(e.body.directives);!(c=(v=m.next()).done);c=!0){var g=v.value;if("use strict"===g.value.value){l=!0,o=!0,u=!0;break}}}catch(e){d=!0,y=e}finally{try{!c&&m.return&&m.return()}finally{if(d)throw y}}}if(l&&e.id&&"Identifier"===e.id.type&&"yield"===e.id.name&&this.raise(e.id.start,"Binding yield in strict mode"),o){var b=(0,p.default)(null),x=this.state.strict;u&&(this.state.strict=!0),e.id&&this.checkLVal(e.id,!0);var E=!0,A=!1,S=void 0;try{for(var _,T=(0,f.default)(e.params);!(E=(_=T.next()).done);E=!0){var P=_.value;this.checkLVal(P,!0,b)}}catch(e){A=!0,S=e}finally{try{!E&&T.return&&T.return()}finally{if(A)throw S}}this.state.strict=x}},m.parseExprList=function(e,t,r){for(var i=[],n=!0;!this.eat(e);){if(n)n=!1;else if(this.expect(h.types.comma),this.eat(e))break;i.push(this.parseExprListItem(t,r))}return i},m.parseExprListItem=function(e,t){var r=void 0;return r=e&&this.match(h.types.comma)?null:this.match(h.types.ellipsis)?this.parseSpread(t):this.parseMaybeAssign(!1,t,this.parseParenItem)},m.parseIdentifier=function(e){var t=this.startNode();return this.match(h.types.name)?(!e&&this.state.strict&&v.reservedWords.strict(this.state.value)&&this.raise(this.state.start,"The keyword '"+this.state.value+"' is reserved"),t.name=this.state.value):e&&this.state.type.keyword?t.name=this.state.type.keyword:this.unexpected(),!e&&"await"===t.name&&this.state.inAsync&&this.raise(t.start,"invalid use of await inside of an async function"),t.loc.identifierName=t.name,this.next(),this.finishNode(t,"Identifier")},m.parseAwait=function(e){return this.state.inAsync||this.unexpected(),this.match(h.types.star)&&this.raise(e.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),e.argument=this.parseMaybeUnary(),this.finishNode(e,"AwaitExpression")},m.parseYield=function(){var e=this.startNode();return this.next(),this.match(h.types.semi)||this.canInsertSemicolon()||!this.match(h.types.star)&&!this.state.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(h.types.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")}},function(e,t,r,i,n,s,a,o,u,l,p,c){"use strict";function f(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.plugins=void 0;var h=r(i),d=f(h),y=r(n),v=f(y),m=r(s),g=f(m),b=r(a),x=f(b),E=r(o),A=f(E),S=r(u),_=f(S),T=r(l),P=r(p),w=r(c),k=f(w),C=(t.plugins={},function(e){function r(e,t){(0,g.default)(this,r),e=(0,P.getOptions)(e);var i=(0,A.default)(this,(0,v.default)(r).call(this,e,t));return i.options=e,i.inModule="module"===i.options.sourceType,i.isReservedWord=T.reservedWords[6],i.input=t,i.plugins=i.loadPlugins(i.options.plugins),i.filename=e.sourceFilename,0===i.state.pos&&"#"===i.input[0]&&"!"===i.input[1]&&i.skipLineComment(2),i}return(0,_.default)(r,e),(0,x.default)(r,[{key:"hasPlugin",value:function(e){return!(!this.plugins["*"]&&!this.plugins[e])}},{key:"extend",value:function(e,t){this[e]=t(this[e])}},{key:"loadPlugins",value:function(e){var r={};e.indexOf("flow")>=0&&(e=e.filter(function(e){return"flow"!==e}),e.push("flow"));var i=!0,n=!1,s=void 0;try{for(var a,o=(0,d.default)(e);!(i=(a=o.next()).done);i=!0){var u=a.value;if(!r[u]){r[u]=!0;var l=t.plugins[u];l&&l(this)}}}catch(e){n=!0,s=e}finally{try{!i&&o.return&&o.return()}finally{if(n)throw s}}return r}},{key:"parse",value:function(){var e=this.startNode(),t=this.startNode();return this.nextToken(),this.parseTopLevel(e,t)}}]),r}(k.default));t.default=C},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}var a=r(i),o=r(n),u=s(o),l=u.default.prototype;l.raise=function(e,t){var r=(0,a.getLineInfo)(this.input,e);t+=" ("+r.line+":"+r.column+")";var i=new SyntaxError(t);throw i.pos=e,i.loc=r,i}},function(e,t,r,i,n,s,a){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var u=r(i),l=o(u),p=r(n),c=r(s),f=o(c),h=r(a),d=f.default.prototype;d.toAssignable=function(e,t){if(e)switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":e.type="ObjectPattern";var r=!0,i=!1,n=void 0;try{for(var s,a=(0,l.default)(e.properties);!(r=(s=a.next()).done);r=!0){var o=s.value;"ObjectMethod"===o.type?"get"===o.kind||"set"===o.kind?this.raise(o.key.start,"Object pattern can't contain getter or setter"):this.raise(o.key.start,"Object pattern can't contain methods"):this.toAssignable(o,t)}}catch(e){i=!0,n=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw n}}break;case"ObjectProperty":this.toAssignable(e.value,t);break;case"SpreadProperty":e.type="RestProperty";break;case"ArrayExpression":e.type="ArrayPattern",this.toAssignableList(e.elements,t);break;case"AssignmentExpression":"="===e.operator?(e.type="AssignmentPattern",delete e.operator):this.raise(e.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!t)break;default:this.raise(e.start,"Assigning to rvalue")}return e},d.toAssignableList=function(e,t){var r=e.length;if(r){var i=e[r-1];if(i&&"RestElement"===i.type)--r;else if(i&&"SpreadElement"===i.type){i.type="RestElement";var n=i.argument;this.toAssignable(n,t),"Identifier"!==n.type&&"MemberExpression"!==n.type&&"ArrayPattern"!==n.type&&this.unexpected(n.start),--r}}for(var s=0;s<r;s++){var a=e[s];a&&this.toAssignable(a,t)}return e},d.toReferencedList=function(e){return e},d.parseSpread=function(e){var t=this.startNode();return this.next(),t.argument=this.parseMaybeAssign(e),this.finishNode(t,"SpreadElement")},d.parseRest=function(){var e=this.startNode();return this.next(),e.argument=this.parseBindingIdentifier(),this.finishNode(e,"RestElement")},d.shouldAllowYieldIdentifier=function(){return this.match(p.types._yield)&&!this.state.strict&&!this.state.inGenerator},d.parseBindingIdentifier=function(){return this.parseIdentifier(this.shouldAllowYieldIdentifier())},d.parseBindingAtom=function(){switch(this.state.type){case p.types._yield:(this.state.strict||this.state.inGenerator)&&this.unexpected();case p.types.name:return this.parseIdentifier(!0);case p.types.bracketL:var e=this.startNode();return this.next(),e.elements=this.parseBindingList(p.types.bracketR,!0),this.finishNode(e,"ArrayPattern");case p.types.braceL:return this.parseObj(!0);default:this.unexpected()}},d.parseBindingList=function(e,t){for(var r=[],i=!0;!this.eat(e);)if(i?i=!1:this.expect(p.types.comma),t&&this.match(p.types.comma))r.push(null);else{if(this.eat(e))break;if(this.match(p.types.ellipsis)){r.push(this.parseAssignableListItemTypes(this.parseRest())),this.expect(e);break}for(var n=[];this.match(p.types.at);)n.push(this.parseDecorator());var s=this.parseMaybeDefault();n.length&&(s.decorators=n),this.parseAssignableListItemTypes(s),r.push(this.parseMaybeDefault(s.start,s.loc.start,s))}return r},d.parseAssignableListItemTypes=function(e){return e},d.parseMaybeDefault=function(e,t,r){if(t=t||this.state.startLoc,e=e||this.state.start,r=r||this.parseBindingAtom(),!this.eat(p.types.eq))return r;var i=this.startNodeAt(e,t);return i.left=r,i.right=this.parseMaybeAssign(),this.finishNode(i,"AssignmentPattern")},d.checkLVal=function(e,t,r){switch(e.type){case"Identifier":if(this.state.strict&&(h.reservedWords.strictBind(e.name)||h.reservedWords.strict(e.name))&&this.raise(e.start,(t?"Binding ":"Assigning to ")+e.name+" in strict mode"),r){var i="_"+e.name;r[i]?this.raise(e.start,"Argument name clash in strict mode"):r[i]=!0}break;case"MemberExpression":t&&this.raise(e.start,(t?"Binding":"Assigning to")+" member expression");break;case"ObjectPattern":var n=!0,s=!1,a=void 0;try{for(var o,u=(0,l.default)(e.properties);!(n=(o=u.next()).done);n=!0){var p=o.value;"ObjectProperty"===p.type&&(p=p.value),this.checkLVal(p,t,r)}}catch(e){s=!0,a=e}finally{try{!n&&u.return&&u.return()}finally{if(s)throw a}}break;case"ArrayPattern":var c=!0,f=!1,d=void 0;try{for(var y,v=(0,l.default)(e.elements);!(c=(y=v.next()).done);c=!0){var m=y.value;m&&this.checkLVal(m,t,r)}}catch(e){f=!0,d=e}finally{try{!c&&v.return&&v.return()}finally{if(f)throw d}}break;case"AssignmentPattern":this.checkLVal(e.left,t,r);break;case"RestProperty":case"RestElement":this.checkLVal(e.argument,t,r);break;default:this.raise(e.start,(t?"Binding":"Assigning to")+" rvalue")}}},function(e,t,r,i,n,s,a){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function u(e,t,r,i){return e.type=t,e.end=r,e.loc.end=i,this.processComment(e),e}var l=r(i),p=o(l),c=r(n),f=o(c),h=r(s),d=o(h),y=r(a),v=d.default.prototype,m=["leadingComments","trailingComments","innerComments"],g=function(){function e(t,r,i){(0,p.default)(this,e),this.type="",this.start=t,this.end=0,this.loc=new y.SourceLocation(r),i&&(this.loc.filename=i)}return(0,f.default)(e,[{key:"__clone",value:function(){var t=new e;for(var r in this)m.indexOf(r)<0&&(t[r]=this[r]);return t}}]),e}();v.startNode=function(){return new g(this.state.start,this.state.startLoc,this.filename)},v.startNodeAt=function(e,t){return new g(e,t,this.filename)},v.finishNode=function(e,t){return u.call(this,e,t,this.state.lastTokEnd,this.state.lastTokEndLoc)},v.finishNodeAt=function(e,t,r,i){return u.call(this,e,t,r,i)}},function(e,t,r,i,n,s,a,o){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=r(a),y=u(d),v=r(o),m=y.default.prototype;m.parseTopLevel=function(e,t){return t.sourceType=this.options.sourceType,this.parseBlockBody(t,!0,!0,h.types.eof),e.program=this.finishNode(t,"Program"),e.comments=this.state.comments,e.tokens=this.state.tokens,this.finishNode(e,"File")};var g={kind:"loop"},b={kind:"switch"};m.stmtToDirective=function(e){var t=e.expression,r=this.startNodeAt(t.start,t.loc.start),i=this.startNodeAt(e.start,e.loc.start),n=this.input.slice(t.start,t.end),s=r.value=n.slice(1,-1);return this.addExtra(r,"raw",n),this.addExtra(r,"rawValue",s),i.value=this.finishNodeAt(r,"DirectiveLiteral",t.end,t.loc.end),this.finishNodeAt(i,"Directive",e.end,e.loc.end)},m.parseStatement=function(e,t){this.match(h.types.at)&&this.parseDecorators(!0);var r=this.state.type,i=this.startNode();switch(r){case h.types._break:case h.types._continue:return this.parseBreakContinueStatement(i,r.keyword);case h.types._debugger:return this.parseDebuggerStatement(i);case h.types._do:return this.parseDoStatement(i);case h.types._for:return this.parseForStatement(i);case h.types._function:return e||this.unexpected(),this.parseFunctionStatement(i);case h.types._class:return e||this.unexpected(),this.takeDecorators(i),this.parseClass(i,!0);case h.types._if:return this.parseIfStatement(i);case h.types._return:return this.parseReturnStatement(i);case h.types._switch:return this.parseSwitchStatement(i);case h.types._throw:return this.parseThrowStatement(i);case h.types._try:return this.parseTryStatement(i);case h.types._let:case h.types._const:e||this.unexpected();case h.types._var:return this.parseVarStatement(i,r);case h.types._while:return this.parseWhileStatement(i);case h.types._with:return this.parseWithStatement(i);case h.types.braceL:return this.parseBlock();case h.types.semi:return this.parseEmptyStatement(i);case h.types._export:case h.types._import:return this.options.allowImportExportEverywhere||(t||this.raise(this.state.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.state.start,"'import' and 'export' may appear only with 'sourceType: module'")),r===h.types._import?this.parseImport(i):this.parseExport(i);case h.types.name:if("async"===this.state.value){var n=this.state.clone();if(this.next(),this.match(h.types._function)&&!this.canInsertSemicolon())return this.expect(h.types._function),this.parseFunction(i,!0,!1,!0);this.state=n}}var s=this.state.value,a=this.parseExpression();return r===h.types.name&&"Identifier"===a.type&&this.eat(h.types.colon)?this.parseLabeledStatement(i,s,a):this.parseExpressionStatement(i,a)},m.takeDecorators=function(e){this.state.decorators.length&&(e.decorators=this.state.decorators,this.state.decorators=[])},m.parseDecorators=function(e){for(;this.match(h.types.at);)this.state.decorators.push(this.parseDecorator());e&&this.match(h.types._export)||this.match(h.types._class)||this.raise(this.state.start,"Leading decorators must be attached to a class declaration")},m.parseDecorator=function(){this.hasPlugin("decorators")||this.unexpected();var e=this.startNode();return this.next(),e.expression=this.parseMaybeAssign(),this.finishNode(e,"Decorator")},m.parseBreakContinueStatement=function(e,t){var r="break"===t;this.next(),this.isLineTerminator()?e.label=null:this.match(h.types.name)?(e.label=this.parseIdentifier(),this.semicolon()):this.unexpected();var i=void 0;for(i=0;i<this.state.labels.length;++i){var n=this.state.labels[i];if(null==e.label||n.name===e.label.name){if(null!=n.kind&&(r||"loop"===n.kind))break;if(e.label&&r)break}}return i===this.state.labels.length&&this.raise(e.start,"Unsyntactic "+t),this.finishNode(e,r?"BreakStatement":"ContinueStatement")},m.parseDebuggerStatement=function(e){return this.next(),this.semicolon(),this.finishNode(e,"DebuggerStatement")},m.parseDoStatement=function(e){return this.next(),this.state.labels.push(g),e.body=this.parseStatement(!1),this.state.labels.pop(),this.expect(h.types._while),e.test=this.parseParenExpression(),this.eat(h.types.semi),this.finishNode(e,"DoWhileStatement")},m.parseForStatement=function(e){this.next(),this.state.labels.push(g);var t=!1;if(this.hasPlugin("asyncGenerators")&&this.state.inAsync&&this.isContextual("await")&&(t=!0,this.next()),this.expect(h.types.parenL),this.match(h.types.semi))return t&&this.unexpected(),this.parseFor(e,null);if(this.match(h.types._var)||this.match(h.types._let)||this.match(h.types._const)){var r=this.startNode(),i=this.state.type;return this.next(),this.parseVar(r,!0,i),this.finishNode(r,"VariableDeclaration"),!this.match(h.types._in)&&!this.isContextual("of")||1!==r.declarations.length||r.declarations[0].init?(t&&this.unexpected(),this.parseFor(e,r)):this.parseForIn(e,r,t)}var n={start:0},s=this.parseExpression(!0,n);return this.match(h.types._in)||this.isContextual("of")?(this.toAssignable(s),this.checkLVal(s),this.parseForIn(e,s,t)):(n.start&&this.unexpected(n.start),t&&this.unexpected(),this.parseFor(e,s))},m.parseFunctionStatement=function(e){return this.next(),this.parseFunction(e,!0)},m.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(!1),e.alternate=this.eat(h.types._else)?this.parseStatement(!1):null,this.finishNode(e,"IfStatement")},m.parseReturnStatement=function(e){return this.state.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.state.start,"'return' outside of function"),this.next(),this.isLineTerminator()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},m.parseSwitchStatement=function(e){this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(h.types.braceL),this.state.labels.push(b);for(var t,r=void 0;!this.match(h.types.braceR);)if(this.match(h.types._case)||this.match(h.types._default)){var i=this.match(h.types._case);r&&this.finishNode(r,"SwitchCase"),e.cases.push(r=this.startNode()),r.consequent=[],this.next(),i?r.test=this.parseExpression():(t&&this.raise(this.state.lastTokStart,"Multiple default clauses"),t=!0,r.test=null),this.expect(h.types.colon)}else r?r.consequent.push(this.parseStatement(!0)):this.unexpected();return r&&this.finishNode(r,"SwitchCase"),this.next(),this.state.labels.pop(),this.finishNode(e,"SwitchStatement")},m.parseThrowStatement=function(e){return this.next(),v.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start))&&this.raise(this.state.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var x=[];m.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.match(h.types._catch)){var t=this.startNode();this.next(),this.expect(h.types.parenL),t.param=this.parseBindingAtom(),this.checkLVal(t.param,!0,(0,f.default)(null)),this.expect(h.types.parenR),t.body=this.parseBlock(),e.handler=this.finishNode(t,"CatchClause")}return e.guardedHandlers=x,e.finalizer=this.eat(h.types._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},m.parseVarStatement=function(e,t){return this.next(),this.parseVar(e,!1,t),this.semicolon(),this.finishNode(e,"VariableDeclaration")},m.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.state.labels.push(g),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"WhileStatement")},m.parseWithStatement=function(e){return this.state.strict&&this.raise(this.state.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(!1),this.finishNode(e,"WithStatement")},m.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},m.parseLabeledStatement=function(e,t,r){var i=!0,n=!1,s=void 0;try{for(var a,o=(0,p.default)(this.state.labels);!(i=(a=o.next()).done);i=!0){var u=a.value;u.name===t&&this.raise(r.start,"Label '"+t+"' is already declared")}}catch(e){n=!0,s=e}finally{try{!i&&o.return&&o.return()}finally{if(n)throw s}}for(var l=this.state.type.isLoop?"loop":this.match(h.types._switch)?"switch":null,c=this.state.labels.length-1;c>=0;c--){var f=this.state.labels[c];if(f.statementStart!==e.start)break;f.statementStart=this.state.start,f.kind=l}return this.state.labels.push({name:t,kind:l,statementStart:this.state.start}),e.body=this.parseStatement(!0),this.state.labels.pop(),e.label=r,this.finishNode(e,"LabeledStatement")},m.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},m.parseBlock=function(e){var t=this.startNode();return this.expect(h.types.braceL),this.parseBlockBody(t,e,!1,h.types.braceR),this.finishNode(t,"BlockStatement")},m.parseBlockBody=function(e,t,r,i){e.body=[],e.directives=[];for(var n=!1,s=void 0,a=void 0;!this.eat(i);){n||!this.state.containsOctal||a||(a=this.state.octalPosition);var o=this.parseStatement(!0,r);if(!t||n||"ExpressionStatement"!==o.type||"StringLiteral"!==o.expression.type||o.expression.extra.parenthesized)n=!0,e.body.push(o);else{var u=this.stmtToDirective(o);e.directives.push(u),void 0===s&&"use strict"===u.value.value&&(s=this.state.strict,this.setStrict(!0),a&&this.raise(a,"Octal literal in strict mode"))}}s===!1&&this.setStrict(!1)},m.parseFor=function(e,t){return e.init=t,this.expect(h.types.semi),e.test=this.match(h.types.semi)?null:this.parseExpression(),this.expect(h.types.semi),e.update=this.match(h.types.parenR)?null:this.parseExpression(),this.expect(h.types.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"ForStatement")},m.parseForIn=function(e,t,r){var i=void 0;return r?(this.eatContextual("of"),i="ForAwaitStatement"):(i=this.match(h.types._in)?"ForInStatement":"ForOfStatement",this.next()),e.left=t,e.right=this.parseExpression(),this.expect(h.types.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,i)},m.parseVar=function(e,t,r){for(e.declarations=[],e.kind=r.keyword;;){var i=this.startNode();if(this.parseVarHead(i),this.eat(h.types.eq)?i.init=this.parseMaybeAssign(t):r!==h.types._const||this.match(h.types._in)||this.isContextual("of")?"Identifier"===i.id.type||t&&(this.match(h.types._in)||this.isContextual("of"))?i.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(i,"VariableDeclarator")),!this.eat(h.types.comma))break}return e},m.parseVarHead=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0)},m.parseFunction=function(e,t,r,i,n){var s=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(e,i),this.match(h.types.star)&&(e.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(e.generator=!0,this.next())),!t||n||this.match(h.types.name)||this.match(h.types._yield)||this.unexpected(),(this.match(h.types.name)||this.match(h.types._yield))&&(e.id=this.parseBindingIdentifier()),this.parseFunctionParams(e),this.parseFunctionBody(e,r),this.state.inMethod=s,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},m.parseFunctionParams=function(e){this.expect(h.types.parenL),e.params=this.parseBindingList(h.types.parenR)},m.parseClass=function(e,t,r){return this.next(),this.parseClassId(e,t,r),this.parseClassSuper(e),this.parseClassBody(e),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},m.isClassProperty=function(){return this.match(h.types.eq)||this.isLineTerminator()},m.isClassMutatorStarter=function(){return!1},m.parseClassBody=function(e){var t=this.state.strict;this.state.strict=!0;var r=!1,i=!1,n=[],s=this.startNode();for(s.body=[],this.expect(h.types.braceL);!this.eat(h.types.braceR);)if(!this.eat(h.types.semi))if(this.match(h.types.at))n.push(this.parseDecorator());else{var a=this.startNode();n.length&&(a.decorators=n,n=[]);var o=!1,u=this.match(h.types.name)&&"static"===this.state.value,l=this.eat(h.types.star),p=!1,c=!1;if(this.parsePropertyName(a),a.static=u&&!this.match(h.types.parenL),a.static&&(l&&this.unexpected(),l=this.eat(h.types.star),this.parsePropertyName(a)),!l&&"Identifier"===a.key.type&&!a.computed){if(this.isClassProperty()){s.body.push(this.parseClassProperty(a));continue}this.hasPlugin("classConstructorCall")&&"call"===a.key.name&&this.match(h.types.name)&&"constructor"===this.state.value&&(o=!0,this.parsePropertyName(a))}var f=!this.match(h.types.parenL)&&!a.computed&&"Identifier"===a.key.type&&"async"===a.key.name;if(f&&(this.hasPlugin("asyncGenerators")&&this.eat(h.types.star)&&(l=!0),c=!0,this.parsePropertyName(a)),a.kind="method",!a.computed){var d=a.key;c||l||this.isClassMutatorStarter()||"Identifier"!==d.type||this.match(h.types.parenL)||"get"!==d.name&&"set"!==d.name||(p=!0,a.kind=d.name,d=this.parsePropertyName(a));var y=!o&&!a.static&&("Identifier"===d.type&&"constructor"===d.name||"StringLiteral"===d.type&&"constructor"===d.value);y&&(i&&this.raise(d.start,"Duplicate constructor in the same class"),p&&this.raise(d.start,"Constructor can't have get/set modifier"),l&&this.raise(d.start,"Constructor can't be a generator"),c&&this.raise(d.start,"Constructor can't be an async function"),a.kind="constructor",i=!0);var v=a.static&&("Identifier"===d.type&&"prototype"===d.name||"StringLiteral"===d.type&&"prototype"===d.value);v&&this.raise(d.start,"Classes may not have static property named prototype")}if(o&&(r&&this.raise(a.start,"Duplicate constructor call in the same class"),a.kind="constructorCall",r=!0),"constructor"!==a.kind&&"constructorCall"!==a.kind||!a.decorators||this.raise(a.start,"You can't attach decorators to a class constructor"),this.parseClassMethod(s,a,l,c),p){var m="get"===a.kind?0:1;if(a.params.length!==m){var g=a.start;"get"===a.kind?this.raise(g,"getter should have no params"):this.raise(g,"setter should have exactly one param")}}}n.length&&this.raise(this.state.start,"You have trailing decorators with no method"),e.body=this.finishNode(s,"ClassBody"),this.state.strict=t},m.parseClassProperty=function(e){return this.match(h.types.eq)?(this.hasPlugin("classProperties")||this.unexpected(),this.next(),e.value=this.parseMaybeAssign()):e.value=null,this.semicolon(),this.finishNode(e,"ClassProperty")},m.parseClassMethod=function(e,t,r,i){this.parseMethod(t,r,i),e.body.push(this.finishNode(t,"ClassMethod"))},m.parseClassId=function(e,t,r){this.match(h.types.name)?e.id=this.parseIdentifier():r||!t?e.id=null:this.unexpected()},m.parseClassSuper=function(e){e.superClass=this.eat(h.types._extends)?this.parseExprSubscripts():null},m.parseExport=function(e){if(this.next(),this.match(h.types.star)){var t=this.startNode();if(this.next(),!this.hasPlugin("exportExtensions")||!this.eatContextual("as"))return this.parseExportFrom(e,!0),this.finishNode(e,"ExportAllDeclaration");t.exported=this.parseIdentifier(),e.specifiers=[this.finishNode(t,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(e),this.parseExportFrom(e,!0)}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var r=this.startNode();if(r.exported=this.parseIdentifier(!0),e.specifiers=[this.finishNode(r,"ExportDefaultSpecifier")],this.match(h.types.comma)&&this.lookahead().type===h.types.star){this.expect(h.types.comma);var i=this.startNode();this.expect(h.types.star),this.expectContextual("as"),i.exported=this.parseIdentifier(),e.specifiers.push(this.finishNode(i,"ExportNamespaceSpecifier"))}else this.parseExportSpecifiersMaybe(e);this.parseExportFrom(e,!0)}else{if(this.eat(h.types._default)){var n=this.startNode(),s=!1;return this.eat(h.types._function)?n=this.parseFunction(n,!0,!1,!1,!0):this.match(h.types._class)?n=this.parseClass(n,!0,!0):(s=!0,n=this.parseMaybeAssign()),e.declaration=n,s&&this.semicolon(),this.checkExport(e),this.finishNode(e,"ExportDefaultDeclaration")}this.state.type.keyword||this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,e.declaration=this.parseExportDeclaration(e)):(e.declaration=null,e.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(e))}return this.checkExport(e),this.finishNode(e,"ExportNamedDeclaration")},m.parseExportDeclaration=function(){return this.parseStatement(!0)},m.isExportDefaultSpecifier=function(){if(this.match(h.types.name))return"type"!==this.state.value&&"async"!==this.state.value&&"interface"!==this.state.value;if(!this.match(h.types._default))return!1;var e=this.lookahead();return e.type===h.types.comma||e.type===h.types.name&&"from"===e.value},m.parseExportSpecifiersMaybe=function(e){this.eat(h.types.comma)&&(e.specifiers=e.specifiers.concat(this.parseExportSpecifiers()))},m.parseExportFrom=function(e,t){this.eatContextual("from")?(e.source=this.match(h.types.string)?this.parseExprAtom():this.unexpected(),this.checkExport(e)):t?this.unexpected():e.source=null,this.semicolon()},m.shouldParseExportDeclaration=function(){return this.isContextual("async")},m.checkExport=function(e){if(this.state.decorators.length){var t=e.declaration&&("ClassDeclaration"===e.declaration.type||"ClassExpression"===e.declaration.type);e.declaration&&t||this.raise(e.start,"You can only use decorators on an export when exporting a class"),this.takeDecorators(e.declaration)}},m.parseExportSpecifiers=function(){var e=[],t=!0,r=void 0;for(this.expect(h.types.braceL);!this.eat(h.types.braceR);){if(t)t=!1;else if(this.expect(h.types.comma),this.eat(h.types.braceR))break;var i=this.match(h.types._default);i&&!r&&(r=!0);var n=this.startNode();n.local=this.parseIdentifier(i),n.exported=this.eatContextual("as")?this.parseIdentifier(!0):n.local.__clone(),e.push(this.finishNode(n,"ExportSpecifier"))}return r&&!this.isContextual("from")&&this.unexpected(),e},m.parseImport=function(e){return this.next(),this.match(h.types.string)?(e.specifiers=[],e.source=this.parseExprAtom()):(e.specifiers=[],this.parseImportSpecifiers(e),this.expectContextual("from"),e.source=this.match(h.types.string)?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},m.parseImportSpecifiers=function(e){var t=!0;if(this.match(h.types.name)){var r=this.state.start,i=this.state.startLoc;if(e.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(),r,i)),!this.eat(h.types.comma))return}if(this.match(h.types.star)){var n=this.startNode();return this.next(),this.expectContextual("as"),n.local=this.parseIdentifier(),this.checkLVal(n.local,!0),void e.specifiers.push(this.finishNode(n,"ImportNamespaceSpecifier"))}for(this.expect(h.types.braceL);!this.eat(h.types.braceR);){if(t)t=!1;else if(this.expect(h.types.comma),this.eat(h.types.braceR))break;var s=this.startNode();s.imported=this.parseIdentifier(!0),s.local=this.eatContextual("as")?this.parseIdentifier():s.imported.__clone(),this.checkLVal(s.local,!0),e.specifiers.push(this.finishNode(s,"ImportSpecifier"))}},m.parseImportSpecifierDefault=function(e,t,r){var i=this.startNodeAt(t,r);return i.local=e,this.checkLVal(i.local,!0),this.finishNode(i,"ImportDefaultSpecifier")}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}var o=r(i),u=r(n),l=a(u),p=r(s),c=l.default.prototype;c.addExtra=function(e,t,r){if(e){var i=e.extra=e.extra||{};i[t]=r}},c.isRelational=function(e){return this.match(o.types.relational)&&this.state.value===e},c.expectRelational=function(e){this.isRelational(e)?this.next():this.unexpected()},c.isContextual=function(e){return this.match(o.types.name)&&this.state.value===e},c.eatContextual=function(e){return this.state.value===e&&this.eat(o.types.name)},c.expectContextual=function(e,t){this.eatContextual(e)||this.unexpected(null,t)},c.canInsertSemicolon=function(){return this.match(o.types.eof)||this.match(o.types.braceR)||p.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start))},c.isLineTerminator=function(){return this.eat(o.types.semi)||this.canInsertSemicolon()},c.semicolon=function(){this.isLineTerminator()||this.unexpected()},c.expect=function(e,t){return this.eat(e)||this.unexpected(t)},c.unexpected=function(e){var t=arguments.length<=1||void 0===arguments[1]?"Unexpected token":arguments[1];this.raise(null!=e?e:this.state.start,t)}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.extend("parseFunctionBody",function(e){return function(t,r){return this.match(o.types.colon)&&!r&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("parseStatement",function(e){return function(t,r){if(this.state.strict&&this.match(o.types.name)&&"interface"===this.state.value){var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t,r)}}),e.extend("parseExpressionStatement",function(e){return function(t,r){if("Identifier"===r.type)if("declare"===r.name){if(this.match(o.types._class)||this.match(o.types.name)||this.match(o.types._function)||this.match(o.types._var))return this.flowParseDeclare(t)}else if(this.match(o.types.name)){if("interface"===r.name)return this.flowParseInterface(t);if("type"===r.name)return this.flowParseTypeAlias(t)}return e.call(this,t,r)}}),e.extend("shouldParseExportDeclaration",function(e){return function(){return this.isContextual("type")||this.isContextual("interface")||e.call(this)}}),e.extend("parseConditional",function(e){return function(t,r,i,n,s){if(s&&this.match(o.types.question)){
+var a=this.state.clone();try{return e.call(this,t,r,i,n)}catch(e){if(e instanceof SyntaxError)return this.state=a,s.start=e.pos||this.state.start,t;throw e}}return e.call(this,t,r,i,n)}}),e.extend("parseParenItem",function(e){return function(t,r,i){if(t=e.call(this,t,r,i),this.eat(o.types.question)&&(t.optional=!0),this.match(o.types.colon)){var n=this.startNodeAt(r,i);return n.expression=t,n.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(n,"TypeCastExpression")}return t}}),e.extend("parseExport",function(e){return function(t){return t=e.call(this,t),"ExportNamedDeclaration"===t.type&&(t.exportKind=t.exportKind||"value"),t}}),e.extend("parseExportDeclaration",function(e){return function(t){if(this.isContextual("type")){t.exportKind="type";var r=this.startNode();return this.next(),this.match(o.types.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(r)}if(this.isContextual("interface")){t.exportKind="type";var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t)}}),e.extend("parseClassId",function(e){return function(t){e.apply(this,arguments),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}}),e.extend("isKeyword",function(e){return function(t){return(!this.state.inType||"void"!==t)&&e.call(this,t)}}),e.extend("readToken",function(e){return function(t){return!this.state.inType||62!==t&&60!==t?e.call(this,t):this.finishOp(o.types.relational,1)}}),e.extend("jsx_readToken",function(e){return function(){if(!this.state.inType)return e.call(this)}}),e.extend("toAssignable",function(e){return function(t,r){return"TypeCastExpression"===t.type?e.call(this,this.typeCastToParameter(t),r):e.call(this,t,r)}}),e.extend("toAssignableList",function(e){return function(t,r){for(var i=0;i<t.length;i++){var n=t[i];n&&"TypeCastExpression"===n.type&&(t[i]=this.typeCastToParameter(n))}return e.call(this,t,r)}}),e.extend("toReferencedList",function(){return function(e){for(var t=0;t<e.length;t++){var r=e[t];r&&r._exprListItem&&"TypeCastExpression"===r.type&&this.raise(r.start,"Unexpected type cast")}return e}}),e.extend("parseExprListItem",function(e){return function(t,r){var i=this.startNode(),n=e.call(this,t,r);return this.match(o.types.colon)?(i._exprListItem=!0,i.expression=n,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")):n}}),e.extend("checkLVal",function(e){return function(t){if("TypeCastExpression"!==t.type)return e.apply(this,arguments)}}),e.extend("parseClassProperty",function(e){return function(t){return this.match(o.types.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),e.call(this,t)}}),e.extend("isClassProperty",function(e){return function(){return this.match(o.types.colon)||e.call(this)}}),e.extend("parseClassMethod",function(){return function(e,t,r,i){this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.parseMethod(t,r,i),e.body.push(this.finishNode(t,"ClassMethod"))}}),e.extend("parseClassSuper",function(e){return function(t,r){if(e.call(this,t,r),t.superClass&&this.isRelational("<")&&(t.superTypeParameters=this.flowParseTypeParameterInstantiation()),this.isContextual("implements")){this.next();var i=t.implements=[];do{var n=this.startNode();n.id=this.parseIdentifier(),this.isRelational("<")?n.typeParameters=this.flowParseTypeParameterInstantiation():n.typeParameters=null,i.push(this.finishNode(n,"ClassImplements"))}while(this.eat(o.types.comma))}}}),e.extend("parseObjPropValue",function(e){return function(t){var r=void 0;this.isRelational("<")&&(r=this.flowParseTypeParameterDeclaration(),this.match(o.types.parenL)||this.unexpected()),e.apply(this,arguments),r&&((t.value||t).typeParameters=r)}}),e.extend("parseAssignableListItemTypes",function(){return function(e){return this.eat(o.types.question)&&(e.optional=!0),this.match(o.types.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),this.finishNode(e,e.type),e}}),e.extend("parseImportSpecifiers",function(e){return function(t){t.importKind="value";var r=null;if(this.match(o.types._typeof)?r="typeof":this.isContextual("type")&&(r="type"),r){var i=this.lookahead();(i.type===o.types.name&&"from"!==i.value||i.type===o.types.braceL||i.type===o.types.star)&&(this.next(),t.importKind=r)}e.call(this,t)}}),e.extend("parseFunctionParams",function(e){return function(t){this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),e.call(this,t)}}),e.extend("parseVarHead",function(e){return function(t){e.call(this,t),this.match(o.types.colon)&&(t.id.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(t.id,t.id.type))}}),e.extend("parseAsyncArrowFromCallExpression",function(e){return function(t,r){return this.match(o.types.colon)&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("shouldParseAsyncArrow",function(e){return function(){return this.match(o.types.colon)||e.call(this)}}),e.extend("parseMaybeAssign",function(e){return function(){for(var t=null,r=arguments.length,i=Array(r),n=0;n<r;n++)i[n]=arguments[n];if(o.types.jsxTagStart&&this.match(o.types.jsxTagStart)){var s=this.state.clone();try{return e.apply(this,i)}catch(e){if(!(e instanceof SyntaxError))throw e;this.state=s,t=e}}if(this.state.context.push(u.types.parenExpression),null!=t||this.isRelational("<")){var a=void 0,l=void 0;try{l=this.flowParseTypeParameterDeclaration(),a=e.apply(this,i),a.typeParameters=l}catch(e){throw t||e}if("ArrowFunctionExpression"===a.type)return a;if(null!=t)throw t;this.raise(l.start,"Expected an arrow function after this type parameter declaration")}return this.state.context.pop(),e.apply(this,i)}}),e.extend("parseArrow",function(e){return function(t){if(this.match(o.types.colon)){var r=this.state.clone();try{var i=this.flowParseTypeAnnotation();this.match(o.types.arrow)||this.unexpected(),t.returnType=i}catch(e){if(!(e instanceof SyntaxError))throw e;this.state=r}}return e.call(this,t)}}),e.extend("isClassMutatorStarter",function(e){return function(){return!!this.isRelational("<")||e.call(this)}})};var o=r(i),u=r(n),l=r(s),p=a(l),c=p.default.prototype;c.flowParseTypeInitialiser=function(e,t){var r=this.state.inType;this.state.inType=!0,this.expect(e||o.types.colon),t&&(this.match(o.types.bitwiseAND)||this.match(o.types.bitwiseOR))&&this.next();var i=this.flowParseType();return this.state.inType=r,i},c.flowParseDeclareClass=function(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")},c.flowParseDeclareFunction=function(e){this.next();var t=e.id=this.parseIdentifier(),r=this.startNode(),i=this.startNode();this.isRelational("<")?r.typeParameters=this.flowParseTypeParameterDeclaration():r.typeParameters=null,this.expect(o.types.parenL);var n=this.flowParseFunctionTypeParams();return r.params=n.params,r.rest=n.rest,this.expect(o.types.parenR),r.returnType=this.flowParseTypeInitialiser(),i.typeAnnotation=this.finishNode(r,"FunctionTypeAnnotation"),t.typeAnnotation=this.finishNode(i,"TypeAnnotation"),this.finishNode(t,t.type),this.semicolon(),this.finishNode(e,"DeclareFunction")},c.flowParseDeclare=function(e){return this.match(o.types._class)?this.flowParseDeclareClass(e):this.match(o.types._function)?this.flowParseDeclareFunction(e):this.match(o.types._var)?this.flowParseDeclareVariable(e):this.isContextual("module")?this.lookahead().type===o.types.dot?this.flowParseDeclareModuleExports(e):this.flowParseDeclareModule(e):this.isContextual("type")?this.flowParseDeclareTypeAlias(e):this.isContextual("interface")?this.flowParseDeclareInterface(e):void this.unexpected()},c.flowParseDeclareVariable=function(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(e,"DeclareVariable")},c.flowParseDeclareModule=function(e){this.next(),this.match(o.types.string)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();var t=e.body=this.startNode(),r=t.body=[];for(this.expect(o.types.braceL);!this.match(o.types.braceR);){var i=this.startNode();this.expectContextual("declare","Unexpected token. Only declares are allowed inside declare module"),r.push(this.flowParseDeclare(i))}return this.expect(o.types.braceR),this.finishNode(t,"BlockStatement"),this.finishNode(e,"DeclareModule")},c.flowParseDeclareModuleExports=function(e){return this.expectContextual("module"),this.expect(o.types.dot),this.expectContextual("exports"),e.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(e,"DeclareModuleExports")},c.flowParseDeclareTypeAlias=function(e){return this.next(),this.flowParseTypeAlias(e),this.finishNode(e,"DeclareTypeAlias")},c.flowParseDeclareInterface=function(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")},c.flowParseInterfaceish=function(e,t){if(e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.mixins=[],this.eat(o.types._extends))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(o.types.comma));if(this.isContextual("mixins")){this.next();do e.mixins.push(this.flowParseInterfaceExtends());while(this.eat(o.types.comma))}e.body=this.flowParseObjectType(t)},c.flowParseInterfaceExtends=function(){var e=this.startNode();return e.id=this.flowParseQualifiedTypeIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")},c.flowParseInterface=function(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,"InterfaceDeclaration")},c.flowParseTypeAlias=function(e){return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(o.types.eq,!0),this.semicolon(),this.finishNode(e,"TypeAlias")},c.flowParseTypeParameter=function(){var e=this.startNode(),t=void 0;this.match(o.types.plusMin)&&("+"===this.state.value?t="plus":"-"===this.state.value&&(t="minus"),this.eat(o.types.plusMin));var r=this.flowParseTypeAnnotatableIdentifier(!1,!1);return e.name=r.name,e.variance=t,e.bound=r.typeAnnotation,this.match(o.types.eq)&&(this.eat(o.types.eq),e.default=this.flowParseType()),this.finishNode(e,"TypeParameter")},c.flowParseTypeParameterDeclaration=function(){var e=this.state.inType,t=this.startNode();t.params=[],this.state.inType=!0,this.isRelational("<")||this.match(o.types.jsxTagStart)?this.next():this.unexpected();do t.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(o.types.comma);while(!this.isRelational(">"));return this.expectRelational(">"),this.state.inType=e,this.finishNode(t,"TypeParameterDeclaration")},c.flowParseTypeParameterInstantiation=function(){var e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseType()),this.isRelational(">")||this.expect(o.types.comma);return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterInstantiation")},c.flowParseObjectPropertyKey=function(){return this.match(o.types.num)||this.match(o.types.string)?this.parseExprAtom():this.parseIdentifier(!0)},c.flowParseObjectTypeIndexer=function(e,t){return e.static=t,this.expect(o.types.bracketL),e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser(),this.expect(o.types.bracketR),e.value=this.flowParseTypeInitialiser(),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeIndexer")},c.flowParseObjectTypeMethodish=function(e){for(e.params=[],e.rest=null,e.typeParameters=null,this.isRelational("<")&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(o.types.parenL);this.match(o.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(o.types.parenR)||this.expect(o.types.comma);return this.eat(o.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),this.expect(o.types.parenR),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")},c.flowParseObjectTypeMethod=function(e,t,r,i){var n=this.startNodeAt(e,t);return n.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e,t)),n.static=r,n.key=i,n.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(n,"ObjectTypeProperty")},c.flowParseObjectTypeCallProperty=function(e,t){var r=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(r),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeCallProperty")},c.flowParseObjectType=function(e){var t=this.startNode(),r=void 0,i=void 0,n=void 0;for(t.callProperties=[],t.properties=[],t.indexers=[],this.expect(o.types.braceL);!this.match(o.types.braceR);){var s=!1,a=this.state.start,u=this.state.startLoc;r=this.startNode(),e&&this.isContextual("static")&&(this.next(),n=!0),this.match(o.types.bracketL)?t.indexers.push(this.flowParseObjectTypeIndexer(r,n)):this.match(o.types.parenL)||this.isRelational("<")?t.callProperties.push(this.flowParseObjectTypeCallProperty(r,e)):(i=n&&this.match(o.types.colon)?this.parseIdentifier():this.flowParseObjectPropertyKey(),this.isRelational("<")||this.match(o.types.parenL)?t.properties.push(this.flowParseObjectTypeMethod(a,u,n,i)):(this.eat(o.types.question)&&(s=!0),r.key=i,r.value=this.flowParseTypeInitialiser(),r.optional=s,r.static=n,this.flowObjectTypeSemicolon(),t.properties.push(this.finishNode(r,"ObjectTypeProperty"))))}return this.expect(o.types.braceR),this.finishNode(t,"ObjectTypeAnnotation")},c.flowObjectTypeSemicolon=function(){this.eat(o.types.semi)||this.eat(o.types.comma)||this.match(o.types.braceR)||this.unexpected()},c.flowParseQualifiedTypeIdentifier=function(e,t,r){e=e||this.state.start,t=t||this.state.startLoc;for(var i=r||this.parseIdentifier();this.eat(o.types.dot);){var n=this.startNodeAt(e,t);n.qualification=i,n.id=this.parseIdentifier(),i=this.finishNode(n,"QualifiedTypeIdentifier")}return i},c.flowParseGenericType=function(e,t,r){var i=this.startNodeAt(e,t);return i.typeParameters=null,i.id=this.flowParseQualifiedTypeIdentifier(e,t,r),this.isRelational("<")&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")},c.flowParseTypeofType=function(){var e=this.startNode();return this.expect(o.types._typeof),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")},c.flowParseTupleType=function(){var e=this.startNode();for(e.types=[],this.expect(o.types.bracketL);this.state.pos<this.input.length&&!this.match(o.types.bracketR)&&(e.types.push(this.flowParseType()),!this.match(o.types.bracketR));)this.expect(o.types.comma);return this.expect(o.types.bracketR),this.finishNode(e,"TupleTypeAnnotation")},c.flowParseFunctionTypeParam=function(){var e=!1,t=this.startNode();return t.name=this.parseIdentifier(),this.eat(o.types.question)&&(e=!0),t.optional=e,t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeParam")},c.flowParseFunctionTypeParams=function(){for(var e={params:[],rest:null};this.match(o.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(o.types.parenR)||this.expect(o.types.comma);return this.eat(o.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),e},c.flowIdentToTypeAnnotation=function(e,t,r,i){switch(i.name){case"any":return this.finishNode(r,"AnyTypeAnnotation");case"void":return this.finishNode(r,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(r,"BooleanTypeAnnotation");case"mixed":return this.finishNode(r,"MixedTypeAnnotation");case"number":return this.finishNode(r,"NumberTypeAnnotation");case"string":return this.finishNode(r,"StringTypeAnnotation");default:return this.flowParseGenericType(e,t,i)}},c.flowParsePrimaryType=function(){var e=this.state.start,t=this.state.startLoc,r=this.startNode(),i=void 0,n=void 0,s=!1;switch(this.state.type){case o.types.name:return this.flowIdentToTypeAnnotation(e,t,r,this.parseIdentifier());case o.types.braceL:return this.flowParseObjectType();case o.types.bracketL:return this.flowParseTupleType();case o.types.relational:if("<"===this.state.value)return r.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(o.types.parenL),i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(o.types.parenR),this.expect(o.types.arrow),r.returnType=this.flowParseType(),this.finishNode(r,"FunctionTypeAnnotation");break;case o.types.parenL:if(this.next(),!this.match(o.types.parenR)&&!this.match(o.types.ellipsis))if(this.match(o.types.name)){var a=this.lookahead().type;s=a!==o.types.question&&a!==o.types.colon}else s=!0;return s?(n=this.flowParseType(),this.expect(o.types.parenR),n):(i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(o.types.parenR),this.expect(o.types.arrow),r.returnType=this.flowParseType(),r.typeParameters=null,this.finishNode(r,"FunctionTypeAnnotation"));case o.types.string:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"StringLiteralTypeAnnotation");case o.types._true:case o.types._false:return r.value=this.match(o.types._true),this.next(),this.finishNode(r,"BooleanLiteralTypeAnnotation");case o.types.plusMin:if("-"===this.state.value)return this.next(),this.match(o.types.num)||this.unexpected(),r.value=-this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"NumericLiteralTypeAnnotation");case o.types.num:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"NumericLiteralTypeAnnotation");case o.types._null:return r.value=this.match(o.types._null),this.next(),this.finishNode(r,"NullLiteralTypeAnnotation");case o.types._this:return r.value=this.match(o.types._this),this.next(),this.finishNode(r,"ThisTypeAnnotation");case o.types.star:return this.next(),this.finishNode(r,"ExistentialTypeParam");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}this.unexpected()},c.flowParsePostfixType=function(){var e=this.startNode(),t=e.elementType=this.flowParsePrimaryType();return this.match(o.types.bracketL)?(this.expect(o.types.bracketL),this.expect(o.types.bracketR),this.finishNode(e,"ArrayTypeAnnotation")):t},c.flowParsePrefixType=function(){var e=this.startNode();return this.eat(o.types.question)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()},c.flowParseIntersectionType=function(){var e=this.startNode(),t=this.flowParsePrefixType();for(e.types=[t];this.eat(o.types.bitwiseAND);)e.types.push(this.flowParsePrefixType());return 1===e.types.length?t:this.finishNode(e,"IntersectionTypeAnnotation")},c.flowParseUnionType=function(){var e=this.startNode(),t=this.flowParseIntersectionType();for(e.types=[t];this.eat(o.types.bitwiseOR);)e.types.push(this.flowParseIntersectionType());return 1===e.types.length?t:this.finishNode(e,"UnionTypeAnnotation")},c.flowParseType=function(){var e=this.state.inType;this.state.inType=!0;var t=this.flowParseUnionType();return this.state.inType=e,t},c.flowParseTypeAnnotation=function(){var e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")},c.flowParseTypeAnnotatableIdentifier=function(e,t){var r=this.parseIdentifier(),i=!1;return t&&this.eat(o.types.question)&&(this.expect(o.types.question),i=!0),(e||this.match(o.types.colon))&&(r.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(r,r.type)),i&&(r.optional=!0,this.finishNode(r,r.type)),r},c.typeCastToParameter=function(e){return e.expression.typeAnnotation=e.typeAnnotation,this.finishNodeAt(e.expression,e.expression.type,e.typeAnnotation.end,e.typeAnnotation.loc.end)}},function(e,t,r,i,n,s,a,o,u){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}function p(e){return"JSXIdentifier"===e.type?e.name:"JSXNamespacedName"===e.type?e.namespace.name+":"+e.name.name:"JSXMemberExpression"===e.type?p(e.object)+"."+p(e.property):void 0}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.extend("parseExprAtom",function(e){return function(t){if(this.match(h.types.jsxText)){var r=this.parseLiteral(this.state.value,"JSXText");return r.extra=null,r}return this.match(h.types.jsxTagStart)?this.jsxParseElement():e.call(this,t)}}),e.extend("readToken",function(e){return function(t){var r=this.curContext();if(r===d.types.j_expr)return this.jsxReadToken();if(r===d.types.j_oTag||r===d.types.j_cTag){if((0,m.isIdentifierStart)(t))return this.jsxReadWord();if(62===t)return++this.state.pos,this.finishToken(h.types.jsxTagEnd);if((34===t||39===t)&&r===d.types.j_oTag)return this.jsxReadString(t)}return 60===t&&this.state.exprAllowed?(++this.state.pos,this.finishToken(h.types.jsxTagStart)):e.call(this,t)}}),e.extend("updateContext",function(e){return function(t){if(this.match(h.types.braceL)){var r=this.curContext();r===d.types.j_oTag?this.state.context.push(d.types.braceExpression):r===d.types.j_expr?this.state.context.push(d.types.templateQuasi):e.call(this,t),this.state.exprAllowed=!0}else{if(!this.match(h.types.slash)||t!==h.types.jsxTagStart)return e.call(this,t);this.state.context.length-=2,this.state.context.push(d.types.j_cTag),this.state.exprAllowed=!1}}})};var c=r(i),f=l(c),h=r(n),d=r(s),y=r(a),v=l(y),m=r(o),g=r(u),b=/^[\da-fA-F]+$/,x=/^\d+$/;d.types.j_oTag=new d.TokContext("<tag",(!1)),d.types.j_cTag=new d.TokContext("</tag",(!1)),d.types.j_expr=new d.TokContext("<tag>...</tag>",(!0),(!0)),h.types.jsxName=new h.TokenType("jsxName"),h.types.jsxText=new h.TokenType("jsxText",{beforeExpr:!0}),h.types.jsxTagStart=new h.TokenType("jsxTagStart",{startsExpr:!0}),h.types.jsxTagEnd=new h.TokenType("jsxTagEnd"),h.types.jsxTagStart.updateContext=function(){this.state.context.push(d.types.j_expr),this.state.context.push(d.types.j_oTag),this.state.exprAllowed=!1},h.types.jsxTagEnd.updateContext=function(e){var t=this.state.context.pop();t===d.types.j_oTag&&e===h.types.slash||t===d.types.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===d.types.j_expr):this.state.exprAllowed=!0};var E=v.default.prototype;E.jsxReadToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var r=this.input.charCodeAt(this.state.pos);switch(r){case 60:case 123:return this.state.pos===this.state.start?60===r&&this.state.exprAllowed?(++this.state.pos,this.finishToken(h.types.jsxTagStart)):this.getTokenFromCode(r):(e+=this.input.slice(t,this.state.pos),this.finishToken(h.types.jsxText,e));case 38:e+=this.input.slice(t,this.state.pos),e+=this.jsxReadEntity(),t=this.state.pos;break;default:(0,g.isNewLine)(r)?(e+=this.input.slice(t,this.state.pos),e+=this.jsxReadNewLine(!0),t=this.state.pos):++this.state.pos}}},E.jsxReadNewLine=function(e){var t=this.input.charCodeAt(this.state.pos),r=void 0;return++this.state.pos,13===t&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,r=e?"\n":"\r\n"):r=String.fromCharCode(t),++this.state.curLine,this.state.lineStart=this.state.pos,r},E.jsxReadString=function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===e)break;38===i?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadEntity(),r=this.state.pos):(0,g.isNewLine)(i)?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadNewLine(!1),r=this.state.pos):++this.state.pos}return t+=this.input.slice(r,this.state.pos++),this.finishToken(h.types.string,t)},E.jsxReadEntity=function(){for(var e="",t=0,r=void 0,i=this.input[this.state.pos],n=++this.state.pos;this.state.pos<this.input.length&&t++<10;){if(i=this.input[this.state.pos++],";"===i){"#"===e[0]?"x"===e[1]?(e=e.substr(2),b.test(e)&&(r=String.fromCharCode(parseInt(e,16)))):(e=e.substr(1),x.test(e)&&(r=String.fromCharCode(parseInt(e,10)))):r=f.default[e];break}e+=i}return r?r:(this.state.pos=n,"&")},E.jsxReadWord=function(){var e=void 0,t=this.state.pos;do e=this.input.charCodeAt(++this.state.pos);while((0,m.isIdentifierChar)(e)||45===e);return this.finishToken(h.types.jsxName,this.input.slice(t,this.state.pos))},E.jsxParseIdentifier=function(){var e=this.startNode();return this.match(h.types.jsxName)?e.name=this.state.value:this.state.type.keyword?e.name=this.state.type.keyword:this.unexpected(),this.next(),this.finishNode(e,"JSXIdentifier")},E.jsxParseNamespacedName=function(){var e=this.state.start,t=this.state.startLoc,r=this.jsxParseIdentifier();if(!this.eat(h.types.colon))return r;var i=this.startNodeAt(e,t);return i.namespace=r,i.name=this.jsxParseIdentifier(),this.finishNode(i,"JSXNamespacedName")},E.jsxParseElementName=function(){for(var e=this.state.start,t=this.state.startLoc,r=this.jsxParseNamespacedName();this.eat(h.types.dot);){var i=this.startNodeAt(e,t);i.object=r,i.property=this.jsxParseIdentifier(),r=this.finishNode(i,"JSXMemberExpression")}return r},E.jsxParseAttributeValue=function(){var e=void 0;switch(this.state.type){case h.types.braceL:if(e=this.jsxParseExpressionContainer(),"JSXEmptyExpression"!==e.expression.type)return e;this.raise(e.start,"JSX attributes must only be assigned a non-empty expression");case h.types.jsxTagStart:case h.types.string:return e=this.parseExprAtom(),e.extra=null,e;default:this.raise(this.state.start,"JSX value should be either an expression or a quoted JSX text")}},E.jsxParseEmptyExpression=function(){var e=this.startNodeAt(this.lastTokEnd,this.lastTokEndLoc);return this.finishNodeAt(e,"JSXEmptyExpression",this.start,this.startLoc)},E.jsxParseSpreadChild=function(){var e=this.startNode();return this.expect(h.types.braceL),this.expect(h.types.ellipsis),e.expression=this.parseExpression(),this.expect(h.types.braceR),this.finishNode(e,"JSXSpreadChild")},E.jsxParseExpressionContainer=function(){var e=this.startNode();return this.next(),this.match(h.types.braceR)?e.expression=this.jsxParseEmptyExpression():e.expression=this.parseExpression(),this.expect(h.types.braceR),this.finishNode(e,"JSXExpressionContainer")},E.jsxParseAttribute=function(){var e=this.startNode();return this.eat(h.types.braceL)?(this.expect(h.types.ellipsis),e.argument=this.parseMaybeAssign(),this.expect(h.types.braceR),this.finishNode(e,"JSXSpreadAttribute")):(e.name=this.jsxParseNamespacedName(),e.value=this.eat(h.types.eq)?this.jsxParseAttributeValue():null,this.finishNode(e,"JSXAttribute"))},E.jsxParseOpeningElementAt=function(e,t){var r=this.startNodeAt(e,t);for(r.attributes=[],r.name=this.jsxParseElementName();!this.match(h.types.slash)&&!this.match(h.types.jsxTagEnd);)r.attributes.push(this.jsxParseAttribute());return r.selfClosing=this.eat(h.types.slash),this.expect(h.types.jsxTagEnd),this.finishNode(r,"JSXOpeningElement")},E.jsxParseClosingElementAt=function(e,t){var r=this.startNodeAt(e,t);return r.name=this.jsxParseElementName(),this.expect(h.types.jsxTagEnd),this.finishNode(r,"JSXClosingElement")},E.jsxParseElementAt=function(e,t){var r=this.startNodeAt(e,t),i=[],n=this.jsxParseOpeningElementAt(e,t),s=null;if(!n.selfClosing){e:for(;;)switch(this.state.type){case h.types.jsxTagStart:if(e=this.state.start,t=this.state.startLoc,this.next(),this.eat(h.types.slash)){s=this.jsxParseClosingElementAt(e,t);break e}i.push(this.jsxParseElementAt(e,t));break;case h.types.jsxText:i.push(this.parseExprAtom());break;case h.types.braceL:this.lookahead().type===h.types.ellipsis?i.push(this.jsxParseSpreadChild()):i.push(this.jsxParseExpressionContainer());break;default:this.unexpected()}p(s.name)!==p(n.name)&&this.raise(s.start,"Expected corresponding JSX closing tag for <"+p(n.name)+">")}return r.openingElement=n,r.closingElement=s,r.children=i,this.match(h.types.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(r,"JSXElement")},E.jsxParseElement=function(){var e=this.state.start,t=this.state.startLoc;return this.next(),this.jsxParseElementAt(e,t)}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.types=t.TokContext=void 0;var o=r(i),u=a(o),l=r(n),p=r(s),c=t.TokContext=function e(t,r,i,n){(0,u.default)(this,e),this.token=t,this.isExpr=!!r,this.preserveSpace=!!i,this.override=n},f=t.types={braceStatement:new c("{",(!1)),braceExpression:new c("{",(!0)),templateQuasi:new c("${",(!0)),parenStatement:new c("(",(!1)),parenExpression:new c("(",(!0)),template:new c("`",(!0),(!0),function(e){return e.readTmplToken()}),functionExpression:new c("function",(!0))};l.types.parenR.updateContext=l.types.braceR.updateContext=function(){if(1===this.state.context.length)return void(this.state.exprAllowed=!0);var e=this.state.context.pop();e===f.braceStatement&&this.curContext()===f.functionExpression?(this.state.context.pop(),this.state.exprAllowed=!1):e===f.templateQuasi?this.state.exprAllowed=!0:this.state.exprAllowed=!e.isExpr},l.types.name.updateContext=function(e){this.state.exprAllowed=!1,e!==l.types._let&&e!==l.types._const&&e!==l.types._var||p.lineBreak.test(this.input.slice(this.state.end))&&(this.state.exprAllowed=!0)},l.types.braceL.updateContext=function(e){this.state.context.push(this.braceIsBlock(e)?f.braceStatement:f.braceExpression),this.state.exprAllowed=!0},l.types.dollarBraceL.updateContext=function(){this.state.context.push(f.templateQuasi),this.state.exprAllowed=!0},l.types.parenL.updateContext=function(e){var t=e===l.types._if||e===l.types._for||e===l.types._with||e===l.types._while;this.state.context.push(t?f.parenStatement:f.parenExpression),this.state.exprAllowed=!0},l.types.incDec.updateContext=function(){},l.types._function.updateContext=function(){this.curContext()!==f.braceStatement&&this.state.context.push(f.functionExpression),this.state.exprAllowed=!1},l.types.backQuote.updateContext=function(){this.curContext()===f.template?this.state.context.pop():this.state.context.push(f.template),this.state.exprAllowed=!1}},function(e,t,r,i,n,s,a,o,u,l,p){"use strict";function c(e){return e&&e.__esModule?e:{default:e}}function f(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}Object.defineProperty(t,"__esModule",{value:!0}),t.Token=void 0;var h=r(i),d=c(h),y=r(n),v=c(y),m=r(s),g=r(a),b=r(o),x=r(u),E=r(l),A=r(p),S=c(A),_=t.Token=function e(t){(0,v.default)(this,e),this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,this.loc=new x.SourceLocation(t.startLoc,t.endLoc)},T=function(){function e(t,r){(0,v.default)(this,e),this.state=new S.default,this.state.init(t,r)}return(0,d.default)(e,[{key:"next",value:function(){this.isLookahead||this.state.tokens.push(new _(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()}},{key:"eat",value:function(e){return!!this.match(e)&&(this.next(),!0)}},{key:"match",value:function(e){return this.state.type===e}},{key:"isKeyword",value:function(e){return(0,m.isKeyword)(e)}},{key:"lookahead",value:function(){var e=this.state;this.state=e.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var t=this.state.clone(!0);return this.state=e,t}},{key:"setStrict",value:function(e){if(this.state.strict=e,this.match(g.types.num)||this.match(g.types.string)){for(this.state.pos=this.state.start;this.state.pos<this.state.lineStart;)this.state.lineStart=this.input.lastIndexOf("\n",this.state.lineStart-2)+1,--this.state.curLine;this.nextToken()}}},{key:"curContext",value:function(){return this.state.context[this.state.context.length-1];
+}},{key:"nextToken",value:function(){var e=this.curContext();return e&&e.preserveSpace||this.skipSpace(),this.state.containsOctal=!1,this.state.octalPosition=null,this.state.start=this.state.pos,this.state.startLoc=this.state.curPosition(),this.state.pos>=this.input.length?this.finishToken(g.types.eof):e.override?e.override(this):this.readToken(this.fullCharCodeAtPos())}},{key:"readToken",value:function(e){return(0,m.isIdentifierStart)(e)||92===e?this.readWord():this.getTokenFromCode(e)}},{key:"fullCharCodeAtPos",value:function(){var e=this.input.charCodeAt(this.state.pos);if(e<=55295||e>=57344)return e;var t=this.input.charCodeAt(this.state.pos+1);return(e<<10)+t-56613888}},{key:"pushComment",value:function(e,t,r,i,n,s){var a={type:e?"CommentBlock":"CommentLine",value:t,start:r,end:i,loc:new x.SourceLocation(n,s)};this.isLookahead||(this.state.tokens.push(a),this.state.comments.push(a),this.addComment(a))}},{key:"skipBlockComment",value:function(){var e=this.state.curPosition(),t=this.state.pos,r=this.input.indexOf("*/",this.state.pos+=2);r===-1&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=r+2,E.lineBreakG.lastIndex=t;for(var i=void 0;(i=E.lineBreakG.exec(this.input))&&i.index<this.state.pos;)++this.state.curLine,this.state.lineStart=i.index+i[0].length;this.pushComment(!0,this.input.slice(t+2,r),t,this.state.pos,e,this.state.curPosition())}},{key:"skipLineComment",value:function(e){for(var t=this.state.pos,r=this.state.curPosition(),i=this.input.charCodeAt(this.state.pos+=e);this.state.pos<this.input.length&&10!==i&&13!==i&&8232!==i&&8233!==i;)++this.state.pos,i=this.input.charCodeAt(this.state.pos);this.pushComment(!1,this.input.slice(t+e,this.state.pos),t,this.state.pos,r,this.state.curPosition())}},{key:"skipSpace",value:function(){e:for(;this.state.pos<this.input.length;){var e=this.input.charCodeAt(this.state.pos);switch(e){case 32:case 160:++this.state.pos;break;case 13:10===this.input.charCodeAt(this.state.pos+1)&&++this.state.pos;case 10:case 8232:case 8233:++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;break;case 47:switch(this.input.charCodeAt(this.state.pos+1)){case 42:this.skipBlockComment();break;case 47:this.skipLineComment(2);break;default:break e}break;default:if(!(e>8&&e<14||e>=5760&&E.nonASCIIwhitespace.test(String.fromCharCode(e))))break e;++this.state.pos}}}},{key:"finishToken",value:function(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var r=this.state.type;this.state.type=e,this.state.value=t,this.updateContext(r)}},{key:"readToken_dot",value:function(){var e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.state.pos+2);return 46===e&&46===t?(this.state.pos+=3,this.finishToken(g.types.ellipsis)):(++this.state.pos,this.finishToken(g.types.dot))}},{key:"readToken_slash",value:function(){if(this.state.exprAllowed)return++this.state.pos,this.readRegexp();var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(g.types.assign,2):this.finishOp(g.types.slash,1)}},{key:"readToken_mult_modulo",value:function(e){var t=42===e?g.types.star:g.types.modulo,r=1,i=this.input.charCodeAt(this.state.pos+1);return 42===i&&(r++,i=this.input.charCodeAt(this.state.pos+2),t=g.types.exponent),61===i&&(r++,t=g.types.assign),this.finishOp(t,r)}},{key:"readToken_pipe_amp",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?this.finishOp(124===e?g.types.logicalOR:g.types.logicalAND,2):61===t?this.finishOp(g.types.assign,2):this.finishOp(124===e?g.types.bitwiseOR:g.types.bitwiseAND,1)}},{key:"readToken_caret",value:function(){var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(g.types.assign,2):this.finishOp(g.types.bitwiseXOR,1)}},{key:"readToken_plus_min",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?45===t&&62===this.input.charCodeAt(this.state.pos+2)&&E.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(g.types.incDec,2):61===t?this.finishOp(g.types.assign,2):this.finishOp(g.types.plusMin,1)}},{key:"readToken_lt_gt",value:function(e){var t=this.input.charCodeAt(this.state.pos+1),r=1;return t===e?(r=62===e&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+r)?this.finishOp(g.types.assign,r+1):this.finishOp(g.types.bitShift,r)):33===t&&60===e&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(r=2),this.finishOp(g.types.relational,r))}},{key:"readToken_eq_excl",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return 61===t?this.finishOp(g.types.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===e&&62===t?(this.state.pos+=2,this.finishToken(g.types.arrow)):this.finishOp(61===e?g.types.eq:g.types.prefix,1)}},{key:"getTokenFromCode",value:function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(g.types.parenL);case 41:return++this.state.pos,this.finishToken(g.types.parenR);case 59:return++this.state.pos,this.finishToken(g.types.semi);case 44:return++this.state.pos,this.finishToken(g.types.comma);case 91:return++this.state.pos,this.finishToken(g.types.bracketL);case 93:return++this.state.pos,this.finishToken(g.types.bracketR);case 123:return++this.state.pos,this.finishToken(g.types.braceL);case 125:return++this.state.pos,this.finishToken(g.types.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(g.types.doubleColon,2):(++this.state.pos,this.finishToken(g.types.colon));case 63:return++this.state.pos,this.finishToken(g.types.question);case 64:return++this.state.pos,this.finishToken(g.types.at);case 96:return++this.state.pos,this.finishToken(g.types.backQuote);case 48:var t=this.input.charCodeAt(this.state.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(g.types.prefix,1)}this.raise(this.state.pos,"Unexpected character '"+f(e)+"'")}},{key:"finishOp",value:function(e,t){var r=this.input.slice(this.state.pos,this.state.pos+t);return this.state.pos+=t,this.finishToken(e,r)}},{key:"readRegexp",value:function(){for(var e=void 0,t=void 0,r=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(r,"Unterminated regular expression");var i=this.input.charAt(this.state.pos);if(E.lineBreak.test(i)&&this.raise(r,"Unterminated regular expression"),e)e=!1;else{if("["===i)t=!0;else if("]"===i&&t)t=!1;else if("/"===i&&!t)break;e="\\"===i}++this.state.pos}var n=this.input.slice(r,this.state.pos);++this.state.pos;var s=this.readWord1();if(s){var a=/^[gmsiyu]*$/;a.test(s)||this.raise(r,"Invalid regular expression flag")}return this.finishToken(g.types.regexp,{pattern:n,flags:s})}},{key:"readInt",value:function(e,t){for(var r=this.state.pos,i=0,n=0,s=null==t?1/0:t;n<s;++n){var a=this.input.charCodeAt(this.state.pos),o=void 0;if(o=a>=97?a-97+10:a>=65?a-65+10:a>=48&&a<=57?a-48:1/0,o>=e)break;++this.state.pos,i=i*e+o}return this.state.pos===r||null!=t&&this.state.pos-r!==t?null:i}},{key:"readRadixNumber",value:function(e){this.state.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.state.start+2,"Expected number in radix "+e),(0,m.isIdentifierStart)(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(g.types.num,t)}},{key:"readNumber",value:function(e){var t=this.state.pos,r=!1,i=48===this.input.charCodeAt(this.state.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number");var n=this.input.charCodeAt(this.state.pos);46===n&&(++this.state.pos,this.readInt(10),r=!0,n=this.input.charCodeAt(this.state.pos)),69!==n&&101!==n||(n=this.input.charCodeAt(++this.state.pos),43!==n&&45!==n||++this.state.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),r=!0),(0,m.isIdentifierStart)(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var s=this.input.slice(t,this.state.pos),a=void 0;return r?a=parseFloat(s):i&&1!==s.length?/[89]/.test(s)||this.state.strict?this.raise(t,"Invalid number"):a=parseInt(s,8):a=parseInt(s,10),this.finishToken(g.types.num,a)}},{key:"readCodePoint",value:function(){var e=this.input.charCodeAt(this.state.pos),t=void 0;if(123===e){var r=++this.state.pos;t=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos),++this.state.pos,t>1114111&&this.raise(r,"Code point out of bounds")}else t=this.readHexChar(4);return t}},{key:"readString",value:function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===e)break;92===i?(t+=this.input.slice(r,this.state.pos),t+=this.readEscapedChar(!1),r=this.state.pos):((0,E.isNewLine)(i)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos)}return t+=this.input.slice(r,this.state.pos++),this.finishToken(g.types.string,t)}},{key:"readTmplToken",value:function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var r=this.input.charCodeAt(this.state.pos);if(96===r||36===r&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(g.types.template)?36===r?(this.state.pos+=2,this.finishToken(g.types.dollarBraceL)):(++this.state.pos,this.finishToken(g.types.backQuote)):(e+=this.input.slice(t,this.state.pos),this.finishToken(g.types.template,e));if(92===r)e+=this.input.slice(t,this.state.pos),e+=this.readEscapedChar(!0),t=this.state.pos;else if((0,E.isNewLine)(r)){switch(e+=this.input.slice(t,this.state.pos),++this.state.pos,r){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(r)}++this.state.curLine,this.state.lineStart=this.state.pos,t=this.state.pos}else++this.state.pos}}},{key:"readEscapedChar",value:function(e){var t=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,t){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return f(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(t>=48&&t<=55){var r=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),i>0&&(this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=this.state.pos-2),(this.state.strict||e)&&this.raise(this.state.pos-2,"Octal literal in strict mode")),this.state.pos+=r.length-1,String.fromCharCode(i)}return String.fromCharCode(t)}}},{key:"readHexChar",value:function(e){var t=this.state.pos,r=this.readInt(16,e);return null===r&&this.raise(t,"Bad character escape sequence"),r}},{key:"readWord1",value:function(){this.state.containsEsc=!1;for(var e="",t=!0,r=this.state.pos;this.state.pos<this.input.length;){var i=this.fullCharCodeAtPos();if((0,m.isIdentifierChar)(i))this.state.pos+=i<=65535?1:2;else{if(92!==i)break;this.state.containsEsc=!0,e+=this.input.slice(r,this.state.pos);var n=this.state.pos;117!==this.input.charCodeAt(++this.state.pos)&&this.raise(this.state.pos,"Expecting Unicode escape sequence \\uXXXX"),++this.state.pos;var s=this.readCodePoint();(t?m.isIdentifierStart:m.isIdentifierChar)(s,!0)||this.raise(n,"Invalid Unicode escape"),e+=f(s),r=this.state.pos}t=!1}return e+this.input.slice(r,this.state.pos)}},{key:"readWord",value:function(){var e=this.readWord1(),t=g.types.name;return!this.state.containsEsc&&this.isKeyword(e)&&(t=g.keywords[e]),this.finishToken(t,e)}},{key:"braceIsBlock",value:function(e){if(e===g.types.colon){var t=this.curContext();if(t===b.types.braceStatement||t===b.types.braceExpression)return!t.isExpr}return e===g.types._return?E.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start)):e===g.types._else||e===g.types.semi||e===g.types.eof||e===g.types.parenR||(e===g.types.braceL?this.curContext()===b.types.braceStatement:!this.state.exprAllowed)}},{key:"updateContext",value:function(e){var t=void 0,r=this.state.type;r.keyword&&e===g.types.dot?this.state.exprAllowed=!1:(t=r.updateContext)?t.call(this,e):this.state.exprAllowed=r.beforeExpr}}]),e}();t.default=T},function(e,t,r,i,n,s,a,o){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=r(a),y=r(o),v=function(){function e(){(0,p.default)(this,e)}return(0,f.default)(e,[{key:"init",value:function(e,t){return this.strict=e.strictMode!==!1&&"module"===e.sourceType,this.input=t,this.potentialArrowAt=-1,this.inMethod=this.inFunction=this.inGenerator=this.inAsync=!1,this.labels=[],this.decorators=[],this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.pos=this.lineStart=0,this.curLine=1,this.type=y.types.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=[d.types.braceStatement],this.exprAllowed=!0,this.containsEsc=this.containsOctal=!1,this.octalPosition=null,this}},{key:"curPosition",value:function(){return new h.Position(this.curLine,this.pos-this.lineStart)}},{key:"clone",value:function(t){var r=new e;for(var i in this){var n=this[i];t&&"context"!==i||!Array.isArray(n)||(n=n.slice()),r[i]=n}return r}}]),e}();t.default=v},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return new l(e,{beforeExpr:!0,binop:t})}function a(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];t.keyword=e,h[e]=f["_"+e]=new l(e,t)}Object.defineProperty(t,"__esModule",{value:!0}),t.keywords=t.types=t.TokenType=void 0;var o=r(i),u=n(o),l=t.TokenType=function e(t){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];(0,u.default)(this,e),this.label=t,this.keyword=r.keyword,this.beforeExpr=!!r.beforeExpr,this.startsExpr=!!r.startsExpr,this.rightAssociative=!!r.rightAssociative,this.isLoop=!!r.isLoop,this.isAssign=!!r.isAssign,this.prefix=!!r.prefix,this.postfix=!!r.postfix,this.binop=r.binop||null,this.updateContext=null},p={beforeExpr:!0},c={startsExpr:!0},f=t.types={num:new l("num",c),regexp:new l("regexp",c),string:new l("string",c),name:new l("name",c),eof:new l("eof"),bracketL:new l("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new l("]"),braceL:new l("{",{beforeExpr:!0,startsExpr:!0}),braceR:new l("}"),parenL:new l("(",{beforeExpr:!0,startsExpr:!0}),parenR:new l(")"),comma:new l(",",p),semi:new l(";",p),colon:new l(":",p),doubleColon:new l("::",p),dot:new l("."),question:new l("?",p),arrow:new l("=>",p),template:new l("template"),ellipsis:new l("...",p),backQuote:new l("`",c),dollarBraceL:new l("${",{beforeExpr:!0,startsExpr:!0}),at:new l("@"),eq:new l("=",{beforeExpr:!0,isAssign:!0}),assign:new l("_=",{beforeExpr:!0,isAssign:!0}),incDec:new l("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new l("prefix",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:s("||",1),logicalAND:s("&&",2),bitwiseOR:s("|",3),bitwiseXOR:s("^",4),bitwiseAND:s("&",5),equality:s("==/!=",6),relational:s("</>",7),bitShift:s("<</>>",8),plusMin:new l("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:s("%",10),star:s("*",10),slash:s("/",10),exponent:new l("**",{beforeExpr:!0,binop:11,rightAssociative:!0})},h=t.keywords={};a("break"),a("case",p),a("catch"),a("continue"),a("debugger"),a("default",p),a("do",{isLoop:!0,beforeExpr:!0}),a("else",p),a("finally"),a("for",{isLoop:!0}),a("function",c),a("if"),a("return",p),a("switch"),a("throw",p),a("try"),a("var"),a("let"),a("const"),a("while",{isLoop:!0}),a("with"),a("new",{beforeExpr:!0,startsExpr:!0}),a("this",c),a("super",c),a("class"),a("extends",p),a("export"),a("import"),a("yield",{beforeExpr:!0,startsExpr:!0}),a("null",c),a("true",c),a("false",c),a("in",{beforeExpr:!0,binop:7}),a("instanceof",{beforeExpr:!0,binop:7}),a("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),a("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),a("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t){for(var r=1,i=0;;){l.lineBreakG.lastIndex=i;var n=l.lineBreakG.exec(e);if(!(n&&n.index<t))return new p(r,t-i);++r,i=n.index+n[0].length}}Object.defineProperty(t,"__esModule",{value:!0}),t.SourceLocation=t.Position=void 0;var o=r(i),u=s(o);t.getLineInfo=a;var l=r(n),p=t.Position=function e(t,r){(0,u.default)(this,e),this.line=t,this.column=r};t.SourceLocation=function e(t,r){(0,u.default)(this,e),this.start=t,this.end=r}},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(e,t,r,i){if(e.selfReference){if(!i.hasBinding(r.name)||i.hasGlobal(r.name)){if(!y.isFunction(t))return;var n=v;t.generator&&(n=m);var s=n({FUNCTION:t,FUNCTION_ID:r,FUNCTION_KEY:i.generateUidIdentifier(r.name)}).expression;s.callee._skipModulesRemap=!0;for(var a=s.callee.body.body[0].params,o=0,u=(0,c.default)(t);o<u;o++)a.push(i.generateUidIdentifier("x"));return s}i.rename(r.name)}t.id=r,i.getProgramParent().references[r.name]=!0}function l(e,t,r){var i={selfAssignment:!1,selfReference:!1,outerDeclar:r.getBindingIdentifier(t),references:[],name:t},n=r.getOwnBinding(t);return n?"param"===n.kind&&(i.selfReference=!0):(i.outerDeclar||r.hasGlobal(t))&&r.traverse(e,g,i),i}t.__esModule=!0,t.default=function(e){var t=e.node,r=e.parent,i=e.scope,n=e.id;if(!t.id){if(!y.isObjectProperty(r)&&!y.isObjectMethod(r,{kind:"method"})||r.computed&&!y.isLiteral(r.key)){if(y.isVariableDeclarator(r)){if(n=r.id,y.isIdentifier(n)){var s=i.parent.getBinding(n.name);if(s&&s.constant&&i.getBinding(n.name)===s)return t.id=n,void(t.id[y.NOT_LOCAL_BINDING]=!0)}}else if(y.isAssignmentExpression(r))n=r.left;else if(!n)return}else n=r.key;var a=void 0;if(n&&y.isLiteral(n))a=n.value;else{if(!n||!y.isIdentifier(n))return;a=n.name}a=y.toBindingIdentifierName(a),n=y.identifier(a),n[y.NOT_LOCAL_BINDING]=!0;var o=l(t,a,i);return u(o,t,n,i)||t}};var p=r(i),c=o(p),f=r(n),h=o(f),d=r(s),y=a(d),v=(0,h.default)("\n (function (FUNCTION_KEY) {\n function FUNCTION_ID() {\n return FUNCTION_KEY.apply(this, arguments);\n }\n\n FUNCTION_ID.toString = function () {\n return FUNCTION_KEY.toString();\n }\n\n return FUNCTION_ID;\n })(FUNCTION)\n"),m=(0,h.default)("\n (function (FUNCTION_KEY) {\n function* FUNCTION_ID() {\n return yield* FUNCTION_KEY.apply(this, arguments);\n }\n\n FUNCTION_ID.toString = function () {\n return FUNCTION_KEY.toString();\n };\n\n return FUNCTION_ID;\n })(FUNCTION)\n"),g={"ReferencedIdentifier|BindingIdentifier":function(e,t){if(e.node.name===t.name){var r=e.scope.getBindingIdentifier(t.name);r===t.outerDeclar&&(t.selfReference=!0,e.stop())}}};e.exports=t.default},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.default=function(e){for(var t=e.params,r=0;r<t.length;r++){var i=t[r];if(a.isAssignmentPattern(i)||a.isRestElement(i))return r}return t.length};var s=r(i),a=n(s);e.exports=t.default},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.default=function(e,t,r){return 1===r.length&&a.isSpreadElement(r[0])&&a.isIdentifier(r[0].argument,{name:"arguments"})?a.callExpression(a.memberExpression(e,a.identifier("apply")),[t,r[0].argument]):a.callExpression(a.memberExpression(e,a.identifier("call")),[t].concat(r))};var s=r(i),a=n(s);e.exports=t.default},function(e,t,r,i){function n(e,t,r){if(t!==t)return s(e,r);for(var i=r-1,n=e.length;++i<n;)if(e[i]===t)return i;return-1}var s=r(i);e.exports=n},function(e,t,r,i,n,s,a,o){function u(e,t,r,i){var n=i?c:p,s=-1,a=t.length,o=e;for(e===t&&(t=h(t)),r&&(o=l(e,f(r)));++s<a;)for(var u=0,d=t[s],v=r?r(d):d;(u=n(o,v,u,i))>-1;)o!==e&&y.call(o,u,1),y.call(e,u,1);return e}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=Array.prototype,y=d.splice;e.exports=u},function(e,t,r,i){function n(e){var t=s(e)?l.call(e):"";return t==a||t==o}var s=r(i),a="[object Function]",o="[object GeneratorFunction]",u=Object.prototype,l=u.toString;e.exports=n},function(e,t,r,i){function n(e){return"symbol"==typeof e||s(e)&&u.call(e)==a}var s=r(i),a="[object Symbol]",o=Object.prototype,u=o.toString;e.exports=n},function(e,t,r,i,n){var s=r(i),a=r(n),o=a(s);e.exports=o},function(e,t,r,i){function n(e,t){return e&&e.length&&t&&t.length?s(e,t):e}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){if("function"!=typeof e)throw new TypeError(u);return t=l(void 0===t?e.length-1:o(t),0),function(){for(var r=arguments,i=-1,n=l(r.length-t,0),s=Array(n);++i<n;)s[i]=r[t+i];switch(t){case 0:return e.call(this,s);case 1:return e.call(this,r[0],s);case 2:return e.call(this,r[0],r[1],s)}var o=Array(t+1);for(i=-1;++i<t;)o[i]=r[i];return o[t]=s,a(e,this,o)}}var a=r(i),o=r(n),u="Expected a function",l=Math.max;e.exports=s},function(e,t,r,i){function n(e){if(!e)return 0===e?e:0;if(e=s(e),e===a||e===-a){var t=e<0?-1:1;return t*o}return e===e?e:0}var s=r(i),a=1/0,o=1.7976931348623157e308;e.exports=n},function(e,t,r,i){function n(e){var t=s(e),r=t%1;return t===t?r?t-r:t:0}var s=r(i);e.exports=n},function(e,t,r,i,n,s){function a(e){if("number"==typeof e)return e;if(l(e))return p;if(u(e)){var t=o(e.valueOf)?e.valueOf():e;e=u(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(c,"");var r=h.test(e);return r||d.test(e)?y(e.slice(2),r?2:8):f.test(e)?p:+e}var o=r(i),u=r(n),l=r(s),p=NaN,c=/^\s+|\s+$/g,f=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,d=/^0o[0-7]+$/i,y=parseInt;e.exports=a},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}function a(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];var n=f[e];if(!n)throw new ReferenceError("Unknown message "+(0,l.default)(e));return r=o(r),n.replace(/\$(\d+)/g,function(e,t){return r[t-1]})}function o(e){return e.map(function(e){if(null!=e&&e.inspect)return e.inspect();try{return(0,l.default)(e)||e+""}catch(t){return c.inspect(e)}})}t.__esModule=!0,t.MESSAGES=void 0;var u=r(i),l=s(u);t.get=a,t.parseArgs=o;var p=r(48),c=n(p),f=t.MESSAGES={tailCallReassignmentDeopt:"Function reference has been reassigned, so it will probably be dereferenced, therefore we can't optimise this with confidence",classesIllegalBareSuper:"Illegal use of bare super",classesIllegalSuperCall:"Direct super call is illegal in non-constructor, use super.$1() instead",scopeDuplicateDeclaration:"Duplicate declaration $1",settersNoRest:"Setters aren't allowed to have a rest",noAssignmentsInForHead:"No assignments allowed in for-in/of head",expectedMemberExpressionOrIdentifier:"Expected type MemberExpression or Identifier",invalidParentForThisNode:"We don't know how to handle this node within the current parent - please open an issue",readOnly:"$1 is read-only",unknownForHead:"Unknown node type $1 in ForStatement",didYouMean:"Did you mean $1?",codeGeneratorDeopt:"Note: The code generator has deoptimised the styling of $1 as it exceeds the max of $2.",missingTemplatesDirectory:"no templates directory - this is most likely the result of a broken `npm publish`. Please report to https://github.com/babel/babel/issues",unsupportedOutputType:"Unsupported output type $1",illegalMethodName:"Illegal method name $1",lostTrackNodePath:"We lost track of this node's position, likely because the AST was directly manipulated",modulesIllegalExportName:"Illegal export $1",modulesDuplicateDeclarations:"Duplicate module declarations with the same source but in different scopes",undeclaredVariable:"Reference to undeclared variable $1",undeclaredVariableType:"Referencing a type alias outside of a type annotation",undeclaredVariableSuggestion:"Reference to undeclared variable $1 - did you mean $2?",traverseNeedsParent:"You must pass a scope and parentPath unless traversing a Program/File. Instead of that you tried to traverse a $1 node without passing scope and parentPath.",traverseVerifyRootFunction:"You passed `traverse()` a function when it expected a visitor object, are you sure you didn't mean `{ enter: Function }`?",traverseVerifyVisitorProperty:"You passed `traverse()` a visitor object with the property $1 that has the invalid property $2",traverseVerifyNodeType:"You gave us a visitor for the node type $1 but it's not a valid type",pluginNotObject:"Plugin $2 specified in $1 was expected to return an object when invoked but returned $3",pluginNotFunction:"Plugin $2 specified in $1 was expected to return a function but returned $3",pluginUnknown:"Unknown plugin $1 specified in $2 at $3, attempted to resolve relative to $4",pluginInvalidProperty:"Plugin $2 specified in $1 provided an invalid property of $3"}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i,n,s){r(i),r(n),e.exports=r(s)},function(e,t,r,i){var n=r(i);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s);e.exports=function(e){return function(t,r,i){var n,s=a(t),l=o(s.length),p=u(i,l);if(e&&r!=r){for(;l>p;)if(n=s[p++],n!=n)return!0}else for(;l>p;p++)if((e||p in s)&&s[p]===r)return e||p||0;return!e&&-1}}},function(e,t,r,i,n){var s=r(i),a=r(n)("toStringTag"),o="Arguments"==s(function(){return arguments}()),u=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,r,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=u(t=Object(e),a))?r:o?s(t):"Object"==(i=s(t))&&"function"==typeof t.callee?"Arguments":i}},function(e,t,r,i){var n=r(i);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,i){return e.call(t,r,i)};case 3:return function(r,i,n){return e.call(t,r,i,n)}}return function(){return e.apply(t,arguments)}}},function(e,t,r,i){e.exports=!r(i)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,r,i,n){var s=r(i),a=r(n).document,o=s(a)&&s(a.createElement);e.exports=function(e){return o?a.createElement(e):{}}},function(e,t,r,i,n,s,a){var o=r(i),u=r(n),l=r(s),p=r(a),c="prototype",f=function(e,t,r){var i,n,s,a=e&f.F,h=e&f.G,d=e&f.S,y=e&f.P,v=e&f.B,m=e&f.W,g=h?u:u[t]||(u[t]={}),b=g[c],x=h?o:d?o[t]:(o[t]||{})[c];h&&(r=t);for(i in r)n=!a&&x&&void 0!==x[i],n&&i in g||(s=n?x[i]:r[i],g[i]=h&&"function"!=typeof x[i]?r[i]:v&&n?l(s,o):m&&x[i]==s?function(e){var t=function(t,r,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,i)}return e.apply(this,arguments)};return t[c]=e[c],t}(s):y&&"function"==typeof s?l(Function.call,s):s,y&&((g.virtual||(g.virtual={}))[i]=s,e&f.R&&b&&!b[i]&&p(b,i,s)))};f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,e.exports=f},function(e,t,r,i,n,s){var a=r(i),o=r(n);e.exports=r(s)?function(e,t,r){return a.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},function(e,t,r,i){e.exports=r(i).document&&document.documentElement},function(e,t,r,i,n,s){e.exports=!r(i)&&!r(n)(function(){return 7!=Object.defineProperty(r(s)("div"),"a",{get:function(){return 7}}).a})},function(e,t,r,i){var n=r(i);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t,r,i,n,s,a,o){"use strict";var u=r(i),l=r(n),p=r(s),c={};r(a)(c,r(o)("iterator"),function(){return this}),e.exports=function(e,t,r){e.prototype=u(c,{next:l(1,r)}),p(e,t+" Iterator")}},function(e,t,r,i,n,s,a,o,u,l,p,c,f){"use strict";var h=r(i),d=r(n),y=r(s),v=r(a),m=r(o),g=r(u),b=r(l),x=r(p),E=r(c),A=r(f)("iterator"),S=!([].keys&&"next"in[].keys()),_="@@iterator",T="keys",P="values",w=function(){return this};e.exports=function(e,t,r,i,n,s,a){b(r,t,i);var o,u,l,p=function(e){if(!S&&e in C)return C[e];switch(e){case T:return function(){return new r(this,e)};case P:return function(){return new r(this,e)}}return function(){return new r(this,e)}},c=t+" Iterator",f=n==P,k=!1,C=e.prototype,D=C[A]||C[_]||n&&C[n],O=D||p(n),N=n?f?p("entries"):O:void 0,I="Array"==t?C.entries||D:D;if(I&&(l=E(I.call(new e)),l!==Object.prototype&&(x(l,c,!0),h||m(l,A)||v(l,A,w))),f&&D&&D.name!==P&&(k=!0,O=function(){return D.call(this)}),h&&!a||!S&&!k&&C[A]||v(C,A,O),g[t]=O,g[c]=w,n)if(o={values:f?O:p(P),keys:s?O:p(T),entries:N},a)for(u in o)u in C||y(C,u,o[u]);else d(d.P+d.F*(S||k),t,o);return o}},function(e,t,r,i,n,s,a,o,u){var l=r(i),p=r(n),c=r(s),f=r(a)("IE_PROTO"),h=function(){},d="prototype",y=function(){var e,t=r(o)("iframe"),i=c.length,n=">";for(t.style.display="none",r(u).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("<script>document.F=Object</script"+n),e.close(),y=e.F;i--;)delete y[d][c[i]];return y()};e.exports=Object.create||function(e,t){var r;return null!==e?(h[d]=l(e),r=new h,h[d]=null,r[f]=e):r=y(),void 0===t?r:p(r,t)}},function(e,t,r,i,n,s,a){var o=r(i),u=r(n),l=r(s),p=Object.defineProperty;t.f=r(a)?Object.defineProperty:function(e,t,r){if(o(e),t=l(t,!0),o(r),u)try{return p(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},function(e,t,r,i,n,s,a){var o=r(i),u=r(n),l=r(s);e.exports=r(a)?Object.defineProperties:function(e,t){u(e);for(var r,i=l(t),n=i.length,s=0;n>s;)o.f(e,r=i[s++],t[r]);return e}},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s)("IE_PROTO"),l=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),a(e,u)?e[u]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},function(e,t,r,i,n,s,a){var o=r(i),u=r(n),l=r(s)(!1),p=r(a)("IE_PROTO");e.exports=function(e,t){var r,i=u(e),n=0,s=[];for(r in i)r!=p&&o(i,r)&&s.push(r);for(;t.length>n;)o(i,r=t[n++])&&(~l(s,r)||s.push(r));return s}},function(e,t,r,i,n){var s=r(i),a=r(n);e.exports=Object.keys||function(e){return s(e,a)}},function(e,t,r,i){e.exports=r(i)},function(e,t,r,i,n,s){var a=r(i).f,o=r(n),u=r(s)("toStringTag");e.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,u)&&a(e,u,{configurable:!0,value:t})}},function(e,t,r,i,n){var s=r(i)("keys"),a=r(n);e.exports=function(e){return s[e]||(s[e]=a(e))}},function(e,t,r,i){var n=r(i),s="__core-js_shared__",a=n[s]||(n[s]={});e.exports=function(e){return a[e]||(a[e]={})}},function(e,t,r,i,n){var s=r(i),a=r(n);e.exports=function(e){return function(t,r){var i,n,o=String(a(t)),u=s(r),l=o.length;return u<0||u>=l?e?"":void 0:(i=o.charCodeAt(u),i<55296||i>56319||u+1===l||(n=o.charCodeAt(u+1))<56320||n>57343?e?o.charAt(u):i:e?o.slice(u,u+2):(i-55296<<10)+(n-56320)+65536);
+}}},function(e,t,r,i){var n=r(i),s=Math.max,a=Math.min;e.exports=function(e,t){return e=n(e),e<0?s(e+t,0):a(e,t)}},function(e,t,r,i,n){var s=r(i),a=r(n);e.exports=function(e){return s(a(e))}},function(e,t,r,i){var n=r(i),s=Math.min;e.exports=function(e){return e>0?s(n(e),9007199254740991):0}},function(e,t,r,i){var n=r(i);e.exports=function(e){return Object(n(e))}},function(e,t,r,i){var n=r(i);e.exports=function(e,t){if(!n(e))return e;var r,i;if(t&&"function"==typeof(r=e.toString)&&!n(i=r.call(e)))return i;if("function"==typeof(r=e.valueOf)&&!n(i=r.call(e)))return i;if(!t&&"function"==typeof(r=e.toString)&&!n(i=r.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},function(e,t,r,i,n,s){var a=r(i)("wks"),o=r(n),u=r(s).Symbol,l="function"==typeof u,p=e.exports=function(e){return a[e]||(a[e]=l&&u[e]||(l?u:o)("Symbol."+e))};p.store=a},function(e,t,r,i,n,s,a){var o=r(i),u=r(n)("iterator"),l=r(s);e.exports=r(a).getIteratorMethod=function(e){if(void 0!=e)return e[u]||e["@@iterator"]||l[o(e)]}},function(e,t,r,i,n,s){var a=r(i),o=r(n);e.exports=r(s).getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return a(t.call(e))}},function(e,t,r,i,n,s,a,o){"use strict";var u=r(i),l=r(n),p=r(s),c=r(a);e.exports=r(o)(Array,"Array",function(e,t){this._t=c(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,l(1)):"keys"==t?l(0,r):"values"==t?l(0,e[r]):l(0,[r,e[r]])},"values"),p.Arguments=p.Array,u("keys"),u("values"),u("entries")},function(e,t,r,i,n){"use strict";var s=r(i)(!0);r(n)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=s(t,r),this._i+=e.length,{value:e,done:!1})})},function(e,t,r,i,n,s,a,o){r(i);for(var u=r(n),l=r(s),p=r(a),c=r(o)("toStringTag"),f=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],h=0;h<5;h++){var d=f[h],y=u[d],v=y&&y.prototype;v&&!v[c]&&l(v,c,d),p[d]=p.Array}},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(e,t){var r=e.node,i=r.body;r.async=!1;var n=y.functionExpression(null,[],y.blockStatement(i.body),!0);n.shadow=!0,i.body=[y.returnStatement(y.callExpression(y.callExpression(t,[n]),[]))]}function l(e,t){var r=e.node,i=e.isFunctionDeclaration(),n=r.id,s=v;e.isArrowFunctionExpression()?e.arrowFunctionToShadowed():!i&&n&&(s=m),r.async=!1,r.generator=!0,r.id=null,i&&(r.type="FunctionExpression");var a=y.callExpression(t,[r]),o=s({NAME:n,FUNCTION:a,PARAMS:r.params.map(function(){return e.scope.generateUidIdentifier("x")})}).expression;if(i){var u=y.variableDeclaration("let",[y.variableDeclarator(y.identifier(n.name),y.callExpression(o,[]))]);u._blockHoist=!0,e.replaceWith(u)}else{var l=o.body.body[1].argument;n||(0,c.default)({node:l,parent:e.parent,scope:e.scope}),!l||l.id||r.params.length?e.replaceWith(y.callExpression(o,[])):e.replaceWith(a)}}t.__esModule=!0,t.default=function(e,t){var r=e.node;if(!r.generator)return e.traverse(g),e.isClassMethod()||e.isObjectMethod()?u(e,t):l(e,t)};var p=r(i),c=o(p),f=r(n),h=o(f),d=r(s),y=a(d),v=(0,h.default)("\n (() => {\n var ref = FUNCTION;\n return function NAME(PARAMS) {\n return ref.apply(this, arguments);\n };\n })\n"),m=(0,h.default)("\n (() => {\n var ref = FUNCTION;\n function NAME(PARAMS) {\n return ref.apply(this, arguments);\n }\n return NAME;\n })\n"),g={ArrowFunctionExpression:function(e){e.node.async||e.arrowFunctionToShadowed()},AwaitExpression:function(e){var t=e.node;t.type="YieldExpression"}};e.exports=t.default},function(e,t,r,i,n,s,a,o,u,l){"use strict";function p(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}function f(e,t){e=(0,v.default)(e);var r=e,i=r.program;return t.length&&(0,A.default)(e,C,null,t),i.body.length>1?i.body:i.body[0]}t.__esModule=!0;var h=r(i),d=c(h);t.default=function(e,t){var r=void 0;try{throw new Error}catch(e){e.stack&&(r=e.stack.split("\n").slice(1).join("\n"))}var i=function(){var n=void 0;try{n=_.parse(e,(0,g.default)({allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0},t)),n=A.default.removeProperties(n),A.default.cheap(n,function(e){e[w]=!0})}catch(e){throw e.stack=e.stack+"from\n"+r,e}return i=function(){return n},n};return function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return f(i(),t)}};var y=r(n),v=c(y),m=r(s),g=c(m),b=r(a),x=c(b),E=r(o),A=c(E),S=r(u),_=p(S),T=r(l),P=p(T),w="_fromTemplate",k=(0,d.default)(),C={noScope:!0,enter:function(e,t){var r=e.node;if(r[k])return e.skip();P.isExpressionStatement(r)&&(r=r.expression);var i=void 0;if(P.isIdentifier(r)&&r[w])if((0,x.default)(t[0],r.name))i=t[0][r.name];else if("$"===r.name[0]){var n=+r.name.slice(1);t[n]&&(i=t[n])}null===i&&e.remove(),i&&(i[k]=!0,e.replaceInline(i))},exit:function(e){var t=e.node;t.loc||A.default.clearNode(t)}};e.exports=t.default},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e){return e[e.length-1]}var a=r(i),o=n(a),u=o.default.prototype;u.addComment=function(e){this.state.trailingComments.push(e),this.state.leadingComments.push(e)},u.processComment=function(e){if(!("Program"===e.type&&e.body.length>0)){var t=this.state.commentStack,r=void 0,i=void 0,n=void 0;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=e.end?(i=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var a=s(t);t.length>0&&a.trailingComments&&a.trailingComments[0].start>=e.end&&(i=a.trailingComments,a.trailingComments=null)}for(;t.length>0&&s(t).start>=e.start;)r=t.pop();if(r){if(r.leadingComments)if(r!==e&&s(r.leadingComments).end<=e.start)e.leadingComments=r.leadingComments,r.leadingComments=null;else for(n=r.leadingComments.length-2;n>=0;--n)if(r.leadingComments[n].end<=e.start){e.leadingComments=r.leadingComments.splice(0,n+1);break}}else if(this.state.leadingComments.length>0)if(s(this.state.leadingComments).end<=e.start)e.leadingComments=this.state.leadingComments,this.state.leadingComments=[];else{for(n=0;n<this.state.leadingComments.length&&!(this.state.leadingComments[n].end>e.start);n++);e.leadingComments=this.state.leadingComments.slice(0,n),0===e.leadingComments.length&&(e.leadingComments=null),i=this.state.leadingComments.slice(n),0===i.length&&(i=null)}i&&(i.length&&i[0].start>=e.start&&s(i).end<=e.end?e.innerComments=i:e.trailingComments=i),t.push(e)}}},function(e,t,r,i,n,s,a,o){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=r(a),y=u(d),v=r(o),m=y.default.prototype;m.checkPropClash=function(e,t){if(!e.computed){var r=e.key,i=void 0;switch(r.type){case"Identifier":i=r.name;break;case"StringLiteral":case"NumericLiteral":i=String(r.value);break;default:return}"__proto__"===i&&"init"===e.kind&&(t.proto&&this.raise(r.start,"Redefinition of __proto__ property"),t.proto=!0)}},m.parseExpression=function(e,t){var r=this.state.start,i=this.state.startLoc,n=this.parseMaybeAssign(e,t);if(this.match(h.types.comma)){var s=this.startNodeAt(r,i);for(s.expressions=[n];this.eat(h.types.comma);)s.expressions.push(this.parseMaybeAssign(e,t));return this.toReferencedList(s.expressions),this.finishNode(s,"SequenceExpression")}return n},m.parseMaybeAssign=function(e,t,r){if(this.match(h.types._yield)&&this.state.inGenerator)return this.parseYield();var i=void 0;t?i=!1:(t={start:0},i=!0);var n=this.state.start,s=this.state.startLoc;(this.match(h.types.parenL)||this.match(h.types.name))&&(this.state.potentialArrowAt=this.state.start);var a=this.parseMaybeConditional(e,t);if(r&&(a=r.call(this,a,n,s)),this.state.type.isAssign){var o=this.startNodeAt(n,s);if(o.operator=this.state.value,o.left=this.match(h.types.eq)?this.toAssignable(a):a,t.start=0,this.checkLVal(a),a.extra&&a.extra.parenthesized){var u=void 0;"ObjectPattern"===a.type?u="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===a.type&&(u="`([a]) = 0` use `([a] = 0)`"),u&&this.raise(a.start,"You're trying to assign to a parenthesized expression, eg. instead of "+u)}return this.next(),o.right=this.parseMaybeAssign(e),this.finishNode(o,"AssignmentExpression")}return i&&t.start&&this.unexpected(t.start),a},m.parseMaybeConditional=function(e,t){var r=this.state.start,i=this.state.startLoc,n=this.parseExprOps(e,t);if(t&&t.start)return n;if(this.eat(h.types.question)){var s=this.startNodeAt(r,i);return s.test=n,s.consequent=this.parseMaybeAssign(),this.expect(h.types.colon),s.alternate=this.parseMaybeAssign(e),this.finishNode(s,"ConditionalExpression")}return n},m.parseExprOps=function(e,t){var r=this.state.start,i=this.state.startLoc,n=this.parseMaybeUnary(t);return t&&t.start?n:this.parseExprOp(n,r,i,-1,e)},m.parseExprOp=function(e,t,r,i,n){var s=this.state.type.binop;if(!(null==s||n&&this.match(h.types._in))&&s>i){var a=this.startNodeAt(t,r);a.left=e,a.operator=this.state.value,"**"===a.operator&&"UnaryExpression"===e.type&&e.extra&&!e.extra.parenthesizedArgument&&this.raise(e.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var o=this.state.type;this.next();var u=this.state.start,l=this.state.startLoc;return a.right=this.parseExprOp(this.parseMaybeUnary(),u,l,o.rightAssociative?s-1:s,n),this.finishNode(a,o===h.types.logicalOR||o===h.types.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(a,t,r,i,n)}return e},m.parseMaybeUnary=function(e){if(this.state.type.prefix){var t=this.startNode(),r=this.match(h.types.incDec);t.operator=this.state.value,t.prefix=!0,this.next();var i=this.state.type;return this.addExtra(t,"parenthesizedArgument",i===h.types.parenL),t.argument=this.parseMaybeUnary(),e&&e.start&&this.unexpected(e.start),r?this.checkLVal(t.argument):this.state.strict&&"delete"===t.operator&&"Identifier"===t.argument.type&&this.raise(t.start,"Deleting local variable in strict mode"),this.finishNode(t,r?"UpdateExpression":"UnaryExpression")}var n=this.state.start,s=this.state.startLoc,a=this.parseExprSubscripts(e);if(e&&e.start)return a;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(n,s);o.operator=this.state.value,o.prefix=!1,o.argument=a,this.checkLVal(a),this.next(),a=this.finishNode(o,"UpdateExpression")}return a},m.parseExprSubscripts=function(e){var t=this.state.start,r=this.state.startLoc,i=this.state.potentialArrowAt,n=this.parseExprAtom(e);return"ArrowFunctionExpression"===n.type&&n.start===i?n:e&&e.start?n:this.parseSubscripts(n,t,r)},m.parseSubscripts=function(e,t,r,i){for(;;){if(!i&&this.eat(h.types.doubleColon)){var n=this.startNodeAt(t,r);return n.object=e,n.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(n,"BindExpression"),t,r,i)}if(this.eat(h.types.dot)){var s=this.startNodeAt(t,r);s.object=e,s.property=this.parseIdentifier(!0),s.computed=!1,e=this.finishNode(s,"MemberExpression")}else if(this.eat(h.types.bracketL)){var a=this.startNodeAt(t,r);a.object=e,a.property=this.parseExpression(),a.computed=!0,this.expect(h.types.bracketR),e=this.finishNode(a,"MemberExpression")}else if(!i&&this.match(h.types.parenL)){var o=this.state.potentialArrowAt===e.start&&"Identifier"===e.type&&"async"===e.name&&!this.canInsertSemicolon();this.next();var u=this.startNodeAt(t,r);if(u.callee=e,u.arguments=this.parseCallExpressionArguments(h.types.parenR,this.hasPlugin("trailingFunctionCommas"),o),e=this.finishNode(u,"CallExpression"),o&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(t,r),u);this.toReferencedList(u.arguments)}else{if(!this.match(h.types.backQuote))return e;var l=this.startNodeAt(t,r);l.tag=e,l.quasi=this.parseTemplate(),e=this.finishNode(l,"TaggedTemplateExpression")}}},m.parseCallExpressionArguments=function(e,t,r){for(var i=void 0,n=[],s=!0;!this.eat(e);){if(s)s=!1;else if(this.expect(h.types.comma),t&&this.eat(e))break;this.match(h.types.parenL)&&!i&&(i=this.state.start),n.push(this.parseExprListItem())}return r&&i&&this.shouldParseAsyncArrow()&&this.unexpected(),n},m.shouldParseAsyncArrow=function(){return this.match(h.types.arrow)},m.parseAsyncArrowFromCallExpression=function(e,t){return this.hasPlugin("asyncFunctions")||this.unexpected(),this.expect(h.types.arrow),this.parseArrowExpression(e,t.arguments,!0)},m.parseNoCallExpr=function(){var e=this.state.start,t=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,t,!0)},m.parseExprAtom=function(e){var t=void 0,r=this.state.potentialArrowAt===this.state.start;switch(this.state.type){case h.types._super:return this.state.inMethod||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),t=this.startNode(),this.next(),this.match(h.types.parenL)||this.match(h.types.bracketL)||this.match(h.types.dot)||this.unexpected(),this.match(h.types.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(t.start,"super() outside of class constructor"),this.finishNode(t,"Super");case h.types._this:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case h.types._yield:this.state.inGenerator&&this.unexpected();case h.types.name:t=this.startNode();var i=this.hasPlugin("asyncFunctions")&&"await"===this.state.value&&this.state.inAsync,n=this.shouldAllowYieldIdentifier(),s=this.parseIdentifier(i||n);if(this.hasPlugin("asyncFunctions"))if("await"===s.name){if(this.state.inAsync||this.inModule)return this.parseAwait(t)}else{if("async"===s.name&&this.match(h.types._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(t,!1,!1,!0);if(r&&"async"===s.name&&this.match(h.types.name)){var a=[this.parseIdentifier()];return this.expect(h.types.arrow),this.parseArrowExpression(t,a,!0)}}return r&&!this.canInsertSemicolon()&&this.eat(h.types.arrow)?this.parseArrowExpression(t,[s]):s;case h.types._do:if(this.hasPlugin("doExpressions")){var o=this.startNode();this.next();var u=this.state.inFunction,l=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,o.body=this.parseBlock(!1,!0),this.state.inFunction=u,this.state.labels=l,this.finishNode(o,"DoExpression")}case h.types.regexp:var p=this.state.value;return t=this.parseLiteral(p.value,"RegExpLiteral"),t.pattern=p.pattern,t.flags=p.flags,t;case h.types.num:return this.parseLiteral(this.state.value,"NumericLiteral");case h.types.string:return this.parseLiteral(this.state.value,"StringLiteral");case h.types._null:return t=this.startNode(),this.next(),this.finishNode(t,"NullLiteral");case h.types._true:case h.types._false:return t=this.startNode(),t.value=this.match(h.types._true),this.next(),this.finishNode(t,"BooleanLiteral");case h.types.parenL:return this.parseParenAndDistinguishExpression(null,null,r);case h.types.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(h.types.bracketR,!0,!0,e),this.toReferencedList(t.elements),this.finishNode(t,"ArrayExpression");case h.types.braceL:return this.parseObj(!1,e);case h.types._function:return this.parseFunctionExpression();case h.types.at:this.parseDecorators();case h.types._class:return t=this.startNode(),this.takeDecorators(t),this.parseClass(t,!1);case h.types._new:return this.parseNew();case h.types.backQuote:return this.parseTemplate();case h.types.doubleColon:t=this.startNode(),this.next(),t.object=null;var c=t.callee=this.parseNoCallExpr();if("MemberExpression"===c.type)return this.finishNode(t,"BindExpression");this.raise(c.start,"Binding should be performed on object property.");default:this.unexpected()}},m.parseFunctionExpression=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(h.types.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(e,t,"sent"):this.parseFunction(e,!1)},m.parseMetaProperty=function(e,t,r){return e.meta=t,e.property=this.parseIdentifier(!0),e.property.name!==r&&this.raise(e.property.start,"The only valid meta property for new is "+t.name+"."+r),this.finishNode(e,"MetaProperty")},m.parseLiteral=function(e,t){var r=this.startNode();return this.addExtra(r,"rawValue",e),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),r.value=e,this.next(),this.finishNode(r,t)},m.parseParenExpression=function(){this.expect(h.types.parenL);var e=this.parseExpression();return this.expect(h.types.parenR),e},m.parseParenAndDistinguishExpression=function(e,t,r,i,n){e=e||this.state.start,t=t||this.state.startLoc;var s=void 0;this.next();for(var a=this.state.start,o=this.state.startLoc,u=[],l=!0,p={start:0},c=void 0,d=void 0;!this.match(h.types.parenR);){if(l)l=!1;else if(this.expect(h.types.comma),this.match(h.types.parenR)&&this.hasPlugin("trailingFunctionCommas")){d=this.state.start;break}if(this.match(h.types.ellipsis)){var y=this.state.start,v=this.state.startLoc;c=this.state.start,u.push(this.parseParenItem(this.parseRest(),v,y));break}u.push(this.parseMaybeAssign(!1,p,this.parseParenItem))}var m=this.state.start,g=this.state.startLoc;if(this.expect(h.types.parenR),r&&!this.canInsertSemicolon()&&this.eat(h.types.arrow)){var b=!0,x=!1,E=void 0;try{for(var A,S=(0,f.default)(u);!(b=(A=S.next()).done);b=!0){var _=A.value;_.extra&&_.extra.parenthesized&&this.unexpected(_.extra.parenStart)}}catch(e){x=!0,E=e}finally{try{!b&&S.return&&S.return()}finally{if(x)throw E}}return this.parseArrowExpression(this.startNodeAt(e,t),u,i)}if(!u.length){if(i)return;this.unexpected(this.state.lastTokStart)}return d&&!n&&this.unexpected(d),c&&this.unexpected(c),p.start&&this.unexpected(p.start),u.length>1?(s=this.startNodeAt(a,o),s.expressions=u,this.toReferencedList(s.expressions),this.finishNodeAt(s,"SequenceExpression",m,g)):s=u[0],this.addExtra(s,"parenthesized",!0),this.addExtra(s,"parenStart",e),s},m.parseParenItem=function(e){return e},m.parseNew=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.eat(h.types.dot)?this.parseMetaProperty(e,t,"target"):(e.callee=this.parseNoCallExpr(),this.eat(h.types.parenL)?(e.arguments=this.parseExprList(h.types.parenR,this.hasPlugin("trailingFunctionCommas")),this.toReferencedList(e.arguments)):e.arguments=[],this.finishNode(e,"NewExpression"))},m.parseTemplateElement=function(){var e=this.startNode();return e.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),e.tail=this.match(h.types.backQuote),this.finishNode(e,"TemplateElement")},m.parseTemplate=function(){var e=this.startNode();this.next(),e.expressions=[];var t=this.parseTemplateElement();for(e.quasis=[t];!t.tail;)this.expect(h.types.dollarBraceL),e.expressions.push(this.parseExpression()),this.expect(h.types.braceR),e.quasis.push(t=this.parseTemplateElement());return this.next(),this.finishNode(e,"TemplateLiteral")},m.parseObj=function(e,t){var r=[],i=(0,p.default)(null),n=!0,s=this.startNode();for(s.properties=[],this.next();!this.eat(h.types.braceR);){if(n)n=!1;else if(this.expect(h.types.comma),this.eat(h.types.braceR))break;for(;this.match(h.types.at);)r.push(this.parseDecorator());var a=this.startNode(),o=!1,u=!1,l=void 0,c=void 0;if(r.length&&(a.decorators=r,r=[]),this.hasPlugin("objectRestSpread")&&this.match(h.types.ellipsis))a=this.parseSpread(),a.type=e?"RestProperty":"SpreadProperty",s.properties.push(a);else{if(a.method=!1,a.shorthand=!1,(e||t)&&(l=this.state.start,c=this.state.startLoc),e||(o=this.eat(h.types.star)),!e&&this.hasPlugin("asyncFunctions")&&this.isContextual("async")){o&&this.unexpected();var f=this.parseIdentifier();this.match(h.types.colon)||this.match(h.types.parenL)||this.match(h.types.braceR)?a.key=f:(u=!0,this.hasPlugin("asyncGenerators")&&(o=this.eat(h.types.star)),this.parsePropertyName(a))}else this.parsePropertyName(a);this.parseObjPropValue(a,l,c,o,u,e,t),this.checkPropClash(a,i),a.shorthand&&this.addExtra(a,"shorthand",!0),s.properties.push(a)}}return r.length&&this.raise(this.state.start,"You have trailing decorators with no property"),this.finishNode(s,e?"ObjectPattern":"ObjectExpression")},m.parseObjPropValue=function(e,t,r,i,n,s,a){if(n||i||this.match(h.types.parenL))return s&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,i,n),this.finishNode(e,"ObjectMethod");if(this.eat(h.types.colon))return e.value=s?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,a),this.finishNode(e,"ObjectProperty");if(!(e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.match(h.types.comma)||this.match(h.types.braceR))){(i||n||s)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),this.parseMethod(e,!1);var o="get"===e.kind?0:1;if(e.params.length!==o){var u=e.start;"get"===e.kind?this.raise(u,"getter should have no params"):this.raise(u,"setter should have exactly one param")}return this.finishNode(e,"ObjectMethod")}if(!e.computed&&"Identifier"===e.key.type){if(s){var l=this.isKeyword(e.key.name);!l&&this.state.strict&&(l=v.reservedWords.strictBind(e.key.name)||v.reservedWords.strict(e.key.name)),l&&this.raise(e.key.start,"Binding "+e.key.name),e.value=this.parseMaybeDefault(t,r,e.key.__clone())}else this.match(h.types.eq)&&a?(a.start||(a.start=this.state.start),e.value=this.parseMaybeDefault(t,r,e.key.__clone())):e.value=e.key.__clone();return e.shorthand=!0,this.finishNode(e,"ObjectProperty")}this.unexpected()},m.parsePropertyName=function(e){return this.eat(h.types.bracketL)?(e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(h.types.bracketR),e.key):(e.computed=!1,e.key=this.match(h.types.num)||this.match(h.types.string)?this.parseExprAtom():this.parseIdentifier(!0))},m.initFunction=function(e,t){e.id=null,e.generator=!1,e.expression=!1,this.hasPlugin("asyncFunctions")&&(e.async=!!t)},m.parseMethod=function(e,t,r){var i=this.state.inMethod;return this.state.inMethod=e.kind||!0,this.initFunction(e,r),this.expect(h.types.parenL),e.params=this.parseBindingList(h.types.parenR,!1,this.hasPlugin("trailingFunctionCommas")),e.generator=t,this.parseFunctionBody(e),this.state.inMethod=i,e},m.parseArrowExpression=function(e,t,r){return this.initFunction(e,r),e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0),this.finishNode(e,"ArrowFunctionExpression")},m.parseFunctionBody=function(e,t){var r=t&&!this.match(h.types.braceL),i=this.state.inAsync;if(this.state.inAsync=e.async,r)e.body=this.parseMaybeAssign(),e.expression=!0;else{var n=this.state.inFunction,s=this.state.inGenerator,a=this.state.labels;this.state.inFunction=!0,this.state.inGenerator=e.generator,this.state.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.state.inFunction=n,this.state.inGenerator=s,this.state.labels=a}this.state.inAsync=i;var o=this.state.strict,u=!1,l=!1;if(t&&(o=!0),!r&&e.body.directives.length){var c=!0,d=!1,y=void 0;try{for(var v,m=(0,f.default)(e.body.directives);!(c=(v=m.next()).done);c=!0){var g=v.value;if("use strict"===g.value.value){l=!0,o=!0,u=!0;break}}}catch(e){d=!0,y=e}finally{try{!c&&m.return&&m.return()}finally{if(d)throw y}}}if(l&&e.id&&"Identifier"===e.id.type&&"yield"===e.id.name&&this.raise(e.id.start,"Binding yield in strict mode"),o){var b=(0,p.default)(null),x=this.state.strict;u&&(this.state.strict=!0),e.id&&this.checkLVal(e.id,!0);var E=!0,A=!1,S=void 0;try{for(var _,T=(0,f.default)(e.params);!(E=(_=T.next()).done);E=!0){var P=_.value;this.checkLVal(P,!0,b)}}catch(e){A=!0,S=e}finally{try{!E&&T.return&&T.return()}finally{if(A)throw S}}this.state.strict=x}},m.parseExprList=function(e,t,r,i){for(var n=[],s=!0;!this.eat(e);){if(s)s=!1;else if(this.expect(h.types.comma),t&&this.eat(e))break;n.push(this.parseExprListItem(r,i))}return n},m.parseExprListItem=function(e,t){var r=void 0;return r=e&&this.match(h.types.comma)?null:this.match(h.types.ellipsis)?this.parseSpread(t):this.parseMaybeAssign(!1,t)},m.parseIdentifier=function(e){var t=this.startNode();return this.match(h.types.name)?(!e&&this.state.strict&&v.reservedWords.strict(this.state.value)&&this.raise(this.state.start,"The keyword '"+this.state.value+"' is reserved"),t.name=this.state.value):e&&this.state.type.keyword?t.name=this.state.type.keyword:this.unexpected(),!e&&"await"===t.name&&this.state.inAsync&&this.raise(t.start,"invalid use of await inside of an async function"),this.next(),this.finishNode(t,"Identifier")},m.parseAwait=function(e){return this.state.inAsync||this.unexpected(),this.isLineTerminator()&&this.unexpected(),this.match(h.types.star)&&this.raise(e.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),e.argument=this.parseMaybeUnary(),this.finishNode(e,"AwaitExpression")},m.parseYield=function(){var e=this.startNode();return this.next(),this.match(h.types.semi)||this.canInsertSemicolon()||!this.match(h.types.star)&&!this.state.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(h.types.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")}},function(e,t,r,i,n,s,a){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var u=r(i),l=o(u),p=r(n),c=r(s),f=o(c),h=r(a),d=f.default.prototype;d.toAssignable=function(e,t){if(e)switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":e.type="ObjectPattern";var r=!0,i=!1,n=void 0;try{for(var s,a=(0,l.default)(e.properties);!(r=(s=a.next()).done);r=!0){var o=s.value;"ObjectMethod"===o.type?"get"===o.kind||"set"===o.kind?this.raise(o.key.start,"Object pattern can't contain getter or setter"):this.raise(o.key.start,"Object pattern can't contain methods"):this.toAssignable(o,t)}}catch(e){i=!0,n=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw n}}break;case"ObjectProperty":this.toAssignable(e.value,t);break;case"SpreadProperty":e.type="RestProperty";break;case"ArrayExpression":e.type="ArrayPattern",this.toAssignableList(e.elements,t);break;case"AssignmentExpression":"="===e.operator?(e.type="AssignmentPattern",delete e.operator):this.raise(e.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!t)break;default:this.raise(e.start,"Assigning to rvalue")}return e},d.toAssignableList=function(e,t){var r=e.length;if(r){var i=e[r-1];if(i&&"RestElement"===i.type)--r;else if(i&&"SpreadElement"===i.type){i.type="RestElement";var n=i.argument;this.toAssignable(n,t),"Identifier"!==n.type&&"MemberExpression"!==n.type&&"ArrayPattern"!==n.type&&this.unexpected(n.start),--r}}for(var s=0;s<r;s++){var a=e[s];a&&this.toAssignable(a,t)}return e},d.toReferencedList=function(e){return e},d.parseSpread=function(e){var t=this.startNode();return this.next(),t.argument=this.parseMaybeAssign(e),this.finishNode(t,"SpreadElement")},d.parseRest=function(){var e=this.startNode();return this.next(),e.argument=this.parseBindingIdentifier(),this.finishNode(e,"RestElement")},d.shouldAllowYieldIdentifier=function(){return this.match(p.types._yield)&&!this.state.strict&&!this.state.inGenerator},d.parseBindingIdentifier=function(){return this.parseIdentifier(this.shouldAllowYieldIdentifier())},d.parseBindingAtom=function(){switch(this.state.type){case p.types._yield:(this.state.strict||this.state.inGenerator)&&this.unexpected();case p.types.name:return this.parseIdentifier(!0);case p.types.bracketL:var e=this.startNode();return this.next(),e.elements=this.parseBindingList(p.types.bracketR,!0,!0),this.finishNode(e,"ArrayPattern");case p.types.braceL:return this.parseObj(!0);default:this.unexpected()}},d.parseBindingList=function(e,t,r){for(var i=[],n=!0;!this.eat(e);)if(n?n=!1:this.expect(p.types.comma),t&&this.match(p.types.comma))i.push(null);else{if(r&&this.eat(e))break;if(this.match(p.types.ellipsis)){i.push(this.parseAssignableListItemTypes(this.parseRest())),this.expect(e);break}for(var s=[];this.match(p.types.at);)s.push(this.parseDecorator());var a=this.parseMaybeDefault();s.length&&(a.decorators=s),this.parseAssignableListItemTypes(a),i.push(this.parseMaybeDefault(null,null,a))}return i},d.parseAssignableListItemTypes=function(e){return e},d.parseMaybeDefault=function(e,t,r){if(t=t||this.state.startLoc,e=e||this.state.start,r=r||this.parseBindingAtom(),!this.eat(p.types.eq))return r;var i=this.startNodeAt(e,t);return i.left=r,i.right=this.parseMaybeAssign(),this.finishNode(i,"AssignmentPattern")},d.checkLVal=function(e,t,r){switch(e.type){case"Identifier":if(this.state.strict&&(h.reservedWords.strictBind(e.name)||h.reservedWords.strict(e.name))&&this.raise(e.start,(t?"Binding ":"Assigning to ")+e.name+" in strict mode"),r){var i="_"+e.name;r[i]?this.raise(e.start,"Argument name clash in strict mode"):r[i]=!0}break;case"MemberExpression":t&&this.raise(e.start,(t?"Binding":"Assigning to")+" member expression");break;case"ObjectPattern":var n=!0,s=!1,a=void 0;try{for(var o,u=(0,l.default)(e.properties);!(n=(o=u.next()).done);n=!0){var p=o.value;"ObjectProperty"===p.type&&(p=p.value),this.checkLVal(p,t,r)}}catch(e){s=!0,a=e}finally{try{!n&&u.return&&u.return()}finally{if(s)throw a}}break;case"ArrayPattern":var c=!0,f=!1,d=void 0;try{for(var y,v=(0,l.default)(e.elements);!(c=(y=v.next()).done);c=!0){var m=y.value;m&&this.checkLVal(m,t,r)}}catch(e){f=!0,d=e}finally{try{!c&&v.return&&v.return()}finally{if(f)throw d}}break;case"AssignmentPattern":this.checkLVal(e.left,t,r);break;case"RestProperty":case"RestElement":this.checkLVal(e.argument,t,r);break;default:this.raise(e.start,(t?"Binding":"Assigning to")+" rvalue")}}},function(e,t,r,i,n,s,a){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function u(e,t,r,i){return e.type=t,e.end=r,e.loc.end=i,this.processComment(e),e}var l=r(i),p=o(l),c=r(n),f=o(c),h=r(s),d=o(h),y=r(a),v=d.default.prototype,m=function(){function e(t,r,i){(0,p.default)(this,e),this.type="",this.start=t,this.end=0,this.loc=new y.SourceLocation(r),i&&(this.loc.filename=i)}return(0,f.default)(e,[{key:"__clone",value:function(){var t=new e;for(var r in this)t[r]=this[r];return t}}]),e}();v.startNode=function(){return new m(this.state.start,this.state.startLoc,this.filename)},v.startNodeAt=function(e,t){return new m(e,t,this.filename)},v.finishNode=function(e,t){return u.call(this,e,t,this.state.lastTokEnd,this.state.lastTokEndLoc)},v.finishNodeAt=function(e,t,r,i){return u.call(this,e,t,r,i)}},function(e,t,r,i,n,s,a,o){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=r(a),y=u(d),v=r(o),m=y.default.prototype;m.parseTopLevel=function(e,t){return t.sourceType=this.options.sourceType,this.parseBlockBody(t,!0,!0,h.types.eof),e.program=this.finishNode(t,"Program"),e.comments=this.state.comments,e.tokens=this.state.tokens,this.finishNode(e,"File")};var g={kind:"loop"},b={kind:"switch"};m.stmtToDirective=function(e){var t=e.expression,r=this.startNodeAt(t.start,t.loc.start),i=this.startNodeAt(e.start,e.loc.start),n=this.input.slice(t.start,t.end),s=r.value=n.slice(1,-1);return this.addExtra(r,"raw",n),this.addExtra(r,"rawValue",s),i.value=this.finishNodeAt(r,"DirectiveLiteral",t.end,t.loc.end),this.finishNodeAt(i,"Directive",e.end,e.loc.end)},m.parseStatement=function(e,t){this.match(h.types.at)&&this.parseDecorators(!0);var r=this.state.type,i=this.startNode();switch(r){case h.types._break:case h.types._continue:return this.parseBreakContinueStatement(i,r.keyword);case h.types._debugger:return this.parseDebuggerStatement(i);case h.types._do:return this.parseDoStatement(i);case h.types._for:return this.parseForStatement(i);case h.types._function:return e||this.unexpected(),this.parseFunctionStatement(i);case h.types._class:return e||this.unexpected(),this.takeDecorators(i),this.parseClass(i,!0);case h.types._if:return this.parseIfStatement(i);
+case h.types._return:return this.parseReturnStatement(i);case h.types._switch:return this.parseSwitchStatement(i);case h.types._throw:return this.parseThrowStatement(i);case h.types._try:return this.parseTryStatement(i);case h.types._let:case h.types._const:e||this.unexpected();case h.types._var:return this.parseVarStatement(i,r);case h.types._while:return this.parseWhileStatement(i);case h.types._with:return this.parseWithStatement(i);case h.types.braceL:return this.parseBlock();case h.types.semi:return this.parseEmptyStatement(i);case h.types._export:case h.types._import:return this.options.allowImportExportEverywhere||(t||this.raise(this.state.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.state.start,"'import' and 'export' may appear only with 'sourceType: module'")),r===h.types._import?this.parseImport(i):this.parseExport(i);case h.types.name:if(this.hasPlugin("asyncFunctions")&&"async"===this.state.value){var n=this.state.clone();if(this.next(),this.match(h.types._function)&&!this.canInsertSemicolon())return this.expect(h.types._function),this.parseFunction(i,!0,!1,!0);this.state=n}}var s=this.state.value,a=this.parseExpression();return r===h.types.name&&"Identifier"===a.type&&this.eat(h.types.colon)?this.parseLabeledStatement(i,s,a):this.parseExpressionStatement(i,a)},m.takeDecorators=function(e){this.state.decorators.length&&(e.decorators=this.state.decorators,this.state.decorators=[])},m.parseDecorators=function(e){for(;this.match(h.types.at);)this.state.decorators.push(this.parseDecorator());e&&this.match(h.types._export)||this.match(h.types._class)||this.raise(this.state.start,"Leading decorators must be attached to a class declaration")},m.parseDecorator=function(){this.hasPlugin("decorators")||this.unexpected();var e=this.startNode();return this.next(),e.expression=this.parseMaybeAssign(),this.finishNode(e,"Decorator")},m.parseBreakContinueStatement=function(e,t){var r="break"===t;this.next(),this.isLineTerminator()?e.label=null:this.match(h.types.name)?(e.label=this.parseIdentifier(),this.semicolon()):this.unexpected();var i=void 0;for(i=0;i<this.state.labels.length;++i){var n=this.state.labels[i];if(null==e.label||n.name===e.label.name){if(null!=n.kind&&(r||"loop"===n.kind))break;if(e.label&&r)break}}return i===this.state.labels.length&&this.raise(e.start,"Unsyntactic "+t),this.finishNode(e,r?"BreakStatement":"ContinueStatement")},m.parseDebuggerStatement=function(e){return this.next(),this.semicolon(),this.finishNode(e,"DebuggerStatement")},m.parseDoStatement=function(e){return this.next(),this.state.labels.push(g),e.body=this.parseStatement(!1),this.state.labels.pop(),this.expect(h.types._while),e.test=this.parseParenExpression(),this.eat(h.types.semi),this.finishNode(e,"DoWhileStatement")},m.parseForStatement=function(e){this.next(),this.state.labels.push(g);var t=!1;if(this.hasPlugin("asyncGenerators")&&this.state.inAsync&&this.isContextual("await")&&(t=!0,this.next()),this.expect(h.types.parenL),this.match(h.types.semi))return t&&this.unexpected(),this.parseFor(e,null);if(this.match(h.types._var)||this.match(h.types._let)||this.match(h.types._const)){var r=this.startNode(),i=this.state.type;return this.next(),this.parseVar(r,!0,i),this.finishNode(r,"VariableDeclaration"),!this.match(h.types._in)&&!this.isContextual("of")||1!==r.declarations.length||r.declarations[0].init?(t&&this.unexpected(),this.parseFor(e,r)):this.parseForIn(e,r,t)}var n={start:0},s=this.parseExpression(!0,n);return this.match(h.types._in)||this.isContextual("of")?(this.toAssignable(s),this.checkLVal(s),this.parseForIn(e,s,t)):(n.start&&this.unexpected(n.start),t&&this.unexpected(),this.parseFor(e,s))},m.parseFunctionStatement=function(e){return this.next(),this.parseFunction(e,!0)},m.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(!1),e.alternate=this.eat(h.types._else)?this.parseStatement(!1):null,this.finishNode(e,"IfStatement")},m.parseReturnStatement=function(e){return this.state.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.state.start,"'return' outside of function"),this.next(),this.isLineTerminator()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},m.parseSwitchStatement=function(e){this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(h.types.braceL),this.state.labels.push(b);for(var t,r=void 0;!this.match(h.types.braceR);)if(this.match(h.types._case)||this.match(h.types._default)){var i=this.match(h.types._case);r&&this.finishNode(r,"SwitchCase"),e.cases.push(r=this.startNode()),r.consequent=[],this.next(),i?r.test=this.parseExpression():(t&&this.raise(this.state.lastTokStart,"Multiple default clauses"),t=!0,r.test=null),this.expect(h.types.colon)}else r?r.consequent.push(this.parseStatement(!0)):this.unexpected();return r&&this.finishNode(r,"SwitchCase"),this.next(),this.state.labels.pop(),this.finishNode(e,"SwitchStatement")},m.parseThrowStatement=function(e){return this.next(),v.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start))&&this.raise(this.state.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var x=[];m.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.match(h.types._catch)){var t=this.startNode();this.next(),this.expect(h.types.parenL),t.param=this.parseBindingAtom(),this.checkLVal(t.param,!0,(0,f.default)(null)),this.expect(h.types.parenR),t.body=this.parseBlock(),e.handler=this.finishNode(t,"CatchClause")}return e.guardedHandlers=x,e.finalizer=this.eat(h.types._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},m.parseVarStatement=function(e,t){return this.next(),this.parseVar(e,!1,t),this.semicolon(),this.finishNode(e,"VariableDeclaration")},m.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.state.labels.push(g),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"WhileStatement")},m.parseWithStatement=function(e){return this.state.strict&&this.raise(this.state.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(!1),this.finishNode(e,"WithStatement")},m.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},m.parseLabeledStatement=function(e,t,r){var i=!0,n=!1,s=void 0;try{for(var a,o=(0,p.default)(this.state.labels);!(i=(a=o.next()).done);i=!0){var u=a.value;u.name===t&&this.raise(r.start,"Label '"+t+"' is already declared")}}catch(e){n=!0,s=e}finally{try{!i&&o.return&&o.return()}finally{if(n)throw s}}for(var l=this.state.type.isLoop?"loop":this.match(h.types._switch)?"switch":null,c=this.state.labels.length-1;c>=0;c--){var f=this.state.labels[c];if(f.statementStart!==e.start)break;f.statementStart=this.state.start,f.kind=l}return this.state.labels.push({name:t,kind:l,statementStart:this.state.start}),e.body=this.parseStatement(!0),this.state.labels.pop(),e.label=r,this.finishNode(e,"LabeledStatement")},m.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},m.parseBlock=function(e){var t=this.startNode();return this.expect(h.types.braceL),this.parseBlockBody(t,e,!1,h.types.braceR),this.finishNode(t,"BlockStatement")},m.parseBlockBody=function(e,t,r,i){e.body=[],e.directives=[];for(var n=!1,s=void 0,a=void 0;!this.eat(i);){n||!this.state.containsOctal||a||(a=this.state.octalPosition);var o=this.parseStatement(!0,r);if(!t||n||"ExpressionStatement"!==o.type||"StringLiteral"!==o.expression.type||o.expression.extra.parenthesized)n=!0,e.body.push(o);else{var u=this.stmtToDirective(o);e.directives.push(u),void 0===s&&"use strict"===u.value.value&&(s=this.state.strict,this.setStrict(!0),a&&this.raise(a,"Octal literal in strict mode"))}}s===!1&&this.setStrict(!1)},m.parseFor=function(e,t){return e.init=t,this.expect(h.types.semi),e.test=this.match(h.types.semi)?null:this.parseExpression(),this.expect(h.types.semi),e.update=this.match(h.types.parenR)?null:this.parseExpression(),this.expect(h.types.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"ForStatement")},m.parseForIn=function(e,t,r){var i=void 0;return r?(this.eatContextual("of"),i="ForAwaitStatement"):(i=this.match(h.types._in)?"ForInStatement":"ForOfStatement",this.next()),e.left=t,e.right=this.parseExpression(),this.expect(h.types.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,i)},m.parseVar=function(e,t,r){for(e.declarations=[],e.kind=r.keyword;;){var i=this.startNode();if(this.parseVarHead(i),this.eat(h.types.eq)?i.init=this.parseMaybeAssign(t):r!==h.types._const||this.match(h.types._in)||this.isContextual("of")?"Identifier"===i.id.type||t&&(this.match(h.types._in)||this.isContextual("of"))?i.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(i,"VariableDeclarator")),!this.eat(h.types.comma))break}return e},m.parseVarHead=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0)},m.parseFunction=function(e,t,r,i,n){var s=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(e,i),this.match(h.types.star)&&(e.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(e.generator=!0,this.next())),!t||n||this.match(h.types.name)||this.match(h.types._yield)||this.unexpected(),(this.match(h.types.name)||this.match(h.types._yield))&&(e.id=this.parseBindingIdentifier()),this.parseFunctionParams(e),this.parseFunctionBody(e,r),this.state.inMethod=s,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},m.parseFunctionParams=function(e){this.expect(h.types.parenL),e.params=this.parseBindingList(h.types.parenR,!1,this.hasPlugin("trailingFunctionCommas"))},m.parseClass=function(e,t,r){return this.next(),this.parseClassId(e,t,r),this.parseClassSuper(e),this.parseClassBody(e),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},m.isClassProperty=function(){return this.match(h.types.eq)||this.isLineTerminator()},m.parseClassBody=function(e){var t=this.state.strict;this.state.strict=!0;var r=!1,i=!1,n=[],s=this.startNode();for(s.body=[],this.expect(h.types.braceL);!this.eat(h.types.braceR);)if(!this.eat(h.types.semi))if(this.match(h.types.at))n.push(this.parseDecorator());else{var a=this.startNode();n.length&&(a.decorators=n,n=[]);var o=!1,u=this.match(h.types.name)&&"static"===this.state.value,l=this.eat(h.types.star),p=!1,c=!1;if(this.parsePropertyName(a),a.static=u&&!this.match(h.types.parenL),a.static&&(l&&this.unexpected(),l=this.eat(h.types.star),this.parsePropertyName(a)),!l&&"Identifier"===a.key.type&&!a.computed){if(this.isClassProperty()){s.body.push(this.parseClassProperty(a));continue}this.hasPlugin("classConstructorCall")&&"call"===a.key.name&&this.match(h.types.name)&&"constructor"===this.state.value&&(o=!0,this.parsePropertyName(a))}var f=this.hasPlugin("asyncFunctions")&&!this.match(h.types.parenL)&&!a.computed&&"Identifier"===a.key.type&&"async"===a.key.name;if(f&&(this.hasPlugin("asyncGenerators")&&this.eat(h.types.star)&&(l=!0),c=!0,this.parsePropertyName(a)),a.kind="method",!a.computed){var d=a.key;c||l||"Identifier"!==d.type||this.match(h.types.parenL)||"get"!==d.name&&"set"!==d.name||(p=!0,a.kind=d.name,d=this.parsePropertyName(a));var y=!o&&!a.static&&("Identifier"===d.type&&"constructor"===d.name||"StringLiteral"===d.type&&"constructor"===d.value);y&&(i&&this.raise(d.start,"Duplicate constructor in the same class"),p&&this.raise(d.start,"Constructor can't have get/set modifier"),l&&this.raise(d.start,"Constructor can't be a generator"),c&&this.raise(d.start,"Constructor can't be an async function"),a.kind="constructor",i=!0);var v=a.static&&("Identifier"===d.type&&"prototype"===d.name||"StringLiteral"===d.type&&"prototype"===d.value);v&&this.raise(d.start,"Classes may not have static property named prototype")}if(o&&(r&&this.raise(a.start,"Duplicate constructor call in the same class"),a.kind="constructorCall",r=!0),"constructor"!==a.kind&&"constructorCall"!==a.kind||!a.decorators||this.raise(a.start,"You can't attach decorators to a class constructor"),this.parseClassMethod(s,a,l,c),p){var m="get"===a.kind?0:1;if(a.params.length!==m){var g=a.start;"get"===a.kind?this.raise(g,"getter should have no params"):this.raise(g,"setter should have exactly one param")}}}n.length&&this.raise(this.state.start,"You have trailing decorators with no method"),e.body=this.finishNode(s,"ClassBody"),this.state.strict=t},m.parseClassProperty=function(e){return this.match(h.types.eq)?(this.hasPlugin("classProperties")||this.unexpected(),this.next(),e.value=this.parseMaybeAssign()):e.value=null,this.semicolon(),this.finishNode(e,"ClassProperty")},m.parseClassMethod=function(e,t,r,i){this.parseMethod(t,r,i),e.body.push(this.finishNode(t,"ClassMethod"))},m.parseClassId=function(e,t,r){this.match(h.types.name)?e.id=this.parseIdentifier():r||!t?e.id=null:this.unexpected()},m.parseClassSuper=function(e){e.superClass=this.eat(h.types._extends)?this.parseExprSubscripts():null},m.parseExport=function(e){if(this.next(),this.match(h.types.star)){var t=this.startNode();if(this.next(),!this.hasPlugin("exportExtensions")||!this.eatContextual("as"))return this.parseExportFrom(e,!0),this.finishNode(e,"ExportAllDeclaration");t.exported=this.parseIdentifier(),e.specifiers=[this.finishNode(t,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(e),this.parseExportFrom(e,!0)}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var r=this.startNode();if(r.exported=this.parseIdentifier(!0),e.specifiers=[this.finishNode(r,"ExportDefaultSpecifier")],this.match(h.types.comma)&&this.lookahead().type===h.types.star){this.expect(h.types.comma);var i=this.startNode();this.expect(h.types.star),this.expectContextual("as"),i.exported=this.parseIdentifier(),e.specifiers.push(this.finishNode(i,"ExportNamespaceSpecifier"))}else this.parseExportSpecifiersMaybe(e);this.parseExportFrom(e,!0)}else{if(this.eat(h.types._default)){var n=this.startNode(),s=!1;return this.eat(h.types._function)?n=this.parseFunction(n,!0,!1,!1,!0):this.match(h.types._class)?n=this.parseClass(n,!0,!0):(s=!0,n=this.parseMaybeAssign()),e.declaration=n,s&&this.semicolon(),this.checkExport(e),this.finishNode(e,"ExportDefaultDeclaration")}this.state.type.keyword||this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,e.declaration=this.parseExportDeclaration(e)):(e.declaration=null,e.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(e))}return this.checkExport(e),this.finishNode(e,"ExportNamedDeclaration")},m.parseExportDeclaration=function(){return this.parseStatement(!0)},m.isExportDefaultSpecifier=function(){if(this.match(h.types.name))return"type"!==this.state.value&&"async"!==this.state.value&&"interface"!==this.state.value;if(!this.match(h.types._default))return!1;var e=this.lookahead();return e.type===h.types.comma||e.type===h.types.name&&"from"===e.value},m.parseExportSpecifiersMaybe=function(e){this.eat(h.types.comma)&&(e.specifiers=e.specifiers.concat(this.parseExportSpecifiers()))},m.parseExportFrom=function(e,t){this.eatContextual("from")?(e.source=this.match(h.types.string)?this.parseExprAtom():this.unexpected(),this.checkExport(e)):t?this.unexpected():e.source=null,this.semicolon()},m.shouldParseExportDeclaration=function(){return this.hasPlugin("asyncFunctions")&&this.isContextual("async")},m.checkExport=function(e){if(this.state.decorators.length){var t=e.declaration&&("ClassDeclaration"===e.declaration.type||"ClassExpression"===e.declaration.type);e.declaration&&t||this.raise(e.start,"You can only use decorators on an export when exporting a class"),this.takeDecorators(e.declaration)}},m.parseExportSpecifiers=function(){var e=[],t=!0,r=void 0;for(this.expect(h.types.braceL);!this.eat(h.types.braceR);){if(t)t=!1;else if(this.expect(h.types.comma),this.eat(h.types.braceR))break;var i=this.match(h.types._default);i&&!r&&(r=!0);var n=this.startNode();n.local=this.parseIdentifier(i),n.exported=this.eatContextual("as")?this.parseIdentifier(!0):n.local.__clone(),e.push(this.finishNode(n,"ExportSpecifier"))}return r&&!this.isContextual("from")&&this.unexpected(),e},m.parseImport=function(e){return this.next(),this.match(h.types.string)?(e.specifiers=[],e.source=this.parseExprAtom()):(e.specifiers=[],this.parseImportSpecifiers(e),this.expectContextual("from"),e.source=this.match(h.types.string)?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},m.parseImportSpecifiers=function(e){var t=!0;if(this.match(h.types.name)){var r=this.state.start,i=this.state.startLoc;if(e.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(),r,i)),!this.eat(h.types.comma))return}if(this.match(h.types.star)){var n=this.startNode();return this.next(),this.expectContextual("as"),n.local=this.parseIdentifier(),this.checkLVal(n.local,!0),void e.specifiers.push(this.finishNode(n,"ImportNamespaceSpecifier"))}for(this.expect(h.types.braceL);!this.eat(h.types.braceR);){if(t)t=!1;else if(this.expect(h.types.comma),this.eat(h.types.braceR))break;var s=this.startNode();s.imported=this.parseIdentifier(!0),s.local=this.eatContextual("as")?this.parseIdentifier():s.imported.__clone(),this.checkLVal(s.local,!0),e.specifiers.push(this.finishNode(s,"ImportSpecifier"))}},m.parseImportSpecifierDefault=function(e,t,r){var i=this.startNodeAt(t,r);return i.local=e,this.checkLVal(i.local,!0),this.finishNode(i,"ImportDefaultSpecifier")}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}var o=r(i),u=r(n),l=a(u),p=r(s),c=l.default.prototype;c.addExtra=function(e,t,r){if(e){var i=e.extra=e.extra||{};i[t]=r}},c.isRelational=function(e){return this.match(o.types.relational)&&this.state.value===e},c.expectRelational=function(e){this.isRelational(e)?this.next():this.unexpected()},c.isContextual=function(e){return this.match(o.types.name)&&this.state.value===e},c.eatContextual=function(e){return this.state.value===e&&this.eat(o.types.name)},c.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},c.canInsertSemicolon=function(){return this.match(o.types.eof)||this.match(o.types.braceR)||p.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start))},c.isLineTerminator=function(){return this.eat(o.types.semi)||this.canInsertSemicolon()},c.semicolon=function(){this.isLineTerminator()||this.unexpected()},c.expect=function(e){return this.eat(e)||this.unexpected()},c.unexpected=function(e){this.raise(null!=e?e:this.state.start,"Unexpected token")}},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(e){return e.expression.typeAnnotation=e.typeAnnotation,e.expression}e.extend("parseFunctionBody",function(e){return function(t,r){return this.match(a.types.colon)&&!r&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("parseStatement",function(e){return function(t,r){if(this.state.strict&&this.match(a.types.name)&&"interface"===this.state.value){var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t,r)}}),e.extend("parseExpressionStatement",function(e){return function(t,r){if("Identifier"===r.type)if("declare"===r.name){if(this.match(a.types._class)||this.match(a.types.name)||this.match(a.types._function)||this.match(a.types._var))return this.flowParseDeclare(t)}else if(this.match(a.types.name)){if("interface"===r.name)return this.flowParseInterface(t);if("type"===r.name)return this.flowParseTypeAlias(t)}return e.call(this,t,r)}}),e.extend("shouldParseExportDeclaration",function(e){return function(){return this.isContextual("type")||this.isContextual("interface")||e.call(this)}}),e.extend("parseParenItem",function(){return function(e,t,r,i){var n=this.state.potentialArrowAt=r;if(this.match(a.types.colon)){var s=this.startNodeAt(t,r);if(s.expression=e,s.typeAnnotation=this.flowParseTypeAnnotation(),i&&!this.match(a.types.arrow)&&this.unexpected(),n&&this.eat(a.types.arrow)){var o="SequenceExpression"===e.type?e.expressions:[e],u=this.parseArrowExpression(this.startNodeAt(t,r),o);return u.returnType=s.typeAnnotation,u}return this.finishNode(s,"TypeCastExpression")}return e}}),e.extend("parseExport",function(e){return function(t){return t=e.call(this,t),"ExportNamedDeclaration"===t.type&&(t.exportKind=t.exportKind||"value"),t}}),e.extend("parseExportDeclaration",function(e){return function(t){if(this.isContextual("type")){t.exportKind="type";var r=this.startNode();return this.next(),this.match(a.types.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(r)}if(this.isContextual("interface")){t.exportKind="type";var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t)}}),e.extend("parseClassId",function(e){return function(t){e.apply(this,arguments),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}}),e.extend("isKeyword",function(e){return function(t){return(!this.state.inType||"void"!==t)&&e.call(this,t)}}),e.extend("readToken",function(e){return function(t){return!this.state.inType||62!==t&&60!==t?e.call(this,t):this.finishOp(a.types.relational,1)}}),e.extend("jsx_readToken",function(e){return function(){if(!this.state.inType)return e.call(this)}}),e.extend("toAssignable",function(e){return function(r){return"TypeCastExpression"===r.type?t(r):e.apply(this,arguments)}}),e.extend("toAssignableList",function(e){return function(r,i){for(var n=0;n<r.length;n++){var s=r[n];s&&"TypeCastExpression"===s.type&&(r[n]=t(s))}return e.call(this,r,i)}}),e.extend("toReferencedList",function(){return function(e){for(var t=0;t<e.length;t++){var r=e[t];r&&r._exprListItem&&"TypeCastExpression"===r.type&&this.raise(r.start,"Unexpected type cast")}return e}}),e.extend("parseExprListItem",function(e){return function(t,r){var i=this.startNode(),n=e.call(this,t,r);return this.match(a.types.colon)?(i._exprListItem=!0,i.expression=n,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")):n}}),e.extend("checkLVal",function(e){return function(t){if("TypeCastExpression"!==t.type)return e.apply(this,arguments)}}),e.extend("parseClassProperty",function(e){return function(t){return this.match(a.types.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),e.call(this,t)}}),e.extend("isClassProperty",function(e){return function(){return this.match(a.types.colon)||e.call(this)}}),e.extend("parseClassMethod",function(){return function(e,t,r,i){this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.parseMethod(t,r,i),e.body.push(this.finishNode(t,"ClassMethod"))}}),e.extend("parseClassSuper",function(e){return function(t,r){if(e.call(this,t,r),t.superClass&&this.isRelational("<")&&(t.superTypeParameters=this.flowParseTypeParameterInstantiation()),this.isContextual("implements")){this.next();var i=t.implements=[];do{var n=this.startNode();n.id=this.parseIdentifier(),this.isRelational("<")?n.typeParameters=this.flowParseTypeParameterInstantiation():n.typeParameters=null,i.push(this.finishNode(n,"ClassImplements"))}while(this.eat(a.types.comma))}}}),e.extend("parseObjPropValue",function(e){return function(t){var r=void 0;this.isRelational("<")&&(r=this.flowParseTypeParameterDeclaration(),this.match(a.types.parenL)||this.unexpected()),e.apply(this,arguments),r&&((t.value||t).typeParameters=r)}}),e.extend("parseAssignableListItemTypes",function(){return function(e){return this.eat(a.types.question)&&(e.optional=!0),this.match(a.types.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),this.finishNode(e,e.type),e}}),e.extend("parseImportSpecifiers",function(e){return function(t){t.importKind="value";var r=null;if(this.match(a.types._typeof)?r="typeof":this.isContextual("type")&&(r="type"),r){var i=this.lookahead();(i.type===a.types.name&&"from"!==i.value||i.type===a.types.braceL||i.type===a.types.star)&&(this.next(),t.importKind=r)}e.call(this,t)}}),e.extend("parseFunctionParams",function(e){return function(t){this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),e.call(this,t)}}),e.extend("parseVarHead",function(e){return function(t){e.call(this,t),this.match(a.types.colon)&&(t.id.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(t.id,t.id.type))}}),e.extend("parseAsyncArrowFromCallExpression",function(e){return function(t,r){return this.match(a.types.colon)&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("shouldParseAsyncArrow",function(e){return function(){return this.match(a.types.colon)||e.call(this)}}),e.extend("parseParenAndDistinguishExpression",function(e){return function(t,r,i,n){if(t=t||this.state.start,r=r||this.state.startLoc,i&&this.lookahead().type===a.types.parenR){this.expect(a.types.parenL),this.expect(a.types.parenR);var s=this.startNodeAt(t,r);return this.match(a.types.colon)&&(s.returnType=this.flowParseTypeAnnotation()),this.expect(a.types.arrow),this.parseArrowExpression(s,[],n)}var o=e.call(this,t,r,i,n,this.hasPlugin("trailingFunctionCommas"));if(!this.match(a.types.colon))return o;var u=this.state.clone();try{return this.parseParenItem(o,t,r,!0)}catch(e){if(e instanceof SyntaxError)return this.state=u,o;throw e}}})};var a=r(i),o=r(n),u=s(o),l=u.default.prototype;l.flowParseTypeInitialiser=function(e,t){var r=this.state.inType;this.state.inType=!0,this.expect(e||a.types.colon),t&&(this.match(a.types.bitwiseAND)||this.match(a.types.bitwiseOR))&&this.next();var i=this.flowParseType();return this.state.inType=r,i},l.flowParseDeclareClass=function(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")},l.flowParseDeclareFunction=function(e){this.next();var t=e.id=this.parseIdentifier(),r=this.startNode(),i=this.startNode();this.isRelational("<")?r.typeParameters=this.flowParseTypeParameterDeclaration():r.typeParameters=null,this.expect(a.types.parenL);var n=this.flowParseFunctionTypeParams();return r.params=n.params,r.rest=n.rest,this.expect(a.types.parenR),r.returnType=this.flowParseTypeInitialiser(),i.typeAnnotation=this.finishNode(r,"FunctionTypeAnnotation"),t.typeAnnotation=this.finishNode(i,"TypeAnnotation"),this.finishNode(t,t.type),this.semicolon(),this.finishNode(e,"DeclareFunction")},l.flowParseDeclare=function(e){return this.match(a.types._class)?this.flowParseDeclareClass(e):this.match(a.types._function)?this.flowParseDeclareFunction(e):this.match(a.types._var)?this.flowParseDeclareVariable(e):this.isContextual("module")?this.flowParseDeclareModule(e):this.isContextual("type")?this.flowParseDeclareTypeAlias(e):this.isContextual("interface")?this.flowParseDeclareInterface(e):void this.unexpected()},l.flowParseDeclareVariable=function(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(e,"DeclareVariable")},l.flowParseDeclareModule=function(e){this.next(),this.match(a.types.string)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();var t=e.body=this.startNode(),r=t.body=[];for(this.expect(a.types.braceL);!this.match(a.types.braceR);){var i=this.startNode();this.next(),r.push(this.flowParseDeclare(i))}return this.expect(a.types.braceR),this.finishNode(t,"BlockStatement"),this.finishNode(e,"DeclareModule")},l.flowParseDeclareTypeAlias=function(e){return this.next(),this.flowParseTypeAlias(e),this.finishNode(e,"DeclareTypeAlias")},l.flowParseDeclareInterface=function(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")},l.flowParseInterfaceish=function(e,t){if(e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.mixins=[],this.eat(a.types._extends))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(a.types.comma));if(this.isContextual("mixins")){this.next();do e.mixins.push(this.flowParseInterfaceExtends());while(this.eat(a.types.comma))}e.body=this.flowParseObjectType(t)},l.flowParseInterfaceExtends=function(){var e=this.startNode();return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")},l.flowParseInterface=function(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,"InterfaceDeclaration")},l.flowParseTypeAlias=function(e){return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(a.types.eq,!0),this.semicolon(),this.finishNode(e,"TypeAlias")},l.flowParseTypeParameterDeclaration=function(){var e=this.startNode();for(e.params=[],this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseExistentialTypeParam()||this.flowParseTypeAnnotatableIdentifier()),this.isRelational(">")||this.expect(a.types.comma);return this.expectRelational(">"),this.finishNode(e,"TypeParameterDeclaration")},l.flowParseExistentialTypeParam=function(){if(this.match(a.types.star)){var e=this.startNode();return this.next(),this.finishNode(e,"ExistentialTypeParam")}},l.flowParseTypeParameterInstantiation=function(){var e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseExistentialTypeParam()||this.flowParseType()),this.isRelational(">")||this.expect(a.types.comma);return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterInstantiation")},l.flowParseObjectPropertyKey=function(){return this.match(a.types.num)||this.match(a.types.string)?this.parseExprAtom():this.parseIdentifier(!0)},l.flowParseObjectTypeIndexer=function(e,t){return e.static=t,this.expect(a.types.bracketL),e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser(),this.expect(a.types.bracketR),e.value=this.flowParseTypeInitialiser(),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeIndexer")},l.flowParseObjectTypeMethodish=function(e){for(e.params=[],e.rest=null,e.typeParameters=null,this.isRelational("<")&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(a.types.parenL);this.match(a.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(a.types.parenR)||this.expect(a.types.comma);return this.eat(a.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),this.expect(a.types.parenR),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")},l.flowParseObjectTypeMethod=function(e,t,r,i){var n=this.startNodeAt(e,t);return n.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e,t)),n.static=r,n.key=i,n.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(n,"ObjectTypeProperty")},l.flowParseObjectTypeCallProperty=function(e,t){var r=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(r),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeCallProperty")},l.flowParseObjectType=function(e){var t=this.startNode(),r=void 0,i=void 0,n=void 0;for(t.callProperties=[],t.properties=[],t.indexers=[],this.expect(a.types.braceL);!this.match(a.types.braceR);){var s=!1,o=this.state.start,u=this.state.startLoc;r=this.startNode(),e&&this.isContextual("static")&&(this.next(),n=!0),this.match(a.types.bracketL)?t.indexers.push(this.flowParseObjectTypeIndexer(r,n)):this.match(a.types.parenL)||this.isRelational("<")?t.callProperties.push(this.flowParseObjectTypeCallProperty(r,e)):(i=n&&this.match(a.types.colon)?this.parseIdentifier():this.flowParseObjectPropertyKey(),
+this.isRelational("<")||this.match(a.types.parenL)?t.properties.push(this.flowParseObjectTypeMethod(o,u,n,i)):(this.eat(a.types.question)&&(s=!0),r.key=i,r.value=this.flowParseTypeInitialiser(),r.optional=s,r.static=n,this.flowObjectTypeSemicolon(),t.properties.push(this.finishNode(r,"ObjectTypeProperty"))))}return this.expect(a.types.braceR),this.finishNode(t,"ObjectTypeAnnotation")},l.flowObjectTypeSemicolon=function(){this.eat(a.types.semi)||this.eat(a.types.comma)||this.match(a.types.braceR)||this.unexpected()},l.flowParseGenericType=function(e,t,r){var i=this.startNodeAt(e,t);for(i.typeParameters=null,i.id=r;this.eat(a.types.dot);){var n=this.startNodeAt(e,t);n.qualification=i.id,n.id=this.parseIdentifier(),i.id=this.finishNode(n,"QualifiedTypeIdentifier")}return this.isRelational("<")&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")},l.flowParseTypeofType=function(){var e=this.startNode();return this.expect(a.types._typeof),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")},l.flowParseTupleType=function(){var e=this.startNode();for(e.types=[],this.expect(a.types.bracketL);this.state.pos<this.input.length&&!this.match(a.types.bracketR)&&(e.types.push(this.flowParseType()),!this.match(a.types.bracketR));)this.expect(a.types.comma);return this.expect(a.types.bracketR),this.finishNode(e,"TupleTypeAnnotation")},l.flowParseFunctionTypeParam=function(){var e=!1,t=this.startNode();return t.name=this.parseIdentifier(),this.eat(a.types.question)&&(e=!0),t.optional=e,t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeParam")},l.flowParseFunctionTypeParams=function(){for(var e={params:[],rest:null};this.match(a.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(a.types.parenR)||this.expect(a.types.comma);return this.eat(a.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),e},l.flowIdentToTypeAnnotation=function(e,t,r,i){switch(i.name){case"any":return this.finishNode(r,"AnyTypeAnnotation");case"void":return this.finishNode(r,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(r,"BooleanTypeAnnotation");case"mixed":return this.finishNode(r,"MixedTypeAnnotation");case"number":return this.finishNode(r,"NumberTypeAnnotation");case"string":return this.finishNode(r,"StringTypeAnnotation");default:return this.flowParseGenericType(e,t,i)}},l.flowParsePrimaryType=function(){var e=this.state.start,t=this.state.startLoc,r=this.startNode(),i=void 0,n=void 0,s=!1;switch(this.state.type){case a.types.name:return this.flowIdentToTypeAnnotation(e,t,r,this.parseIdentifier());case a.types.braceL:return this.flowParseObjectType();case a.types.bracketL:return this.flowParseTupleType();case a.types.relational:if("<"===this.state.value)return r.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(a.types.parenL),i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(a.types.parenR),this.expect(a.types.arrow),r.returnType=this.flowParseType(),this.finishNode(r,"FunctionTypeAnnotation");case a.types.parenL:if(this.next(),!this.match(a.types.parenR)&&!this.match(a.types.ellipsis))if(this.match(a.types.name)){var o=this.lookahead().type;s=o!==a.types.question&&o!==a.types.colon}else s=!0;return s?(n=this.flowParseType(),this.expect(a.types.parenR),this.eat(a.types.arrow)&&this.raise(r,"Unexpected token =>. It looks like you are trying to write a function type, but you ended up writing a grouped type followed by an =>, which is a syntax error. Remember, function type parameters are named so function types look like (name1: type1, name2: type2) => returnType. You probably wrote (type1) => returnType"),n):(i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(a.types.parenR),this.expect(a.types.arrow),r.returnType=this.flowParseType(),r.typeParameters=null,this.finishNode(r,"FunctionTypeAnnotation"));case a.types.string:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"StringLiteralTypeAnnotation");case a.types._true:case a.types._false:return r.value=this.match(a.types._true),this.next(),this.finishNode(r,"BooleanLiteralTypeAnnotation");case a.types.num:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"NumericLiteralTypeAnnotation");case a.types._null:return r.value=this.match(a.types._null),this.next(),this.finishNode(r,"NullLiteralTypeAnnotation");case a.types._this:return r.value=this.match(a.types._this),this.next(),this.finishNode(r,"ThisTypeAnnotation");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}this.unexpected()},l.flowParsePostfixType=function(){var e=this.startNode(),t=e.elementType=this.flowParsePrimaryType();return this.match(a.types.bracketL)?(this.expect(a.types.bracketL),this.expect(a.types.bracketR),this.finishNode(e,"ArrayTypeAnnotation")):t},l.flowParsePrefixType=function(){var e=this.startNode();return this.eat(a.types.question)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()},l.flowParseIntersectionType=function(){var e=this.startNode(),t=this.flowParsePrefixType();for(e.types=[t];this.eat(a.types.bitwiseAND);)e.types.push(this.flowParsePrefixType());return 1===e.types.length?t:this.finishNode(e,"IntersectionTypeAnnotation")},l.flowParseUnionType=function(){var e=this.startNode(),t=this.flowParseIntersectionType();for(e.types=[t];this.eat(a.types.bitwiseOR);)e.types.push(this.flowParseIntersectionType());return 1===e.types.length?t:this.finishNode(e,"UnionTypeAnnotation")},l.flowParseType=function(){var e=this.state.inType;this.state.inType=!0;var t=this.flowParseUnionType();return this.state.inType=e,t},l.flowParseTypeAnnotation=function(){var e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")},l.flowParseTypeAnnotatableIdentifier=function(e,t){var r=void 0;this.match(a.types.plusMin)&&("+"===this.state.value?r="plus":"-"===this.state.value&&(r="minus"),this.eat(a.types.plusMin));var i=this.parseIdentifier(),n=!1;return r&&(i.variance=r),t&&this.eat(a.types.question)&&(this.expect(a.types.question),n=!0),(e||this.match(a.types.colon))&&(i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,i.type)),n&&(i.optional=!0,this.finishNode(i,i.type)),i}},function(e,t,r,i,n,s,a,o,u){"use strict";function l(e){return e&&e.__esModule?e:{default:e}}function p(e){return"JSXIdentifier"===e.type?e.name:"JSXNamespacedName"===e.type?e.namespace.name+":"+e.name.name:"JSXMemberExpression"===e.type?p(e.object)+"."+p(e.property):void 0}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.extend("parseExprAtom",function(e){return function(t){if(this.match(h.types.jsxText)){var r=this.parseLiteral(this.state.value,"JSXText");return r.extra=null,r}return this.match(h.types.jsxTagStart)?this.jsxParseElement():e.call(this,t)}}),e.extend("readToken",function(e){return function(t){var r=this.curContext();if(r===d.types.j_expr)return this.jsxReadToken();if(r===d.types.j_oTag||r===d.types.j_cTag){if((0,m.isIdentifierStart)(t))return this.jsxReadWord();if(62===t)return++this.state.pos,this.finishToken(h.types.jsxTagEnd);if((34===t||39===t)&&r===d.types.j_oTag)return this.jsxReadString(t)}return 60===t&&this.state.exprAllowed?(++this.state.pos,this.finishToken(h.types.jsxTagStart)):e.call(this,t)}}),e.extend("updateContext",function(e){return function(t){if(this.match(h.types.braceL)){var r=this.curContext();r===d.types.j_oTag?this.state.context.push(d.types.b_expr):r===d.types.j_expr?this.state.context.push(d.types.b_tmpl):e.call(this,t),this.state.exprAllowed=!0}else{if(!this.match(h.types.slash)||t!==h.types.jsxTagStart)return e.call(this,t);this.state.context.length-=2,this.state.context.push(d.types.j_cTag),this.state.exprAllowed=!1}}})};var c=r(i),f=l(c),h=r(n),d=r(s),y=r(a),v=l(y),m=r(o),g=r(u),b=/^[\da-fA-F]+$/,x=/^\d+$/;d.types.j_oTag=new d.TokContext("<tag",(!1)),d.types.j_cTag=new d.TokContext("</tag",(!1)),d.types.j_expr=new d.TokContext("<tag>...</tag>",(!0),(!0)),h.types.jsxName=new h.TokenType("jsxName"),h.types.jsxText=new h.TokenType("jsxText",{beforeExpr:!0}),h.types.jsxTagStart=new h.TokenType("jsxTagStart"),h.types.jsxTagEnd=new h.TokenType("jsxTagEnd"),h.types.jsxTagStart.updateContext=function(){this.state.context.push(d.types.j_expr),this.state.context.push(d.types.j_oTag),this.state.exprAllowed=!1},h.types.jsxTagEnd.updateContext=function(e){var t=this.state.context.pop();t===d.types.j_oTag&&e===h.types.slash||t===d.types.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===d.types.j_expr):this.state.exprAllowed=!0};var E=v.default.prototype;E.jsxReadToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var r=this.input.charCodeAt(this.state.pos);switch(r){case 60:case 123:return this.state.pos===this.state.start?60===r&&this.state.exprAllowed?(++this.state.pos,this.finishToken(h.types.jsxTagStart)):this.getTokenFromCode(r):(e+=this.input.slice(t,this.state.pos),this.finishToken(h.types.jsxText,e));case 38:e+=this.input.slice(t,this.state.pos),e+=this.jsxReadEntity(),t=this.state.pos;break;default:(0,g.isNewLine)(r)?(e+=this.input.slice(t,this.state.pos),e+=this.jsxReadNewLine(!0),t=this.state.pos):++this.state.pos}}},E.jsxReadNewLine=function(e){var t=this.input.charCodeAt(this.state.pos),r=void 0;return++this.state.pos,13===t&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,r=e?"\n":"\r\n"):r=String.fromCharCode(t),++this.state.curLine,this.state.lineStart=this.state.pos,r},E.jsxReadString=function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===e)break;38===i?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadEntity(),r=this.state.pos):(0,g.isNewLine)(i)?(t+=this.input.slice(r,this.state.pos),t+=this.jsxReadNewLine(!1),r=this.state.pos):++this.state.pos}return t+=this.input.slice(r,this.state.pos++),this.finishToken(h.types.string,t)},E.jsxReadEntity=function(){for(var e="",t=0,r=void 0,i=this.input[this.state.pos],n=++this.state.pos;this.state.pos<this.input.length&&t++<10;){if(i=this.input[this.state.pos++],";"===i){"#"===e[0]?"x"===e[1]?(e=e.substr(2),b.test(e)&&(r=String.fromCharCode(parseInt(e,16)))):(e=e.substr(1),x.test(e)&&(r=String.fromCharCode(parseInt(e,10)))):r=f.default[e];break}e+=i}return r?r:(this.state.pos=n,"&")},E.jsxReadWord=function(){var e=void 0,t=this.state.pos;do e=this.input.charCodeAt(++this.state.pos);while((0,m.isIdentifierChar)(e)||45===e);return this.finishToken(h.types.jsxName,this.input.slice(t,this.state.pos))},E.jsxParseIdentifier=function(){var e=this.startNode();return this.match(h.types.jsxName)?e.name=this.state.value:this.state.type.keyword?e.name=this.state.type.keyword:this.unexpected(),this.next(),this.finishNode(e,"JSXIdentifier")},E.jsxParseNamespacedName=function(){var e=this.state.start,t=this.state.startLoc,r=this.jsxParseIdentifier();if(!this.eat(h.types.colon))return r;var i=this.startNodeAt(e,t);return i.namespace=r,i.name=this.jsxParseIdentifier(),this.finishNode(i,"JSXNamespacedName")},E.jsxParseElementName=function(){for(var e=this.state.start,t=this.state.startLoc,r=this.jsxParseNamespacedName();this.eat(h.types.dot);){var i=this.startNodeAt(e,t);i.object=r,i.property=this.jsxParseIdentifier(),r=this.finishNode(i,"JSXMemberExpression")}return r},E.jsxParseAttributeValue=function(){var e=void 0;switch(this.state.type){case h.types.braceL:if(e=this.jsxParseExpressionContainer(),"JSXEmptyExpression"!==e.expression.type)return e;this.raise(e.start,"JSX attributes must only be assigned a non-empty expression");case h.types.jsxTagStart:case h.types.string:return e=this.parseExprAtom(),e.extra=null,e;default:this.raise(this.state.start,"JSX value should be either an expression or a quoted JSX text")}},E.jsxParseEmptyExpression=function(){var e=this.startNodeAt(this.lastTokEnd,this.lastTokEndLoc);return this.finishNodeAt(e,"JSXEmptyExpression",this.start,this.startLoc)},E.jsxParseExpressionContainer=function(){var e=this.startNode();return this.next(),this.match(h.types.braceR)?e.expression=this.jsxParseEmptyExpression():e.expression=this.parseExpression(),this.expect(h.types.braceR),this.finishNode(e,"JSXExpressionContainer")},E.jsxParseAttribute=function(){var e=this.startNode();return this.eat(h.types.braceL)?(this.expect(h.types.ellipsis),e.argument=this.parseMaybeAssign(),this.expect(h.types.braceR),this.finishNode(e,"JSXSpreadAttribute")):(e.name=this.jsxParseNamespacedName(),e.value=this.eat(h.types.eq)?this.jsxParseAttributeValue():null,this.finishNode(e,"JSXAttribute"))},E.jsxParseOpeningElementAt=function(e,t){var r=this.startNodeAt(e,t);for(r.attributes=[],r.name=this.jsxParseElementName();!this.match(h.types.slash)&&!this.match(h.types.jsxTagEnd);)r.attributes.push(this.jsxParseAttribute());return r.selfClosing=this.eat(h.types.slash),this.expect(h.types.jsxTagEnd),this.finishNode(r,"JSXOpeningElement")},E.jsxParseClosingElementAt=function(e,t){var r=this.startNodeAt(e,t);return r.name=this.jsxParseElementName(),this.expect(h.types.jsxTagEnd),this.finishNode(r,"JSXClosingElement")},E.jsxParseElementAt=function(e,t){var r=this.startNodeAt(e,t),i=[],n=this.jsxParseOpeningElementAt(e,t),s=null;if(!n.selfClosing){e:for(;;)switch(this.state.type){case h.types.jsxTagStart:if(e=this.state.start,t=this.state.startLoc,this.next(),this.eat(h.types.slash)){s=this.jsxParseClosingElementAt(e,t);break e}i.push(this.jsxParseElementAt(e,t));break;case h.types.jsxText:i.push(this.parseExprAtom());break;case h.types.braceL:i.push(this.jsxParseExpressionContainer());break;default:this.unexpected()}p(s.name)!==p(n.name)&&this.raise(s.start,"Expected corresponding JSX closing tag for <"+p(n.name)+">")}return r.openingElement=n,r.closingElement=s,r.children=i,this.match(h.types.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(r,"JSXElement")},E.jsxParseElement=function(){var e=this.state.start,t=this.state.startLoc;return this.next(),this.jsxParseElementAt(e,t)}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.types=t.TokContext=void 0;var o=r(i),u=a(o),l=r(n),p=r(s),c=t.TokContext=function e(t,r,i,n){(0,u.default)(this,e),this.token=t,this.isExpr=!!r,this.preserveSpace=!!i,this.override=n},f=t.types={b_stat:new c("{",(!1)),b_expr:new c("{",(!0)),b_tmpl:new c("${",(!0)),p_stat:new c("(",(!1)),p_expr:new c("(",(!0)),q_tmpl:new c("`",(!0),(!0),function(e){return e.readTmplToken()}),f_expr:new c("function",(!0))};l.types.parenR.updateContext=l.types.braceR.updateContext=function(){if(1===this.state.context.length)return void(this.state.exprAllowed=!0);var e=this.state.context.pop();e===f.b_stat&&this.curContext()===f.f_expr?(this.state.context.pop(),this.state.exprAllowed=!1):e===f.b_tmpl?this.state.exprAllowed=!0:this.state.exprAllowed=!e.isExpr},l.types.name.updateContext=function(e){this.state.exprAllowed=!1,e!==l.types._let&&e!==l.types._const&&e!==l.types._var||p.lineBreak.test(this.input.slice(this.state.end))&&(this.state.exprAllowed=!0)},l.types.braceL.updateContext=function(e){this.state.context.push(this.braceIsBlock(e)?f.b_stat:f.b_expr),this.state.exprAllowed=!0},l.types.dollarBraceL.updateContext=function(){this.state.context.push(f.b_tmpl),this.state.exprAllowed=!0},l.types.parenL.updateContext=function(e){var t=e===l.types._if||e===l.types._for||e===l.types._with||e===l.types._while;this.state.context.push(t?f.p_stat:f.p_expr),this.state.exprAllowed=!0},l.types.incDec.updateContext=function(){},l.types._function.updateContext=function(){this.curContext()!==f.b_stat&&this.state.context.push(f.f_expr),this.state.exprAllowed=!1},l.types.backQuote.updateContext=function(){this.curContext()===f.q_tmpl?this.state.context.pop():this.state.context.push(f.q_tmpl),this.state.exprAllowed=!1}},function(e,t,r,i,n,s,a,o,u,l,p){"use strict";function c(e){return e&&e.__esModule?e:{default:e}}function f(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}Object.defineProperty(t,"__esModule",{value:!0}),t.Token=void 0;var h=r(i),d=c(h),y=r(n),v=c(y),m=r(s),g=r(a),b=r(o),x=r(u),E=r(l),A=r(p),S=c(A),_=t.Token=function e(t){(0,v.default)(this,e),this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,this.loc=new x.SourceLocation(t.startLoc,t.endLoc)},T=function(){function e(t,r){(0,v.default)(this,e),this.state=new S.default,this.state.init(t,r)}return(0,d.default)(e,[{key:"next",value:function(){this.isLookahead||this.state.tokens.push(new _(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()}},{key:"eat",value:function(e){return!!this.match(e)&&(this.next(),!0)}},{key:"match",value:function(e){return this.state.type===e}},{key:"isKeyword",value:function(e){return(0,m.isKeyword)(e)}},{key:"lookahead",value:function(){var e=this.state;this.state=e.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var t=this.state.clone(!0);return this.state=e,t}},{key:"setStrict",value:function(e){if(this.state.strict=e,this.match(g.types.num)||this.match(g.types.string)){for(this.state.pos=this.state.start;this.state.pos<this.state.lineStart;)this.state.lineStart=this.input.lastIndexOf("\n",this.state.lineStart-2)+1,--this.state.curLine;this.nextToken()}}},{key:"curContext",value:function(){return this.state.context[this.state.context.length-1]}},{key:"nextToken",value:function(){var e=this.curContext();return e&&e.preserveSpace||this.skipSpace(),this.state.containsOctal=!1,this.state.octalPosition=null,this.state.start=this.state.pos,this.state.startLoc=this.state.curPosition(),this.state.pos>=this.input.length?this.finishToken(g.types.eof):e.override?e.override(this):this.readToken(this.fullCharCodeAtPos())}},{key:"readToken",value:function(e){return(0,m.isIdentifierStart)(e)||92===e?this.readWord():this.getTokenFromCode(e)}},{key:"fullCharCodeAtPos",value:function(){var e=this.input.charCodeAt(this.state.pos);if(e<=55295||e>=57344)return e;var t=this.input.charCodeAt(this.state.pos+1);return(e<<10)+t-56613888}},{key:"pushComment",value:function(e,t,r,i,n,s){var a={type:e?"CommentBlock":"CommentLine",value:t,start:r,end:i,loc:new x.SourceLocation(n,s)};this.isLookahead||(this.state.tokens.push(a),this.state.comments.push(a)),this.addComment(a)}},{key:"skipBlockComment",value:function(){var e=this.state.curPosition(),t=this.state.pos,r=this.input.indexOf("*/",this.state.pos+=2);r===-1&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=r+2,E.lineBreakG.lastIndex=t;for(var i=void 0;(i=E.lineBreakG.exec(this.input))&&i.index<this.state.pos;)++this.state.curLine,this.state.lineStart=i.index+i[0].length;this.pushComment(!0,this.input.slice(t+2,r),t,this.state.pos,e,this.state.curPosition())}},{key:"skipLineComment",value:function(e){for(var t=this.state.pos,r=this.state.curPosition(),i=this.input.charCodeAt(this.state.pos+=e);this.state.pos<this.input.length&&10!==i&&13!==i&&8232!==i&&8233!==i;)++this.state.pos,i=this.input.charCodeAt(this.state.pos);this.pushComment(!1,this.input.slice(t+e,this.state.pos),t,this.state.pos,r,this.state.curPosition())}},{key:"skipSpace",value:function(){e:for(;this.state.pos<this.input.length;){var e=this.input.charCodeAt(this.state.pos);switch(e){case 32:case 160:++this.state.pos;break;case 13:10===this.input.charCodeAt(this.state.pos+1)&&++this.state.pos;case 10:case 8232:case 8233:++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;break;case 47:switch(this.input.charCodeAt(this.state.pos+1)){case 42:this.skipBlockComment();break;case 47:this.skipLineComment(2);break;default:break e}break;default:if(!(e>8&&e<14||e>=5760&&E.nonASCIIwhitespace.test(String.fromCharCode(e))))break e;++this.state.pos}}}},{key:"finishToken",value:function(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var r=this.state.type;this.state.type=e,this.state.value=t,this.updateContext(r)}},{key:"readToken_dot",value:function(){var e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.state.pos+2);return 46===e&&46===t?(this.state.pos+=3,this.finishToken(g.types.ellipsis)):(++this.state.pos,this.finishToken(g.types.dot))}},{key:"readToken_slash",value:function(){if(this.state.exprAllowed)return++this.state.pos,this.readRegexp();var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(g.types.assign,2):this.finishOp(g.types.slash,1)}},{key:"readToken_mult_modulo",value:function(e){var t=42===e?g.types.star:g.types.modulo,r=1,i=this.input.charCodeAt(this.state.pos+1);return 42===i&&this.hasPlugin("exponentiationOperator")&&(r++,i=this.input.charCodeAt(this.state.pos+2),t=g.types.exponent),61===i&&(r++,t=g.types.assign),this.finishOp(t,r)}},{key:"readToken_pipe_amp",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?this.finishOp(124===e?g.types.logicalOR:g.types.logicalAND,2):61===t?this.finishOp(g.types.assign,2):this.finishOp(124===e?g.types.bitwiseOR:g.types.bitwiseAND,1)}},{key:"readToken_caret",value:function(){var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(g.types.assign,2):this.finishOp(g.types.bitwiseXOR,1)}},{key:"readToken_plus_min",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?45===t&&62===this.input.charCodeAt(this.state.pos+2)&&E.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(g.types.incDec,2):61===t?this.finishOp(g.types.assign,2):this.finishOp(g.types.plusMin,1)}},{key:"readToken_lt_gt",value:function(e){var t=this.input.charCodeAt(this.state.pos+1),r=1;return t===e?(r=62===e&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+r)?this.finishOp(g.types.assign,r+1):this.finishOp(g.types.bitShift,r)):33===t&&60===e&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(r=2),this.finishOp(g.types.relational,r))}},{key:"readToken_eq_excl",value:function(e){var t=this.input.charCodeAt(this.state.pos+1);return 61===t?this.finishOp(g.types.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===e&&62===t?(this.state.pos+=2,this.finishToken(g.types.arrow)):this.finishOp(61===e?g.types.eq:g.types.prefix,1)}},{key:"getTokenFromCode",value:function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(g.types.parenL);case 41:return++this.state.pos,this.finishToken(g.types.parenR);case 59:return++this.state.pos,this.finishToken(g.types.semi);case 44:return++this.state.pos,this.finishToken(g.types.comma);case 91:return++this.state.pos,this.finishToken(g.types.bracketL);case 93:return++this.state.pos,this.finishToken(g.types.bracketR);case 123:return++this.state.pos,this.finishToken(g.types.braceL);case 125:return++this.state.pos,this.finishToken(g.types.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(g.types.doubleColon,2):(++this.state.pos,this.finishToken(g.types.colon));case 63:return++this.state.pos,this.finishToken(g.types.question);case 64:return++this.state.pos,this.finishToken(g.types.at);case 96:return++this.state.pos,this.finishToken(g.types.backQuote);case 48:var t=this.input.charCodeAt(this.state.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(g.types.prefix,1)}this.raise(this.state.pos,"Unexpected character '"+f(e)+"'")}},{key:"finishOp",value:function(e,t){var r=this.input.slice(this.state.pos,this.state.pos+t);return this.state.pos+=t,this.finishToken(e,r)}},{key:"readRegexp",value:function(){for(var e=void 0,t=void 0,r=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(r,"Unterminated regular expression");var i=this.input.charAt(this.state.pos);if(E.lineBreak.test(i)&&this.raise(r,"Unterminated regular expression"),e)e=!1;else{if("["===i)t=!0;else if("]"===i&&t)t=!1;else if("/"===i&&!t)break;e="\\"===i}++this.state.pos}var n=this.input.slice(r,this.state.pos);++this.state.pos;var s=this.readWord1();if(s){var a=/^[gmsiyu]*$/;a.test(s)||this.raise(r,"Invalid regular expression flag")}return this.finishToken(g.types.regexp,{pattern:n,flags:s})}},{key:"readInt",value:function(e,t){for(var r=this.state.pos,i=0,n=0,s=null==t?1/0:t;n<s;++n){var a=this.input.charCodeAt(this.state.pos),o=void 0;if(o=a>=97?a-97+10:a>=65?a-65+10:a>=48&&a<=57?a-48:1/0,o>=e)break;++this.state.pos,i=i*e+o}return this.state.pos===r||null!=t&&this.state.pos-r!==t?null:i}},{key:"readRadixNumber",value:function(e){this.state.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.state.start+2,"Expected number in radix "+e),(0,m.isIdentifierStart)(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(g.types.num,t)}},{key:"readNumber",value:function(e){var t=this.state.pos,r=!1,i=48===this.input.charCodeAt(this.state.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number");var n=this.input.charCodeAt(this.state.pos);46===n&&(++this.state.pos,this.readInt(10),r=!0,n=this.input.charCodeAt(this.state.pos)),69!==n&&101!==n||(n=this.input.charCodeAt(++this.state.pos),43!==n&&45!==n||++this.state.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),r=!0),(0,m.isIdentifierStart)(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var s=this.input.slice(t,this.state.pos),a=void 0;return r?a=parseFloat(s):i&&1!==s.length?/[89]/.test(s)||this.state.strict?this.raise(t,"Invalid number"):a=parseInt(s,8):a=parseInt(s,10),this.finishToken(g.types.num,a)}},{key:"readCodePoint",value:function(){var e=this.input.charCodeAt(this.state.pos),t=void 0;if(123===e){var r=++this.state.pos;t=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos),++this.state.pos,t>1114111&&this.raise(r,"Code point out of bounds")}else t=this.readHexChar(4);return t}},{key:"readString",value:function(e){for(var t="",r=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===e)break;92===i?(t+=this.input.slice(r,this.state.pos),t+=this.readEscapedChar(!1),r=this.state.pos):((0,E.isNewLine)(i)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos)}return t+=this.input.slice(r,this.state.pos++),this.finishToken(g.types.string,t)}},{key:"readTmplToken",value:function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var r=this.input.charCodeAt(this.state.pos);if(96===r||36===r&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(g.types.template)?36===r?(this.state.pos+=2,this.finishToken(g.types.dollarBraceL)):(++this.state.pos,this.finishToken(g.types.backQuote)):(e+=this.input.slice(t,this.state.pos),this.finishToken(g.types.template,e));if(92===r)e+=this.input.slice(t,this.state.pos),e+=this.readEscapedChar(!0),t=this.state.pos;else if((0,E.isNewLine)(r)){switch(e+=this.input.slice(t,this.state.pos),++this.state.pos,r){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(r)}++this.state.curLine,this.state.lineStart=this.state.pos,t=this.state.pos}else++this.state.pos}}},{key:"readEscapedChar",value:function(e){var t=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,t){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return f(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(t>=48&&t<=55){var r=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),i>0&&(this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=this.state.pos-2),(this.state.strict||e)&&this.raise(this.state.pos-2,"Octal literal in strict mode")),this.state.pos+=r.length-1,String.fromCharCode(i)}return String.fromCharCode(t)}}},{key:"readHexChar",value:function(e){var t=this.state.pos,r=this.readInt(16,e);return null===r&&this.raise(t,"Bad character escape sequence"),r}},{key:"readWord1",value:function(){this.state.containsEsc=!1;for(var e="",t=!0,r=this.state.pos;this.state.pos<this.input.length;){var i=this.fullCharCodeAtPos();if((0,m.isIdentifierChar)(i))this.state.pos+=i<=65535?1:2;else{if(92!==i)break;this.state.containsEsc=!0,e+=this.input.slice(r,this.state.pos);var n=this.state.pos;117!==this.input.charCodeAt(++this.state.pos)&&this.raise(this.state.pos,"Expecting Unicode escape sequence \\uXXXX"),++this.state.pos;var s=this.readCodePoint();(t?m.isIdentifierStart:m.isIdentifierChar)(s,!0)||this.raise(n,"Invalid Unicode escape"),e+=f(s),r=this.state.pos}t=!1}return e+this.input.slice(r,this.state.pos)}},{key:"readWord",value:function(){var e=this.readWord1(),t=g.types.name;return!this.state.containsEsc&&this.isKeyword(e)&&(t=g.keywords[e]),this.finishToken(t,e)}},{key:"braceIsBlock",value:function(e){if(e===g.types.colon){var t=this.curContext();if(t===b.types.b_stat||t===b.types.b_expr)return!t.isExpr}return e===g.types._return?E.lineBreak.test(this.input.slice(this.state.lastTokEnd,this.state.start)):e===g.types._else||e===g.types.semi||e===g.types.eof||e===g.types.parenR||(e===g.types.braceL?this.curContext()===b.types.b_stat:!this.state.exprAllowed)}},{key:"updateContext",value:function(e){var t=void 0,r=this.state.type;r.keyword&&e===g.types.dot?this.state.exprAllowed=!1:(t=r.updateContext)?t.call(this,e):this.state.exprAllowed=r.beforeExpr}}]),e}();t.default=T},function(e,t,r,i,n,s,a,o){"use strict";function u(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=r(a),y=r(o),v=function(){function e(){(0,p.default)(this,e)}return(0,f.default)(e,[{key:"init",value:function(e,t){return this.strict=e.strictMode!==!1&&"module"===e.sourceType,this.input=t,this.potentialArrowAt=-1,this.inMethod=this.inFunction=this.inGenerator=this.inAsync=!1,this.labels=[],this.decorators=[],this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.pos=this.lineStart=0,this.curLine=1,this.type=y.types.eof,this.value=null,this.start=this.end=this.pos,
+this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=[d.types.b_stat],this.exprAllowed=!0,this.containsEsc=this.containsOctal=!1,this.octalPosition=null,this}},{key:"curPosition",value:function(){return new h.Position(this.curLine,this.pos-this.lineStart)}},{key:"clone",value:function(t){var r=new e;for(var i in this){var n=this[i];t&&"context"!==i||!Array.isArray(n)||(n=n.slice()),r[i]=n}return r}}]),e}();t.default=v},function(e,t,r,i){function n(e,t,r){for(var i=-1,n=s(t),a=n.length;++i<a;){var o=n[i],u=e[o],l=r(u,t[o],o,e,t);(l===l?l===u:u!==u)&&(void 0!==u||o in e)||(e[o]=l)}return e}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){return null==t?e:a(t,o(t),e)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s,a,o,u,l,p,c){function f(e,t,r,i,n,s,a){var o;if(r&&(o=n?r(e,i,n):r(e)),void 0!==o)return o;if(!E(e))return e;var u=x(e);if(u){if(o=m(e),!t)return h(e,o)}else{var l=H.call(e),p=l==w;if(l!=D&&l!=A&&(!p||n))return G[l]?g(e,l,t):n?e:{};if(o=b(p?{}:e),!t)return y(o,e)}s||(s=[]),a||(a=[]);for(var c=s.length;c--;)if(s[c]==e)return a[c];return s.push(e),a.push(o),(u?d:v)(e,function(i,n){o[n]=f(i,t,r,n,e,s,a)}),o}var h=r(i),d=r(n),y=r(s),v=r(a),m=r(o),g=r(u),b=r(l),x=r(p),E=r(c),A="[object Arguments]",S="[object Array]",_="[object Boolean]",T="[object Date]",P="[object Error]",w="[object Function]",k="[object Map]",C="[object Number]",D="[object Object]",O="[object RegExp]",N="[object Set]",I="[object String]",F="[object WeakMap]",B="[object ArrayBuffer]",R="[object Float32Array]",L="[object Float64Array]",M="[object Int8Array]",j="[object Int16Array]",V="[object Int32Array]",U="[object Uint8Array]",Y="[object Uint8ClampedArray]",K="[object Uint16Array]",W="[object Uint32Array]",G={};G[A]=G[S]=G[B]=G[_]=G[T]=G[R]=G[L]=G[M]=G[j]=G[V]=G[C]=G[D]=G[O]=G[I]=G[U]=G[Y]=G[K]=G[W]=!0,G[P]=G[w]=G[k]=G[N]=G[F]=!1;var q=Object.prototype,H=q.toString;e.exports=f},function(e,t,r,i){var n=r(i),s=n();e.exports=s},function(e,t,r,i,n){function s(e,t){return a(e,t,o)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e,t,r){if(null!=e){void 0!==r&&r in s(e)&&(t=[r]);for(var i=0,n=t.length;null!=e&&i<n;)e=e[t[i++]];return i&&i==n?e:void 0}}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t,r){if("function"!=typeof e)return s;if(void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 3:return function(r,i,n){return e.call(t,r,i,n)};case 4:return function(r,i,n,s){return e.call(t,r,i,n,s)};case 5:return function(r,i,n,s,a){return e.call(t,r,i,n,s,a)}}return function(){return e.apply(t,arguments)}}var s=r(i);e.exports=n},function(e,t,r,i,n,s){function a(e){return l(function(t,r){var i=-1,n=null==t?0:r.length,s=n>2?r[n-2]:void 0,a=n>2?r[2]:void 0,l=n>1?r[n-1]:void 0;for("function"==typeof s?(s=o(s,l,5),n-=2):(s="function"==typeof l?l:void 0,n-=s?1:0),a&&u(r[0],r[1],a)&&(s=n<3?void 0:s,n=1);++i<n;){var p=r[i];p&&e(t,p,s)}return t})}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i){function n(e){return function(t,r,i){for(var n=s(t),a=i(t),o=a.length,u=e?o:-1;e?u--:++u<o;){var l=a[u];if(r(n[l],l,n)===!1)break}return t}}var s=r(i);e.exports=n},function(e,t,r,i){var n=r(i),s=n("length");e.exports=s},function(e,t,r,i){function n(e,t){var r=null==e?void 0:e[t];return s(r)?r:void 0}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t,r){var i=e.constructor;switch(t){case c:return s(e);case a:case o:return new i((+e));case f:case h:case d:case y:case v:case m:case g:case b:case x:var n=e.buffer;return new i(r?s(n):n,e.byteOffset,e.length);case u:case p:return new i(e);case l:var A=new i(e.source,E.exec(e));A.lastIndex=e.lastIndex}return A}var s=r(i),a="[object Boolean]",o="[object Date]",u="[object Number]",l="[object RegExp]",p="[object String]",c="[object ArrayBuffer]",f="[object Float32Array]",h="[object Float64Array]",d="[object Int8Array]",y="[object Int16Array]",v="[object Int32Array]",m="[object Uint8Array]",g="[object Uint8ClampedArray]",b="[object Uint16Array]",x="[object Uint32Array]",E=/\w*$/;e.exports=n},function(e,t,r,i,n){function s(e){return null!=e&&o(a(e))}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s){function a(e,t,r){if(!l(r))return!1;var i=typeof t;if("number"==i?o(r)&&u(t,r.length):"string"==i&&t in r){var n=r[t];return e===e?e===n:n!==n}return!1}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n){function s(e,t){var r=typeof e;if("string"==r&&l.test(e)||"number"==r)return!0;if(a(e))return!1;var i=!u.test(e);return i||null!=t&&e in o(t)}var a=r(i),o=r(n),u=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,l=/^\w*$/;e.exports=s},function(e,t,r,i,n,s,a,o){function u(e){for(var t=h(e),r=t.length,i=r&&e.length,n=!!i&&f(i)&&(p(e)||l(e)),s=-1,a=[];++s<r;){var o=t[s];(n&&c(o,i)||y.call(e,o))&&a.push(o)}return a}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=Object.prototype,y=d.hasOwnProperty;e.exports=u},function(e,t,r,i){function n(e){return s(e)?e:Object(e)}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e){if(o(e))return e;var t=[];return a(e).replace(u,function(e,r,i,n){t.push(i?n.replace(l,"$1"):r||e)}),t}var a=r(i),o=r(n),u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,l=/\\(\\)?/g;e.exports=s},function(e,t,r,i,n){function s(e,t,r){return"function"==typeof t?a(e,!0,o(t,r,3)):a(e,!0)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n){function s(e){return o(e)&&a(e)&&l.call(e,"callee")&&!p.call(e,"callee")}var a=r(i),o=r(n),u=Object.prototype,l=u.hasOwnProperty,p=u.propertyIsEnumerable;e.exports=s},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s),l="[object Array]",p=Object.prototype,c=p.toString,f=a(Array,"isArray"),h=f||function(e){return u(e)&&o(e.length)&&c.call(e)==l};e.exports=h},function(e,t,r,i){function n(e){return s(e)&&u.call(e)==a}var s=r(i),a="[object Function]",o=Object.prototype,u=o.toString;e.exports=n},function(e,t,r,i,n){function s(e){return null!=e&&(a(e)?f.test(p.call(e)):o(e)&&u.test(e))}var a=r(i),o=r(n),u=/^\[object .+?Constructor\]$/,l=Object.prototype,p=Function.prototype.toString,c=l.hasOwnProperty,f=RegExp("^"+p.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=s},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s),l=u(function(e,t,r){return r?a(e,t,r):o(e,t)});e.exports=l},function(e,t,r,i,n,s,a,o,u,l,p,c){function f(e,t){if(null==e)return!1;var r=S.call(e,t);if(!r&&!g(t)){if(t=E(t),e=1==t.length?e:h(e,d(t,0,-1)),null==e)return!1;t=x(t),r=S.call(e,t)}return r||b(e.length)&&m(t,e.length)&&(v(e)||y(e))}var h=r(i),d=r(n),y=r(s),v=r(a),m=r(o),g=r(u),b=r(l),x=r(p),E=r(c),A=Object.prototype,S=A.hasOwnProperty;e.exports=f},function(e,t,r,i,n,s,a){var o=r(i),u=r(n),l=r(s),p=r(a),c=o(Object,"keys"),f=c?function(e){var t=null==e?void 0:e.constructor;return"function"==typeof t&&t.prototype===e||"function"!=typeof e&&u(e)?p(e):l(e)?c(e):[]}:p;e.exports=f},function(e,t,r,i,n,s,a,o){function u(e){if(null==e)return[];h(e)||(e=Object(e));var t=e.length;t=t&&f(t)&&(p(e)||l(e))&&t||0;for(var r=e.constructor,i=-1,n="function"==typeof r&&r.prototype===e,s=Array(t),a=t>0;++i<t;)s[i]=i+"";for(var o in e)a&&c(o,t)||"constructor"==o&&(n||!y.call(e,o))||s.push(o);return s}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=Object.prototype,y=d.hasOwnProperty;e.exports=u},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(){t.path=u=new o.default,t.scope=l=new o.default}t.__esModule=!0,t.scope=t.path=void 0;var a=r(i),o=n(a);t.clear=s;var u=t.path=new o.default,l=t.scope=new o.default},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var l=r(i),p=u(l),c=r(n),f=u(c),h=r(s),d=u(h),y=r(a),v=o(y),m=!1,g=function(){function e(t,r,i,n){(0,f.default)(this,e),this.queue=null,this.parentPath=n,this.scope=t,this.state=i,this.opts=r}return e.prototype.shouldVisit=function(e){var t=this.opts;if(t.enter||t.exit)return!0;if(t[e.type])return!0;var r=v.VISITOR_KEYS[e.type];if(!r||!r.length)return!1;for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,p.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e[o])return!0}return!1},e.prototype.create=function(e,t,r,i){return d.default.get({parentPath:this.parentPath,parent:e,container:t,key:r,listKey:i})},e.prototype.maybeQueue=function(e,t){if(this.trap)throw new Error("Infinite cycle detected");this.queue&&(t?this.queue.push(e):this.priorityQueue.push(e))},e.prototype.visitMultiple=function(e,t,r){if(0===e.length)return!1;for(var i=[],n=0;n<e.length;n++){var s=e[n];s&&this.shouldVisit(s)&&i.push(this.create(t,e,n,r))}return this.visitQueue(i)},e.prototype.visitSingle=function(e,t){return!!this.shouldVisit(e[t])&&this.visitQueue([this.create(e,e,t)])},e.prototype.visitQueue=function(e){this.queue=e,this.priorityQueue=[];for(var t=[],r=!1,i=e,n=Array.isArray(i),s=0,i=n?i:(0,p.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(o.resync(),0!==o.contexts.length&&o.contexts[o.contexts.length-1]===this||o.pushContext(this),null!==o.key&&(m&&e.length>=1e3&&(this.trap=!0),!(t.indexOf(o.node)>=0))){if(t.push(o.node),o.visit()){r=!0;break}if(this.priorityQueue.length&&(r=this.visitQueue(this.priorityQueue),this.priorityQueue=[],this.queue=e,r))break}}for(var u=e,l=Array.isArray(u),c=0,u=l?u:(0,p.default)(u);;){var f;if(l){if(c>=u.length)break;f=u[c++]}else{if(c=u.next(),c.done)break;f=c.value}var h=f;h.popContext()}return this.queue=null,r},e.prototype.visit=function(e,t){var r=e[t];return!!r&&(Array.isArray(r)?this.visitMultiple(r,e,t):this.visitSingle(e,t))},e}();t.default=g,e.exports=t.default},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s),o=function e(t,r){(0,a.default)(this,e),this.file=t,this.options=r};t.default=o,e.exports=t.default},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v){"use strict";function m(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function g(e){return e&&e.__esModule?e:{default:e}}function b(e,t,r,i,n){if(e){if(t||(t={}),!t.noScope&&!r&&"Program"!==e.type&&"File"!==e.type)throw new Error(I.get("traverseNeedsParent",e.type));O.explode(t),b.node(e,t,r,i,n)}}function x(e,t){e.node.type===t.type&&(t.has=!0,e.stop())}t.__esModule=!0,t.visitors=t.Hub=t.Scope=t.NodePath=void 0;var E=r(i),A=g(E),S=r(n),_=g(S),T=r(s);Object.defineProperty(t,"NodePath",{enumerable:!0,get:function(){return g(T).default}});var P=r(a);Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return g(P).default}});var w=r(o);Object.defineProperty(t,"Hub",{enumerable:!0,get:function(){return g(w).default}}),t.default=b;var k=r(u),C=g(k),D=r(l),O=m(D),N=r(p),I=m(N),F=r(c),B=g(F),R=r(f),L=m(R),M=r(h),j=m(M);t.visitors=O,b.visitors=O,b.verify=O.verify,b.explode=O.explode,b.NodePath=r(d),b.Scope=r(y),b.Hub=r(v),b.cheap=function(e,t){if(e){var r=L.VISITOR_KEYS[e.type];if(r){t(e);for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,_.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a,u=e[o];if(Array.isArray(u))for(var l=u,p=Array.isArray(l),c=0,l=p?l:(0,_.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;b.cheap(h,t)}else b.cheap(u,t)}}}},b.node=function(e,t,r,i,n,s){var a=L.VISITOR_KEYS[e.type];if(a)for(var o=new C.default(r,t,i,n),u=a,l=Array.isArray(u),p=0,u=l?u:(0,_.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if((!s||!s[f])&&o.visit(e,f))return}};var V=L.COMMENT_KEYS.concat(["tokens","comments","start","end","loc","raw","rawValue"]);b.clearNode=function(e){for(var t=V,r=Array.isArray(t),i=0,t=r?t:(0,_.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;null!=e[s]&&(e[s]=void 0)}for(var a in e)"_"===a[0]&&null!=e[a]&&(e[a]=void 0);j.path.delete(e);for(var o=(0,A.default)(e),u=o,l=Array.isArray(u),p=0,u=l?u:(0,_.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e[f]=null}},b.removeProperties=function(e){return b.cheap(e,b.clearNode),e},b.hasType=function(e,t,r,i){if((0,B.default)(i,e.type))return!1;if(e.type===r)return!0;var n={has:!1,type:r};return b(e,{blacklist:i,enter:x},t,n),n.has},b.clearCache=function(){j.clear()},b.copyCache=function(e,t){j.path.has(e)&&j.path.set(t,j.path.get(e))}},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(e){for(var t=this;t=t.parentPath;)if(e(t))return t;return null}function l(e){var t=this;do if(e(t))return t;while(t=t.parentPath);return null}function p(){return this.findParent(function(e){return e.isFunction()||e.isProgram()})}function c(){var e=this;do if(Array.isArray(e.container))return e;while(e=e.parentPath)}function f(e){return this.getDeepestCommonAncestorFrom(e,function(e,t,r){for(var i=void 0,n=x.VISITOR_KEYS[e.type],s=r,a=Array.isArray(s),o=0,s=a?s:(0,g.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u,p=l[t+1];if(i)if(p.listKey&&i.listKey===p.listKey&&p.key<i.key)i=p;else{var c=n.indexOf(i.parentKey),f=n.indexOf(p.parentKey);c>f&&(i=p)}else i=p}return i})}function h(e,t){var r=this;if(!e.length)return this;if(1===e.length)return e[0];var i=1/0,n=void 0,s=void 0,a=e.map(function(e){var t=[];do t.unshift(e);while((e=e.parentPath)&&e!==r);return t.length<i&&(i=t.length),t}),o=a[0];e:for(var u=0;u<i;u++){for(var l=o[u],p=a,c=Array.isArray(p),f=0,p=c?p:(0,g.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h;if(d[u]!==l)break e}n=u,s=l}if(s)return t?t(s,n,a):s;throw new Error("Couldn't find intersection")}function d(){var e=this,t=[];do t.push(e);while(e=e.parentPath);return t}function y(){for(var e=this;e;){for(var t=arguments,r=Array.isArray(t),i=0,t=r?t:(0,g.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(e.node.type===s)return!0}e=e.parentPath}return!1}function v(e){var t=this.isFunction()?this:this.findParent(function(e){return e.isFunction()});if(t){if(t.isFunctionExpression()||t.isFunctionDeclaration()){var r=t.node.shadow;if(r&&(!e||r[e]!==!1))return t}else if(t.isArrowFunctionExpression())return t;return null}}t.__esModule=!0;var m=r(i),g=o(m);t.findParent=u,t.find=l,t.getFunctionParent=p,t.getStatementParent=c,t.getEarliestCommonAncestorFrom=f,t.getDeepestCommonAncestorFrom=h,t.getAncestry=d,t.inType=y,t.inShadow=v;var b=r(n),x=a(b),E=r(s);o(E)},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=this.opts;return this.debug(function(){return e}),!(!this.node||!this._call(t[e]))||!!this.node&&this._call(t[this.node.type]&&t[this.node.type][e])}function o(e){if(!e)return!1;for(var t=e,r=Array.isArray(t),i=0,t=r?t:(0,w.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(s){var a=this.node;if(!a)return!0;var o=s.call(this.state,this,this.state);if(o)throw new Error("Unexpected return value from visitor method "+s);if(this.node!==a)return!0;if(this.shouldStop||this.shouldSkip||this.removed)return!0}}return!1}function u(){var e=this.opts.blacklist;return e&&e.indexOf(this.node.type)>-1}function l(){return!!this.node&&(!this.isBlacklisted()&&((!this.opts.shouldSkip||!this.opts.shouldSkip(this))&&(this.call("enter")||this.shouldSkip?(this.debug(function(){return"Skip..."}),this.shouldStop):(this.debug(function(){return"Recursing into..."}),C.default.node(this.node,this.opts,this.scope,this.state,this,this.skipKeys),this.call("exit"),this.shouldStop))))}function p(){this.shouldSkip=!0}function c(e){this.skipKeys[e]=!0}function f(){this.shouldStop=!0,this.shouldSkip=!0}function h(){if(!this.opts||!this.opts.noScope){var e=this.context&&this.context.scope;if(!e)for(var t=this.parentPath;t&&!e;){if(t.opts&&t.opts.noScope)return;e=t.scope,t=t.parentPath}this.scope=this.getScope(e),this.scope&&this.scope.init()}}function d(e){return this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.skipKeys={},e&&(this.context=e,this.state=e.state,this.opts=e.opts),this.setScope(),this}function y(){this.removed||(this._resyncParent(),this._resyncList(),this._resyncKey())}function v(){this.parentPath&&(this.parent=this.parentPath.node)}function m(){if(this.container&&this.node!==this.container[this.key]){if(Array.isArray(this.container)){for(var e=0;e<this.container.length;e++)if(this.container[e]===this.node)return this.setKey(e)}else for(var t in this.container)if(this.container[t]===this.node)return this.setKey(t);this.key=null}}function g(){if(this.parent&&this.inList){var e=this.parent[this.listKey];this.container!==e&&(this.container=e||null)}}function b(){null!=this.key&&this.container&&this.container[this.key]===this.node||this._markRemoved()}function x(){this.contexts.pop(),this.setContext(this.contexts[this.contexts.length-1])}function E(e){this.contexts.push(e),this.setContext(e)}function A(e,t,r,i){this.inList=!!r,this.listKey=r,this.parentKey=r||i,this.container=t,this.parentPath=e||this.parentPath,this.setKey(i)}function S(e){this.key=e,this.node=this.container[this.key],this.type=this.node&&this.node.type}function _(){var e=arguments.length<=0||void 0===arguments[0]?this:arguments[0];if(!e.removed)for(var t=this.contexts,r=t,i=Array.isArray(r),n=0,r=i?r:(0,w.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;a.maybeQueue(e)}}function T(){for(var e=this,t=this.contexts;!t.length;)e=e.parentPath,t=e.contexts;return t}t.__esModule=!0;var P=r(i),w=s(P);t.call=a,t._call=o,t.isBlacklisted=u,t.visit=l,t.skip=p,t.skipKey=c,t.stop=f,t.setScope=h,t.setContext=d,t.resync=y,t._resyncParent=v,t._resyncKey=m,t._resyncList=g,t._resyncRemoved=b,t.popContext=x,t.pushContext=E,t.setup=A,t.setKey=S,t.requeue=_,t._getQueueContexts=T;var k=r(n),C=s(k)},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(){var e=this.node,t=void 0;if(this.isMemberExpression())t=e.property;else{if(!this.isProperty()&&!this.isMethod())throw new ReferenceError("todo");t=e.key}return e.computed||l.isIdentifier(t)&&(t=l.stringLiteral(t.name)),t}function a(){return l.ensureBlock(this.node)}function o(){if(this.isArrowFunctionExpression()){this.ensureBlock();var e=this.node;e.expression=!1,e.type="FunctionExpression",e.shadow=e.shadow||!0}}t.__esModule=!0,t.toComputedKey=s,t.ensureBlock=a,t.arrowFunctionToShadowed=o;var u=r(i),l=n(u)},function(e,t,r,i,n){(function(e){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}function a(){var e=this.evaluate();if(e.confident)return!!e.value}function o(){function t(e){i&&(n=e,i=!1)}function r(n){if(i){var s=n.node;if(n.isSequenceExpression()){var a=n.get("expressions");return r(a[a.length-1])}if(n.isStringLiteral()||n.isNumericLiteral()||n.isBooleanLiteral())return s.value;if(n.isNullLiteral())return null;if(n.isTemplateLiteral()){for(var o="",u=0,p=n.get("expressions"),d=s.quasis,y=Array.isArray(d),v=0,d=y?d:(0,c.default)(d);;){var m;if(y){if(v>=d.length)break;m=d[v++]}else{if(v=d.next(),v.done)break;m=v.value}var g=m;if(!i)break;o+=g.value.cooked;var b=p[u++];b&&(o+=String(r(b)))}if(!i)return;return o}if(n.isConditionalExpression()){var x=r(n.get("test"));if(!i)return;return r(x?n.get("consequent"):n.get("alternate"))}if(n.isExpressionWrapper())return r(n.get("expression"));if(n.isMemberExpression()&&!n.parentPath.isCallExpression({callee:s})){var E=n.get("property"),A=n.get("object");if(A.isLiteral()&&E.isIdentifier()){var S=A.node.value,_="undefined"==typeof S?"undefined":(0,l.default)(S);if("number"===_||"string"===_)return S[E.node.name]}}if(n.isReferencedIdentifier()){var T=n.scope.getBinding(s.name);if(T&&T.hasValue)return T.value;if("undefined"===s.name)return;if("Infinity"===s.name)return 1/0;if("NaN"===s.name)return NaN;var P=n.resolve();return P===n?t(n):r(P)}if(n.isUnaryExpression({prefix:!0})){if("void"===s.operator)return;var w=n.get("argument");if("typeof"===s.operator&&(w.isFunction()||w.isClass()))return"function";var k=r(w);if(!i)return;switch(s.operator){case"!":return!k;case"+":return+k;case"-":return-k;case"~":return~k;case"typeof":return"undefined"==typeof k?"undefined":(0,l.default)(k)}}if(n.isArrayExpression()){for(var C=[],D=n.get("elements"),O=D,N=Array.isArray(O),I=0,O=N?O:(0,c.default)(O);;){var F;if(N){if(I>=O.length)break;F=O[I++]}else{if(I=O.next(),I.done)break;F=I.value}var B=F;if(B=B.evaluate(),!B.confident)return t(B);C.push(B.value)}return C}if(n.isObjectExpression(),n.isLogicalExpression()){var R=i,L=r(n.get("left")),M=i;i=R;var j=r(n.get("right")),V=i;switch(i=M&&V,s.operator){case"||":if(L&&M)return i=!0,L;if(!i)return;return L||j;case"&&":if((!L&&M||!j&&V)&&(i=!0),!i)return;return L&&j}}if(n.isBinaryExpression()){var U=r(n.get("left"));if(!i)return;var Y=r(n.get("right"));if(!i)return;switch(s.operator){case"-":return U-Y;case"+":return U+Y;case"/":return U/Y;case"*":return U*Y;case"%":return U%Y;case"**":return Math.pow(U,Y);case"<":return U<Y;case">":return U>Y;case"<=":return U<=Y;case">=":return U>=Y;case"==":return U==Y;case"!=":return U!=Y;case"===":return U===Y;case"!==":return U!==Y;case"|":return U|Y;case"&":return U&Y;case"^":return U^Y;case"<<":return U<<Y;case">>":return U>>Y;case">>>":return U>>>Y}}if(n.isCallExpression()){var K=n.get("callee"),W=void 0,G=void 0;if(K.isIdentifier()&&!n.scope.getBinding(K.node.name,!0)&&f.indexOf(K.node.name)>=0&&(G=e[s.callee.name]),K.isMemberExpression()){var q=K.get("object"),H=K.get("property");if(q.isIdentifier()&&H.isIdentifier()&&f.indexOf(q.node.name)>=0&&h.indexOf(H.node.name)<0&&(W=e[q.node.name],G=W[H.node.name]),q.isLiteral()&&H.isIdentifier()){var X=(0,l.default)(q.node.value);"string"!==X&&"number"!==X||(W=q.node.value,G=W[H.node.name])}}if(G){var J=n.get("arguments").map(r);if(!i)return;return G.apply(W,J)}}t(n)}}var i=!0,n=void 0,s=r(this);return i||(s=void 0),{confident:i,deopt:n,value:s}}t.__esModule=!0;var u=r(i),l=s(u),p=r(n),c=s(p);t.evaluateTruthy=a,t.evaluate=o;var f=["String","Number","Math"],h=["random"]}).call(t,function(){return this}())},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(){var e=this;do{if(!e.parentPath||Array.isArray(e.container)&&e.isStatement())break;e=e.parentPath}while(e);if(e&&(e.isProgram()||e.isFile()))throw new Error("File/Program node, we can't possibly find a statement parent to this");return e}function l(){return"left"===this.key?this.getSibling("right"):"right"===this.key?this.getSibling("left"):void 0}function p(){var e=[],t=function(t){t&&(e=e.concat(t.getCompletionRecords()))};if(this.isIfStatement())t(this.get("consequent")),t(this.get("alternate"));else if(this.isDoExpression()||this.isFor()||this.isWhile())t(this.get("body"));else if(this.isProgram()||this.isBlockStatement())t(this.get("body").pop());else{if(this.isFunction())return this.get("body").getCompletionRecords();this.isTryStatement()?(t(this.get("block")),t(this.get("handler")),t(this.get("finalizer"))):e.push(this)}return e}function c(e){return x.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:e})}function f(e,t){t===!0&&(t=this.context);var r=e.split(".");return 1===r.length?this._getKey(e,t):this._getPattern(r,t)}function h(e,t){var r=this,i=this.node,n=i[e];return Array.isArray(n)?n.map(function(s,a){return x.default.get({listKey:e,parentPath:r,parent:i,container:n,key:a}).setContext(t)}):x.default.get({parentPath:this,parent:i,container:i,key:e}).setContext(t)}function d(e,t){for(var r=this,i=e,n=Array.isArray(i),s=0,i=n?i:(0,g.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;r="."===o?r.parentPath:Array.isArray(r)?r[o]:r.get(o,t)}return r}function y(e){return A.getBindingIdentifiers(this.node,e)}function v(e){return A.getOuterBindingIdentifiers(this.node,e)}t.__esModule=!0;var m=r(i),g=o(m);t.getStatementParent=u,t.getOpposite=l,t.getCompletionRecords=p,t.getSibling=c,t.get=f,t._getKey=h,t._getPattern=d,t.getBindingIdentifiers=y,t.getOuterBindingIdentifiers=v;var b=r(n),x=o(b),E=r(s),A=a(E)},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g,b,x,E,A,S){"use strict";function _(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function T(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var P=r(i),w=T(P),k=r(n),C=T(k),D=r(s),O=_(D),N=r(a),I=T(N),F=r(o),B=T(F),R=r(u),L=T(R),M=r(l),j=T(M),V=r(p),U=T(V),Y=r(c),K=_(Y),W=r(f),G=(0,I.default)("babel"),q=function(){function e(t,r){(0,C.default)(this,e),this.parent=r,this.hub=t,this.contexts=[],this.data={},this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.state=null,this.opts=null,this.skipKeys=null,this.parentPath=null,this.context=null,this.container=null,this.listKey=null,this.inList=!1,this.parentKey=null,this.key=null,this.node=null,this.scope=null,this.type=null,this.typeAnnotation=null}return e.get=function(t){var r=t.hub,i=t.parentPath,n=t.parent,s=t.container,a=t.listKey,o=t.key;!r&&i&&(r=i.hub),(0,B.default)(n,"To get a node path the parent needs to exist");var u=s[o],l=W.path.get(n)||[];W.path.has(n)||W.path.set(n,l);for(var p=void 0,c=0;c<l.length;c++){var f=l[c];if(f.node===u){p=f;break}}return p||(p=new e(r,n),l.push(p)),p.setup(i,s,a,o),p},e.prototype.getScope=function(e){var t=e;return this.isScope()&&(t=new U.default(this,e)),t},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e,t){var r=this.data[e];return!r&&t&&(r=this.data[e]=t),r},e.prototype.buildCodeFrameError=function(e){var t=arguments.length<=1||void 0===arguments[1]?SyntaxError:arguments[1];return this.hub.file.buildCodeFrameError(this.node,e,t)},e.prototype.traverse=function(e,t){(0,L.default)(this.node,e,this.scope,t,this)},e.prototype.mark=function(e,t){this.hub.file.metadata.marked.push({type:e,message:t,loc:this.node.loc})},e.prototype.set=function(e,t){K.validate(this.node,e,t),this.node[e]=t},e.prototype.getPathLocation=function(){var e=[],t=this;do{var r=t.key;t.inList&&(r=t.listKey+"["+r+"]"),e.unshift(r)}while(t=t.parentPath);return e.join(".")},e.prototype.debug=function(e){G.enabled&&G(this.getPathLocation()+" "+this.type+": "+e())},e}();t.default=q,(0,j.default)(q.prototype,r(h)),(0,j.default)(q.prototype,r(d)),(0,j.default)(q.prototype,r(y)),(0,j.default)(q.prototype,r(v)),(0,j.default)(q.prototype,r(m)),(0,j.default)(q.prototype,r(g)),(0,j.default)(q.prototype,r(b)),(0,j.default)(q.prototype,r(x)),(0,j.default)(q.prototype,r(E)),(0,j.default)(q.prototype,r(A)),(0,j.default)(q.prototype,r(S));for(var H=function(){if(J){if($>=X.length)return"break";z=X[$++]}else{if($=X.next(),$.done)return"break";z=$.value}var e=z,t="is"+e;q.prototype[t]=function(e){return K[t](this.node,e)},q.prototype["assert"+e]=function(r){if(!this[t](r))throw new TypeError("Expected node path of type "+e)}},X=K.TYPES,J=Array.isArray(X),$=0,X=J?X:(0,w.default)(X);;){var z,Q=H();if("break"===Q)break}var Z=function(e){if("_"===e[0])return"continue";K.TYPES.indexOf(e)<0&&K.TYPES.push(e);var t=O[e];q.prototype["is"+e]=function(e){return t.checkPath(this,e)}};for(var ee in O){Z(ee)}e.exports=t.default},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(){if(this.typeAnnotation)return this.typeAnnotation;var e=this._getTypeAnnotation()||x.anyTypeAnnotation();return x.isTypeAnnotation(e)&&(e=e.typeAnnotation),this.typeAnnotation=e}function l(){var e=this.node;{if(e){if(e.typeAnnotation)return e.typeAnnotation;var t=g[e.type];return t?t.call(this,e):(t=g[this.parentPath.type],t&&t.validParent?this.parentPath.getTypeAnnotation():void 0)}if("init"===this.key&&this.parentPath.isVariableDeclarator()){var r=this.parentPath.parentPath,i=r.parentPath;return"left"===r.key&&i.isForInStatement()?x.stringTypeAnnotation():"left"===r.key&&i.isForOfStatement()?x.anyTypeAnnotation():x.voidTypeAnnotation()}}}function p(e,t){return c(e,this.getTypeAnnotation(),t)}function c(e,t,r){if("string"===e)return x.isStringTypeAnnotation(t);if("number"===e)return x.isNumberTypeAnnotation(t);if("boolean"===e)return x.isBooleanTypeAnnotation(t);if("any"===e)return x.isAnyTypeAnnotation(t);if("mixed"===e)return x.isMixedTypeAnnotation(t);if("void"===e)return x.isVoidTypeAnnotation(t);if(r)return!1;throw new Error("Unknown base type "+e)}function f(e){var t=this.getTypeAnnotation();if(x.isAnyTypeAnnotation(t))return!0;if(x.isUnionTypeAnnotation(t)){for(var r=t.types,i=Array.isArray(r),n=0,r=i?r:(0,v.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;if(x.isAnyTypeAnnotation(a)||c(e,a,!0))return!0}return!1}return c(e,t,!0)}function h(e){var t=this.getTypeAnnotation();if(e=e.getTypeAnnotation(),!x.isAnyTypeAnnotation(t)&&x.isFlowBaseAnnotation(t))return e.type===t.type}function d(e){var t=this.getTypeAnnotation();return x.isGenericTypeAnnotation(t)&&x.isIdentifier(t.id,{name:e})}t.__esModule=!0;var y=r(i),v=o(y);t.getTypeAnnotation=u,t._getTypeAnnotation=l,t.isBaseType=p,t.couldBeBaseType=f,t.baseTypeStrictlyMatches=h,t.isGenericType=d;var m=r(n),g=a(m),b=r(s),x=a(b)},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var r=e.scope.getBinding(t),i=[];e.typeAnnotation=y.unionTypeAnnotation(i);var n=[],s=u(r,e,n),a=c(e,t);if(a&&!function(){var e=u(r,a.ifStatement);s=s.filter(function(t){return e.indexOf(t)<0}),i.push(a.typeAnnotation)}(),s.length){s=s.concat(n);for(var o=s,l=Array.isArray(o),p=0,o=l?o:(0,h.default)(o);;){var f;if(l){if(p>=o.length)break;f=o[p++]}else{if(p=o.next(),p.done)break;f=p.value}var d=f;i.push(d.getTypeAnnotation())}}if(i.length)return y.createUnionTypeAnnotation(i)}function u(e,t,r){var i=e.constantViolations.slice();return i.unshift(e.path),i.filter(function(e){e=e.resolve();var i=e._guessExecutionStatusRelativeTo(t);return r&&"function"===i&&r.push(e),"before"===i})}function l(e,t){var r=t.node.operator,i=t.get("right").resolve(),n=t.get("left").resolve(),s=void 0;if(n.isIdentifier({name:e})?s=i:i.isIdentifier({name:e})&&(s=n),s)return"==="===r?s.getTypeAnnotation():y.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(r)>=0?y.numberTypeAnnotation():void 0;if("==="===r){var a=void 0,o=void 0;if(n.isUnaryExpression({operator:"typeof"})?(a=n,o=i):i.isUnaryExpression({operator:"typeof"})&&(a=i,o=n),(o||a)&&(o=o.resolve(),o.isLiteral())){var u=o.node.value;if("string"==typeof u&&a.get("argument").isIdentifier({name:e}))return y.createTypeAnnotationBasedOnTypeof(o.node.value)}}}function p(e){for(var t=void 0;t=e.parentPath;){if(t.isIfStatement()||t.isConditionalExpression())return"test"===e.key?void 0:t;e=t}}function c(e,t){var r=p(e);
+if(r){var i=r.get("test"),n=[i],s=[];do{var a=n.shift().resolve();if(a.isLogicalExpression()&&(n.push(a.get("left")),n.push(a.get("right"))),a.isBinaryExpression()){var o=l(t,a);o&&s.push(o)}}while(n.length);return s.length?{typeAnnotation:y.createUnionTypeAnnotation(s),ifStatement:r}:c(r,t)}}t.__esModule=!0;var f=r(i),h=a(f);t.default=function(e){if(this.isReferenced()){var t=this.scope.getBinding(e.name);return t?t.identifier.typeAnnotation?t.identifier.typeAnnotation:o(this,e.name):"undefined"===e.name?y.voidTypeAnnotation():"NaN"===e.name||"Infinity"===e.name?y.numberTypeAnnotation():void("arguments"===e.name)}};var d=r(n),y=s(d);e.exports=t.default},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(){var e=this.get("id");return e.isIdentifier()?this.get("init").getTypeAnnotation():void 0}function u(e){return e.typeAnnotation}function l(e){if(this.get("callee").isIdentifier())return N.genericTypeAnnotation(e.callee)}function p(){return N.stringTypeAnnotation()}function c(e){var t=e.operator;return"void"===t?N.voidTypeAnnotation():N.NUMBER_UNARY_OPERATORS.indexOf(t)>=0?N.numberTypeAnnotation():N.STRING_UNARY_OPERATORS.indexOf(t)>=0?N.stringTypeAnnotation():N.BOOLEAN_UNARY_OPERATORS.indexOf(t)>=0?N.booleanTypeAnnotation():void 0}function f(e){var t=e.operator;if(N.NUMBER_BINARY_OPERATORS.indexOf(t)>=0)return N.numberTypeAnnotation();if(N.BOOLEAN_BINARY_OPERATORS.indexOf(t)>=0)return N.booleanTypeAnnotation();if("+"===t){var r=this.get("right"),i=this.get("left");return i.isBaseType("number")&&r.isBaseType("number")?N.numberTypeAnnotation():i.isBaseType("string")||r.isBaseType("string")?N.stringTypeAnnotation():N.unionTypeAnnotation([N.stringTypeAnnotation(),N.numberTypeAnnotation()])}}function h(){return N.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(),this.get("right").getTypeAnnotation()])}function d(){return N.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(),this.get("alternate").getTypeAnnotation()])}function y(){return this.get("expressions").pop().getTypeAnnotation()}function v(){return this.get("right").getTypeAnnotation()}function m(e){var t=e.operator;if("++"===t||"--"===t)return N.numberTypeAnnotation()}function g(){return N.stringTypeAnnotation()}function b(){return N.numberTypeAnnotation()}function x(){return N.booleanTypeAnnotation()}function E(){return N.nullLiteralTypeAnnotation()}function A(){return N.genericTypeAnnotation(N.identifier("RegExp"))}function S(){return N.genericTypeAnnotation(N.identifier("Object"))}function _(){return N.genericTypeAnnotation(N.identifier("Array"))}function T(){return _()}function P(){return N.genericTypeAnnotation(N.identifier("Function"))}function w(){return C(this.get("callee"))}function k(){return C(this.get("tag"))}function C(e){if(e=e.resolve(),e.isFunction()){if(e.is("async"))return e.is("generator")?N.genericTypeAnnotation(N.identifier("AsyncIterator")):N.genericTypeAnnotation(N.identifier("Promise"));if(e.node.returnType)return e.node.returnType}}t.__esModule=!0,t.Class=t.Function=t.Identifier=void 0;var D=r(i);Object.defineProperty(t,"Identifier",{enumerable:!0,get:function(){return a(D).default}}),t.VariableDeclarator=o,t.TypeCastExpression=u,t.NewExpression=l,t.TemplateLiteral=p,t.UnaryExpression=c,t.BinaryExpression=f,t.LogicalExpression=h,t.ConditionalExpression=d,t.SequenceExpression=y,t.AssignmentExpression=v,t.UpdateExpression=m,t.StringLiteral=g,t.NumericLiteral=b,t.BooleanLiteral=x,t.NullLiteral=E,t.RegExpLiteral=A,t.ObjectExpression=S,t.ArrayExpression=_,t.RestElement=T,t.CallExpression=w,t.TaggedTemplateExpression=k;var O=r(n),N=s(O);u.validParent=!0,T.validParent=!0,t.Function=P,t.Class=P},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}function l(e,t){function r(e){var t=i[s];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var i=e.split("."),n=[this.node],s=0;n.length;){var a=n.shift();if(t&&s===i.length)return!0;if(I.isIdentifier(a)){if(!r(a.name))return!1}else if(I.isLiteral(a)){if(!r(a.value))return!1}else{if(I.isMemberExpression(a)){if(a.computed&&!I.isLiteral(a.property))return!1;n.unshift(a.property),n.unshift(a.object);continue}if(!I.isThisExpression(a))return!1;if(!r("this"))return!1}if(++s>i.length)return!1}return s===i.length}function p(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}function c(){return this.scope.isStatic(this.node)}function f(e){return!this.has(e)}function h(e,t){return this.node[e]===t}function d(e){return I.isType(this.type,e)}function y(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()}function v(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?I.isBlockStatement(e):!!this.isBlockStatement()&&I.isExpression(e))}function m(e){var t=this,r=!0;do{var i=t.container;if(t.isFunction()&&!r)return!!e;if(r=!1,Array.isArray(i)&&t.key!==i.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0}function g(){return!this.parentPath.isLabeledStatement()&&!I.isBlockStatement(this.container)&&(0,O.default)(I.STATEMENT_OR_BLOCK_KEYS,this.key)}function b(e,t){if(!this.isReferencedIdentifier())return!1;var r=this.scope.getBinding(this.node.name);if(!r||"module"!==r.kind)return!1;var i=r.path,n=i.parentPath;return!!n.isImportDeclaration()&&(n.node.source.value===e&&(!t||(!(!i.isImportDefaultSpecifier()||"default"!==t)||(!(!i.isImportNamespaceSpecifier()||"*"!==t)||!(!i.isImportSpecifier()||i.node.imported.name!==t)))))}function x(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""}function E(e){return"after"!==this._guessExecutionStatusRelativeTo(e)}function A(e){var t=e.scope.getFunctionParent(),r=this.scope.getFunctionParent();if(t.node!==r.node){var i=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(i)return i;e=t.path}var n=e.getAncestry();if(n.indexOf(this)>=0)return"after";var s=this.getAncestry(),a=void 0,o=void 0,u=void 0;for(u=0;u<s.length;u++){var l=s[u];if(o=n.indexOf(l),o>=0){a=l;break}}if(!a)return"before";var p=n[o-1],c=s[u-1];if(!p||!c)return"before";if(p.listKey&&p.container===c.container)return p.key>c.key?"before":"after";var f=I.VISITOR_KEYS[p.type].indexOf(p.key),h=I.VISITOR_KEYS[c.type].indexOf(c.key);return f>h?"before":"after"}function S(e){var t=e.path;if(t.isFunctionDeclaration()){var r=t.scope.getBinding(t.node.id.name);if(!r.references)return"before";for(var i=r.referencePaths,n=i,s=Array.isArray(n),a=0,n=s?n:(0,C.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if("callee"!==u.key||!u.parentPath.isCallExpression())return}for(var l=void 0,p=i,c=Array.isArray(p),f=0,p=c?p:(0,C.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h,y=!!d.find(function(e){return e.node===t.node});if(!y){var v=this._guessExecutionStatusRelativeTo(d);if(l){if(l!==v)return}else l=v}}return l}}function _(e,t){return this._resolve(e,t)||this}function T(e,t){var r=this;if(!(t&&t.indexOf(this)>=0))if(t=t||[],t.push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var i=this.scope.getBinding(this.node.name);if(!i)return;if(!i.constant)return;if("module"===i.kind)return;if(i.path!==this){var n=function(){var n=i.path.resolve(e,t);return r.find(function(e){return e.node===n.node})?{v:void 0}:{v:n}}();if("object"===("undefined"==typeof n?"undefined":(0,w.default)(n)))return n.v}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var s=this.toComputedKey();if(!I.isLiteral(s))return;var a=s.value,o=this.get("object").resolve(e,t);if(o.isObjectExpression())for(var u=o.get("properties"),l=u,p=Array.isArray(l),c=0,l=p?l:(0,C.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;if(h.isProperty()){var d=h.get("key"),y=h.isnt("computed")&&d.isIdentifier({name:a});if(y=y||d.isLiteral({value:a}))return h.get("value").resolve(e,t)}}else if(o.isArrayExpression()&&!isNaN(+a)){var v=o.get("elements"),m=v[a];if(m)return m.resolve(e,t)}}}}t.__esModule=!0,t.is=void 0;var P=r(i),w=u(P),k=r(n),C=u(k);t.matchesPattern=l,t.has=p,t.isStatic=c,t.isnt=f,t.equals=h,t.isNodeType=d,t.canHaveVariableDeclarationOrExpression=y,t.canSwapBetweenExpressionAndStatement=v,t.isCompletionRecord=m,t.isStatementOrBlock=g,t.referencesImport=b,t.getSource=x,t.willIMaybeExecuteBefore=E,t._guessExecutionStatusRelativeTo=A,t._guessExecutionStatusRelativeToDifferentFunctions=S,t.resolve=_,t._resolve=T;var D=r(s),O=u(D),N=r(a),I=o(N);t.is=p},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var u=r(i),l=o(u),p=r(n),c=o(p),f=r(s),h=a(f),d={ReferencedIdentifier:function(e,t){if(!e.isJSXIdentifier()||!f.react.isCompatTag(e.node.name)){var r=e.scope.getBinding(e.node.name);if(r&&r===t.scope.getBinding(e.node.name))if(r.constant)t.bindings[e.node.name]=r;else for(var i=r.constantViolations,n=Array.isArray(i),s=0,i=n?i:(0,c.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;t.breakOnScopePaths=t.breakOnScopePaths.concat(o.getAncestry())}}}},y=function(){function e(t,r){(0,l.default)(this,e),this.breakOnScopePaths=[],this.bindings={},this.scopes=[],this.scope=r,this.path=t}return e.prototype.isCompatibleScope=function(e){for(var t in this.bindings){var r=this.bindings[t];if(!e.bindingIdentifierEquals(t,r.identifier))return!1}return!0},e.prototype.getCompatibleScopes=function(){var e=this.path.scope;do{if(!this.isCompatibleScope(e))break;if(this.scopes.push(e),this.breakOnScopePaths.indexOf(e.path)>=0)break}while(e=e.parent)},e.prototype.getAttachmentPath=function(){var e=this.scopes,t=e.pop();if(t){if(t.path.isFunction()){if(this.hasOwnParamBindings(t)){if(this.scope===t)return;return t.path.get("body").get("body")[0]}return this.getNextScopeStatementParent()}return t.path.isProgram()?this.getNextScopeStatementParent():void 0}},e.prototype.getNextScopeStatementParent=function(){var e=this.scopes.pop();if(e)return e.path.getStatementParent()},e.prototype.hasOwnParamBindings=function(e){for(var t in this.bindings)if(e.hasOwnBinding(t)){var r=this.bindings[t];if("param"===r.kind)return!0}return!1},e.prototype.run=function(){var e=this.path.node;if(!e._hoisted){e._hoisted=!0,this.path.traverse(d,this),this.getCompatibleScopes();var t=this.getAttachmentPath();if(t&&t.getFunctionParent()!==this.path.getFunctionParent()){var r=t.scope.generateUidIdentifier("ref");t.insertBefore([h.variableDeclaration("var",[h.variableDeclarator(r,this.path.node)])]);var i=this.path.parentPath;i.isJSXElement()&&this.path.container===i.node.children&&(r=h.JSXExpressionContainer(r)),this.path.replaceWith(r)}}},e}();t.default=y,e.exports=t.default},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0,t.Flow=t.Pure=t.Generated=t.User=t.Var=t.BlockScoped=t.Referenced=t.Scope=t.Expression=t.Statement=t.BindingIdentifier=t.ReferencedMemberExpression=t.ReferencedIdentifier=void 0;var s=r(i),a=n(s);t.ReferencedIdentifier={types:["Identifier","JSXIdentifier"],checkPath:function(e,t){var r=e.node,i=e.parent;if(!a.isIdentifier(r,t)){if(!a.isJSXIdentifier(r,t))return!1;if(s.react.isCompatTag(r.name))return!1}return a.isReferenced(r,i)}},t.ReferencedMemberExpression={types:["MemberExpression"],checkPath:function(e){var t=e.node,r=e.parent;return a.isMemberExpression(t)&&a.isReferenced(t,r)}},t.BindingIdentifier={types:["Identifier"],checkPath:function(e){var t=e.node,r=e.parent;return a.isIdentifier(t)&&a.isBinding(t,r)}},t.Statement={types:["Statement"],checkPath:function(e){var t=e.node,r=e.parent;if(a.isStatement(t)){if(a.isVariableDeclaration(t)){if(a.isForXStatement(r,{left:t}))return!1;if(a.isForStatement(r,{init:t}))return!1}return!0}return!1}},t.Expression={types:["Expression"],checkPath:function(e){return e.isIdentifier()?e.isReferencedIdentifier():a.isExpression(e.node)}},t.Scope={types:["Scopable"],checkPath:function(e){return a.isScope(e.node,e.parent)}},t.Referenced={checkPath:function(e){return a.isReferenced(e.node,e.parent)}},t.BlockScoped={checkPath:function(e){return a.isBlockScoped(e.node)}},t.Var={types:["VariableDeclaration"],checkPath:function(e){return a.isVar(e.node)}},t.User={checkPath:function(e){return e.node&&!!e.node.loc}},t.Generated={checkPath:function(e){return!e.isUser()}},t.Pure={checkPath:function(e,t){return e.scope.isPure(e.node,t)}},t.Flow={types:["Flow","ImportDeclaration","ExportDeclaration"],checkPath:function(e){var t=e.node;return!!a.isFlow(t)||(a.isImportDeclaration(t)?"type"===t.importKind||"typeof"===t.importKind:!!a.isExportDeclaration(t)&&"type"===t.exportKind)}}},function(e,t,r,i,n,s,a,o,u){"use strict";function l(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function p(e){return e&&e.__esModule?e:{default:e}}function c(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertBefore(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key)this.node&&e.push(this.node),this.replaceExpressionWithStatements(e);else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertBefore(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.push(this.node),this._replaceWith(N.blockStatement(e))}return[this]}function f(e,t){this.updateSiblingKeys(e,t.length);for(var r=[],i=0;i<t.length;i++){var n=e+i,s=t[i];if(this.container.splice(n,0,s),this.context){var a=this.context.create(this.parent,this.container,n,this.listKey);this.context.queue&&a.pushContext(this.context),r.push(a)}else r.push(D.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:n}))}for(var o=this._getQueueContexts(),u=r,l=Array.isArray(u),p=0,u=l?u:(0,T.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;f.setScope(),f.debug(function(){return"Inserted."});for(var h=o,d=Array.isArray(h),y=0,h=d?h:(0,T.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;m.maybeQueue(f,!0)}}return r}function h(e){return this._containerInsert(this.key,e)}function d(e){return this._containerInsert(this.key+1,e)}function y(e){var t=e[e.length-1],r=N.isIdentifier(t)||N.isExpressionStatement(t)&&N.isIdentifier(t.expression);r&&!this.isCompletionRecord()&&e.pop()}function v(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertAfter(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key){if(this.node){var t=this.scope.generateDeclaredUidIdentifier();e.unshift(N.expressionStatement(N.assignmentExpression("=",t,this.node))),e.push(N.expressionStatement(t))}this.replaceExpressionWithStatements(e)}else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertAfter(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.unshift(this.node),this._replaceWith(N.blockStatement(e))}return[this]}function m(e,t){if(this.parent)for(var r=P.path.get(this.parent),i=0;i<r.length;i++){var n=r[i];n.key>=e&&(n.key+=t)}}function g(e){if(!e)return[];e.constructor!==Array&&(e=[e]);for(var t=0;t<e.length;t++){var r=e[t],i=void 0;if(r?"object"!==("undefined"==typeof r?"undefined":(0,S.default)(r))?i="contains a non-object node":r.type?r instanceof D.default&&(i="has a NodePath when it expected a raw object"):i="without a type":i="has falsy node",i){var n=Array.isArray(r)?"array":"undefined"==typeof r?"undefined":(0,S.default)(r);throw new Error("Node list "+i+" with the index of "+t+" and type of "+n)}}return e}function b(e,t){this._assertUnremoved(),t=this._verifyNodeList(t);var r=D.default.get({parentPath:this,parent:this.node,container:this.node[e],listKey:e,key:0});return r.insertBefore(t)}function x(e,t){this._assertUnremoved(),t=this._verifyNodeList(t);var r=this.node[e],i=D.default.get({parentPath:this,parent:this.node,container:r,listKey:e,key:r.length});return i.replaceWithMultiple(t)}function E(){var e=arguments.length<=0||void 0===arguments[0]?this.scope:arguments[0],t=new k.default(this,e);return t.run()}t.__esModule=!0;var A=r(i),S=p(A),_=r(n),T=p(_);t.insertBefore=c,t._containerInsert=f,t._containerInsertBefore=h,t._containerInsertAfter=d,t._maybePopFromStatements=y,t.insertAfter=v,t.updateSiblingKeys=m,t._verifyNodeList=g,t.unshiftContainer=b,t.pushContainer=x,t.hoist=E;var P=r(s),w=r(a),k=p(w),C=r(o),D=p(C),O=r(u),N=l(O)},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}function a(){return this._assertUnremoved(),this.resync(),this._callRemovalHooks()?void this._markRemoved():(this.shareCommentsWithSiblings(),this._remove(),void this._markRemoved())}function o(){for(var e=h.hooks,t=Array.isArray(e),r=0,e=t?e:(0,f.default)(e);;){var i;if(t){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var n=i;if(n(this,this.parentPath))return!0}}function u(){Array.isArray(this.container)?(this.container.splice(this.key,1),this.updateSiblingKeys(this.key,-1)):this._replaceWith(null)}function l(){this.shouldSkip=!0,this.removed=!0,this.node=null}function p(){if(this.removed)throw this.buildCodeFrameError("NodePath has been removed so is read-only.")}t.__esModule=!0;var c=r(i),f=s(c);t.remove=a,t._callRemovalHooks=o,t._remove=u,t._markRemoved=l,t._assertUnremoved=p;var h=r(n)},function(e,t,r,i,n,s,a,o,u){"use strict";function l(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function p(e){return e&&e.__esModule?e:{default:e}}function c(e){this.resync(),e=this._verifyNodeList(e),w.inheritLeadingComments(e[0],this.node),w.inheritTrailingComments(e[e.length-1],this.node),this.node=this.container[this.key]=null,this.insertAfter(e),this.node?this.requeue():this.remove()}function f(e){this.resync();try{e="("+e+")",e=(0,T.parse)(e)}catch(r){var t=r.loc;throw t&&(r.message+=" - make sure this is an expression.",r.message+="\n"+(0,x.default)(e,t.line,t.column+1)),r}return e=e.program.body[0].expression,A.default.removeProperties(e),this.replaceWith(e)}function h(e){if(this.resync(),this.removed)throw new Error("You can't replace this node, we've already removed it");if(e instanceof _.default&&(e=e.node),!e)throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");if(this.node!==e){if(this.isProgram()&&!w.isProgram(e))throw new Error("You can only replace a Program root node with another Program node");if(Array.isArray(e))throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");if("string"==typeof e)throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");if(this.isNodeType("Statement")&&w.isExpression(e)&&(this.canHaveVariableDeclarationOrExpression()||this.canSwapBetweenExpressionAndStatement(e)||(e=w.expressionStatement(e))),this.isNodeType("Expression")&&w.isStatement(e)&&!this.canHaveVariableDeclarationOrExpression()&&!this.canSwapBetweenExpressionAndStatement(e))return this.replaceExpressionWithStatements([e]);var t=this.node;t&&(w.inheritsComments(e,t),w.removeComments(t)),this._replaceWith(e),this.type=e.type,this.setScope(),this.requeue()}}function d(e){if(!this.container)throw new ReferenceError("Container is falsy");this.inList?w.validate(this.parent,this.key,[e]):w.validate(this.parent,this.key,e),this.debug(function(){return"Replace with "+(e&&e.type)}),this.node=this.container[this.key]=e}function y(e){this.resync();var t=w.toSequenceExpression(e,this.scope);if(w.isSequenceExpression(t)){var r=t.expressions;r.length>=2&&this.parentPath.isExpressionStatement()&&this._maybePopFromStatements(r),1===r.length?this.replaceWith(r[0]):this.replaceWith(t)}else{if(!t){var i=w.functionExpression(null,[],w.blockStatement(e));i.shadow=!0,this.replaceWith(w.callExpression(i,[])),this.traverse(k);for(var n=this.get("callee").getCompletionRecords(),s=n,a=Array.isArray(s),o=0,s=a?s:(0,g.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(l.isExpressionStatement()){var p=l.findParent(function(e){return e.isLoop()});if(p){var c=this.get("callee"),f=c.scope.generateDeclaredUidIdentifier("ret");c.get("body").pushContainer("body",w.returnStatement(f)),l.get("expression").replaceWith(w.assignmentExpression("=",f,l.node.expression))}else l.replaceWith(w.returnStatement(l.node.expression))}}return this.node}this.replaceWith(t)}}function v(e){return this.resync(),Array.isArray(e)?Array.isArray(this.container)?(e=this._verifyNodeList(e),this._containerInsertAfter(e),this.remove()):this.replaceWithMultiple(e):this.replaceWith(e)}t.__esModule=!0;var m=r(i),g=p(m);t.replaceWithMultiple=c,t.replaceWithSourceString=f,t.replaceWith=h,t._replaceWith=d,t.replaceExpressionWithStatements=y,t.replaceInline=v;var b=r(n),x=p(b),E=r(s),A=p(E),S=r(a),_=p(S),T=r(o),P=r(u),w=l(P),k={Function:function(e){e.skip()},VariableDeclaration:function(e){if("var"===e.node.kind){var t=e.getBindingIdentifiers();for(var r in t)e.scope.push({id:t[r]});for(var i=[],n=e.node.declarations,s=Array.isArray(n),a=0,n=s?n:(0,g.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;u.init&&i.push(w.expressionStatement(w.assignmentExpression("=",u.id,u.init)))}e.replaceWithMultiple(i)}}}},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s),o=function(){function e(t){var r=t.existing,i=t.identifier,n=t.scope,s=t.path,o=t.kind;(0,a.default)(this,e),this.identifier=i,this.scope=n,this.path=s,this.kind=o,this.constantViolations=[],this.constant=!0,this.referencePaths=[],this.referenced=!1,this.references=0,this.clearValue(),r&&(this.constantViolations=[].concat(r.path,r.constantViolations,this.constantViolations))}return e.prototype.deoptValue=function(){this.clearValue(),this.hasDeoptedValue=!0},e.prototype.setValue=function(e){this.hasDeoptedValue||(this.hasValue=!0,this.value=e)},e.prototype.clearValue=function(){this.hasDeoptedValue=!1,this.hasValue=!1,this.value=null},e.prototype.reassign=function(e){this.constant=!1,this.constantViolations.indexOf(e)===-1&&this.constantViolations.push(e)},e.prototype.reference=function(e){this.referenced=!0,this.references++,this.referencePaths.push(e)},e.prototype.dereference=function(){this.references--,this.referenced=!!this.references},e}();t.default=o,e.exports=t.default},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v){"use strict";function m(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function g(e){return e&&e.__esModule?e:{default:e}}function b(e,t,r){for(var i=q.scope.get(e.node)||[],n=i,s=Array.isArray(n),a=0,n=s?n:(0,w.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if(u.parent===t&&u.path===e)return u}i.push(r),q.scope.has(e.node)||q.scope.set(e.node,i)}t.__esModule=!0;var x=r(i),E=g(x),A=r(n),S=g(A),_=r(s),T=g(_),P=r(a),w=g(P),k=r(o),C=g(k),D=r(u),O=g(D),N=r(l),I=g(N),F=r(p),B=g(F),R=r(c),L=g(R),M=r(f),j=m(M),V=r(h),U=g(V),Y=r(d),K=g(Y),W=r(y),G=m(W),q=r(v),H=0,X={For:function(e){for(var t=G.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,w.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isVar()&&e.scope.getFunctionParent().registerBinding("var",a)}},Declaration:function(e){e.isBlockScoped()||e.isExportDeclaration()&&e.get("declaration").isDeclaration()||e.scope.getFunctionParent().registerDeclaration(e)},ReferencedIdentifier:function(e,t){t.references.push(e)},ForXStatement:function(e,t){var r=e.get("left");(r.isPattern()||r.isIdentifier())&&t.constantViolations.push(r)},ExportDeclaration:{exit:function(e){var t=e.node,r=e.scope,i=t.declaration;if(G.isClassDeclaration(i)||G.isFunctionDeclaration(i)){var n=i.id;if(!n)return;var s=r.getBinding(n.name);s&&s.reference()}else if(G.isVariableDeclaration(i))for(var a=i.declarations,o=Array.isArray(a),u=0,a=o?a:(0,w.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var p=l,c=G.getBindingIdentifiers(p);for(var f in c){var h=r.getBinding(f);h&&h.reference()}}}},LabeledStatement:function(e){e.scope.getProgramParent().addGlobal(e.node),e.scope.getBlockParent().registerDeclaration(e)},AssignmentExpression:function(e,t){t.assignments.push(e)},UpdateExpression:function(e,t){t.constantViolations.push(e.get("argument"))},UnaryExpression:function(e,t){"delete"===e.node.operator&&t.constantViolations.push(e.get("argument"))},BlockScoped:function(e){var t=e.scope;t.path===e&&(t=t.parent),t.getBlockParent().registerDeclaration(e)},ClassDeclaration:function(e){var t=e.node.id;if(t){var r=t.name;e.scope.bindings[r]=e.scope.getBinding(r)}},Block:function(e){for(var t=e.get("body"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,w.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;a.isFunctionDeclaration()&&e.scope.getBlockParent().registerDeclaration(a)}}},J=0,$=function(){function e(t,r){if((0,T.default)(this,e),r&&r.block===t.node)return r;var i=b(t,r,this);return i?i:(this.uid=J++,this.parent=r,this.hub=t.hub,this.parentBlock=t.parent,this.block=t.node,void(this.path=t))}return e.prototype.traverse=function(e,t,r){(0,B.default)(e,t,this,r,this.path)},e.prototype.generateDeclaredUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0],t=this.generateUidIdentifier(e);return this.push({id:t}),t},e.prototype.generateUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];return G.identifier(this.generateUid(e))},e.prototype.generateUid=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];e=G.toIdentifier(e).replace(/^_+/,"").replace(/[0-9]+$/g,"");var t=void 0,r=0;do t=this._generateUid(e,r),r++;while(this.hasBinding(t)||this.hasGlobal(t)||this.hasReference(t));var i=this.getProgramParent();return i.references[t]=!0,i.uids[t]=!0,t},e.prototype._generateUid=function(e,t){var r=e;return t>1&&(r+=t),"_"+r},e.prototype.generateUidIdentifierBasedOnNode=function(e,t){var r=e;G.isAssignmentExpression(e)?r=e.left:G.isVariableDeclarator(e)?r=e.id:(G.isObjectProperty(r)||G.isObjectMethod(r))&&(r=r.key);var i=[],n=function e(t){if(G.isModuleDeclaration(t))if(t.source)e(t.source);else if(t.specifiers&&t.specifiers.length)for(var r=t.specifiers,n=Array.isArray(r),s=0,r=n?r:(0,w.default)(r);;){var a;if(n){if(s>=r.length)break;a=r[s++]}else{if(s=r.next(),s.done)break;a=s.value}var o=a;e(o)}else t.declaration&&e(t.declaration);else if(G.isModuleSpecifier(t))e(t.local);else if(G.isMemberExpression(t))e(t.object),e(t.property);else if(G.isIdentifier(t))i.push(t.name);else if(G.isLiteral(t))i.push(t.value);else if(G.isCallExpression(t))e(t.callee);else if(G.isObjectExpression(t)||G.isObjectPattern(t))for(var u=t.properties,l=Array.isArray(u),p=0,u=l?u:(0,w.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e(f.key||f.argument)}};n(r);var s=i.join("$");return s=s.replace(/^_/,"")||t||"ref",this.generateUidIdentifier(s.slice(0,20))},e.prototype.isStatic=function(e){if(G.isThisExpression(e)||G.isSuper(e))return!0;if(G.isIdentifier(e)){var t=this.getBinding(e.name);return t?t.constant:this.hasBinding(e.name)}return!1},e.prototype.maybeGenerateMemoised=function(e,t){if(this.isStatic(e))return null;var r=this.generateUidIdentifierBasedOnNode(e);return t||this.push({id:r}),r},e.prototype.checkBlockScopedCollisions=function(e,t,r,i){if("param"!==t&&("hoisted"!==t||"let"!==e.kind)){var n=!1;if(n||(n="let"===t||"let"===e.kind||"const"===e.kind||"module"===e.kind),n||(n="param"===e.kind&&("let"===t||"const"===t)),n)throw this.hub.file.buildCodeFrameError(i,j.get("scopeDuplicateDeclaration",r),TypeError)}},e.prototype.rename=function(e,t,r){var i=this.getBinding(e);if(i)return t=t||this.generateUidIdentifier(e).name,new I.default(i,e,t).rename(r)},e.prototype._renameFromMap=function(e,t,r,i){e[t]&&(e[r]=i,e[t]=null)},e.prototype.dump=function(){var e=(0,O.default)("-",60);console.log(e);var t=this;do{console.log("#",t.block.type);for(var r in t.bindings){var i=t.bindings[r];console.log(" -",r,{constant:i.constant,references:i.references,violations:i.constantViolations.length,kind:i.kind})}}while(t=t.parent);console.log(e)},e.prototype.toArray=function(e,t){var r=this.hub.file;if(G.isIdentifier(e)){var i=this.getBinding(e.name);if(i&&i.constant&&i.path.isGenericType("Array"))return e}if(G.isArrayExpression(e))return e;if(G.isIdentifier(e,{name:"arguments"}))return G.callExpression(G.memberExpression(G.memberExpression(G.memberExpression(G.identifier("Array"),G.identifier("prototype")),G.identifier("slice")),G.identifier("call")),[e]);var n="toArray",s=[e];return t===!0?n="toConsumableArray":t&&(s.push(G.numericLiteral(t)),n="slicedToArray"),G.callExpression(r.addHelper(n),s)},e.prototype.registerDeclaration=function(e){if(e.isLabeledStatement())this.registerBinding("label",e);else if(e.isFunctionDeclaration())this.registerBinding("hoisted",e.get("id"),e);else if(e.isVariableDeclaration())for(var t=e.get("declarations"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,w.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;this.registerBinding(e.node.kind,a)}else if(e.isClassDeclaration())this.registerBinding("let",e);else if(e.isImportDeclaration())for(var o=e.get("specifiers"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,w.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("module",f)}else if(e.isExportDeclaration()){var h=e.get("declaration");(h.isClassDeclaration()||h.isFunctionDeclaration()||h.isVariableDeclaration())&&this.registerDeclaration(h)}else this.registerBinding("unknown",e)},e.prototype.buildUndefinedNode=function(){return this.hasBinding("undefined")?G.unaryExpression("void",G.numericLiteral(0),!0):G.identifier("undefined")},e.prototype.registerConstantViolation=function(e){var t=e.getBindingIdentifiers();for(var r in t){var i=this.getBinding(r);i&&i.reassign(e)}},e.prototype.registerBinding=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?t:arguments[2];if(!e)throw new ReferenceError("no `kind`");if(t.isVariableDeclaration())for(var i=t.get("declarations"),n=i,s=Array.isArray(n),a=0,n=s?n:(0,w.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;
+this.registerBinding(e,u)}else{var l=this.getProgramParent(),p=t.getBindingIdentifiers(!0);for(var c in p)for(var f=p[c],h=Array.isArray(f),d=0,f=h?f:(0,w.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y,m=this.getOwnBinding(c);if(m){if(m.identifier===v)continue;this.checkBlockScopedCollisions(m,e,c,v)}m&&m.path.isFlow()&&(m=null),l.references[c]=!0,this.bindings[c]=new U.default({identifier:v,existing:m,scope:this,path:r,kind:e})}}},e.prototype.addGlobal=function(e){this.globals[e.name]=e},e.prototype.hasUid=function(e){var t=this;do if(t.uids[e])return!0;while(t=t.parent);return!1},e.prototype.hasGlobal=function(e){var t=this;do if(t.globals[e])return!0;while(t=t.parent);return!1},e.prototype.hasReference=function(e){var t=this;do if(t.references[e])return!0;while(t=t.parent);return!1},e.prototype.isPure=function(e,t){if(G.isIdentifier(e)){var r=this.getBinding(e.name);return!!r&&(!t||r.constant)}if(G.isClass(e))return!(e.superClass&&!this.isPure(e.superClass,t))&&this.isPure(e.body,t);if(G.isClassBody(e)){for(var i=e.body,n=Array.isArray(i),s=0,i=n?i:(0,w.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(!this.isPure(o,t))return!1}return!0}if(G.isBinary(e))return this.isPure(e.left,t)&&this.isPure(e.right,t);if(G.isArrayExpression(e)){for(var u=e.elements,l=Array.isArray(u),p=0,u=l?u:(0,w.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if(!this.isPure(f,t))return!1}return!0}if(G.isObjectExpression(e)){for(var h=e.properties,d=Array.isArray(h),y=0,h=d?h:(0,w.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;if(!this.isPure(m,t))return!1}return!0}return G.isClassMethod(e)?!(e.computed&&!this.isPure(e.key,t))&&("get"!==e.kind&&"set"!==e.kind):G.isClassProperty(e)||G.isObjectProperty(e)?!(e.computed&&!this.isPure(e.key,t))&&this.isPure(e.value,t):G.isUnaryExpression(e)?this.isPure(e.argument,t):G.isPureish(e)},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e){var t=this;do{var r=t.data[e];if(null!=r)return r}while(t=t.parent)},e.prototype.removeData=function(e){var t=this;do{var r=t.data[e];null!=r&&(t.data[e]=null)}while(t=t.parent)},e.prototype.init=function(){this.references||this.crawl()},e.prototype.crawl=function(){H++,this._crawl(),H--},e.prototype._crawl=function(){var e=this.path;if(this.references=(0,S.default)(null),this.bindings=(0,S.default)(null),this.globals=(0,S.default)(null),this.uids=(0,S.default)(null),this.data=(0,S.default)(null),e.isLoop())for(var t=G.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,w.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isBlockScoped()&&this.registerBinding(a.node.kind,a)}if(e.isFunctionExpression()&&e.has("id")&&(e.get("id").node[G.NOT_LOCAL_BINDING]||this.registerBinding("local",e.get("id"),e)),e.isClassExpression()&&e.has("id")&&(e.get("id").node[G.NOT_LOCAL_BINDING]||this.registerBinding("local",e)),e.isFunction())for(var o=e.get("params"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,w.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("param",f)}e.isCatchClause()&&this.registerBinding("let",e);var h=this.getProgramParent();if(!h.crawling){var d={references:[],constantViolations:[],assignments:[]};this.crawling=!0,e.traverse(X,d),this.crawling=!1;for(var y=d.assignments,v=Array.isArray(y),m=0,y=v?y:(0,w.default)(y);;){var g;if(v){if(m>=y.length)break;g=y[m++]}else{if(m=y.next(),m.done)break;g=m.value}var b=g,x=b.getBindingIdentifiers(),E=void 0;for(var A in x)b.scope.getBinding(A)||(E=E||b.scope.getProgramParent(),E.addGlobal(x[A]));b.scope.registerConstantViolation(b)}for(var _=d.references,T=Array.isArray(_),P=0,_=T?_:(0,w.default)(_);;){var k;if(T){if(P>=_.length)break;k=_[P++]}else{if(P=_.next(),P.done)break;k=P.value}var C=k,D=C.scope.getBinding(C.node.name);D?D.reference(C):C.scope.getProgramParent().addGlobal(C.node)}for(var O=d.constantViolations,N=Array.isArray(O),I=0,O=N?O:(0,w.default)(O);;){var F;if(N){if(I>=O.length)break;F=O[I++]}else{if(I=O.next(),I.done)break;F=I.value}var B=F;B.scope.registerConstantViolation(B)}}},e.prototype.push=function(e){var t=this.path;t.isBlockStatement()||t.isProgram()||(t=this.getBlockParent().path),t.isSwitchStatement()&&(t=this.getFunctionParent().path),(t.isLoop()||t.isCatchClause()||t.isFunction())&&(G.ensureBlock(t.node),t=t.get("body"));var r=e.unique,i=e.kind||"var",n=null==e._blockHoist?2:e._blockHoist,s="declaration:"+i+":"+n,a=!r&&t.getData(s);if(!a){var o=G.variableDeclaration(i,[]);o._generated=!0,o._blockHoist=n;var u=t.unshiftContainer("body",[o]);a=u[0],r||t.setData(s,a)}var l=G.variableDeclarator(e.id,e.init);a.node.declarations.push(l),this.registerBinding(i,a.get("declarations").pop())},e.prototype.getProgramParent=function(){var e=this;do if(e.path.isProgram())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getFunctionParent=function(){var e=this;do if(e.path.isFunctionParent())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getBlockParent=function(){var e=this;do if(e.path.isBlockParent())return e;while(e=e.parent);throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...")},e.prototype.getAllBindings=function(){var e=(0,S.default)(null),t=this;do(0,L.default)(e,t.bindings),t=t.parent;while(t);return e},e.prototype.getAllBindingsOfKind=function(){for(var e=(0,S.default)(null),t=arguments,r=Array.isArray(t),i=0,t=r?t:(0,w.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=this;do{for(var o in a.bindings){var u=a.bindings[o];u.kind===s&&(e[o]=u)}a=a.parent}while(a)}return e},e.prototype.bindingIdentifierEquals=function(e,t){return this.getBindingIdentifier(e)===t},e.prototype.warnOnFlowBinding=function(e){return 0===H&&e&&e.path.isFlow()&&console.warn("\n You or one of the Babel plugins you are using are using Flow declarations as bindings.\n Support for this will be removed in version 6.8. To find out the caller, grep for this\n message and change it to a `console.trace()`.\n "),e},e.prototype.getBinding=function(e){var t=this;do{var r=t.getOwnBinding(e);if(r)return this.warnOnFlowBinding(r)}while(t=t.parent)},e.prototype.getOwnBinding=function(e){return this.warnOnFlowBinding(this.bindings[e])},e.prototype.getBindingIdentifier=function(e){var t=this.getBinding(e);return t&&t.identifier},e.prototype.getOwnBindingIdentifier=function(e){var t=this.bindings[e];return t&&t.identifier},e.prototype.hasOwnBinding=function(e){return!!this.getOwnBinding(e)},e.prototype.hasBinding=function(t,r){return!!t&&(!!this.hasOwnBinding(t)||(!!this.parentHasBinding(t,r)||(!!this.hasUid(t)||(!(r||!(0,C.default)(e.globals,t))||!(r||!(0,C.default)(e.contextVariables,t))))))},e.prototype.parentHasBinding=function(e,t){return this.parent&&this.parent.hasBinding(e,t)},e.prototype.moveBindingTo=function(e,t){var r=this.getBinding(e);r&&(r.scope.removeOwnBinding(e),r.scope=t,t.bindings[e]=r)},e.prototype.removeOwnBinding=function(e){delete this.bindings[e]},e.prototype.removeBinding=function(e){var t=this.getBinding(e);t&&t.scope.removeOwnBinding(e);var r=this;do r.uids[e]&&(r.uids[e]=!1);while(r=r.parent)},e}();$.globals=(0,E.default)(K.default.builtin),$.contextVariables=["arguments","undefined","Infinity","NaN"],t.default=$,e.exports=t.default},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var u=r(i),l=o(u),p=r(n),c=(o(p),r(s)),f=a(c),h={ReferencedIdentifier:function(e,t){var r=e.node;r.name===t.oldName&&(r.name=t.newName)},Scope:function(e,t){e.scope.bindingIdentifierEquals(t.oldName,t.binding.identifier)||e.skip()},"AssignmentExpression|Declaration":function(e,t){var r=e.getOuterBindingIdentifiers();for(var i in r)i===t.oldName&&(r[i].name=t.newName)}},d=function(){function e(t,r,i){(0,l.default)(this,e),this.newName=i,this.oldName=r,this.binding=t}return e.prototype.maybeConvertFromExportDeclaration=function(e){var t=e.parentPath.isExportDeclaration()&&e.parentPath;if(t){var r=t.isExportDefaultDeclaration();r&&(e.isFunctionDeclaration()||e.isClassDeclaration())&&!e.node.id&&(e.node.id=e.scope.generateUidIdentifier("default"));var i=e.getOuterBindingIdentifiers(),n=[];for(var s in i){var a=s===this.oldName?this.newName:s,o=r?"default":s;n.push(f.exportSpecifier(f.identifier(a),f.identifier(o)))}var u=f.exportNamedDeclaration(null,n);e.isFunctionDeclaration()&&(u._blockHoist=3),t.insertAfter(u),t.replaceWith(e.node)}},e.prototype.maybeConvertFromClassFunctionDeclaration=function(e){},e.prototype.maybeConvertFromClassFunctionExpression=function(e){},e.prototype.rename=function(e){var t=this.binding,r=this.oldName,i=this.newName,n=t.scope,s=t.path,a=s.find(function(e){return e.isDeclaration()||e.isFunctionExpression()});a&&this.maybeConvertFromExportDeclaration(a),n.traverse(e||n.block,h,this),e||(n.removeOwnBinding(r),n.bindings[i]=t,this.binding.identifier.name=i),"hoisted"===t.type,a&&(this.maybeConvertFromClassFunctionDeclaration(a),this.maybeConvertFromClassFunctionExpression(a))},e}();t.default=d,e.exports=t.default},function(e,t,r,i,n,s,a,o,u,l){"use strict";function p(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}function f(e){if(e._exploded)return e;e._exploded=!0;for(var t in e)if(!x(t)){var r=t.split("|");if(1!==r.length){var i=e[t];delete e[t];for(var n=r,s=Array.isArray(n),a=0,n=s?n:(0,w.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;e[u]=i}}}h(e),delete e.__esModule,m(e),g(e);for(var l=(0,T.default)(e),p=Array.isArray(l),c=0,l=p?l:(0,w.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var d=f;if(!x(d)){var y=C[d];if(y){var v=e[d];for(var A in v)v[A]=b(y,v[A]);if(delete e[d],y.types)for(var S=y.types,_=Array.isArray(S),P=0,S=_?S:(0,w.default)(S);;){var k;if(_){if(P>=S.length)break;k=S[P++]}else{if(P=S.next(),P.done)break;k=P.value}var D=k;e[D]?E(e[D],v):e[D]=v}else E(e,v)}}}for(var O in e)if(!x(O)){var N=e[O],F=I.FLIPPED_ALIAS_KEYS[O],R=I.DEPRECATED_KEYS[O];if(R&&(console.trace("Visitor defined for "+O+" but it has been renamed to "+R),F=[R]),F){delete e[O];for(var L=F,M=Array.isArray(L),j=0,L=M?L:(0,w.default)(L);;){var V;if(M){if(j>=L.length)break;V=L[j++]}else{if(j=L.next(),j.done)break;V=j.value}var U=V,Y=e[U];Y?E(Y,N):e[U]=(0,B.default)(N)}}}for(var K in e)x(K)||g(e[K]);return e}function h(e){if(!e._verified){if("function"==typeof e)throw new Error(O.get("traverseVerifyRootFunction"));for(var t in e)if("enter"!==t&&"exit"!==t||d(t,e[t]),!x(t)){if(I.TYPES.indexOf(t)<0)throw new Error(O.get("traverseVerifyNodeType",t));var r=e[t];if("object"===("undefined"==typeof r?"undefined":(0,S.default)(r)))for(var i in r){if("enter"!==i&&"exit"!==i)throw new Error(O.get("traverseVerifyVisitorProperty",t,i));d(t+"."+i,r[i])}}e._verified=!0}}function d(e,t){for(var r=[].concat(t),i=r,n=Array.isArray(i),s=0,i=n?i:(0,w.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if("function"!=typeof o)throw new TypeError("Non-function found defined in "+e+" with type "+("undefined"==typeof o?"undefined":(0,S.default)(o)))}}function y(e){for(var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],r={},i=0;i<e.length;i++){var n=e[i],s=t[i];f(n);for(var a in n){var o=n[a];s&&(o=v(o,s));var u=r[a]=r[a]||{};E(u,o)}}return r}function v(e,t){var r={};for(var i in e){var n=e[i];Array.isArray(n)&&(n=n.map(function(e){var r=function(r){return e.call(t,r,t)};return r.toString=function(){return e.toString()},r}),r[i]=n)}return r}function m(e){for(var t in e)if(!x(t)){var r=e[t];"function"==typeof r&&(e[t]={enter:r})}}function g(e){e.enter&&!Array.isArray(e.enter)&&(e.enter=[e.enter]),e.exit&&!Array.isArray(e.exit)&&(e.exit=[e.exit])}function b(e,t){var r=function(r){if(e.checkPath(r))return t.apply(this,arguments)};return r.toString=function(){return t.toString()},r}function x(e){return"_"===e[0]||("enter"===e||"exit"===e||"shouldSkip"===e||("blacklist"===e||"noScope"===e||"skipKeys"===e))}function E(e,t){for(var r in t)e[r]=[].concat(e[r]||[],t[r])}t.__esModule=!0;var A=r(i),S=c(A),_=r(n),T=c(_),P=r(s),w=c(P);t.explode=f,t.verify=h,t.merge=y;var k=r(a),C=p(k),D=r(o),O=p(D),N=r(u),I=p(N),F=r(l),B=c(F)},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=p.default.matchToToken(e);if("name"===t.type&&f.default.keyword.isReservedWordES6(t.value))return"keyword";if("punctuator"===t.type)switch(t.value){case"{":case"}":return"curly";case"(":case")":return"parens";case"[":case"]":return"square"}return t.type}function u(e){return e.replace(p.default,function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];var i=o(t),n=y[i];return n?t[0].split(v).map(function(e){return n(e)}).join("\n"):t[0]})}t.__esModule=!0,t.default=function(e,t,r){var i=arguments.length<=3||void 0===arguments[3]?{}:arguments[3];r=Math.max(r,0);var n=i.highlightCode&&d.default.supportsColor;n&&(e=u(e));var s=e.split(v),a=Math.max(t-3,0),o=Math.min(s.length,t+3);t||r||(a=0,o=s.length);var l=String(o).length,p=s.slice(a,o).map(function(e,i){var n=a+1+i,s=(" "+n).slice(-l),o=" "+s+" | ";if(n===t){var u="";if(r){var p=e.slice(0,r-1).replace(/[^\t]/g," ");u="\n "+o.replace(/\d/g," ")+p+"^"}return">"+o+e+u}return" "+o+e}).join("\n");return n?d.default.reset(p):p};var l=r(i),p=a(l),c=r(n),f=a(c),h=r(s),d=a(h),y={string:d.default.red,punctuator:d.default.bold,curly:d.default.green,parens:d.default.blue.bold,square:d.default.yellow,keyword:d.default.cyan,number:d.default.magenta,regex:d.default.magenta,comment:d.default.grey,invalid:d.default.inverse},v=/\r\n|[\n\r\u2028\u2029]/;e.exports=t.default},function(e,t,r,i,n,s,a,o){(function(t){"use strict";function u(e){this.enabled=e&&void 0!==e.enabled?e.enabled:v}function l(e){var t=function(){return p.apply(t,arguments)};return t._styles=e,t.enabled=this.enabled,t.__proto__=x,t}function p(){var e=arguments,t=e.length,r=0!==t&&String(arguments[0]);if(t>1)for(var i=1;i<t;i++)r+=" "+e[i];if(!this.enabled||!r)return r;var n=this._styles,s=n.length,a=h.dim.open;for(!g||n.indexOf("gray")===-1&&n.indexOf("grey")===-1||(h.dim.open="");s--;){var o=h[n[s]];r=o.open+r.replace(o.closeRe,o.open)+o.close}return h.dim.open=a,r}function c(){var e={};return Object.keys(b).forEach(function(t){e[t]={get:function(){return l.call(this,[t])}}}),e}var f=r(i),h=r(n),d=r(s),y=r(a),v=r(o),m=Object.defineProperties,g="win32"===t.platform&&!/^xterm/i.test(t.env.TERM);g&&(h.blue.open="[94m");var b=function(){var e={};return Object.keys(h).forEach(function(t){h[t].closeRe=new RegExp(f(h[t].close),"g"),e[t]={get:function(){return l.call(this,this._styles.concat(t))}}}),e}(),x=m(function(){},b);m(u.prototype,c()),e.exports=new u,e.exports.styles=h,e.exports.hasColor=y,e.exports.stripColor=d,e.exports.supportsColor=v}).call(t,r(10))},function(e,t,r,i){"use strict";var n=r(i),s=new RegExp(n().source);e.exports=s.test.bind(s)},function(e,t,r,i){"use strict";var n=r(i)();e.exports=function(e){return"string"==typeof e?e.replace(n,""):e}},function(e,t,r,i){!function(){"use strict";function t(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function n(e,t){return!(!t&&"yield"===e)&&s(e,t)}function s(e,r){if(r&&t(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function a(e,t){return"null"===e||"true"===e||"false"===e||n(e,t)}function o(e,t){return"null"===e||"true"===e||"false"===e||s(e,t)}function u(e){return"eval"===e||"arguments"===e}function l(e){var t,r,i;if(0===e.length)return!1;if(i=e.charCodeAt(0),!d.isIdentifierStartES5(i))return!1;for(t=1,r=e.length;t<r;++t)if(i=e.charCodeAt(t),!d.isIdentifierPartES5(i))return!1;return!0}function p(e,t){return 1024*(e-55296)+(t-56320)+65536}function c(e){var t,r,i,n,s;if(0===e.length)return!1;for(s=d.isIdentifierStartES6,t=0,r=e.length;t<r;++t){if(i=e.charCodeAt(t),55296<=i&&i<=56319){if(++t,t>=r)return!1;if(n=e.charCodeAt(t),!(56320<=n&&n<=57343))return!1;i=p(i,n)}if(!s(i))return!1;s=d.isIdentifierPartES6}return!0}function f(e,t){return l(e)&&!a(e,t)}function h(e,t){return c(e)&&!o(e,t)}var d=r(i);e.exports={isKeywordES5:n,isKeywordES6:s,isReservedWordES5:a,isReservedWordES6:o,isRestrictedWord:u,isIdentifierNameES5:l,isIdentifierNameES6:c,isIdentifierES5:f,isIdentifierES6:h}}()},function(e,t,r,i,n,s){!function(){"use strict";t.ast=r(i),t.code=r(n),t.keyword=r(s)}()},function(e,t,r,i){function n(){return"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function s(){var e=arguments,r=this.useColors;if(e[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+e[0]+(r?"%c ":" ")+"+"+t.humanize(this.diff),!r)return e;var i="color: "+this.color;e=[e[0],i,"color: inherit"].concat(Array.prototype.slice.call(e,1));var n=0,s=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(n++,"%c"===e&&(s=n))}),e.splice(s,0,i),e}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function o(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function u(){var e;try{e=t.storage.debug}catch(e){}return e}function l(){try{return window.localStorage}catch(e){}}t=e.exports=r(i),t.log=a,t.formatArgs=s,t.save=o,t.load=u,t.useColors=n,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:l(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){return JSON.stringify(e)},t.enable(u())},function(e,t,r,i){function n(){return t.colors[c++%t.colors.length]}function s(e){function r(){}function i(){var e=i,r=+new Date,s=r-(p||r);e.diff=s,e.prev=p,e.curr=r,p=r,null==e.useColors&&(e.useColors=t.useColors()),null==e.color&&e.useColors&&(e.color=n());var a=Array.prototype.slice.call(arguments);a[0]=t.coerce(a[0]),"string"!=typeof a[0]&&(a=["%o"].concat(a));var o=0;a[0]=a[0].replace(/%([a-z%])/g,function(r,i){if("%%"===r)return r;o++;var n=t.formatters[i];if("function"==typeof n){var s=a[o];r=n.call(e,s),a.splice(o,1),o--}return r}),"function"==typeof t.formatArgs&&(a=t.formatArgs.apply(e,a));var u=i.log||t.log||console.log.bind(console);u.apply(e,a)}r.enabled=!1,i.enabled=!0;var s=t.enabled(e)?i:r;return s.namespace=e,s}function a(e){t.save(e);for(var r=(e||"").split(/[\s,]+/),i=r.length,n=0;n<i;n++)r[n]&&(e=r[n].replace(/\*/g,".*?"),"-"===e[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))}function o(){t.enable("")}function u(e){var r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1}function l(e){return e instanceof Error?e.stack||e.message:e}t=e.exports=s,t.coerce=l,t.disable=o,t.enable=a,t.enabled=u,t.humanize=r(i),t.names=[],t.skips=[],t.formatters={};var p,c=0},function(e,t,r,i){e.exports=r(i)},function(e,t,r,i,n,s,a,o,u,l){function p(e,t,r,i){var n=e?f(e):0;return y(n)||(e=m(e),n=e.length),r="number"!=typeof r||i&&d(t,r,i)?0:r<0?g(n+r,0):r||0,"string"==typeof e||!h(e)&&v(e)?r<=n&&e.indexOf(t,r)>-1:!!n&&c(e,t,r)>-1}var c=r(i),f=r(n),h=r(s),d=r(a),y=r(o),v=r(u),m=r(l),g=Math.max;e.exports=p},function(e,t,r,i){function n(e,t,r){if(t!==t)return s(e,r);for(var i=r-1,n=e.length;++i<n;)if(e[i]===t)return i;return-1}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t){return s(function(r){var i=r[0];return null==i?i:(r.push(t),e.apply(void 0,r))})}var s=r(i);e.exports=n},function(e,t,r,i,n,s){function a(e,t,r,i){return t&&"boolean"!=typeof t&&l(e,t,r)?t=!1:"function"==typeof t&&(i=r,r=t,t=!1),"function"==typeof r?o(e,t,u(r,i,3)):o(e,t)}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i){function n(e){return"string"==typeof e||s(e)&&u.call(e)==a}var s=r(i),a="[object String]",o=Object.prototype,u=o.toString;e.exports=n},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s),l=u(a,o);e.exports=l},function(e,t,r,i,n){function s(e){return a(e,o(e))}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){"use strict";var n=r(i);e.exports=function(e,t){if("string"!=typeof e)throw new TypeError("Expected a string as the first argument");if(t<0||!n(t))throw new TypeError("Expected a finite positive number");var r="";do 1&t&&(r+=e),e+=e;while(t>>=1);return r}},function(e,t,r,i){"use strict";var n=r(i);e.exports=Number.isFinite||function(e){return!("number"!=typeof e||n(e)||e===1/0||e===-(1/0))}},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.NOT_LOCAL_BINDING=t.BLOCK_SCOPED_SYMBOL=t.INHERIT_KEYS=t.UNARY_OPERATORS=t.STRING_UNARY_OPERATORS=t.NUMBER_UNARY_OPERATORS=t.BOOLEAN_UNARY_OPERATORS=t.BINARY_OPERATORS=t.NUMBER_BINARY_OPERATORS=t.BOOLEAN_BINARY_OPERATORS=t.COMPARISON_BINARY_OPERATORS=t.EQUALITY_BINARY_OPERATORS=t.BOOLEAN_NUMBER_BINARY_OPERATORS=t.UPDATE_OPERATORS=t.LOGICAL_OPERATORS=t.COMMENT_KEYS=t.FOR_INIT_KEYS=t.FLATTENABLE_KEYS=t.STATEMENT_OR_BLOCK_KEYS=void 0;var s=r(i),a=n(s),o=(t.STATEMENT_OR_BLOCK_KEYS=["consequent","body","alternate"],t.FLATTENABLE_KEYS=["body","expressions"],t.FOR_INIT_KEYS=["left","init"],t.COMMENT_KEYS=["leadingComments","trailingComments","innerComments"],t.LOGICAL_OPERATORS=["||","&&"],t.UPDATE_OPERATORS=["++","--"],t.BOOLEAN_NUMBER_BINARY_OPERATORS=[">","<",">=","<="]),u=t.EQUALITY_BINARY_OPERATORS=["==","===","!=","!=="],l=t.COMPARISON_BINARY_OPERATORS=[].concat(u,["in","instanceof"]),p=t.BOOLEAN_BINARY_OPERATORS=[].concat(l,o),c=t.NUMBER_BINARY_OPERATORS=["-","/","%","*","**","&","|",">>",">>>","<<","^"],f=(t.BINARY_OPERATORS=["+"].concat(c,p),t.BOOLEAN_UNARY_OPERATORS=["delete","!"]),h=t.NUMBER_UNARY_OPERATORS=["+","-","++","--","~"],d=t.STRING_UNARY_OPERATORS=["typeof"];t.UNARY_OPERATORS=["void"].concat(f,h,d),t.INHERIT_KEYS={optional:["typeAnnotation","typeParameters","returnType"],force:["start","loc","end"]},t.BLOCK_SCOPED_SYMBOL=(0,a.default)("var used to be block scoped"),t.NOT_LOCAL_BINDING=(0,a.default)("should not be considered a local binding")},function(e,t,r,i,n,s,a,o,u,l,p,c){"use strict";function f(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function h(e){return e&&e.__esModule?e:{default:e}}function d(e){var t=arguments.length<=1||void 0===arguments[1]?e.key||e.property:arguments[1];return e.computed||M.isIdentifier(t)&&(t=M.stringLiteral(t.name)),t}function y(e,t){function r(e){for(var s=!1,a=[],o=e,u=Array.isArray(o),l=0,o=u?o:(0,k.default)(o);;){var p;if(u){if(l>=o.length)break;p=o[l++]}else{if(l=o.next(),l.done)break;p=l.value}var c=p;if(M.isExpression(c))a.push(c);else if(M.isExpressionStatement(c))a.push(c.expression);else{if(M.isVariableDeclaration(c)){if("var"!==c.kind)return n=!0;for(var f=c.declarations,h=Array.isArray(f),d=0,f=h?f:(0,k.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y,m=M.getBindingIdentifiers(v);for(var g in m)i.push({kind:c.kind,id:m[g]});v.init&&a.push(M.assignmentExpression("=",v.id,v.init))}s=!0;continue}if(M.isIfStatement(c)){var b=c.consequent?r([c.consequent]):t.buildUndefinedNode(),x=c.alternate?r([c.alternate]):t.buildUndefinedNode();if(!b||!x)return n=!0;a.push(M.conditionalExpression(c.test,b,x))}else{if(!M.isBlockStatement(c)){if(M.isEmptyStatement(c)){s=!0;continue}return n=!0}a.push(r(c.body))}}s=!1}return(s||0===a.length)&&a.push(t.buildUndefinedNode()),1===a.length?a[0]:M.sequenceExpression(a)}if(e&&e.length){var i=[],n=!1,s=r(e);if(!n){for(var a=0;a<i.length;a++)t.push(i[a]);return s}}}function v(e){var t=arguments.length<=1||void 0===arguments[1]?e.key:arguments[1];j||(j=r(c).default);var i=void 0;return"method"===e.kind?v.increment()+"":(i=M.isIdentifier(t)?t.name:M.isStringLiteral(t)?(0,P.default)(t.value):(0,P.default)(j.removeProperties(M.cloneDeep(t))),e.computed&&(i="["+i+"]"),e.static&&(i="static:"+i),i)}function m(e){return e+="",e=e.replace(/[^a-zA-Z0-9$_]/g,"-"),e=e.replace(/^[-0-9]+/,""),e=e.replace(/[-\s]+(.)?/g,function(e,t){return t?t.toUpperCase():""}),M.isValidIdentifier(e)||(e="_"+e),e||"_"}function g(e){return e=m(e),"eval"!==e&&"arguments"!==e||(e="_"+e),e}function b(e,t){if(M.isStatement(e))return e;var r=!1,i=void 0;if(M.isClass(e))r=!0,i="ClassDeclaration";else if(M.isFunction(e))r=!0,i="FunctionDeclaration";else if(M.isAssignmentExpression(e))return M.expressionStatement(e);if(r&&!e.id&&(i=!1),!i){if(t)return!1;throw new Error("cannot turn "+e.type+" to a statement")}return e.type=i,e}function x(e){if(M.isExpressionStatement(e)&&(e=e.expression),M.isClass(e)?e.type="ClassExpression":M.isFunction(e)&&(e.type="FunctionExpression"),M.isExpression(e))return e;throw new Error("cannot turn "+e.type+" to an expression")}function E(e,t){return M.isBlockStatement(e)?e:(M.isEmptyStatement(e)&&(e=[]),Array.isArray(e)||(M.isStatement(e)||(e=M.isFunction(t)?M.returnStatement(e):M.expressionStatement(e)),e=[e]),M.blockStatement(e))}function A(e){if(void 0===e)return M.identifier("undefined");if(e===!0||e===!1)return M.booleanLiteral(e);if(null===e)return M.nullLiteral();if((0,R.default)(e))return M.stringLiteral(e);if((0,N.default)(e))return M.numericLiteral(e);if((0,F.default)(e)){var t=e.source,r=e.toString().match(/\/([a-z]+|)$/)[1];return M.regExpLiteral(t,r)}if(Array.isArray(e))return M.arrayExpression(e.map(M.valueToNode));if((0,D.default)(e)){var i=[];for(var n in e){var s=void 0;s=M.isValidIdentifier(n)?M.identifier(n):M.stringLiteral(n),i.push(M.objectProperty(s,M.valueToNode(e[n])))}return M.objectExpression(i)}throw new Error("don't know how to turn this value into a node")}t.__esModule=!0;var S=r(i),_=h(S),T=r(n),P=h(T),w=r(s),k=h(w);t.toComputedKey=d,t.toSequenceExpression=y,t.toKeyAlias=v,t.toIdentifier=m,t.toBindingIdentifierName=g,t.toStatement=b,t.toExpression=x,t.toBlock=E,t.valueToNode=A;var C=r(a),D=h(C),O=r(o),N=h(O),I=r(u),F=h(I),B=r(l),R=h(B),L=r(p),M=f(L),j=void 0;v.uid=0,v.increment=function(){return v.uid>=_.default?v.uid=0:v.uid++}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}var u=r(i),l=o(u),p=r(n),c=r(s),f=a(c);(0,f.default)("ArrayExpression",{fields:{elements:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeOrValueType)("null","Expression","SpreadElement"))),default:[]}},visitor:["elements"],aliases:["Expression"]}),(0,f.default)("AssignmentExpression",{fields:{operator:{validate:(0,c.assertValueType)("string")},left:{validate:(0,c.assertNodeType)("LVal")},right:{validate:(0,c.assertNodeType)("Expression")}},builder:["operator","left","right"],visitor:["left","right"],aliases:["Expression"]}),(0,f.default)("BinaryExpression",{builder:["operator","left","right"],fields:{operator:{validate:c.assertOneOf.apply(void 0,p.BINARY_OPERATORS)},left:{validate:(0,c.assertNodeType)("Expression")},right:{validate:(0,c.assertNodeType)("Expression")}},visitor:["left","right"],aliases:["Binary","Expression"]}),(0,f.default)("Directive",{visitor:["value"],fields:{value:{validate:(0,c.assertNodeType)("DirectiveLiteral")}}}),(0,f.default)("DirectiveLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("string")}}}),(0,f.default)("BlockStatement",{builder:["body","directives"],visitor:["directives","body"],fields:{directives:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Directive"))),default:[]},body:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","Statement"]}),(0,f.default)("BreakStatement",{visitor:["label"],fields:{label:{validate:(0,c.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,f.default)("CallExpression",{visitor:["callee","arguments"],fields:{callee:{validate:(0,c.assertNodeType)("Expression")},arguments:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression","SpreadElement")))}},aliases:["Expression"]}),(0,f.default)("CatchClause",{visitor:["param","body"],fields:{param:{validate:(0,c.assertNodeType)("Identifier")},body:{validate:(0,c.assertNodeType)("BlockStatement")}},aliases:["Scopable"]}),(0,f.default)("ConditionalExpression",{visitor:["test","consequent","alternate"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},consequent:{validate:(0,c.assertNodeType)("Expression")},alternate:{validate:(0,c.assertNodeType)("Expression")}},aliases:["Expression","Conditional"]}),(0,f.default)("ContinueStatement",{visitor:["label"],fields:{label:{validate:(0,c.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,f.default)("DebuggerStatement",{aliases:["Statement"]}),(0,f.default)("DoWhileStatement",{visitor:["test","body"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("Statement")}},aliases:["Statement","BlockParent","Loop","While","Scopable"]}),(0,f.default)("EmptyStatement",{aliases:["Statement"]}),(0,f.default)("ExpressionStatement",{visitor:["expression"],fields:{expression:{validate:(0,c.assertNodeType)("Expression")}},aliases:["Statement","ExpressionWrapper"]}),(0,f.default)("File",{builder:["program","comments","tokens"],visitor:["program"],fields:{program:{validate:(0,c.assertNodeType)("Program")}}}),(0,f.default)("ForInStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,c.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("ForStatement",{visitor:["init","test","update","body"],aliases:["Scopable","Statement","For","BlockParent","Loop"],fields:{init:{validate:(0,c.assertNodeType)("VariableDeclaration","Expression"),optional:!0},test:{validate:(0,c.assertNodeType)("Expression"),optional:!0},update:{validate:(0,c.assertNodeType)("Expression"),optional:!0},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("FunctionDeclaration",{builder:["id","params","body","generator","async"],visitor:["id","params","body","returnType","typeParameters"],fields:{id:{validate:(0,c.assertNodeType)("Identifier")},params:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("LVal")))
+},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}},aliases:["Scopable","Function","BlockParent","FunctionParent","Statement","Pureish","Declaration"]}),(0,f.default)("FunctionExpression",{inherits:"FunctionDeclaration",aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{id:{validate:(0,c.assertNodeType)("Identifier"),optional:!0},params:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("LVal")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}}}),(0,f.default)("Identifier",{builder:["name"],visitor:["typeAnnotation"],aliases:["Expression","LVal"],fields:{name:{validate:function(e,t,r){!l.isValidIdentifier(r)}}}}),(0,f.default)("IfStatement",{visitor:["test","consequent","alternate"],aliases:["Statement","Conditional"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},consequent:{validate:(0,c.assertNodeType)("Statement")},alternate:{optional:!0,validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("LabeledStatement",{visitor:["label","body"],aliases:["Statement"],fields:{label:{validate:(0,c.assertNodeType)("Identifier")},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("StringLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("string")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("NumericLiteral",{builder:["value"],deprecatedAlias:"NumberLiteral",fields:{value:{validate:(0,c.assertValueType)("number")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("NullLiteral",{aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("BooleanLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("boolean")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("RegExpLiteral",{builder:["pattern","flags"],deprecatedAlias:"RegexLiteral",aliases:["Expression","Literal"],fields:{pattern:{validate:(0,c.assertValueType)("string")},flags:{validate:(0,c.assertValueType)("string"),default:""}}}),(0,f.default)("LogicalExpression",{builder:["operator","left","right"],visitor:["left","right"],aliases:["Binary","Expression"],fields:{operator:{validate:c.assertOneOf.apply(void 0,p.LOGICAL_OPERATORS)},left:{validate:(0,c.assertNodeType)("Expression")},right:{validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("MemberExpression",{builder:["object","property","computed"],visitor:["object","property"],aliases:["Expression","LVal"],fields:{object:{validate:(0,c.assertNodeType)("Expression")},property:{validate:function(e,t,r){var i=e.computed?"Expression":"Identifier";(0,c.assertNodeType)(i)(e,t,r)}},computed:{default:!1}}}),(0,f.default)("NewExpression",{visitor:["callee","arguments"],aliases:["Expression"],fields:{callee:{validate:(0,c.assertNodeType)("Expression")},arguments:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression","SpreadElement")))}}}),(0,f.default)("Program",{visitor:["directives","body"],builder:["body","directives"],fields:{directives:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Directive"))),default:[]},body:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","FunctionParent"]}),(0,f.default)("ObjectExpression",{visitor:["properties"],aliases:["Expression"],fields:{properties:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("ObjectMethod","ObjectProperty","SpreadProperty")))}}}),(0,f.default)("ObjectMethod",{builder:["kind","key","params","body","computed"],fields:{kind:{validate:(0,c.chain)((0,c.assertValueType)("string"),(0,c.assertOneOf)("method","get","set")),default:"method"},computed:{validate:(0,c.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];c.assertNodeType.apply(void 0,i)(e,t,r)}},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}},visitor:["key","params","body","decorators","returnType","typeParameters"],aliases:["UserWhitespacable","Function","Scopable","BlockParent","FunctionParent","Method","ObjectMember"]}),(0,f.default)("ObjectProperty",{builder:["key","value","computed","shorthand","decorators"],fields:{computed:{validate:(0,c.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];c.assertNodeType.apply(void 0,i)(e,t,r)}},value:{validate:(0,c.assertNodeType)("Expression")},shorthand:{validate:(0,c.assertValueType)("boolean"),default:!1},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator"))),optional:!0}},visitor:["key","value","decorators"],aliases:["UserWhitespacable","Property","ObjectMember"]}),(0,f.default)("RestElement",{visitor:["argument","typeAnnotation"],aliases:["LVal"],fields:{argument:{validate:(0,c.assertNodeType)("LVal")}}}),(0,f.default)("ReturnStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,c.assertNodeType)("Expression"),optional:!0}}}),(0,f.default)("SequenceExpression",{visitor:["expressions"],fields:{expressions:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression")))}},aliases:["Expression"]}),(0,f.default)("SwitchCase",{visitor:["test","consequent"],fields:{test:{validate:(0,c.assertNodeType)("Expression"),optional:!0},consequent:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}}}),(0,f.default)("SwitchStatement",{visitor:["discriminant","cases"],aliases:["Statement","BlockParent","Scopable"],fields:{discriminant:{validate:(0,c.assertNodeType)("Expression")},cases:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("SwitchCase")))}}}),(0,f.default)("ThisExpression",{aliases:["Expression"]}),(0,f.default)("ThrowStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("TryStatement",{visitor:["block","handler","finalizer"],aliases:["Statement"],fields:{body:{validate:(0,c.assertNodeType)("BlockStatement")},handler:{optional:!0,handler:(0,c.assertNodeType)("BlockStatement")},finalizer:{optional:!0,validate:(0,c.assertNodeType)("BlockStatement")}}}),(0,f.default)("UnaryExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!0},argument:{validate:(0,c.assertNodeType)("Expression")},operator:{validate:c.assertOneOf.apply(void 0,p.UNARY_OPERATORS)}},visitor:["argument"],aliases:["UnaryLike","Expression"]}),(0,f.default)("UpdateExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!1},argument:{validate:(0,c.assertNodeType)("Expression")},operator:{validate:c.assertOneOf.apply(void 0,p.UPDATE_OPERATORS)}},visitor:["argument"],aliases:["Expression"]}),(0,f.default)("VariableDeclaration",{builder:["kind","declarations"],visitor:["declarations"],aliases:["Statement","Declaration"],fields:{kind:{validate:(0,c.chain)((0,c.assertValueType)("string"),(0,c.assertOneOf)("var","let","const"))},declarations:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("VariableDeclarator")))}}}),(0,f.default)("VariableDeclarator",{visitor:["id","init"],fields:{id:{validate:(0,c.assertNodeType)("LVal")},init:{optional:!0,validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("WhileStatement",{visitor:["test","body"],aliases:["Statement","BlockParent","Loop","While","Scopable"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("BlockStatement","Statement")}}}),(0,f.default)("WithStatement",{visitor:["object","body"],aliases:["Statement"],fields:{object:{object:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("BlockStatement","Statement")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AssignmentPattern",{visitor:["left","right"],aliases:["Pattern","LVal"],fields:{left:{validate:(0,s.assertNodeType)("Identifier")},right:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("ArrayPattern",{visitor:["elements","typeAnnotation"],aliases:["Pattern","LVal"],fields:{elements:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression")))}}}),(0,a.default)("ArrowFunctionExpression",{builder:["params","body","async"],visitor:["params","body","returnType"],aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement","Expression")},async:{validate:(0,s.assertValueType)("boolean"),default:!1}}}),(0,a.default)("ClassBody",{visitor:["body"],fields:{body:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ClassMethod","ClassProperty")))}}}),(0,a.default)("ClassDeclaration",{builder:["id","superClass","body","decorators"],visitor:["id","body","superClass","mixins","typeParameters","superTypeParameters","implements","decorators"],aliases:["Scopable","Class","Statement","Declaration","Pureish"],fields:{id:{validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ClassExpression",{inherits:"ClassDeclaration",aliases:["Scopable","Class","Expression","Pureish"],fields:{id:{optional:!0,validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ExportAllDeclaration",{visitor:["source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{source:{validate:(0,s.assertNodeType)("StringLiteral")}}}),(0,a.default)("ExportDefaultDeclaration",{visitor:["declaration"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,s.assertNodeType)("FunctionDeclaration","ClassDeclaration","Expression")}}}),(0,a.default)("ExportNamedDeclaration",{visitor:["declaration","specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,s.assertNodeType)("Declaration"),optional:!0},specifiers:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ExportSpecifier")))},source:{validate:(0,s.assertNodeType)("StringLiteral"),optional:!0}}}),(0,a.default)("ExportSpecifier",{visitor:["local","exported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")},exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ForOfStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,s.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,s.assertNodeType)("Expression")},body:{validate:(0,s.assertNodeType)("Statement")}}}),(0,a.default)("ImportDeclaration",{visitor:["specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration"],fields:{specifiers:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier")))},source:{validate:(0,s.assertNodeType)("StringLiteral")}}}),(0,a.default)("ImportDefaultSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ImportNamespaceSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ImportSpecifier",{visitor:["local","imported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")},imported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("MetaProperty",{visitor:["meta","property"],aliases:["Expression"],fields:{meta:{validate:(0,s.assertValueType)("string")},property:{validate:(0,s.assertValueType)("string")}}}),(0,a.default)("ClassMethod",{aliases:["Function","Scopable","BlockParent","FunctionParent","Method"],builder:["kind","key","params","body","computed","static"],visitor:["key","params","body","decorators","returnType","typeParameters"],fields:{kind:{validate:(0,s.chain)((0,s.assertValueType)("string"),(0,s.assertOneOf)("get","set","method","constructor")),default:"method"},computed:{default:!1,validate:(0,s.assertValueType)("boolean")},static:{default:!1,validate:(0,s.assertValueType)("boolean")},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];s.assertNodeType.apply(void 0,i)(e,t,r)}},params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,s.assertValueType)("boolean")},async:{default:!1,validate:(0,s.assertValueType)("boolean")}}}),(0,a.default)("ObjectPattern",{visitor:["properties","typeAnnotation"],aliases:["Pattern","LVal"],fields:{properties:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("RestProperty","Property")))}}}),(0,a.default)("SpreadElement",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("Super",{aliases:["Expression"]}),(0,a.default)("TaggedTemplateExpression",{visitor:["tag","quasi"],aliases:["Expression"],fields:{tag:{validate:(0,s.assertNodeType)("Expression")},quasi:{validate:(0,s.assertNodeType)("TemplateLiteral")}}}),(0,a.default)("TemplateElement",{builder:["value","tail"],fields:{value:{},tail:{validate:(0,s.assertValueType)("boolean"),default:!1}}}),(0,a.default)("TemplateLiteral",{visitor:["quasis","expressions"],aliases:["Expression","Literal"],fields:{quasis:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("TemplateElement")))},expressions:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression")))}}}),(0,a.default)("YieldExpression",{builder:["argument","delegate"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{delegate:{validate:(0,s.assertValueType)("boolean"),default:!1},argument:{optional:!0,validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AwaitExpression",{builder:["argument"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("BindExpression",{visitor:["object","callee"],aliases:["Expression"],fields:{}}),(0,a.default)("Decorator",{visitor:["expression"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("DoExpression",{visitor:["body"],aliases:["Expression"],fields:{body:{validate:(0,s.assertNodeType)("BlockStatement")}}}),(0,a.default)("ExportDefaultSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ExportNamespaceSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("RestProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("LVal")}}}),(0,a.default)("SpreadProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AnyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ArrayTypeAnnotation",{visitor:["elementType"],aliases:["Flow"],fields:{}}),(0,a.default)("BooleanTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("BooleanLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NullLiteralTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ClassImplements",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("ClassProperty",{visitor:["key","value","typeAnnotation","decorators"],aliases:["Flow","Property"],fields:{}}),(0,a.default)("DeclareClass",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareFunction",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareInterface",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModule",{visitor:["id","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareTypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareVariable",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("ExistentialTypeParam",{aliases:["Flow"]}),(0,a.default)("FunctionTypeAnnotation",{visitor:["typeParameters","params","rest","returnType"],aliases:["Flow"],fields:{}}),(0,a.default)("FunctionTypeParam",{visitor:["name","typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("GenericTypeAnnotation",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceExtends",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceDeclaration",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("IntersectionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("MixedTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,a.default)("NullableTypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("NumericLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NumberTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("StringLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("StringTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ThisTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("TupleTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeofTypeAnnotation",{visitor:["argument"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("TypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeCastExpression",{visitor:["expression","typeAnnotation"],aliases:["Flow","ExpressionWrapper","Expression"],fields:{}}),(0,a.default)("TypeParameterDeclaration",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterInstantiation",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeAnnotation",{visitor:["properties","indexers","callProperties"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeCallProperty",{visitor:["value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeIndexer",{visitor:["id","key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeProperty",{visitor:["key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("QualifiedTypeIdentifier",{visitor:["id","qualification"],aliases:["Flow"],fields:{}}),(0,a.default)("UnionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("VoidTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}})},function(e,t,r,i,n,s,a){"use strict";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{default:e}}function l(e){return Array.isArray(e)?"array":null===e?"null":void 0===e?"undefined":"undefined"==typeof e?"undefined":(0,A.default)(e)}function p(e){function t(t,r,i){if(Array.isArray(i))for(var n=0;n<i.length;n++)e(t,r+"["+n+"]",i[n])}return t.each=e,t}function c(){function e(e,t,i){if(r.indexOf(i)<0)throw new TypeError("Property "+t+" expected value to be one of "+(0,x.default)(r)+" but got "+(0,x.default)(i))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOf=r,e}function f(){function e(e,t,i){for(var n=!1,s=r,a=Array.isArray(s),o=0,s=a?s:(0,g.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(_.is(l,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,x.default)(r)+" but instead got "+(0,x.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeTypes=r,e}function h(){function e(e,t,i){for(var n=!1,s=r,a=Array.isArray(s),o=0,s=a?s:(0,g.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var p=u;if(l(i)===p||_.is(p,i)){n=!0;break}}if(!n)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,x.default)(r)+" but instead got "+(0,x.default)(i&&i.type))}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.oneOfNodeOrValueTypes=r,e}function d(e){function t(t,r,i){var n=l(i)===e;if(!n)throw new TypeError("Property "+r+" expected type of "+e+" but got "+l(i))}return t.type=e,t}function y(){function e(){for(var e=r,t=Array.isArray(e),i=0,e=t?e:(0,g.default)(e);;){var n;if(t){if(i>=e.length)break;n=e[i++]}else{if(i=e.next(),i.done)break;n=i.value}var s=n;s.apply(void 0,arguments)}}for(var t=arguments.length,r=Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.chainOf=r,e}function v(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],r=t.inherits&&D[t.inherits]||{};t.fields=t.fields||r.fields||{},t.visitor=t.visitor||r.visitor||[],t.aliases=t.aliases||r.aliases||[],t.builder=t.builder||r.builder||t.visitor||[],t.deprecatedAlias&&(C[t.deprecatedAlias]=e);for(var i=t.visitor.concat(t.builder),n=Array.isArray(i),s=0,i=n?i:(0,g.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;t.fields[o]=t.fields[o]||{}}for(var u in t.fields){var p=t.fields[u];void 0===p.default?p.default=null:p.validate||(p.validate=d(l(p.default)))}T[e]=t.visitor,k[e]=t.builder,w[e]=t.fields,P[e]=t.aliases,D[e]=t}t.__esModule=!0,t.DEPRECATED_KEYS=t.BUILDER_KEYS=t.NODE_FIELDS=t.ALIAS_KEYS=t.VISITOR_KEYS=void 0;var m=r(i),g=u(m),b=r(n),x=u(b),E=r(s),A=u(E);t.assertEach=p,t.assertOneOf=c,t.assertNodeType=f,t.assertNodeOrValueType=h,t.assertValueType=d,t.chain=y,t.default=v;var S=r(a),_=o(S),T=t.VISITOR_KEYS={},P=t.ALIAS_KEYS={},w=t.NODE_FIELDS={},k=t.BUILDER_KEYS={},C=t.DEPRECATED_KEYS={},D={}},function(e,t,r,i,n,s,a,o,u,l){"use strict";r(i),r(n),r(s),r(a),r(o),r(u),r(l)},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("JSXAttribute",{visitor:["name","value"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,s.assertNodeType)("JSXIdentifier","JSXNamespacedName")},value:{optional:!0,validate:(0,s.assertNodeType)("JSXElement","StringLiteral","JSXExpressionContainer")}}}),(0,a.default)("JSXClosingElement",{visitor:["name"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,s.assertNodeType)("JSXIdentifier","JSXMemberExpression")}}}),(0,a.default)("JSXElement",{builder:["openingElement","closingElement","children","selfClosing"],visitor:["openingElement","children","closingElement"],aliases:["JSX","Immutable","Expression"],fields:{openingElement:{validate:(0,s.assertNodeType)("JSXOpeningElement")},closingElement:{optional:!0,validate:(0,s.assertNodeType)("JSXClosingElement")},children:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("JSXText","JSXExpressionContainer","JSXElement")))}}}),(0,a.default)("JSXEmptyExpression",{aliases:["JSX","Expression"]}),(0,a.default)("JSXExpressionContainer",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("JSXIdentifier",{builder:["name"],aliases:["JSX","Expression"],fields:{name:{validate:(0,s.assertValueType)("string")}}}),(0,a.default)("JSXMemberExpression",{visitor:["object","property"],aliases:["JSX","Expression"],fields:{object:{validate:(0,s.assertNodeType)("JSXMemberExpression","JSXIdentifier")},property:{validate:(0,s.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXNamespacedName",{visitor:["namespace","name"],aliases:["JSX"],fields:{namespace:{validate:(0,s.assertNodeType)("JSXIdentifier")},name:{validate:(0,s.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXOpeningElement",{builder:["name","attributes","selfClosing"],visitor:["name","attributes"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,s.assertNodeType)("JSXIdentifier","JSXMemberExpression")},selfClosing:{default:!1,validate:(0,s.assertValueType)("boolean")},attributes:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("JSXAttribute","JSXSpreadAttribute")))}}}),(0,a.default)("JSXSpreadAttribute",{visitor:["argument"],aliases:["JSX"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("JSXText",{aliases:["JSX"],builder:["value"],fields:{value:{validate:(0,s.assertValueType)("string")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("Noop",{visitor:[]}),(0,a.default)("ParenthesizedExpression",{visitor:["expression"],aliases:["Expression","ExpressionWrapper"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){var t=a(e);return 1===t.length?t[0]:l.unionTypeAnnotation(t)}function a(e){for(var t={},r={},i=[],n=[],s=0;s<e.length;s++){var o=e[s];if(o&&!(n.indexOf(o)>=0)){if(l.isAnyTypeAnnotation(o))return[o];if(l.isFlowBaseAnnotation(o))r[o.type]=o;else if(l.isUnionTypeAnnotation(o))i.indexOf(o.types)<0&&(e=e.concat(o.types),i.push(o.types));else if(l.isGenericTypeAnnotation(o)){var u=o.id.name;if(t[u]){var p=t[u];p.typeParameters?o.typeParameters&&(p.typeParameters.params=a(p.typeParameters.params.concat(o.typeParameters.params))):p=o.typeParameters}else t[u]=o}else n.push(o)}}for(var c in r)n.push(r[c]);for(var f in t)n.push(t[f]);return n}function o(e){if("string"===e)return l.stringTypeAnnotation();if("number"===e)return l.numberTypeAnnotation();if("undefined"===e)return l.voidTypeAnnotation();if("boolean"===e)return l.booleanTypeAnnotation();if("function"===e)return l.genericTypeAnnotation(l.identifier("Function"));if("object"===e)return l.genericTypeAnnotation(l.identifier("Object"));if("symbol"===e)return l.genericTypeAnnotation(l.identifier("Symbol"));throw new Error("Invalid typeof value")}t.__esModule=!0,t.createUnionTypeAnnotation=s,t.removeTypeDuplicates=a,t.createTypeAnnotationBasedOnTypeof=o;var u=r(i),l=n(u)},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g,b){"use strict";function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function A(e){var t=he["is"+e];t||(t=he["is"+e]=function(t,r){return he.is(e,t,r)}),he["assert"+e]=function(r,i){if(i=i||{},!t(r,i))throw new Error("Expected type "+(0,X.default)(e)+" with option "+(0,X.default)(i))}}function S(e,t,r){if(!t)return!1;var i=_(t.type,e);return!!i&&("undefined"==typeof r||he.shallowEqual(t,r))}function _(e,t){if(e===t)return!0;if(he.ALIAS_KEYS[t])return!1;var r=he.FLIPPED_ALIAS_KEYS[t];if(r){if(r[0]===e)return!0;for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e===o)return!0}}return!1}function T(e,t,r){if(e){var i=he.NODE_FIELDS[e.type];if(i){var n=i[t];n&&n.validate&&(n.optional&&null==r||n.validate(e,t,r))}}}function P(e,t){for(var r=(0,q.default)(t),i=r,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e[o]!==t[o])return!1}return!0}function w(e,t,r){return e.object=he.memberExpression(e.object,e.property,e.computed),e.property=t,e.computed=!!r,e}function k(e,t){return e.object=he.memberExpression(t,e.object),e}function C(e){var t=arguments.length<=1||void 0===arguments[1]?"body":arguments[1];return e[t]=he.toBlock(e[t],e)}function D(e){var t={};for(var r in e)"_"!==r[0]&&(t[r]=e[r]);return t}function O(e){var t=D(e);return delete t.loc,t}function N(e){var t={};for(var r in e)if("_"!==r[0]){var i=e[r];i&&(i.type?i=he.cloneDeep(i):Array.isArray(i)&&(i=i.map(he.cloneDeep))),t[r]=i}return t}function I(e,t){var r=e.split(".");return function(e){if(!he.isMemberExpression(e))return!1;for(var i=[e],n=0;i.length;){var s=i.shift();if(t&&n===r.length)return!0;if(he.isIdentifier(s)){if(r[n]!==s.name)return!1}else{if(!he.isStringLiteral(s)){if(he.isMemberExpression(s)){if(s.computed&&!he.isStringLiteral(s.property))return!1;i.push(s.object),i.push(s.property);continue}return!1}if(r[n]!==s.value)return!1}if(++n>r.length)return!1}return!0}}function F(e){for(var t=he.COMMENT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,W.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;delete e[s]}return e}function B(e,t){return R(e,t),L(e,t),M(e,t),e}function R(e,t){j("trailingComments",e,t)}function L(e,t){j("leadingComments",e,t)}function M(e,t){j("innerComments",e,t)}function j(e,t,r){t&&r&&(t[e]=(0,le.default)((0,ie.default)([].concat(t[e],r[e]))))}function V(e,t){if(me||(me=r(b).default),!e||!t)return e;for(var i=he.INHERIT_KEYS.optional,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;null==e[o]&&(e[o]=t[o])}for(var u in t)"_"===u[0]&&(e[u]=t[u]);for(var l=he.INHERIT_KEYS.force,p=Array.isArray(l),c=0,l=p?l:(0,W.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;e[h]=t[h]}return he.inheritsComments(e,t),me.copyCache(t,e),e}function U(e){if(!Y(e))throw new TypeError("Not a valid node "+(e&&e.type));
+}function Y(e){return!(!e||!pe.VISITOR_KEYS[e.type])}t.__esModule=!0,t.createTypeAnnotationBasedOnTypeof=t.removeTypeDuplicates=t.createUnionTypeAnnotation=t.valueToNode=t.toBlock=t.toExpression=t.toStatement=t.toBindingIdentifierName=t.toIdentifier=t.toKeyAlias=t.toSequenceExpression=t.toComputedKey=t.isImmutable=t.isScope=t.isSpecifierDefault=t.isVar=t.isBlockScoped=t.isLet=t.isValidIdentifier=t.isReferenced=t.isBinding=t.getOuterBindingIdentifiers=t.getBindingIdentifiers=t.TYPES=t.react=t.DEPRECATED_KEYS=t.BUILDER_KEYS=t.NODE_FIELDS=t.ALIAS_KEYS=t.VISITOR_KEYS=t.NOT_LOCAL_BINDING=t.BLOCK_SCOPED_SYMBOL=t.INHERIT_KEYS=t.UNARY_OPERATORS=t.STRING_UNARY_OPERATORS=t.NUMBER_UNARY_OPERATORS=t.BOOLEAN_UNARY_OPERATORS=t.BINARY_OPERATORS=t.NUMBER_BINARY_OPERATORS=t.BOOLEAN_BINARY_OPERATORS=t.COMPARISON_BINARY_OPERATORS=t.EQUALITY_BINARY_OPERATORS=t.BOOLEAN_NUMBER_BINARY_OPERATORS=t.UPDATE_OPERATORS=t.LOGICAL_OPERATORS=t.COMMENT_KEYS=t.FOR_INIT_KEYS=t.FLATTENABLE_KEYS=t.STATEMENT_OR_BLOCK_KEYS=void 0;var K=r(i),W=E(K),G=r(n),q=E(G),H=r(s),X=E(H),J=r(a);Object.defineProperty(t,"STATEMENT_OR_BLOCK_KEYS",{enumerable:!0,get:function(){return J.STATEMENT_OR_BLOCK_KEYS}}),Object.defineProperty(t,"FLATTENABLE_KEYS",{enumerable:!0,get:function(){return J.FLATTENABLE_KEYS}}),Object.defineProperty(t,"FOR_INIT_KEYS",{enumerable:!0,get:function(){return J.FOR_INIT_KEYS}}),Object.defineProperty(t,"COMMENT_KEYS",{enumerable:!0,get:function(){return J.COMMENT_KEYS}}),Object.defineProperty(t,"LOGICAL_OPERATORS",{enumerable:!0,get:function(){return J.LOGICAL_OPERATORS}}),Object.defineProperty(t,"UPDATE_OPERATORS",{enumerable:!0,get:function(){return J.UPDATE_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_NUMBER_BINARY_OPERATORS}}),Object.defineProperty(t,"EQUALITY_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.EQUALITY_BINARY_OPERATORS}}),Object.defineProperty(t,"COMPARISON_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.COMPARISON_BINARY_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_BINARY_OPERATORS}}),Object.defineProperty(t,"NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.NUMBER_BINARY_OPERATORS}}),Object.defineProperty(t,"BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BINARY_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_UNARY_OPERATORS}}),Object.defineProperty(t,"NUMBER_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.NUMBER_UNARY_OPERATORS}}),Object.defineProperty(t,"STRING_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.STRING_UNARY_OPERATORS}}),Object.defineProperty(t,"UNARY_OPERATORS",{enumerable:!0,get:function(){return J.UNARY_OPERATORS}}),Object.defineProperty(t,"INHERIT_KEYS",{enumerable:!0,get:function(){return J.INHERIT_KEYS}}),Object.defineProperty(t,"BLOCK_SCOPED_SYMBOL",{enumerable:!0,get:function(){return J.BLOCK_SCOPED_SYMBOL}}),Object.defineProperty(t,"NOT_LOCAL_BINDING",{enumerable:!0,get:function(){return J.NOT_LOCAL_BINDING}}),t.is=S,t.isType=_,t.validate=T,t.shallowEqual=P,t.appendToMemberExpression=w,t.prependToMemberExpression=k,t.ensureBlock=C,t.clone=D,t.cloneWithoutLoc=O,t.cloneDeep=N,t.buildMatchMemberExpression=I,t.removeComments=F,t.inheritsComments=B,t.inheritTrailingComments=R,t.inheritLeadingComments=L,t.inheritInnerComments=M,t.inherits=V,t.assertNode=U,t.isNode=Y;var $=r(o);Object.defineProperty(t,"getBindingIdentifiers",{enumerable:!0,get:function(){return $.getBindingIdentifiers}}),Object.defineProperty(t,"getOuterBindingIdentifiers",{enumerable:!0,get:function(){return $.getOuterBindingIdentifiers}});var z=r(u);Object.defineProperty(t,"isBinding",{enumerable:!0,get:function(){return z.isBinding}}),Object.defineProperty(t,"isReferenced",{enumerable:!0,get:function(){return z.isReferenced}}),Object.defineProperty(t,"isValidIdentifier",{enumerable:!0,get:function(){return z.isValidIdentifier}}),Object.defineProperty(t,"isLet",{enumerable:!0,get:function(){return z.isLet}}),Object.defineProperty(t,"isBlockScoped",{enumerable:!0,get:function(){return z.isBlockScoped}}),Object.defineProperty(t,"isVar",{enumerable:!0,get:function(){return z.isVar}}),Object.defineProperty(t,"isSpecifierDefault",{enumerable:!0,get:function(){return z.isSpecifierDefault}}),Object.defineProperty(t,"isScope",{enumerable:!0,get:function(){return z.isScope}}),Object.defineProperty(t,"isImmutable",{enumerable:!0,get:function(){return z.isImmutable}});var Q=r(l);Object.defineProperty(t,"toComputedKey",{enumerable:!0,get:function(){return Q.toComputedKey}}),Object.defineProperty(t,"toSequenceExpression",{enumerable:!0,get:function(){return Q.toSequenceExpression}}),Object.defineProperty(t,"toKeyAlias",{enumerable:!0,get:function(){return Q.toKeyAlias}}),Object.defineProperty(t,"toIdentifier",{enumerable:!0,get:function(){return Q.toIdentifier}}),Object.defineProperty(t,"toBindingIdentifierName",{enumerable:!0,get:function(){return Q.toBindingIdentifierName}}),Object.defineProperty(t,"toStatement",{enumerable:!0,get:function(){return Q.toStatement}}),Object.defineProperty(t,"toExpression",{enumerable:!0,get:function(){return Q.toExpression}}),Object.defineProperty(t,"toBlock",{enumerable:!0,get:function(){return Q.toBlock}}),Object.defineProperty(t,"valueToNode",{enumerable:!0,get:function(){return Q.valueToNode}});var Z=r(p);Object.defineProperty(t,"createUnionTypeAnnotation",{enumerable:!0,get:function(){return Z.createUnionTypeAnnotation}}),Object.defineProperty(t,"removeTypeDuplicates",{enumerable:!0,get:function(){return Z.removeTypeDuplicates}}),Object.defineProperty(t,"createTypeAnnotationBasedOnTypeof",{enumerable:!0,get:function(){return Z.createTypeAnnotationBasedOnTypeof}});var ee=r(c),te=E(ee),re=r(f),ie=E(re),ne=r(h),se=E(ne),ae=r(d),oe=E(ae),ue=r(y),le=E(ue);r(v);var pe=r(m),ce=r(g),fe=x(ce),he=t;t.VISITOR_KEYS=pe.VISITOR_KEYS,t.ALIAS_KEYS=pe.ALIAS_KEYS,t.NODE_FIELDS=pe.NODE_FIELDS,t.BUILDER_KEYS=pe.BUILDER_KEYS,t.DEPRECATED_KEYS=pe.DEPRECATED_KEYS,t.react=fe;for(var de in he.VISITOR_KEYS)A(de);he.FLIPPED_ALIAS_KEYS={},(0,oe.default)(he.ALIAS_KEYS,function(e,t){(0,oe.default)(e,function(e){var r=he.FLIPPED_ALIAS_KEYS[e]=he.FLIPPED_ALIAS_KEYS[e]||[];r.push(t)})}),(0,oe.default)(he.FLIPPED_ALIAS_KEYS,function(e,t){he[t.toUpperCase()+"_TYPES"]=e,A(t)});t.TYPES=(0,q.default)(he.VISITOR_KEYS).concat((0,q.default)(he.FLIPPED_ALIAS_KEYS)).concat((0,q.default)(he.DEPRECATED_KEYS));(0,oe.default)(he.BUILDER_KEYS,function(e,t){function r(){if(arguments.length>e.length)throw new Error("t."+t+": Too many arguments passed. Received "+arguments.length+" but can receive no more than "+e.length);var r={};r.type=t;for(var i=0,n=e,s=Array.isArray(n),a=0,n=s?n:(0,W.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o,l=he.NODE_FIELDS[t][u],p=arguments[i++];void 0===p&&(p=(0,se.default)(l.default)),r[u]=p}for(var c in r)T(r,c,r[c]);return r}he[t]=r,he[t[0].toLowerCase()+t.slice(1)]=r});var ye=function(e){function t(t){return function(){return console.trace("The node type "+e+" has been renamed to "+r),t.apply(this,arguments)}}var r=he.DEPRECATED_KEYS[e];he[e]=he[e[0].toLowerCase()+e.slice(1)]=t(he[r]),he["is"+e]=t(he["is"+r]),he["assert"+e]=t(he["assert"+r])};for(var ve in he.DEPRECATED_KEYS)ye(ve);var me=void 0;(0,te.default)(he),(0,te.default)(he.VISITOR_KEYS)},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return!!e&&/^[a-z]|\-/.test(e)}function a(e,t){for(var r=e.value.split(/\r\n|\n|\r/),i=0,n=0;n<r.length;n++)r[n].match(/[^ \t]/)&&(i=n);for(var s="",a=0;a<r.length;a++){var o=r[a],u=0===a,p=a===r.length-1,c=a===i,f=o.replace(/\t/g," ");u||(f=f.replace(/^[ ]+/,"")),p||(f=f.replace(/[ ]+$/,"")),f&&(c||(f+=" "),s+=f)}s&&t.push(l.stringLiteral(s))}function o(e){for(var t=[],r=0;r<e.children.length;r++){var i=e.children[r];l.isJSXText(i)?a(i,t):(l.isJSXExpressionContainer(i)&&(i=i.expression),l.isJSXEmptyExpression(i)||t.push(i))}return t}t.__esModule=!0,t.isReactComponent=void 0,t.isCompatTag=s,t.buildChildren=o;var u=r(i),l=n(u);t.isReactComponent=l.buildMatchMemberExpression("React.Component")},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t,r){for(var i=[].concat(e),n=(0,p.default)(null);i.length;){var s=i.shift();if(s){var a=f.getBindingIdentifiers.keys[s.type];if(f.isIdentifier(s))if(t){var o=n[s.name]=n[s.name]||[];o.push(s)}else n[s.name]=s;else if(f.isExportDeclaration(s))f.isDeclaration(e.declaration)&&i.push(e.declaration);else{if(r){if(f.isFunctionDeclaration(s)){i.push(s.id);continue}if(f.isFunctionExpression(s))continue}if(a)for(var u=0;u<a.length;u++){var l=a[u];s[l]&&(i=i.concat(s[l]))}}}}return n}function u(e,t){return o(e,t,!0)}t.__esModule=!0;var l=r(i),p=a(l);t.getBindingIdentifiers=o,t.getOuterBindingIdentifiers=u;var c=r(n),f=s(c);o.keys={DeclareClass:["id"],DeclareFunction:["id"],DeclareModule:["id"],DeclareVariable:["id"],InterfaceDeclaration:["id"],TypeAlias:["id"],CatchClause:["param"],LabeledStatement:["label"],UnaryExpression:["argument"],AssignmentExpression:["left"],ImportSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportDefaultSpecifier:["local"],ImportDeclaration:["specifiers"],ExportSpecifier:["exported"],ExportNamespaceSpecifier:["exported"],ExportDefaultSpecifier:["exported"],FunctionDeclaration:["id","params"],FunctionExpression:["id","params"],ClassDeclaration:["id"],ClassExpression:["id"],RestElement:["argument"],UpdateExpression:["argument"],RestProperty:["argument"],ObjectProperty:["value"],AssignmentPattern:["left"],ArrayPattern:["elements"],ObjectPattern:["properties"],VariableDeclaration:["declarations"],VariableDeclarator:["id"]}},function(e,t,r,i,n,s,a,o){"use strict";function u(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function l(e){return e&&e.__esModule?e:{default:e}}function p(e,t){var r=E.getBindingIdentifiers.keys[t.type];if(r)for(var i=0;i<r.length;i++){var n=r[i],s=t[n];if(Array.isArray(s)){if(s.indexOf(e)>=0)return!0}else if(s===e)return!0}return!1}function c(e,t){switch(t.type){case"BindExpression":return t.object===e||t.callee===e;case"MemberExpression":case"JSXMemberExpression":return!(t.property!==e||!t.computed)||t.object===e;case"MetaProperty":return!1;case"ObjectProperty":if(t.key===e)return t.computed;case"VariableDeclarator":return t.id!==e;case"ArrowFunctionExpression":case"FunctionDeclaration":case"FunctionExpression":for(var r=t.params,i=Array.isArray(r),n=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;if(a===e)return!1}return t.id!==e;case"ExportSpecifier":return!t.source&&t.local===e;case"ExportNamespaceSpecifier":case"ExportDefaultSpecifier":return!1;case"JSXAttribute":return t.name!==e;case"ClassProperty":return t.value===e;case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ImportSpecifier":return!1;case"ClassDeclaration":case"ClassExpression":return t.id!==e;case"ClassMethod":case"ObjectMethod":return t.key===e&&t.computed;case"LabeledStatement":return!1;case"CatchClause":return t.param!==e;case"RestElement":return!1;case"AssignmentExpression":return t.right===e;case"AssignmentPattern":return t.right===e;case"ObjectPattern":case"ArrayPattern":return!1}return!0}function f(e){return"string"==typeof e&&!S.default.keyword.isReservedWordES6(e,!0)&&S.default.keyword.isIdentifierNameES6(e)}function h(e){return T.isVariableDeclaration(e)&&("var"!==e.kind||e[P.BLOCK_SCOPED_SYMBOL])}function d(e){return T.isFunctionDeclaration(e)||T.isClassDeclaration(e)||T.isLet(e)}function y(e){return T.isVariableDeclaration(e,{kind:"var"})&&!e[P.BLOCK_SCOPED_SYMBOL]}function v(e){return T.isImportDefaultSpecifier(e)||T.isIdentifier(e.imported||e.exported,{name:"default"})}function m(e,t){return(!T.isBlockStatement(e)||!T.isFunction(t,{body:e}))&&T.isScopable(e)}function g(e){return!!T.isType(e.type,"Immutable")||!!T.isIdentifier(e)&&"undefined"===e.name}t.__esModule=!0;var b=r(i),x=l(b);t.isBinding=p,t.isReferenced=c,t.isValidIdentifier=f,t.isLet=h,t.isBlockScoped=d,t.isVar=y,t.isSpecifierDefault=v,t.isScope=m,t.isImmutable=g;var E=r(n),A=r(s),S=l(A),_=r(a),T=u(_),P=r(o)},function(e,t,r,i,n,s,a){function o(e,t,r,i){var n=e?e.length:0;return n?(null!=t&&"boolean"!=typeof t&&(i=r,r=p(e,t,i)?void 0:t,t=!1),r=null==r?r:u(r,i,3),t?c(e,r):l(e,r)):[]}var u=r(i),l=r(n),p=r(s),c=r(a);e.exports=o},function(e,t,r,i){e.exports=r(i)},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s),l=u(a,o);e.exports=l},function(e,t,r,i,n){(function(t){function s(e){var t=e?e.length:0;for(this.data={hash:l(null),set:new u};t--;)this.push(e[t])}var a=r(i),o=r(n),u=o(t,"Set"),l=o(Object,"create");s.prototype.push=a,e.exports=s}).call(t,function(){return this}())},function(e,t,r,i,n,s,a,o){function u(e,t,r){var i=typeof e;return"function"==i?void 0===t?e:c(e,t,r):null==e?f:"object"==i?l(e):void 0===t?h(e):p(e,t)}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o);e.exports=u},function(e,t,r,i,n){var s=r(i),a=r(n),o=a(s);e.exports=o},function(e,t,r,i,n){function s(e,t){return a(e,t,o)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s){function a(e,t,r,i,n,s){return e===t||(null==e||null==t||!u(e)&&!l(t)?e!==e&&t!==t:o(e,t,a,r,i,n,s))}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n,s,a,o){function u(e,t,r,i,n,s,a){var o=f(e),u=f(t),m=y,x=y;o||(m=b.call(e),m==d?m=v:m!=v&&(o=h(e))),u||(x=b.call(t),x==d?x=v:x!=v&&(u=h(t)));var E=m==v,A=x==v,S=m==x;if(S&&!o&&!E)return p(e,t,m);if(!n){var _=E&&g.call(e,"__wrapped__"),T=A&&g.call(t,"__wrapped__");if(_||T)return r(_?e.value():e,T?t.value():t,i,n,s,a)}if(!S)return!1;s||(s=[]),a||(a=[]);for(var P=s.length;P--;)if(s[P]==e)return a[P]==t;s.push(e),a.push(t);var w=(o?l:c)(e,t,r,i,n,s,a);return s.pop(),a.pop(),w}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d="[object Arguments]",y="[object Array]",v="[object Object]",m=Object.prototype,g=m.hasOwnProperty,b=m.toString;e.exports=u},function(e,t,r,i,n){function s(e,t,r){var i=t.length,n=i,s=!r;if(null==e)return!n;for(e=o(e);i--;){var u=t[i];if(s&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++i<n;){u=t[i];var l=u[0],p=e[l],c=u[1];if(s&&u[2]){if(void 0===p&&!(l in e))return!1}else{var f=r?r(p,c,l):void 0;if(!(void 0===f?a(c,p,r,!0):f))return!1}}return!0}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s){function a(e){var t=u(e);if(1==t.length&&t[0][2]){var r=t[0][0],i=t[0][1];return function(e){return null!=e&&(e[r]===i&&(void 0!==i||r in l(e)))}}return function(e){return o(e,t)}}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n,s,a,o,u,l,p,c){function f(e,t){var r=v(e),i=m(e)&&g(t),n=e+"";return e=E(e),function(s){if(null==s)return!1;var a=n;if(s=x(s),(r||!i)&&!(a in s)){if(s=1==e.length?s:h(s,y(e,0,-1)),null==s)return!1;a=b(e),s=x(s)}return s[a]===t?void 0!==t||a in s:d(t,s[a],void 0,!0)}}var h=r(i),d=r(n),y=r(s),v=r(a),m=r(o),g=r(u),b=r(l),x=r(p),E=r(c);e.exports=f},function(e,t,r,i,n){function s(e){var t=e+"";return e=o(e),function(r){return a(r,e,t)}}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s){function a(e,t){var r=-1,i=o,n=e.length,s=!0,a=s&&n>=p,c=a?l():null,f=[];c?(i=u,s=!1):(a=!1,c=t?[]:f);e:for(;++r<n;){var h=e[r],d=t?t(h,r,e):h;if(s&&h===h){for(var y=c.length;y--;)if(c[y]===d)continue e;t&&c.push(d),f.push(h)}else i(c,d,0)<0&&((t||a)&&c.push(d),f.push(h))}return f}var o=r(i),u=r(n),l=r(s),p=200;e.exports=a},function(e,t,r,i){function n(e,t){var r=e.data,i="string"==typeof t||s(t)?r.set.has(t):r.hash[t];return i?0:-1}var s=r(i);e.exports=n},function(e,t,r,i){function n(e){var t=this.data;"string"==typeof e||s(e)?t.set.add(e):t.hash[e]=!0}var s=r(i);e.exports=n},function(e,t,r,i,n,s){function a(e,t){return function(r,i){var n=r?o(r):0;if(!u(n))return e(r,i);for(var s=t?n:-1,a=l(r);(t?s--:++s<n)&&i(a[s],s,a)!==!1;);return r}}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n){(function(t){function s(e){return l&&u?new a(e):null}var a=r(i),o=r(n),u=o(t,"Set"),l=o(Object,"create");e.exports=s}).call(t,function(){return this}())},function(e,t,r,i,n){function s(e,t){return function(r,i,n){return"function"==typeof i&&void 0===n&&o(r)?e(r,i):t(r,a(i,n,3))}}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e,t,r,i,n,a,o){var u=-1,l=e.length,p=t.length;if(l!=p&&!(n&&p>l))return!1;for(;++u<l;){var c=e[u],f=t[u],h=i?i(n?f:c,n?c:f,u):void 0;if(void 0!==h){if(h)continue;return!1}if(n){if(!s(t,function(e){return c===e||r(c,e,i,n,a,o)}))return!1}else if(c!==f&&!r(c,f,i,n,a,o))return!1}return!0}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t,r,i,n,a,u){var l=s(e),p=l.length,c=s(t),f=c.length;if(p!=f&&!n)return!1;for(var h=p;h--;){var d=l[h];if(!(n?d in t:o.call(t,d)))return!1}for(var y=n;++h<p;){d=l[h];var v=e[d],m=t[d],g=i?i(n?m:v,n?v:m,d):void 0;if(!(void 0===g?r(v,m,i,n,a,u):g))return!1;y||(y="constructor"==d)}if(!y){var b=e.constructor,x=t.constructor;if(b!=x&&"constructor"in e&&"constructor"in t&&!("function"==typeof b&&b instanceof b&&"function"==typeof x&&x instanceof x))return!1}return!0}var s=r(i),a=Object.prototype,o=a.hasOwnProperty;e.exports=n},function(e,t,r,i,n){function s(e){for(var t=o(e),r=t.length;r--;)t[r][2]=a(t[r][1]);return t}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e){return e===e&&!s(e)}var s=r(i);e.exports=n},function(e,t,r,i){function n(e){return"number"==typeof e||s(e)&&u.call(e)==a}var s=r(i),a="[object Number]",o=Object.prototype,u=o.toString;e.exports=n},function(e,t,r,i,n,s){function a(e){var t;if(!l(e)||h.call(e)!=p||u(e)||!f.call(e,"constructor")&&(t=e.constructor,"function"==typeof t&&!(t instanceof t)))return!1;var r;return o(e,function(e,t){r=t}),void 0===r||f.call(e,r)}var o=r(i),u=r(n),l=r(s),p="[object Object]",c=Object.prototype,f=c.hasOwnProperty,h=c.toString;e.exports=a},function(e,t,r,i){function n(e){return s(e)&&u.call(e)==a}var s=r(i),a="[object RegExp]",o=Object.prototype,u=o.toString;e.exports=n},function(e,t,r,i,n){function s(e){return o(e)&&a(e.length)&&!!O[I.call(e)]}var a=r(i),o=r(n),u="[object Arguments]",l="[object Array]",p="[object Boolean]",c="[object Date]",f="[object Error]",h="[object Function]",d="[object Map]",y="[object Number]",v="[object Object]",m="[object RegExp]",g="[object Set]",b="[object String]",x="[object WeakMap]",E="[object ArrayBuffer]",A="[object Float32Array]",S="[object Float64Array]",_="[object Int8Array]",T="[object Int16Array]",P="[object Int32Array]",w="[object Uint8Array]",k="[object Uint8ClampedArray]",C="[object Uint16Array]",D="[object Uint32Array]",O={};O[A]=O[S]=O[_]=O[T]=O[P]=O[w]=O[k]=O[C]=O[D]=!0,O[u]=O[l]=O[E]=O[p]=O[c]=O[f]=O[h]=O[d]=O[y]=O[v]=O[m]=O[g]=O[b]=O[x]=!1;var N=Object.prototype,I=N.toString;e.exports=s},function(e,t,r,i,n){function s(e){e=o(e);for(var t=-1,r=a(e),i=r.length,n=Array(i);++t<i;){var s=r[t];n[t]=[s,e[s]]}return n}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s){function a(e){return l(e)?o(e):u(e)}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){e.exports={default:r(i),__esModule:!0}},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s);t.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),(0,a.default)(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}()},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=r(i),u=a(o),l=r(n),p=a(l),c=r(s),f=a(c);t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+("undefined"==typeof t?"undefined":(0,f.default)(t)));e.prototype=(0,p.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(u.default?(0,u.default)(e,t):e.__proto__=t)}},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==("undefined"==typeof t?"undefined":(0,a.default)(t))&&"function"!=typeof t?e:t}},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var a=r(i),o=s(a),u=r(n),l=s(u),p="function"==typeof l.default&&"symbol"==typeof o.default?function(e){return typeof e}:function(e){return e&&"function"==typeof l.default&&e.constructor===l.default?"symbol":typeof e};t.default="function"==typeof l.default&&"symbol"===p(o.default)?function(e){return"undefined"==typeof e?"undefined":p(e)}:function(e){return e&&"function"==typeof l.default&&e.constructor===l.default?"symbol":"undefined"==typeof e?"undefined":p(e)}},function(e,t,r,i){var n=r(i),s=n.JSON||(n.JSON={stringify:JSON.stringify});e.exports=function(e){return s.stringify.apply(s,arguments)}},function(e,t,r,i){r(i),e.exports=9007199254740991},function(e,t,r,i,n){r(i);var s=r(n).Object;e.exports=function(e,t){return s.create(e,t)}},function(e,t,r,i,n){r(i);var s=r(n).Object;e.exports=function(e,t,r){return s.defineProperty(e,t,r)}},function(e,t,r,i,n){r(i),e.exports=r(n).Object.getOwnPropertySymbols},function(e,t,r,i,n){r(i),e.exports=r(n).Object.getPrototypeOf},function(e,t,r,i,n){r(i),e.exports=r(n).Object.keys},function(e,t,r,i,n){r(i),e.exports=r(n).Object.setPrototypeOf},function(e,t,r,i,n){r(i),e.exports=r(n).Symbol.for},function(e,t,r,i,n,s,a,o){r(i),r(n),r(s),r(a),e.exports=r(o).Symbol},function(e,t,r,i,n,s){r(i),r(n),e.exports=r(s).f("iterator")},function(e,t,r,i,n,s,a){r(i),r(n),r(s),e.exports=r(a).WeakMap},function(e,t,r,i,n,s,a,o){var u=r(i),l=r(n),p=r(s),c=r(a),f=r(o);e.exports=function(e,t){var r=1==e,i=2==e,n=3==e,s=4==e,a=6==e,o=5==e||a,h=t||f;return function(t,f,d){for(var y,v,m=p(t),g=l(m),b=u(f,d,3),x=c(g.length),E=0,A=r?h(t,x):i?h(t,0):void 0;x>E;E++)if((o||E in g)&&(y=g[E],v=b(y,E,m),e))if(r)A[E]=v;else if(v)switch(e){case 3:return!0;case 5:return y;case 6:return E;case 2:A.push(y)}else if(s)return!1;return a?-1:n||s?s:A}}},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s)("species");e.exports=function(e){var t;return o(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!o(t.prototype)||(t=void 0),a(t)&&(t=t[u],null===t&&(t=void 0))),void 0===t?Array:t}},function(e,t,r,i){var n=r(i);e.exports=function(e,t){return new(n(e))(t)}},function(e,t,r,i,n,s,a,o,u,l,p){"use strict";var c=r(i),f=r(n).getWeak,h=r(s),d=r(a),y=r(o),v=r(u),m=r(l),g=r(p),b=m(5),x=m(6),E=0,A=function(e){return e._l||(e._l=new S)},S=function(){this.a=[]},_=function(e,t){return b(e.a,function(e){return e[0]===t})};S.prototype={get:function(e){var t=_(this,e);if(t)return t[1]},has:function(e){return!!_(this,e)},set:function(e,t){var r=_(this,e);r?r[1]=t:this.a.push([e,t])},delete:function(e){var t=x(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,r,i){var n=e(function(e,s){y(e,n,t,"_i"),e._i=E++,e._l=void 0,void 0!=s&&v(s,r,e[i],e)});return c(n.prototype,{delete:function(e){if(!d(e))return!1;var t=f(e);return t===!0?A(this).delete(e):t&&g(t,this._i)&&delete t[this._i]},has:function(e){if(!d(e))return!1;var t=f(e);return t===!0?A(this).has(e):t&&g(t,this._i)}}),n},def:function(e,t,r){var i=f(h(t),!0);return i===!0?A(e).set(t,r):i[e._i]=r,e},ufstore:A}},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y){"use strict";var v=r(i),m=r(n),g=r(s),b=r(a),x=r(o),E=r(u),A=r(l),S=r(p),_=r(c),T=r(f),P=r(h).f,w=r(d)(0),k=r(y);e.exports=function(e,t,r,i,n,s){var a=v[e],o=a,u=n?"set":"add",l=o&&o.prototype,p={};return k&&"function"==typeof o&&(s||l.forEach&&!b(function(){(new o).entries().next()}))?(o=t(function(t,r){S(t,o,e,"_c"),t._c=new a,void 0!=r&&A(r,n,t[u],t)}),w("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in l&&(!s||"clear"!=e)&&x(o.prototype,e,function(r,i){if(S(this,o,e),!t&&s&&!_(r))return"get"==e&&void 0;var n=this._c[e](0===r?0:r,i);return t?this:n})}),"size"in l&&P(o.prototype,"size",{get:function(){return this._c.size}})):(o=i.getConstructor(t,e,n,u),E(o.prototype,r),g.NEED=!0),T(o,e),p[e]=o,m(m.G+m.W+m.F,p),s||i.setStrong(o,e,n),o}},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s);e.exports=function(e){var t=a(e),r=o.f;if(r)for(var i,n=r(e),s=u.f,l=0;n.length>l;)s.call(e,i=n[l++])&&t.push(i);return t}},function(e,t,r,i,n,s,a,o,u){var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=r(u),y={},v={},t=e.exports=function(e,t,r,i,n){var s,a,o,u,m=n?function(){return e}:d(e),g=l(r,i,t?2:1),b=0;if("function"!=typeof m)throw TypeError(e+" is not iterable!");if(c(m)){for(s=h(e.length);s>b;b++)if(u=t?g(f(a=e[b])[0],a[1]):g(e[b]),u===y||u===v)return u}else for(o=m.call(e);!(a=o.next()).done;)if(u=p(o,g,a.value,t),u===y||u===v)return u};t.BREAK=y,t.RETURN=v},function(e,t,r,i,n){var s=r(i),a=r(n)("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(s.Array===e||o[a]===e)}},function(e,t,r,i){var n=r(i);e.exports=Array.isArray||function(e){return"Array"==n(e)}},function(e,t,r,i){var n=r(i);e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){var s=e.return;throw void 0!==s&&n(s.call(e)),t}}},function(e,t,r,i,n){var s=r(i),a=r(n);e.exports=function(e,t){for(var r,i=a(e),n=s(i),o=n.length,u=0;o>u;)if(i[r=n[u++]]===t)return r}},function(e,t,r,i,n,s,a,o){var u=r(i)("meta"),l=r(n),p=r(s),c=r(a).f,f=0,h=Object.isExtensible||function(){return!0},d=!r(o)(function(){return h(Object.preventExtensions({}))}),y=function(e){c(e,u,{value:{i:"O"+ ++f,w:{}}})},v=function(e,t){if(!l(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!p(e,u)){if(!h(e))return"F";if(!t)return"E";y(e)}return e[u].i},m=function(e,t){if(!p(e,u)){if(!h(e))return!0;if(!t)return!1;y(e)}return e[u].w},g=function(e){return d&&b.NEED&&h(e)&&!p(e,u)&&y(e),e},b=e.exports={KEY:u,NEED:!1,fastKey:v,getWeak:m,onFreeze:g}},function(e,t,r,i,n,s,a,o,u){"use strict";var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=Object.assign;e.exports=!d||r(u)(function(){var e={},t={},r=Symbol(),i="abcdefghijklmnopqrst";return e[r]=7,i.split("").forEach(function(e){t[e]=e}),7!=d({},e)[r]||Object.keys(d({},t)).join("")!=i})?function(e,t){for(var r=f(e),i=arguments.length,n=1,s=p.f,a=c.f;i>n;)for(var o,u=h(arguments[n++]),d=s?l(u).concat(s(u)):l(u),y=d.length,v=0;y>v;)a.call(u,o=d[v++])&&(r[o]=u[o]);return r}:d},function(e,t,r,i,n,s,a,o,u,l){var p=r(i),c=r(n),f=r(s),h=r(a),d=r(o),y=r(u),v=Object.getOwnPropertyDescriptor;t.f=r(l)?v:function(e,t){if(e=f(e),t=h(t,!0),y)try{return v(e,t)}catch(e){}if(d(e,t))return c(!p.f.call(e,t),e[t])}},function(e,t,r,i,n){var s=r(i),a=r(n).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],l=function(e){try{return a(e)}catch(e){return u.slice()}};e.exports.f=function(e){return u&&"[object Window]"==o.call(e)?l(e):a(s(e))}},function(e,t,r,i,n){var s=r(i),a=r(n).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return s(e,a)}},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s);e.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],i={};i[e]=t(r),a(a.S+a.F*u(function(){r(1)}),"Object",i)}},function(e,t,r,i){var n=r(i);e.exports=function(e,t,r){for(var i in t)r&&e[i]?e[i]=t[i]:n(e,i,t[i]);return e}},function(e,t,r,i,n,s,a){var o=r(i),u=r(n),l=function(e,t){if(u(e),!o(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,i){try{i=r(s)(Function.call,r(a).f(Object.prototype,"__proto__").set,2),i(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,r){return l(e,r),t?e.__proto__=r:i(e,r),e}}({},!1):void 0),check:l}},function(e,t,r,i,n,s,a,o){var u=r(i),l=r(n),p=r(s),c=r(a),f=r(o).f;e.exports=function(e){var t=l.Symbol||(l.Symbol=p?{}:u.Symbol||{});"_"==e.charAt(0)||e in t||f(t,e,{value:c.f(e)})}},function(e,t,r,i){t.f=r(i)},function(e,t,r,i){var n=r(i);n(n.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,r,i,n){var s=r(i);s(s.S,"Object",{create:r(n)})},function(e,t,r,i,n,s){var a=r(i);a(a.S+a.F*!r(n),"Object",{defineProperty:r(s).f})},function(e,t,r,i,n,s){var a=r(i),o=r(n);r(s)("getPrototypeOf",function(){return function(e){return o(a(e))}})},function(e,t,r,i,n,s){var a=r(i),o=r(n);r(s)("keys",function(){return function(e){return o(a(e))}})},function(e,t,r,i,n){var s=r(i);s(s.S,"Object",{setPrototypeOf:r(n).set})},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g,b,x,E,A,S,_,T,P,w,k,C,D,O,N){"use strict";var I=r(i),F=r(n),B=r(s),R=r(a),L=r(o),M=r(u).KEY,j=r(l),V=r(p),U=r(c),Y=r(f),K=r(h),W=r(d),G=r(y),q=r(v),H=r(m),X=r(g),J=r(b),$=r(x),z=r(E),Q=r(A),Z=r(S),ee=r(_),te=r(T),re=r(P),ie=r(w),ne=te.f,se=re.f,ae=ee.f,oe=I.Symbol,ue=I.JSON,le=ue&&ue.stringify,pe="prototype",ce=K("_hidden"),fe=K("toPrimitive"),he={}.propertyIsEnumerable,de=V("symbol-registry"),ye=V("symbols"),ve=V("op-symbols"),me=Object[pe],ge="function"==typeof oe,be=I.QObject,xe=!be||!be[pe]||!be[pe].findChild,Ee=B&&j(function(){return 7!=Z(se({},"a",{get:function(){return se(this,"a",{value:7}).a}})).a})?function(e,t,r){var i=ne(me,t);i&&delete me[t],se(e,t,r),i&&e!==me&&se(me,t,i)}:se,Ae=function(e){var t=ye[e]=Z(oe[pe]);return t._k=e,t},Se=ge&&"symbol"==typeof oe.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof oe},_e=function(e,t,r){return e===me&&_e(ve,t,r),J(e),t=z(t,!0),J(r),F(ye,t)?(r.enumerable?(F(e,ce)&&e[ce][t]&&(e[ce][t]=!1),r=Z(r,{enumerable:Q(0,!1)})):(F(e,ce)||se(e,ce,Q(1,{})),e[ce][t]=!0),Ee(e,t,r)):se(e,t,r)},Te=function(e,t){J(e);for(var r,i=H(t=$(t)),n=0,s=i.length;s>n;)_e(e,r=i[n++],t[r]);return e},Pe=function(e,t){return void 0===t?Z(e):Te(Z(e),t)},we=function(e){var t=he.call(this,e=z(e,!0));return!(this===me&&F(ye,e)&&!F(ve,e))&&(!(t||!F(this,e)||!F(ye,e)||F(this,ce)&&this[ce][e])||t)},ke=function(e,t){if(e=$(e),t=z(t,!0),e!==me||!F(ye,t)||F(ve,t)){var r=ne(e,t);return!r||!F(ye,t)||F(e,ce)&&e[ce][t]||(r.enumerable=!0),r}},Ce=function(e){for(var t,r=ae($(e)),i=[],n=0;r.length>n;)F(ye,t=r[n++])||t==ce||t==M||i.push(t);return i},De=function(e){for(var t,r=e===me,i=ae(r?ve:$(e)),n=[],s=0;i.length>s;)!F(ye,t=i[s++])||r&&!F(me,t)||n.push(ye[t]);return n};ge||(oe=function(){if(this instanceof oe)throw TypeError("Symbol is not a constructor!");var e=Y(arguments.length>0?arguments[0]:void 0),t=function(r){this===me&&t.call(ve,r),F(this,ce)&&F(this[ce],e)&&(this[ce][e]=!1),Ee(this,e,Q(1,r))};return B&&xe&&Ee(me,e,{configurable:!0,set:t}),Ae(e)},L(oe[pe],"toString",function(){return this._k}),te.f=ke,re.f=_e,r(k).f=ee.f=Ce,r(C).f=we,r(D).f=De,B&&!r(O)&&L(me,"propertyIsEnumerable",we,!0),W.f=function(e){return Ae(K(e))}),R(R.G+R.W+R.F*!ge,{Symbol:oe});for(var Oe="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Ne=0;Oe.length>Ne;)K(Oe[Ne++]);for(var Oe=ie(K.store),Ne=0;Oe.length>Ne;)G(Oe[Ne++]);
+R(R.S+R.F*!ge,"Symbol",{for:function(e){return F(de,e+="")?de[e]:de[e]=oe(e)},keyFor:function(e){if(Se(e))return q(de,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){xe=!0},useSimple:function(){xe=!1}}),R(R.S+R.F*!ge,"Object",{create:Pe,defineProperty:_e,defineProperties:Te,getOwnPropertyDescriptor:ke,getOwnPropertyNames:Ce,getOwnPropertySymbols:De}),ue&&R(R.S+R.F*(!ge||j(function(){var e=oe();return"[null]"!=le([e])||"{}"!=le({a:e})||"{}"!=le(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!Se(e)){for(var t,r,i=[e],n=1;arguments.length>n;)i.push(arguments[n++]);return t=i[1],"function"==typeof t&&(r=t),!r&&X(t)||(t=function(e,t){if(r&&(t=r.call(this,e,t)),!Se(t))return t}),i[1]=t,le.apply(ue,i)}}}),oe[pe][fe]||r(N)(oe[pe],fe,oe[pe].valueOf),U(oe,"Symbol"),U(Math,"Math",!0),U(I.JSON,"JSON",!0)},function(e,t,r,i,n,s,a,o,u,l,p){"use strict";var c,f=r(i)(0),h=r(n),d=r(s),y=r(a),v=r(o),m=r(u),g=(r(l),d.getWeak),b=Object.isExtensible,x=v.ufstore,E={},A=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},S={get:function(e){if(m(e)){var t=g(e);return t===!0?x(this).get(e):t?t[this._i]:void 0}},set:function(e,t){return v.def(this,e,t)}},_=e.exports=r(p)("WeakMap",A,S,v,!0,!0);7!=(new _).set((Object.freeze||Object)(E),7).get(E)&&(c=v.getConstructor(A),y(c.prototype,S),d.NEED=!0,f(["delete","has","get","set"],function(e){var t=_.prototype,r=t[e];h(t,e,function(t,i){if(m(t)&&!b(t)){this._f||(this._f=new c);var n=this._f[e](t,i);return"set"==e?this:n}return r.call(this,t,i)})}))},function(e,t,r,i){r(i)("asyncIterator")},function(e,t,r,i){r(i)("observable")},function(e,t,r,i,n,s,a,o,u,l){"use strict";function p(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}function f(e,t){e=(0,v.default)(e);var r=e,i=r.program;return t.length&&(0,A.default)(e,C,null,t),i.body.length>1?i.body:i.body[0]}t.__esModule=!0;var h=r(i),d=c(h);t.default=function(e,t){var r=void 0;try{throw new Error}catch(e){e.stack&&(r=e.stack.split("\n").slice(1).join("\n"))}var i=function(){var n=void 0;try{n=_.parse(e,(0,g.default)({allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0},t)),n=A.default.removeProperties(n),A.default.cheap(n,function(e){e[w]=!0})}catch(e){throw e.stack=e.stack+"from\n"+r,e}return i=function(){return n},n};return function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return f(i(),t)}};var y=r(n),v=c(y),m=r(s),g=c(m),b=r(a),x=c(b),E=r(o),A=c(E),S=r(u),_=p(S),T=r(l),P=p(T),w="_fromTemplate",k=(0,d.default)(),C={noScope:!0,enter:function(e,t){var r=e.node;if(r[k])return e.skip();P.isExpressionStatement(r)&&(r=r.expression);var i=void 0;if(P.isIdentifier(r)&&r[w])if((0,x.default)(t[0],r.name))i=t[0][r.name];else if("$"===r.name[0]){var n=+r.name.slice(1);t[n]&&(i=t[n])}null===i&&e.remove(),i&&(i[k]=!0,e.replaceInline(i))},exit:function(e){var t=e.node;t.loc||A.default.clearNode(t)}};e.exports=t.default},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(e){return e.expression.typeAnnotation=e.typeAnnotation,e.expression}e.extend("parseFunctionBody",function(e){return function(t,r){return this.match(a.types.colon)&&!r&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("parseStatement",function(e){return function(t,r){if(this.state.strict&&this.match(a.types.name)&&"interface"===this.state.value){var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t,r)}}),e.extend("parseExpressionStatement",function(e){return function(t,r){if("Identifier"===r.type)if("declare"===r.name){if(this.match(a.types._class)||this.match(a.types.name)||this.match(a.types._function)||this.match(a.types._var))return this.flowParseDeclare(t)}else if(this.match(a.types.name)){if("interface"===r.name)return this.flowParseInterface(t);if("type"===r.name)return this.flowParseTypeAlias(t)}return e.call(this,t,r)}}),e.extend("shouldParseExportDeclaration",function(e){return function(){return this.isContextual("type")||this.isContextual("interface")||e.call(this)}}),e.extend("parseParenItem",function(){return function(e,t,r,i){var n=this.state.potentialArrowAt=r;if(this.match(a.types.colon)){var s=this.startNodeAt(t,r);if(s.expression=e,s.typeAnnotation=this.flowParseTypeAnnotation(),i&&!this.match(a.types.arrow)&&this.unexpected(),n&&this.eat(a.types.arrow)){var o="SequenceExpression"===e.type?e.expressions:[e],u=this.parseArrowExpression(this.startNodeAt(t,r),o);return u.returnType=s.typeAnnotation,u}return this.finishNode(s,"TypeCastExpression")}return e}}),e.extend("parseExport",function(e){return function(t){return t=e.call(this,t),"ExportNamedDeclaration"===t.type&&(t.exportKind=t.exportKind||"value"),t}}),e.extend("parseExportDeclaration",function(e){return function(t){if(this.isContextual("type")){t.exportKind="type";var r=this.startNode();return this.next(),this.match(a.types.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(r)}if(this.isContextual("interface")){t.exportKind="type";var i=this.startNode();return this.next(),this.flowParseInterface(i)}return e.call(this,t)}}),e.extend("parseClassId",function(e){return function(t){e.apply(this,arguments),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}}),e.extend("isKeyword",function(e){return function(t){return(!this.state.inType||"void"!==t)&&e.call(this,t)}}),e.extend("readToken",function(e){return function(t){return!this.state.inType||62!==t&&60!==t?e.call(this,t):this.finishOp(a.types.relational,1)}}),e.extend("jsx_readToken",function(e){return function(){if(!this.state.inType)return e.call(this)}}),e.extend("toAssignable",function(e){return function(r){return"TypeCastExpression"===r.type?t(r):e.apply(this,arguments)}}),e.extend("toAssignableList",function(e){return function(r,i){for(var n=0;n<r.length;n++){var s=r[n];s&&"TypeCastExpression"===s.type&&(r[n]=t(s))}return e.call(this,r,i)}}),e.extend("toReferencedList",function(){return function(e){for(var t=0;t<e.length;t++){var r=e[t];r&&r._exprListItem&&"TypeCastExpression"===r.type&&this.raise(r.start,"Unexpected type cast")}return e}}),e.extend("parseExprListItem",function(e){return function(t,r){var i=this.startNode(),n=e.call(this,t,r);return this.match(a.types.colon)?(i._exprListItem=!0,i.expression=n,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")):n}}),e.extend("checkLVal",function(e){return function(t){if("TypeCastExpression"!==t.type)return e.apply(this,arguments)}}),e.extend("parseClassProperty",function(e){return function(t){return this.match(a.types.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),e.call(this,t)}}),e.extend("isClassProperty",function(e){return function(){return this.match(a.types.colon)||e.call(this)}}),e.extend("parseClassMethod",function(){return function(e,t,r,i){this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.parseMethod(t,r,i),e.body.push(this.finishNode(t,"ClassMethod"))}}),e.extend("parseClassSuper",function(e){return function(t,r){if(e.call(this,t,r),t.superClass&&this.isRelational("<")&&(t.superTypeParameters=this.flowParseTypeParameterInstantiation()),this.isContextual("implements")){this.next();var i=t.implements=[];do{var n=this.startNode();n.id=this.parseIdentifier(),this.isRelational("<")?n.typeParameters=this.flowParseTypeParameterInstantiation():n.typeParameters=null,i.push(this.finishNode(n,"ClassImplements"))}while(this.eat(a.types.comma))}}}),e.extend("parseObjPropValue",function(e){return function(t){var r=void 0;this.isRelational("<")&&(r=this.flowParseTypeParameterDeclaration(),this.match(a.types.parenL)||this.unexpected()),e.apply(this,arguments),r&&((t.value||t).typeParameters=r)}}),e.extend("parseAssignableListItemTypes",function(){return function(e){return this.eat(a.types.question)&&(e.optional=!0),this.match(a.types.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),this.finishNode(e,e.type),e}}),e.extend("parseImportSpecifiers",function(e){return function(t){t.importKind="value";var r=null;if(this.match(a.types._typeof)?r="typeof":this.isContextual("type")&&(r="type"),r){var i=this.lookahead();(i.type===a.types.name&&"from"!==i.value||i.type===a.types.braceL||i.type===a.types.star)&&(this.next(),t.importKind=r)}e.call(this,t)}}),e.extend("parseFunctionParams",function(e){return function(t){this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),e.call(this,t)}}),e.extend("parseVarHead",function(e){return function(t){e.call(this,t),this.match(a.types.colon)&&(t.id.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(t.id,t.id.type))}}),e.extend("parseAsyncArrowFromCallExpression",function(e){return function(t,r){return this.match(a.types.colon)&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,r)}}),e.extend("shouldParseAsyncArrow",function(e){return function(){return this.match(a.types.colon)||e.call(this)}}),e.extend("parseParenAndDistinguishExpression",function(e){return function(t,r,i,n){if(t=t||this.state.start,r=r||this.state.startLoc,i&&this.lookahead().type===a.types.parenR){this.expect(a.types.parenL),this.expect(a.types.parenR);var s=this.startNodeAt(t,r);return this.match(a.types.colon)&&(s.returnType=this.flowParseTypeAnnotation()),this.expect(a.types.arrow),this.parseArrowExpression(s,[],n)}var o=e.call(this,t,r,i,n,this.hasPlugin("trailingFunctionCommas"));if(!this.match(a.types.colon))return o;var u=this.state.clone();try{return this.parseParenItem(o,t,r,!0)}catch(e){if(e instanceof SyntaxError)return this.state=u,o;throw e}}})};var a=r(i),o=r(n),u=s(o),l=u.default.prototype;l.flowParseTypeInitialiser=function(e,t){var r=this.state.inType;this.state.inType=!0,this.expect(e||a.types.colon),t&&(this.match(a.types.bitwiseAND)||this.match(a.types.bitwiseOR))&&this.next();var i=this.flowParseType();return this.state.inType=r,i},l.flowParseDeclareClass=function(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")},l.flowParseDeclareFunction=function(e){this.next();var t=e.id=this.parseIdentifier(),r=this.startNode(),i=this.startNode();this.isRelational("<")?r.typeParameters=this.flowParseTypeParameterDeclaration():r.typeParameters=null,this.expect(a.types.parenL);var n=this.flowParseFunctionTypeParams();return r.params=n.params,r.rest=n.rest,this.expect(a.types.parenR),r.returnType=this.flowParseTypeInitialiser(),i.typeAnnotation=this.finishNode(r,"FunctionTypeAnnotation"),t.typeAnnotation=this.finishNode(i,"TypeAnnotation"),this.finishNode(t,t.type),this.semicolon(),this.finishNode(e,"DeclareFunction")},l.flowParseDeclare=function(e){return this.match(a.types._class)?this.flowParseDeclareClass(e):this.match(a.types._function)?this.flowParseDeclareFunction(e):this.match(a.types._var)?this.flowParseDeclareVariable(e):this.isContextual("module")?this.flowParseDeclareModule(e):this.isContextual("type")?this.flowParseDeclareTypeAlias(e):this.isContextual("interface")?this.flowParseDeclareInterface(e):void this.unexpected()},l.flowParseDeclareVariable=function(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(e,"DeclareVariable")},l.flowParseDeclareModule=function(e){this.next(),this.match(a.types.string)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();var t=e.body=this.startNode(),r=t.body=[];for(this.expect(a.types.braceL);!this.match(a.types.braceR);){var i=this.startNode();this.next(),r.push(this.flowParseDeclare(i))}return this.expect(a.types.braceR),this.finishNode(t,"BlockStatement"),this.finishNode(e,"DeclareModule")},l.flowParseDeclareTypeAlias=function(e){return this.next(),this.flowParseTypeAlias(e),this.finishNode(e,"DeclareTypeAlias")},l.flowParseDeclareInterface=function(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")},l.flowParseInterfaceish=function(e,t){if(e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.mixins=[],this.eat(a.types._extends))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(a.types.comma));if(this.isContextual("mixins")){this.next();do e.mixins.push(this.flowParseInterfaceExtends());while(this.eat(a.types.comma))}e.body=this.flowParseObjectType(t)},l.flowParseInterfaceExtends=function(){var e=this.startNode();return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")},l.flowParseInterface=function(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,"InterfaceDeclaration")},l.flowParseTypeAlias=function(e){return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(a.types.eq,!0),this.semicolon(),this.finishNode(e,"TypeAlias")},l.flowParseTypeParameter=function(){var e=this.startNode(),t=void 0;this.match(a.types.plusMin)&&("+"===this.state.value?t="plus":"-"===this.state.value&&(t="minus"),this.eat(a.types.plusMin));var r=this.flowParseTypeAnnotatableIdentifier(!1,!1);return e.name=r.name,e.variance=t,e.bound=r.typeAnnotation,this.match(a.types.eq)&&(this.eat(a.types.eq),e.default=this.flowParseType()),this.finishNode(e,"TypeParameter")},l.flowParseTypeParameterDeclaration=function(){var e=this.startNode();e.params=[],this.expectRelational("<");do e.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(a.types.comma);while(!this.isRelational(">"));return this.expectRelational(">"),this.finishNode(e,"TypeParameterDeclaration")},l.flowParseTypeParameterInstantiation=function(){var e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseType()),this.isRelational(">")||this.expect(a.types.comma);return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterInstantiation")},l.flowParseObjectPropertyKey=function(){return this.match(a.types.num)||this.match(a.types.string)?this.parseExprAtom():this.parseIdentifier(!0)},l.flowParseObjectTypeIndexer=function(e,t){return e.static=t,this.expect(a.types.bracketL),e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser(),this.expect(a.types.bracketR),e.value=this.flowParseTypeInitialiser(),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeIndexer")},l.flowParseObjectTypeMethodish=function(e){for(e.params=[],e.rest=null,e.typeParameters=null,this.isRelational("<")&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(a.types.parenL);this.match(a.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(a.types.parenR)||this.expect(a.types.comma);return this.eat(a.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),this.expect(a.types.parenR),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")},l.flowParseObjectTypeMethod=function(e,t,r,i){var n=this.startNodeAt(e,t);return n.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e,t)),n.static=r,n.key=i,n.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(n,"ObjectTypeProperty")},l.flowParseObjectTypeCallProperty=function(e,t){var r=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(r),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeCallProperty")},l.flowParseObjectType=function(e){var t=this.startNode(),r=void 0,i=void 0,n=void 0;for(t.callProperties=[],t.properties=[],t.indexers=[],this.expect(a.types.braceL);!this.match(a.types.braceR);){var s=!1,o=this.state.start,u=this.state.startLoc;r=this.startNode(),e&&this.isContextual("static")&&(this.next(),n=!0),this.match(a.types.bracketL)?t.indexers.push(this.flowParseObjectTypeIndexer(r,n)):this.match(a.types.parenL)||this.isRelational("<")?t.callProperties.push(this.flowParseObjectTypeCallProperty(r,e)):(i=n&&this.match(a.types.colon)?this.parseIdentifier():this.flowParseObjectPropertyKey(),this.isRelational("<")||this.match(a.types.parenL)?t.properties.push(this.flowParseObjectTypeMethod(o,u,n,i)):(this.eat(a.types.question)&&(s=!0),r.key=i,r.value=this.flowParseTypeInitialiser(),r.optional=s,r.static=n,this.flowObjectTypeSemicolon(),t.properties.push(this.finishNode(r,"ObjectTypeProperty"))))}return this.expect(a.types.braceR),this.finishNode(t,"ObjectTypeAnnotation")},l.flowObjectTypeSemicolon=function(){this.eat(a.types.semi)||this.eat(a.types.comma)||this.match(a.types.braceR)||this.unexpected()},l.flowParseGenericType=function(e,t,r){var i=this.startNodeAt(e,t);for(i.typeParameters=null,i.id=r;this.eat(a.types.dot);){var n=this.startNodeAt(e,t);n.qualification=i.id,n.id=this.parseIdentifier(),i.id=this.finishNode(n,"QualifiedTypeIdentifier")}return this.isRelational("<")&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")},l.flowParseTypeofType=function(){var e=this.startNode();return this.expect(a.types._typeof),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")},l.flowParseTupleType=function(){var e=this.startNode();for(e.types=[],this.expect(a.types.bracketL);this.state.pos<this.input.length&&!this.match(a.types.bracketR)&&(e.types.push(this.flowParseType()),!this.match(a.types.bracketR));)this.expect(a.types.comma);return this.expect(a.types.bracketR),this.finishNode(e,"TupleTypeAnnotation")},l.flowParseFunctionTypeParam=function(){var e=!1,t=this.startNode();return t.name=this.parseIdentifier(),this.eat(a.types.question)&&(e=!0),t.optional=e,t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeParam")},l.flowParseFunctionTypeParams=function(){for(var e={params:[],rest:null};this.match(a.types.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(a.types.parenR)||this.expect(a.types.comma);return this.eat(a.types.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),e},l.flowIdentToTypeAnnotation=function(e,t,r,i){switch(i.name){case"any":return this.finishNode(r,"AnyTypeAnnotation");case"void":return this.finishNode(r,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(r,"BooleanTypeAnnotation");case"mixed":return this.finishNode(r,"MixedTypeAnnotation");case"number":return this.finishNode(r,"NumberTypeAnnotation");case"string":return this.finishNode(r,"StringTypeAnnotation");default:return this.flowParseGenericType(e,t,i)}},l.flowParsePrimaryType=function(){var e=this.state.start,t=this.state.startLoc,r=this.startNode(),i=void 0,n=void 0,s=!1;switch(this.state.type){case a.types.name:return this.flowIdentToTypeAnnotation(e,t,r,this.parseIdentifier());case a.types.braceL:return this.flowParseObjectType();case a.types.bracketL:return this.flowParseTupleType();case a.types.relational:if("<"===this.state.value)return r.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(a.types.parenL),i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(a.types.parenR),this.expect(a.types.arrow),r.returnType=this.flowParseType(),this.finishNode(r,"FunctionTypeAnnotation");case a.types.parenL:if(this.next(),!this.match(a.types.parenR)&&!this.match(a.types.ellipsis))if(this.match(a.types.name)){var o=this.lookahead().type;s=o!==a.types.question&&o!==a.types.colon}else s=!0;return s?(n=this.flowParseType(),this.expect(a.types.parenR),this.eat(a.types.arrow)&&this.raise(r,"Unexpected token =>. It looks like you are trying to write a function type, but you ended up writing a grouped type followed by an =>, which is a syntax error. Remember, function type parameters are named so function types look like (name1: type1, name2: type2) => returnType. You probably wrote (type1) => returnType"),n):(i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,this.expect(a.types.parenR),this.expect(a.types.arrow),r.returnType=this.flowParseType(),r.typeParameters=null,this.finishNode(r,"FunctionTypeAnnotation"));case a.types.string:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"StringLiteralTypeAnnotation");case a.types._true:case a.types._false:return r.value=this.match(a.types._true),this.next(),this.finishNode(r,"BooleanLiteralTypeAnnotation");case a.types.num:return r.value=this.state.value,this.addExtra(r,"rawValue",r.value),this.addExtra(r,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(r,"NumericLiteralTypeAnnotation");case a.types._null:return r.value=this.match(a.types._null),this.next(),this.finishNode(r,"NullLiteralTypeAnnotation");case a.types._this:return r.value=this.match(a.types._this),this.next(),this.finishNode(r,"ThisTypeAnnotation");case a.types.star:return this.next(),this.finishNode(r,"ExistentialTypeParam");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}this.unexpected()},l.flowParsePostfixType=function(){var e=this.startNode(),t=e.elementType=this.flowParsePrimaryType();return this.match(a.types.bracketL)?(this.expect(a.types.bracketL),this.expect(a.types.bracketR),this.finishNode(e,"ArrayTypeAnnotation")):t},l.flowParsePrefixType=function(){var e=this.startNode();return this.eat(a.types.question)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()},l.flowParseIntersectionType=function(){var e=this.startNode(),t=this.flowParsePrefixType();for(e.types=[t];this.eat(a.types.bitwiseAND);)e.types.push(this.flowParsePrefixType());return 1===e.types.length?t:this.finishNode(e,"IntersectionTypeAnnotation")},l.flowParseUnionType=function(){var e=this.startNode(),t=this.flowParseIntersectionType();for(e.types=[t];this.eat(a.types.bitwiseOR);)e.types.push(this.flowParseIntersectionType());return 1===e.types.length?t:this.finishNode(e,"UnionTypeAnnotation")},l.flowParseType=function(){var e=this.state.inType;this.state.inType=!0;var t=this.flowParseUnionType();return this.state.inType=e,t},l.flowParseTypeAnnotation=function(){var e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")},l.flowParseTypeAnnotatableIdentifier=function(e,t){var r=this.parseIdentifier(),i=!1;return t&&this.eat(a.types.question)&&(this.expect(a.types.question),i=!0),(e||this.match(a.types.colon))&&(r.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(r,r.type)),i&&(r.optional=!0,this.finishNode(r,r.type)),r}},function(e,t,r,i,n){var s=r(i),a=r(n),o=s(a,"DataView");e.exports=o},function(e,t,r,i,n,s,a,o){function u(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o);u.prototype.clear=l,u.prototype.delete=p,u.prototype.get=c,u.prototype.has=f,u.prototype.set=h,e.exports=u},function(e,t,r,i,n,s,a,o){function u(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o);u.prototype.clear=l,u.prototype.delete=p,u.prototype.get=c,u.prototype.has=f,u.prototype.set=h,e.exports=u},function(e,t,r,i,n){var s=r(i),a=r(n),o=s(a,"Map");e.exports=o},function(e,t,r,i,n,s,a,o){function u(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o);u.prototype.clear=l,u.prototype.delete=p,u.prototype.get=c,u.prototype.has=f,u.prototype.set=h,e.exports=u},function(e,t,r,i,n){var s=r(i),a=r(n),o=s(a,"Promise");e.exports=o},function(e,t,r,i,n){var s=r(i),a=r(n),o=s(a,"Set");e.exports=o},function(e,t,r,i,n,s,a,o,u){function l(e){this.__data__=new p(e)}var p=r(i),c=r(n),f=r(s),h=r(a),d=r(o),y=r(u);l.prototype.clear=c,l.prototype.delete=f,l.prototype.get=h,l.prototype.has=d,l.prototype.set=y,e.exports=l},function(e,t,r,i){var n=r(i),s=n.Symbol;e.exports=s},function(e,t,r,i){var n=r(i),s=n.Uint8Array;e.exports=s},function(e,t,r,i,n){var s=r(i),a=r(n),o=s(a,"WeakMap");e.exports=o},function(e,t,r,i){function n(e,t,r){var i=e[t];o.call(e,t)&&s(i,r)&&(void 0!==r||t in e)||(e[t]=r)}var s=r(i),a=Object.prototype,o=a.hasOwnProperty;e.exports=n},function(e,t,r,i){function n(e,t){for(var r=e.length;r--;)if(s(e[r][0],t))return r;return-1}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){return e&&a(t,o(t),e)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g,b){function x(e,t,r,i,n,s,a){var o;if(i&&(o=s?i(e,n,s,a):i(e)),void 0!==o)return o;if(!R(e))return e;var u=I(e);if(u){if(o=D(e),!t)return P(e,o)}else{var l=C(e),p=l==K||l==W;if(F(e))return T(e,t);if(l==H||l==M||p&&!s){if(B(e))return s?e:{};if(o=N(p?{}:e),!t)return w(e,_(o,e))}else{if(!pe[l])return s?e:{};o=O(e,l,x,t)}}a||(a=new E);var c=a.get(e);if(c)return c;if(a.set(e,o),!u)var f=r?k(e):L(e);return A(f||e,function(n,s){f&&(s=n,n=e[s]),S(o,s,x(n,t,r,i,s,e,a))}),o}var E=r(i),A=r(n),S=r(s),_=r(a),T=r(o),P=r(u),w=r(l),k=r(p),C=r(c),D=r(f),O=r(h),N=r(d),I=r(y),F=r(v),B=r(m),R=r(g),L=r(b),M="[object Arguments]",j="[object Array]",V="[object Boolean]",U="[object Date]",Y="[object Error]",K="[object Function]",W="[object GeneratorFunction]",G="[object Map]",q="[object Number]",H="[object Object]",X="[object RegExp]",J="[object Set]",$="[object String]",z="[object Symbol]",Q="[object WeakMap]",Z="[object ArrayBuffer]",ee="[object DataView]",te="[object Float32Array]",re="[object Float64Array]",ie="[object Int8Array]",ne="[object Int16Array]",se="[object Int32Array]",ae="[object Uint8Array]",oe="[object Uint8ClampedArray]",ue="[object Uint16Array]",le="[object Uint32Array]",pe={};pe[M]=pe[j]=pe[Z]=pe[ee]=pe[V]=pe[U]=pe[te]=pe[re]=pe[ie]=pe[ne]=pe[se]=pe[G]=pe[q]=pe[H]=pe[X]=pe[J]=pe[$]=pe[z]=pe[ae]=pe[oe]=pe[ue]=pe[le]=!0,pe[Y]=pe[K]=pe[Q]=!1,e.exports=x},function(e,t,r,i){function n(e){return s(e)?a(e):{}}var s=r(i),a=Object.create;e.exports=n},function(e,t,r,i,n){function s(e,t,r){var i=t(e);return o(e)?i:a(i,r(e))}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e,t){return null!=e&&(o.call(e,t)||"object"==typeof e&&t in e&&null===s(e))}var s=r(i),a=Object.prototype,o=a.hasOwnProperty;e.exports=n},function(e,t,r,i,n,s,a,o){function u(e){if(!f(e)||c(e))return!1;var t=l(e)||p(e)?b:y;return t.test(h(e))}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=/[\\^$.*+?()[\]{}|]/g,y=/^\[object .+?Constructor\]$/,v=Object.prototype,m=Function.prototype.toString,g=v.hasOwnProperty,b=RegExp("^"+m.call(g).replace(d,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=u},function(e,t,r,i,n){function s(e){if("string"==typeof e)return e;if(o(e))return p?p.call(e):"";var t=e+"";return"0"==t&&1/e==-u?"-0":t}var a=r(i),o=r(n),u=1/0,l=a?a.prototype:void 0,p=l?l.toString:void 0;e.exports=s},function(e,t,r,i,n){function s(e){return a(e)?e:o(e)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e){var t=new e.constructor(e.byteLength);return new s(t).set(new s(e)),t}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t){var r=t?s(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}var s=r(i);e.exports=n},function(e,t,r,i,n,s){function a(e,t,r){var i=t?r(l(e),!0):l(e);return u(i,o,new e.constructor)}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n,s){function a(e,t,r){var i=t?r(l(e),!0):l(e);return u(i,o,new e.constructor)}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i){function n(e){return o?Object(o.call(e)):{}}var s=r(i),a=s?s.prototype:void 0,o=a?a.valueOf:void 0;e.exports=n},function(e,t,r,i){function n(e,t){var r=t?s(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t,r,i){r||(r={});for(var n=-1,a=t.length;++n<a;){var o=t[n],u=i?i(r[o],e[o],o,r,e):e[o];s(r,o,u)}return r}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){return a(e,o(e),t)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){var n=r(i),s=n["__core-js_shared__"];e.exports=s},function(e,t,r,i,n){function s(e){return o(function(t,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=e.length>3&&"function"==typeof s?(n--,s):void 0,o&&a(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),t=Object(t);++i<n;){var u=r[i];u&&e(t,u,i,s)}return t})}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s){function a(e){return o(e,l,u)}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i){var n=r(i),s=n("length");e.exports=s},function(e,t,r,i){function n(e,t){var r=e.__data__;return s(t)?r["string"==typeof t?"string":"hash"]:r.map}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){var r=o(e,t);return a(r)?r:void 0}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e){return a(Object(e))}var s=r(i),a=Object.getOwnPropertySymbols;a||(n=s),e.exports=n},function(e,t,r,i,n,s,a,o,u){function l(e){return S.call(e)}var p=r(i),c=r(n),f=r(s),h=r(a),d=r(o),y=r(u),v="[object Map]",m="[object Object]",g="[object Promise]",b="[object Set]",x="[object WeakMap]",E="[object DataView]",A=Object.prototype,S=A.toString,_=y(p),T=y(c),P=y(f),w=y(h),k=y(d);(p&&l(new p(new ArrayBuffer(1)))!=E||c&&l(new c)!=v||f&&l(f.resolve())!=g||h&&l(new h)!=b||d&&l(new d)!=x)&&(l=function(e){var t=S.call(e),r=t==m?e.constructor:void 0,i=r?y(r):void 0;if(i)switch(i){case _:return E;case T:return v;case P:return g;case w:return b;case k:return x}return t}),e.exports=l},function(e,t,r,i,n,s,a,o,u,l,p){function c(e,t,r){t=v(t,e)?[t]:f(t);for(var i,n=-1,s=t.length;++n<s;){var a=b(t[n]);if(!(i=null!=e&&r(e,a)))break;e=e[a]}if(i)return i;var s=e?e.length:0;return!!s&&m(s)&&y(a,s)&&(d(e)||g(e)||h(e))}var f=r(i),h=r(n),d=r(s),y=r(a),v=r(o),m=r(u),g=r(l),b=r(p);e.exports=c},function(e,t,r,i){function n(){this.__data__=s?s(null):{}}var s=r(i);e.exports=n},function(e,t,r,i){function n(e){var t=this.__data__;if(s){var r=t[e];return r===a?void 0:r}return u.call(t,e)?t[e]:void 0}var s=r(i),a="__lodash_hash_undefined__",o=Object.prototype,u=o.hasOwnProperty;e.exports=n},function(e,t,r,i){function n(e){var t=this.__data__;return s?void 0!==t[e]:o.call(t,e)}var s=r(i),a=Object.prototype,o=a.hasOwnProperty;e.exports=n},function(e,t,r,i){function n(e,t){var r=this.__data__;return r[e]=s&&void 0===t?a:t,this}var s=r(i),a="__lodash_hash_undefined__";e.exports=n},function(e,t,r,i,n,s,a,o){function u(e){var t=e?e.length:void 0;return f(t)&&(c(e)||h(e)||p(e))?l(t,String):null}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o);e.exports=u},function(e,t,r,i,n,s,a,o,u,l){function p(e,t,r,i){var n=e.constructor;switch(t){case P:return c(e);case g:case b:return new n((+e));case w:return f(e,i);case k:case C:case D:case O:case N:case I:case F:case B:case R:return m(e,i);case x:return h(e,i,r);case E:case _:return new n(e);case A:return d(e);case S:return y(e,i,r);case T:return v(e)}}var c=r(i),f=r(n),h=r(s),d=r(a),y=r(o),v=r(u),m=r(l),g="[object Boolean]",b="[object Date]",x="[object Map]",E="[object Number]",A="[object RegExp]",S="[object Set]",_="[object String]",T="[object Symbol]",P="[object ArrayBuffer]",w="[object DataView]",k="[object Float32Array]",C="[object Float64Array]",D="[object Int8Array]",O="[object Int16Array]",N="[object Int32Array]",I="[object Uint8Array]",F="[object Uint8ClampedArray]",B="[object Uint16Array]",R="[object Uint32Array]";e.exports=p},function(e,t,r,i,n,s){function a(e){return"function"!=typeof e.constructor||l(e)?{}:o(u(e))}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n,s,a){function o(e,t,r){if(!c(r))return!1;var i=typeof t;return!!("number"==i?l(r)&&p(t,r.length):"string"==i&&t in r)&&u(r[t],e)}var u=r(i),l=r(n),p=r(s),c=r(a);e.exports=o},function(e,t,r,i,n){function s(e,t){if(a(e))return!1;
+var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!o(e))||(l.test(e)||!u.test(e)||null!=t&&e in Object(t))}var a=r(i),o=r(n),u=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,l=/^\w*$/;e.exports=s},function(e,t,r,i){function n(e){return!!a&&a in e}var s=r(i),a=function(){var e=/[^.]+$/.exec(s&&s.keys&&s.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();e.exports=n},function(e,t,r,i){function n(e){var t=this.__data__,r=s(t,e);if(r<0)return!1;var i=t.length-1;return r==i?t.pop():o.call(t,r,1),!0}var s=r(i),a=Array.prototype,o=a.splice;e.exports=n},function(e,t,r,i){function n(e){var t=this.__data__,r=s(t,e);return r<0?void 0:t[r][1]}var s=r(i);e.exports=n},function(e,t,r,i){function n(e){return s(this.__data__,e)>-1}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t){var r=this.__data__,i=s(r,e);return i<0?r.push([e,t]):r[i][1]=t,this}var s=r(i);e.exports=n},function(e,t,r,i,n,s){function a(){this.__data__={hash:new o,map:new(l||u),string:new o}}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i){function n(e){return s(this,e).delete(e)}var s=r(i);e.exports=n},function(e,t,r,i){function n(e){return s(this,e).get(e)}var s=r(i);e.exports=n},function(e,t,r,i){function n(e){return s(this,e).has(e)}var s=r(i);e.exports=n},function(e,t,r,i){function n(e,t){return s(this,e).set(e,t),this}var s=r(i);e.exports=n},function(e,t,r,i){var n=r(i),s=n(Object,"create");e.exports=s},function(e,t,r,i){(function(t){var n=r(i),s=n("object"==typeof t&&t),a=n("object"==typeof self&&self),o=n("object"==typeof this&&this),u=s||a||o||Function("return this")();e.exports=u}).call(t,function(){return this}())},function(e,t,r,i){function n(){this.__data__=new s}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){var r=this.__data__;return r instanceof a&&r.__data__.length==u&&(r=this.__data__=new o(r.__data__)),r.set(e,t),this}var a=r(i),o=r(n),u=200;e.exports=s},function(e,t,r,i,n){var s=r(i),a=r(n),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(\.|\[\])(?:\4|$))/g,u=/\\(\\)?/g,l=s(function(e){var t=[];return a(e).replace(o,function(e,r,i,n){t.push(i?n.replace(u,"$1"):r||e)}),t});e.exports=l},function(e,t,r,i){function n(e){if("string"==typeof e||s(e))return e;var t=e+"";return"0"==t&&1/e==-a?"-0":t}var s=r(i),a=1/0;e.exports=n},function(e,t,r,i,n,s,a,o,u){var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=r(u),y=Object.prototype,v=y.hasOwnProperty,m=y.propertyIsEnumerable,g=!m.call({valueOf:1},"valueOf"),b=c(function(e,t){if(g||h(t)||f(t))return void p(t,d(t),e);for(var r in t)v.call(t,r)&&l(e,r,t[r])});e.exports=b},function(e,t,r,i){function n(e){return s(e,!0,!0)}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){return null!=e&&o(e,t,a)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e){return s(e)&&u.call(e,"callee")&&(!p.call(e,"callee")||l.call(e)==a)}var s=r(i),a="[object Arguments]",o=Object.prototype,u=o.hasOwnProperty,l=o.toString,p=o.propertyIsEnumerable;e.exports=n},function(e,t,r,i,n,s){function a(e){return null!=e&&l(o(e))&&!u(e)}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n){function s(e){return o(e)&&a(e)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n){(function(e){var s=r(i),a=r(n),o="object"==typeof t&&t,u=o&&"object"==typeof e&&e,l=u&&u.exports===o,p=l?s.Buffer:void 0,c=p?function(e){return e instanceof p}:a;e.exports=c}).call(t,r(27)(e))},function(e,t,r,i,n){function s(e){return"string"==typeof e||!a(e)&&o(e)&&p.call(e)==u}var a=r(i),o=r(n),u="[object String]",l=Object.prototype,p=l.toString;e.exports=s},function(e,t,r,i,n,s,a,o,u){function l(e){var t=y(e);if(!t&&!h(e))return c(e);var r=f(e),i=!!r,n=r||[],s=n.length;for(var a in e)!p(e,a)||i&&("length"==a||d(a,s))||t&&"constructor"==a||n.push(a);return n}var p=r(i),c=r(n),f=r(s),h=r(a),d=r(o),y=r(u);e.exports=l},function(e,t,r,i){function n(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError(a);var r=function(){var i=arguments,n=t?t.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var a=e.apply(this,i);return r.cache=s.set(n,a),a};return r.cache=new(n.Cache||s),r}var s=r(i),a="Expected a function";n.Cache=s,e.exports=n},function(e,t,r,i){function n(e){return null==e?"":s(e)}var s=r(i);e.exports=n},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h){"use strict";function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function y(e){return e&&e.__esModule?e:{default:e}}function v(e,t,r,i,n){if(e){if(t||(t={}),!t.noScope&&!r&&"Program"!==e.type&&"File"!==e.type)throw new Error(D.get("traverseNeedsParent",e.type));k.explode(t),v.node(e,t,r,i,n)}}function m(e,t){e.node.type===t.type&&(t.has=!0,e.stop())}t.__esModule=!0,t.visitors=t.Hub=t.Scope=t.NodePath=void 0;var g=r(1915),b=y(g),x=r(6),E=y(x),A=r(i);Object.defineProperty(t,"NodePath",{enumerable:!0,get:function(){return y(A).default}});var S=r(n);Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return y(S).default}});var _=r(s);Object.defineProperty(t,"Hub",{enumerable:!0,get:function(){return y(_).default}}),t.default=v;var T=r(a),P=y(T),w=r(o),k=d(w),C=r(u),D=d(C),O=r(l),N=y(O),I=r(9),F=d(I),B=r(p),R=d(B);t.visitors=k,v.visitors=k,v.verify=k.verify,v.explode=k.explode,v.NodePath=r(c),v.Scope=r(f),v.Hub=r(h),v.cheap=function(e,t){if(e){var r=F.VISITOR_KEYS[e.type];if(r){t(e);for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,E.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a,u=e[o];if(Array.isArray(u))for(var l=u,p=Array.isArray(l),c=0,l=p?l:(0,E.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;v.cheap(h,t)}else v.cheap(u,t)}}}},v.node=function(e,t,r,i,n,s){var a=F.VISITOR_KEYS[e.type];if(a)for(var o=new P.default(r,t,i,n),u=a,l=Array.isArray(u),p=0,u=l?u:(0,E.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if((!s||!s[f])&&o.visit(e,f))return}};var L=F.COMMENT_KEYS.concat(["tokens","comments","start","end","loc","raw","rawValue"]);v.clearNode=function(e){for(var t=L,r=Array.isArray(t),i=0,t=r?t:(0,E.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;null!=e[s]&&(e[s]=void 0)}for(var a in e)"_"===a[0]&&null!=e[a]&&(e[a]=void 0);R.path.delete(e);for(var o=(0,b.default)(e),u=o,l=Array.isArray(u),p=0,u=l?u:(0,E.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e[f]=null}},v.removeProperties=function(e){return v.cheap(e,v.clearNode),e},v.hasType=function(e,t,r,i){if((0,N.default)(i,e.type))return!1;if(e.type===r)return!0;var n={has:!1,type:r};return v(e,{blacklist:i,enter:m},t,n),n.has},v.clearCache=function(){R.clear()},v.copyCache=function(e,t){R.path.has(e)&&R.path.set(t,R.path.get(e))}},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g,b,x){"use strict";function E(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function A(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var S=r(6),_=A(S),T=r(13),P=A(T),w=r(i),k=E(w),C=r(n),D=A(C),O=r(s),N=A(O),I=r(a),F=A(I),B=r(o),R=A(B),L=r(u),M=A(L),j=r(9),V=E(j),U=r(l),Y=(0,D.default)("babel"),K=function(){function e(t,r){(0,P.default)(this,e),this.parent=r,this.hub=t,this.contexts=[],this.data={},this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.state=null,this.opts=null,this.skipKeys=null,this.parentPath=null,this.context=null,this.container=null,this.listKey=null,this.inList=!1,this.parentKey=null,this.key=null,this.node=null,this.scope=null,this.type=null,this.typeAnnotation=null}return e.get=function(t){var r=t.hub,i=t.parentPath,n=t.parent,s=t.container,a=t.listKey,o=t.key;!r&&i&&(r=i.hub),(0,N.default)(n,"To get a node path the parent needs to exist");var u=s[o],l=U.path.get(n)||[];U.path.has(n)||U.path.set(n,l);for(var p=void 0,c=0;c<l.length;c++){var f=l[c];if(f.node===u){p=f;break}}return p||(p=new e(r,n),l.push(p)),p.setup(i,s,a,o),p},e.prototype.getScope=function(e){var t=e;return this.isScope()&&(t=new M.default(this,e)),t},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e,t){var r=this.data[e];return!r&&t&&(r=this.data[e]=t),r},e.prototype.buildCodeFrameError=function(e){var t=arguments.length<=1||void 0===arguments[1]?SyntaxError:arguments[1];return this.hub.file.buildCodeFrameError(this.node,e,t)},e.prototype.traverse=function(e,t){(0,F.default)(this.node,e,this.scope,t,this)},e.prototype.mark=function(e,t){this.hub.file.metadata.marked.push({type:e,message:t,loc:this.node.loc})},e.prototype.set=function(e,t){V.validate(this.node,e,t),this.node[e]=t},e.prototype.getPathLocation=function(){var e=[],t=this;do{var r=t.key;t.inList&&(r=t.listKey+"["+r+"]"),e.unshift(r)}while(t=t.parentPath);return e.join(".")},e.prototype.debug=function(e){Y.enabled&&Y(this.getPathLocation()+" "+this.type+": "+e())},e}();t.default=K,(0,R.default)(K.prototype,r(p)),(0,R.default)(K.prototype,r(c)),(0,R.default)(K.prototype,r(f)),(0,R.default)(K.prototype,r(h)),(0,R.default)(K.prototype,r(d)),(0,R.default)(K.prototype,r(y)),(0,R.default)(K.prototype,r(v)),(0,R.default)(K.prototype,r(m)),(0,R.default)(K.prototype,r(g)),(0,R.default)(K.prototype,r(b)),(0,R.default)(K.prototype,r(x));for(var W=function(){if(q){if(H>=G.length)return"break";X=G[H++]}else{if(H=G.next(),H.done)return"break";X=H.value}var e=X,t="is"+e;K.prototype[t]=function(e){return V[t](this.node,e)},K.prototype["assert"+e]=function(r){if(!this[t](r))throw new TypeError("Expected node path of type "+e)}},G=V.TYPES,q=Array.isArray(G),H=0,G=q?G:(0,_.default)(G);;){var X,J=W();if("break"===J)break}var $=function(e){if("_"===e[0])return"continue";V.TYPES.indexOf(e)<0&&V.TYPES.push(e);var t=k[e];K.prototype["is"+e]=function(e){return t.checkPath(this,e)}};for(var z in k){$(z)}e.exports=t.default},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t){function r(e){var t=i[s];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var i=e.split("."),n=[this.node],s=0;n.length;){var a=n.shift();if(t&&s===i.length)return!0;if(D.isIdentifier(a)){if(!r(a.name))return!1}else if(D.isLiteral(a)){if(!r(a.value))return!1}else{if(D.isMemberExpression(a)){if(a.computed&&!D.isLiteral(a.property))return!1;n.unshift(a.property),n.unshift(a.object);continue}if(!D.isThisExpression(a))return!1;if(!r("this"))return!1}if(++s>i.length)return!1}return s===i.length}function o(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}function u(){return this.scope.isStatic(this.node)}function l(e){return!this.has(e)}function p(e,t){return this.node[e]===t}function c(e){return D.isType(this.type,e)}function f(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()}function h(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?D.isBlockStatement(e):!!this.isBlockStatement()&&D.isExpression(e))}function d(e){var t=this,r=!0;do{var i=t.container;if(t.isFunction()&&!r)return!!e;if(r=!1,Array.isArray(i)&&t.key!==i.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0}function y(){return!this.parentPath.isLabeledStatement()&&!D.isBlockStatement(this.container)&&(0,k.default)(D.STATEMENT_OR_BLOCK_KEYS,this.key)}function v(e,t){if(!this.isReferencedIdentifier())return!1;var r=this.scope.getBinding(this.node.name);if(!r||"module"!==r.kind)return!1;var i=r.path,n=i.parentPath;return!!n.isImportDeclaration()&&(n.node.source.value===e&&(!t||(!(!i.isImportDefaultSpecifier()||"default"!==t)||(!(!i.isImportNamespaceSpecifier()||"*"!==t)||!(!i.isImportSpecifier()||i.node.imported.name!==t)))))}function m(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""}function g(e){return"after"!==this._guessExecutionStatusRelativeTo(e)}function b(e){var t=e.scope.getFunctionParent(),r=this.scope.getFunctionParent();if(t.node!==r.node){var i=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(i)return i;e=t.path}var n=e.getAncestry();if(n.indexOf(this)>=0)return"after";var s=this.getAncestry(),a=void 0,o=void 0,u=void 0;for(u=0;u<s.length;u++){var l=s[u];if(o=n.indexOf(l),o>=0){a=l;break}}if(!a)return"before";var p=n[o-1],c=s[u-1];if(!p||!c)return"before";if(p.listKey&&p.container===c.container)return p.key>c.key?"before":"after";var f=D.VISITOR_KEYS[p.type].indexOf(p.key),h=D.VISITOR_KEYS[c.type].indexOf(c.key);return f>h?"before":"after"}function x(e){var t=e.path;if(t.isFunctionDeclaration()){var r=t.scope.getBinding(t.node.id.name);if(!r.references)return"before";for(var i=r.referencePaths,n=i,s=Array.isArray(n),a=0,n=s?n:(0,P.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if("callee"!==u.key||!u.parentPath.isCallExpression())return}for(var l=void 0,p=i,c=Array.isArray(p),f=0,p=c?p:(0,P.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h,y=!!d.find(function(e){return e.node===t.node});if(!y){var v=this._guessExecutionStatusRelativeTo(d);if(l){if(l!==v)return}else l=v}}return l}}function E(e,t){return this._resolve(e,t)||this}function A(e,t){var r=this;if(!(t&&t.indexOf(this)>=0))if(t=t||[],t.push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var i=this.scope.getBinding(this.node.name);if(!i)return;if(!i.constant)return;if("module"===i.kind)return;if(i.path!==this){var n=function(){var n=i.path.resolve(e,t);return r.find(function(e){return e.node===n.node})?{v:void 0}:{v:n}}();if("object"===("undefined"==typeof n?"undefined":(0,_.default)(n)))return n.v}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var s=this.toComputedKey();if(!D.isLiteral(s))return;var a=s.value,o=this.get("object").resolve(e,t);if(o.isObjectExpression())for(var u=o.get("properties"),l=u,p=Array.isArray(l),c=0,l=p?l:(0,P.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;if(h.isProperty()){var d=h.get("key"),y=h.isnt("computed")&&d.isIdentifier({name:a});if(y=y||d.isLiteral({value:a}))return h.get("value").resolve(e,t)}}else if(o.isArrayExpression()&&!isNaN(+a)){var v=o.get("elements"),m=v[a];if(m)return m.resolve(e,t)}}}}t.__esModule=!0,t.is=void 0;var S=r(88),_=s(S),T=r(6),P=s(T);t.matchesPattern=a,t.has=o,t.isStatic=u,t.isnt=l,t.equals=p,t.isNodeType=c,t.canHaveVariableDeclarationOrExpression=f,t.canSwapBetweenExpressionAndStatement=h,t.isCompletionRecord=d,t.isStatementOrBlock=y,t.referencesImport=v,t.getSource=m,t.willIMaybeExecuteBefore=g,t._guessExecutionStatusRelativeTo=b,t._guessExecutionStatusRelativeToDifferentFunctions=x,t.resolve=E,t._resolve=A;var w=r(i),k=s(w),C=r(9),D=n(C);t.is=o},function(e,t,r,i,n,s,a,o,u,l,p,c){"use strict";function f(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function h(e){return e&&e.__esModule?e:{default:e}}function d(e,t,r){for(var i=U.scope.get(e.node)||[],n=i,s=Array.isArray(n),a=0,n=s?n:(0,A.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if(u.parent===t&&u.path===e)return u}i.push(r),U.scope.has(e.node)||U.scope.set(e.node,i)}t.__esModule=!0;var y=r(616),v=h(y),m=r(136),g=h(m),b=r(13),x=h(b),E=r(6),A=h(E),S=r(i),_=h(S),T=r(n),P=h(T),w=r(s),k=h(w),C=r(a),D=h(C),O=r(o),N=h(O),I=r(u),F=f(I),B=r(l),R=h(B),L=r(p),M=h(L),j=r(9),V=f(j),U=r(c),Y=0,K={For:function(e){for(var t=V.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,A.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isVar()&&e.scope.getFunctionParent().registerBinding("var",a)}},Declaration:function(e){e.isBlockScoped()||e.isExportDeclaration()&&e.get("declaration").isDeclaration()||e.scope.getFunctionParent().registerDeclaration(e)},ReferencedIdentifier:function(e,t){t.references.push(e)},ForXStatement:function(e,t){var r=e.get("left");(r.isPattern()||r.isIdentifier())&&t.constantViolations.push(r)},ExportDeclaration:{exit:function(e){var t=e.node,r=e.scope,i=t.declaration;if(V.isClassDeclaration(i)||V.isFunctionDeclaration(i)){var n=i.id;if(!n)return;var s=r.getBinding(n.name);s&&s.reference()}else if(V.isVariableDeclaration(i))for(var a=i.declarations,o=Array.isArray(a),u=0,a=o?a:(0,A.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var p=l,c=V.getBindingIdentifiers(p);for(var f in c){var h=r.getBinding(f);h&&h.reference()}}}},LabeledStatement:function(e){e.scope.getProgramParent().addGlobal(e.node),e.scope.getBlockParent().registerDeclaration(e)},AssignmentExpression:function(e,t){t.assignments.push(e)},UpdateExpression:function(e,t){t.constantViolations.push(e.get("argument"))},UnaryExpression:function(e,t){"delete"===e.node.operator&&t.constantViolations.push(e.get("argument"))},BlockScoped:function(e){var t=e.scope;t.path===e&&(t=t.parent),t.getBlockParent().registerDeclaration(e)},ClassDeclaration:function(e){var t=e.node.id;if(t){var r=t.name;e.scope.bindings[r]=e.scope.getBinding(r)}},Block:function(e){for(var t=e.get("body"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,A.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;a.isFunctionDeclaration()&&e.scope.getBlockParent().registerDeclaration(a)}}},W=0,G=function(){function e(t,r){if((0,x.default)(this,e),r&&r.block===t.node)return r;var i=d(t,r,this);return i?i:(this.uid=W++,this.parent=r,this.hub=t.hub,this.parentBlock=t.parent,this.block=t.node,void(this.path=t))}return e.prototype.traverse=function(e,t,r){(0,D.default)(e,t,this,r,this.path)},e.prototype.generateDeclaredUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0],t=this.generateUidIdentifier(e);return this.push({id:t}),t},e.prototype.generateUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];return V.identifier(this.generateUid(e))},e.prototype.generateUid=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];e=V.toIdentifier(e).replace(/^_+/,"").replace(/[0-9]+$/g,"");var t=void 0,r=0;do t=this._generateUid(e,r),r++;while(this.hasBinding(t)||this.hasGlobal(t)||this.hasReference(t));var i=this.getProgramParent();return i.references[t]=!0,i.uids[t]=!0,t},e.prototype._generateUid=function(e,t){var r=e;return t>1&&(r+=t),"_"+r},e.prototype.generateUidIdentifierBasedOnNode=function(e,t){var r=e;V.isAssignmentExpression(e)?r=e.left:V.isVariableDeclarator(e)?r=e.id:(V.isObjectProperty(r)||V.isObjectMethod(r))&&(r=r.key);var i=[],n=function e(t){if(V.isModuleDeclaration(t))if(t.source)e(t.source);else if(t.specifiers&&t.specifiers.length)for(var r=t.specifiers,n=Array.isArray(r),s=0,r=n?r:(0,A.default)(r);;){var a;if(n){if(s>=r.length)break;a=r[s++]}else{if(s=r.next(),s.done)break;a=s.value}var o=a;e(o)}else t.declaration&&e(t.declaration);else if(V.isModuleSpecifier(t))e(t.local);else if(V.isMemberExpression(t))e(t.object),e(t.property);else if(V.isIdentifier(t))i.push(t.name);else if(V.isLiteral(t))i.push(t.value);else if(V.isCallExpression(t))e(t.callee);else if(V.isObjectExpression(t)||V.isObjectPattern(t))for(var u=t.properties,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e(f.key||f.argument)}};n(r);var s=i.join("$");return s=s.replace(/^_/,"")||t||"ref",this.generateUidIdentifier(s.slice(0,20))},e.prototype.isStatic=function(e){if(V.isThisExpression(e)||V.isSuper(e))return!0;if(V.isIdentifier(e)){var t=this.getBinding(e.name);return t?t.constant:this.hasBinding(e.name)}return!1},e.prototype.maybeGenerateMemoised=function(e,t){if(this.isStatic(e))return null;var r=this.generateUidIdentifierBasedOnNode(e);return t||this.push({id:r}),r},e.prototype.checkBlockScopedCollisions=function(e,t,r,i){if("param"!==t&&("hoisted"!==t||"let"!==e.kind)){var n=!1;if(n||(n="let"===t||"let"===e.kind||"const"===e.kind||"module"===e.kind),n||(n="param"===e.kind&&("let"===t||"const"===t)),n)throw this.hub.file.buildCodeFrameError(i,F.get("scopeDuplicateDeclaration",r),TypeError)}},e.prototype.rename=function(e,t,r){var i=this.getBinding(e);if(i)return t=t||this.generateUidIdentifier(e).name,new k.default(i,e,t).rename(r)},e.prototype._renameFromMap=function(e,t,r,i){e[t]&&(e[r]=i,e[t]=null)},e.prototype.dump=function(){var e=(0,P.default)("-",60);console.log(e);var t=this;do{console.log("#",t.block.type);for(var r in t.bindings){var i=t.bindings[r];console.log(" -",r,{constant:i.constant,references:i.references,violations:i.constantViolations.length,kind:i.kind})}}while(t=t.parent);console.log(e)},e.prototype.toArray=function(e,t){var r=this.hub.file;if(V.isIdentifier(e)){var i=this.getBinding(e.name);if(i&&i.constant&&i.path.isGenericType("Array"))return e}if(V.isArrayExpression(e))return e;if(V.isIdentifier(e,{name:"arguments"}))return V.callExpression(V.memberExpression(V.memberExpression(V.memberExpression(V.identifier("Array"),V.identifier("prototype")),V.identifier("slice")),V.identifier("call")),[e]);var n="toArray",s=[e];return t===!0?n="toConsumableArray":t&&(s.push(V.numericLiteral(t)),n="slicedToArray"),V.callExpression(r.addHelper(n),s)},e.prototype.registerDeclaration=function(e){if(e.isLabeledStatement())this.registerBinding("label",e);else if(e.isFunctionDeclaration())this.registerBinding("hoisted",e.get("id"),e);else if(e.isVariableDeclaration())for(var t=e.get("declarations"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,A.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;this.registerBinding(e.node.kind,a)}else if(e.isClassDeclaration())this.registerBinding("let",e);else if(e.isImportDeclaration())for(var o=e.get("specifiers"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("module",f)}else if(e.isExportDeclaration()){var h=e.get("declaration");(h.isClassDeclaration()||h.isFunctionDeclaration()||h.isVariableDeclaration())&&this.registerDeclaration(h)}else this.registerBinding("unknown",e)},e.prototype.buildUndefinedNode=function(){return this.hasBinding("undefined")?V.unaryExpression("void",V.numericLiteral(0),!0):V.identifier("undefined")},e.prototype.registerConstantViolation=function(e){var t=e.getBindingIdentifiers();for(var r in t){var i=this.getBinding(r);i&&i.reassign(e)}},e.prototype.registerBinding=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?t:arguments[2];if(!e)throw new ReferenceError("no `kind`");if(t.isVariableDeclaration())for(var i=t.get("declarations"),n=i,s=Array.isArray(n),a=0,n=s?n:(0,A.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;this.registerBinding(e,u)}else{var l=this.getProgramParent(),p=t.getBindingIdentifiers(!0);for(var c in p)for(var f=p[c],h=Array.isArray(f),d=0,f=h?f:(0,A.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y,m=this.getOwnBinding(c);if(m){if(m.identifier===v)continue;this.checkBlockScopedCollisions(m,e,c,v)}m&&m.path.isFlow()&&(m=null),l.references[c]=!0,this.bindings[c]=new R.default({identifier:v,existing:m,scope:this,path:r,kind:e})}}},e.prototype.addGlobal=function(e){this.globals[e.name]=e},e.prototype.hasUid=function(e){var t=this;do if(t.uids[e])return!0;while(t=t.parent);return!1},e.prototype.hasGlobal=function(e){var t=this;do if(t.globals[e])return!0;while(t=t.parent);return!1},e.prototype.hasReference=function(e){var t=this;do if(t.references[e])return!0;while(t=t.parent);return!1},e.prototype.isPure=function(e,t){if(V.isIdentifier(e)){var r=this.getBinding(e.name);return!!r&&(!t||r.constant)}if(V.isClass(e))return!(e.superClass&&!this.isPure(e.superClass,t))&&this.isPure(e.body,t);if(V.isClassBody(e)){for(var i=e.body,n=Array.isArray(i),s=0,i=n?i:(0,A.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(!this.isPure(o,t))return!1}return!0}if(V.isBinary(e))return this.isPure(e.left,t)&&this.isPure(e.right,t);if(V.isArrayExpression(e)){for(var u=e.elements,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if(!this.isPure(f,t))return!1}return!0}if(V.isObjectExpression(e)){for(var h=e.properties,d=Array.isArray(h),y=0,h=d?h:(0,A.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;if(!this.isPure(m,t))return!1}return!0}return V.isClassMethod(e)?!(e.computed&&!this.isPure(e.key,t))&&("get"!==e.kind&&"set"!==e.kind):V.isClassProperty(e)||V.isObjectProperty(e)?!(e.computed&&!this.isPure(e.key,t))&&this.isPure(e.value,t):V.isUnaryExpression(e)?this.isPure(e.argument,t):V.isPureish(e)},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e){var t=this;do{var r=t.data[e];if(null!=r)return r}while(t=t.parent)},e.prototype.removeData=function(e){var t=this;do{var r=t.data[e];null!=r&&(t.data[e]=null)}while(t=t.parent)},e.prototype.init=function(){this.references||this.crawl()},e.prototype.crawl=function(){Y++,this._crawl(),Y--},e.prototype._crawl=function(){var e=this.path;if(this.references=(0,g.default)(null),this.bindings=(0,g.default)(null),this.globals=(0,g.default)(null),this.uids=(0,g.default)(null),this.data=(0,g.default)(null),e.isLoop())for(var t=V.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,A.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isBlockScoped()&&this.registerBinding(a.node.kind,a)}if(e.isFunctionExpression()&&e.has("id")&&(e.get("id").node[V.NOT_LOCAL_BINDING]||this.registerBinding("local",e.get("id"),e)),e.isClassExpression()&&e.has("id")&&(e.get("id").node[V.NOT_LOCAL_BINDING]||this.registerBinding("local",e)),e.isFunction())for(var o=e.get("params"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("param",f)}e.isCatchClause()&&this.registerBinding("let",e);var h=this.getProgramParent();if(!h.crawling){var d={references:[],constantViolations:[],assignments:[]};this.crawling=!0,e.traverse(K,d),this.crawling=!1;for(var y=d.assignments,v=Array.isArray(y),m=0,y=v?y:(0,A.default)(y);;){var b;if(v){if(m>=y.length)break;b=y[m++]}else{if(m=y.next(),m.done)break;b=m.value}var x=b,E=x.getBindingIdentifiers(),S=void 0;for(var _ in E)x.scope.getBinding(_)||(S=S||x.scope.getProgramParent(),S.addGlobal(E[_]));x.scope.registerConstantViolation(x)}for(var T=d.references,P=Array.isArray(T),w=0,T=P?T:(0,A.default)(T);;){var k;if(P){if(w>=T.length)break;k=T[w++]}else{if(w=T.next(),w.done)break;k=w.value}var C=k,D=C.scope.getBinding(C.node.name);D?D.reference(C):C.scope.getProgramParent().addGlobal(C.node)}for(var O=d.constantViolations,N=Array.isArray(O),I=0,O=N?O:(0,A.default)(O);;){var F;if(N){if(I>=O.length)break;F=O[I++]}else{if(I=O.next(),I.done)break;F=I.value}var B=F;B.scope.registerConstantViolation(B)}}},e.prototype.push=function(e){var t=this.path;t.isBlockStatement()||t.isProgram()||(t=this.getBlockParent().path),t.isSwitchStatement()&&(t=this.getFunctionParent().path),(t.isLoop()||t.isCatchClause()||t.isFunction())&&(V.ensureBlock(t.node),t=t.get("body"));var r=e.unique,i=e.kind||"var",n=null==e._blockHoist?2:e._blockHoist,s="declaration:"+i+":"+n,a=!r&&t.getData(s);if(!a){var o=V.variableDeclaration(i,[]);o._generated=!0,o._blockHoist=n;var u=t.unshiftContainer("body",[o]);a=u[0],r||t.setData(s,a)}var l=V.variableDeclarator(e.id,e.init);a.node.declarations.push(l),this.registerBinding(i,a.get("declarations").pop())},e.prototype.getProgramParent=function(){var e=this;do if(e.path.isProgram())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getFunctionParent=function(){var e=this;do if(e.path.isFunctionParent())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getBlockParent=function(){var e=this;do if(e.path.isBlockParent())return e;while(e=e.parent);throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...")},e.prototype.getAllBindings=function(){var e=(0,g.default)(null),t=this;do(0,N.default)(e,t.bindings),t=t.parent;while(t);return e},e.prototype.getAllBindingsOfKind=function(){for(var e=(0,g.default)(null),t=arguments,r=Array.isArray(t),i=0,t=r?t:(0,A.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=this;do{for(var o in a.bindings){var u=a.bindings[o];u.kind===s&&(e[o]=u)}a=a.parent}while(a)}return e},e.prototype.bindingIdentifierEquals=function(e,t){return this.getBindingIdentifier(e)===t},e.prototype.warnOnFlowBinding=function(e){return 0===Y&&e&&e.path.isFlow()&&console.warn("\n You or one of the Babel plugins you are using are using Flow declarations as bindings.\n Support for this will be removed in version 6.8. To find out the caller, grep for this\n message and change it to a `console.trace()`.\n "),e},e.prototype.getBinding=function(e){var t=this;do{var r=t.getOwnBinding(e);if(r)return this.warnOnFlowBinding(r)}while(t=t.parent)},e.prototype.getOwnBinding=function(e){return this.warnOnFlowBinding(this.bindings[e])},e.prototype.getBindingIdentifier=function(e){var t=this.getBinding(e);return t&&t.identifier},e.prototype.getOwnBindingIdentifier=function(e){var t=this.bindings[e];return t&&t.identifier},e.prototype.hasOwnBinding=function(e){return!!this.getOwnBinding(e)},e.prototype.hasBinding=function(t,r){return!!t&&(!!this.hasOwnBinding(t)||(!!this.parentHasBinding(t,r)||(!!this.hasUid(t)||(!(r||!(0,_.default)(e.globals,t))||!(r||!(0,_.default)(e.contextVariables,t))))))},e.prototype.parentHasBinding=function(e,t){return this.parent&&this.parent.hasBinding(e,t)},e.prototype.moveBindingTo=function(e,t){var r=this.getBinding(e);r&&(r.scope.removeOwnBinding(e),r.scope=t,t.bindings[e]=r)},e.prototype.removeOwnBinding=function(e){delete this.bindings[e]},e.prototype.removeBinding=function(e){var t=this.getBinding(e);t&&t.scope.removeOwnBinding(e);var r=this;do r.uids[e]&&(r.uids[e]=!1);while(r=r.parent)},e}();G.globals=(0,v.default)(M.default.builtin),G.contextVariables=["arguments","undefined","Infinity","NaN"],t.default=G,e.exports=t.default},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(e){if(e._exploded)return e;e._exploded=!0;for(var t in e)if(!v(t)){var r=t.split("|");if(1!==r.length){var i=e[t];delete e[t];for(var n=r,s=Array.isArray(n),a=0,n=s?n:(0,S.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;e[u]=i}}}l(e),delete e.__esModule,h(e),d(e);for(var p=(0,E.default)(e),c=Array.isArray(p),f=0,p=c?p:(0,S.default)(p);;){var g;if(c){if(f>=p.length)break;g=p[f++]}else{if(f=p.next(),f.done)break;g=f.value}var b=g;if(!v(b)){var x=T[b];if(x){var A=e[b];for(var _ in A)A[_]=y(x,A[_]);if(delete e[b],x.types)for(var P=x.types,w=Array.isArray(P),k=0,P=w?P:(0,S.default)(P);;){var D;if(w){if(k>=P.length)break;D=P[k++]}else{
+if(k=P.next(),k.done)break;D=k.value}var N=D;e[N]?m(e[N],A):e[N]=A}else m(e,A)}}}for(var I in e)if(!v(I)){var F=e[I],B=C.FLIPPED_ALIAS_KEYS[I],R=C.DEPRECATED_KEYS[I];if(R&&(console.trace("Visitor defined for "+I+" but it has been renamed to "+R),B=[R]),B){delete e[I];for(var L=B,M=Array.isArray(L),j=0,L=M?L:(0,S.default)(L);;){var V;if(M){if(j>=L.length)break;V=L[j++]}else{if(j=L.next(),j.done)break;V=j.value}var U=V,Y=e[U];Y?m(Y,F):e[U]=(0,O.default)(F)}}}for(var K in e)v(K)||d(e[K]);return e}function l(e){if(!e._verified){if("function"==typeof e)throw new Error(w.get("traverseVerifyRootFunction"));for(var t in e)if("enter"!==t&&"exit"!==t||p(t,e[t]),!v(t)){if(C.TYPES.indexOf(t)<0)throw new Error(w.get("traverseVerifyNodeType",t));var r=e[t];if("object"===("undefined"==typeof r?"undefined":(0,b.default)(r)))for(var i in r){if("enter"!==i&&"exit"!==i)throw new Error(w.get("traverseVerifyVisitorProperty",t,i));p(t+"."+i,r[i])}}e._verified=!0}}function p(e,t){for(var r=[].concat(t),i=r,n=Array.isArray(i),s=0,i=n?i:(0,S.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if("function"!=typeof o)throw new TypeError("Non-function found defined in "+e+" with type "+("undefined"==typeof o?"undefined":(0,b.default)(o)))}}function c(e){for(var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],r={},i=0;i<e.length;i++){var n=e[i],s=t[i];u(n);for(var a in n){var o=n[a];s&&(o=f(o,s));var l=r[a]=r[a]||{};m(l,o)}}return r}function f(e,t){var r={};for(var i in e){var n=e[i];Array.isArray(n)&&(n=n.map(function(e){var r=function(r){return e.call(t,r,t)};return r.toString=function(){return e.toString()},r}),r[i]=n)}return r}function h(e){for(var t in e)if(!v(t)){var r=e[t];"function"==typeof r&&(e[t]={enter:r})}}function d(e){e.enter&&!Array.isArray(e.enter)&&(e.enter=[e.enter]),e.exit&&!Array.isArray(e.exit)&&(e.exit=[e.exit])}function y(e,t){var r=function(r){if(e.checkPath(r))return t.apply(this,arguments)};return r.toString=function(){return t.toString()},r}function v(e){return"_"===e[0]||("enter"===e||"exit"===e||"shouldSkip"===e||("blacklist"===e||"noScope"===e||"skipKeys"===e))}function m(e,t){for(var r in t)e[r]=[].concat(e[r]||[],t[r])}t.__esModule=!0;var g=r(88),b=o(g),x=r(616),E=o(x),A=r(6),S=o(A);t.explode=u,t.verify=l,t.merge=c;var _=r(i),T=a(_),P=r(n),w=a(P),k=r(9),C=a(k),D=r(s),O=o(D)},function(e,t,r,i){var n=r(i),s=n.Reflect;e.exports=s},function(e,t,r,i){function n(e,t,r,i){return void 0===e||s(e,a[r])&&!o.call(i,r)?t:e}var s=r(i),a=Object.prototype,o=a.hasOwnProperty;e.exports=n},function(e,t,r,i,n){function s(e){e=null==e?e:Object(e);var t=[];for(var r in e)t.push(r);return t}var a=r(i),o=r(n),u=Object.prototype,l=a?a.enumerate:void 0,p=u.propertyIsEnumerable;l&&!p.call({valueOf:1},"valueOf")&&(s=function(e){return o(l(e))}),e.exports=s},function(e,t,r,i){function n(e,t){return s(t,function(t){return e[t]})}var s=r(i);e.exports=n},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s),l=o(function(e,t,r,i){a(t,u(t),e,i)});e.exports=l},function(e,t,r,i){function n(e){return s(e,!1,!0)}var s=r(i);e.exports=n},function(e,t,r,i,n,s,a){var o=r(i),u=r(n),l=r(s),p=r(a),c=p(function(e){return e.push(void 0,u),o(l,void 0,e)});e.exports=c},function(e,t,r,i,n,s,a,o){function u(e,t,r,i){e=p(e)?e:h(e),r=r&&!i?f(r):0;var n=e.length;return r<0&&(r=d(n+r,0)),c(e)?r<=n&&e.indexOf(t,r)>-1:!!n&&l(e,t,r)>-1}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=Math.max;e.exports=u},function(e,t,r,i,n,s,a){function o(e){for(var t=-1,r=c(e),i=u(e),n=i.length,s=l(e),a=!!s,o=s||[],f=o.length;++t<n;){var d=i[t];a&&("length"==d||p(d,f))||"constructor"==d&&(r||!h.call(e,d))||o.push(d)}return o}var u=r(i),l=r(n),p=r(s),c=r(a),f=Object.prototype,h=f.hasOwnProperty;e.exports=o},function(e,t,r,i,n,s,a){function o(e,t,r){return t=(r?l(e,t,r):void 0===t)?1:p(t),u(c(e),t)}var u=r(i),l=r(n),p=r(s),c=r(a);e.exports=o},function(e,t,r,i,n){function s(e){return e?a(e,o(e)):[]}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s);t.default=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),(0,a.default)(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}()},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=r(i),u=a(o),l=r(n),p=a(l),c=r(s),f=a(c);t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+("undefined"==typeof t?"undefined":(0,f.default)(t)));e.prototype=(0,p.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(u.default?(0,u.default)(e,t):e.__proto__=t)}},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var s=r(i),a=n(s);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==("undefined"==typeof t?"undefined":(0,a.default)(t))&&"function"!=typeof t?e:t}},function(e,t,r,i,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var a=r(i),o=s(a),u=r(n),l=s(u),p="function"==typeof l.default&&"symbol"==typeof o.default?function(e){return typeof e}:function(e){return e&&"function"==typeof l.default&&e.constructor===l.default?"symbol":typeof e};t.default="function"==typeof l.default&&"symbol"===p(o.default)?function(e){return"undefined"==typeof e?"undefined":p(e)}:function(e){return e&&"function"==typeof l.default&&e.constructor===l.default?"symbol":"undefined"==typeof e?"undefined":p(e)}},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.NOT_LOCAL_BINDING=t.BLOCK_SCOPED_SYMBOL=t.INHERIT_KEYS=t.UNARY_OPERATORS=t.STRING_UNARY_OPERATORS=t.NUMBER_UNARY_OPERATORS=t.BOOLEAN_UNARY_OPERATORS=t.BINARY_OPERATORS=t.NUMBER_BINARY_OPERATORS=t.BOOLEAN_BINARY_OPERATORS=t.COMPARISON_BINARY_OPERATORS=t.EQUALITY_BINARY_OPERATORS=t.BOOLEAN_NUMBER_BINARY_OPERATORS=t.UPDATE_OPERATORS=t.LOGICAL_OPERATORS=t.COMMENT_KEYS=t.FOR_INIT_KEYS=t.FLATTENABLE_KEYS=t.STATEMENT_OR_BLOCK_KEYS=void 0;var s=r(i),a=n(s),o=(t.STATEMENT_OR_BLOCK_KEYS=["consequent","body","alternate"],t.FLATTENABLE_KEYS=["body","expressions"],t.FOR_INIT_KEYS=["left","init"],t.COMMENT_KEYS=["leadingComments","trailingComments","innerComments"],t.LOGICAL_OPERATORS=["||","&&"],t.UPDATE_OPERATORS=["++","--"],t.BOOLEAN_NUMBER_BINARY_OPERATORS=[">","<",">=","<="]),u=t.EQUALITY_BINARY_OPERATORS=["==","===","!=","!=="],l=t.COMPARISON_BINARY_OPERATORS=[].concat(u,["in","instanceof"]),p=t.BOOLEAN_BINARY_OPERATORS=[].concat(l,o),c=t.NUMBER_BINARY_OPERATORS=["-","/","%","*","**","&","|",">>",">>>","<<","^"],f=(t.BINARY_OPERATORS=["+"].concat(c,p),t.BOOLEAN_UNARY_OPERATORS=["delete","!"]),h=t.NUMBER_UNARY_OPERATORS=["+","-","++","--","~"],d=t.STRING_UNARY_OPERATORS=["typeof"];t.UNARY_OPERATORS=["void"].concat(f,h,d),t.INHERIT_KEYS={optional:["typeAnnotation","typeParameters","returnType"],force:["start","loc","end"]},t.BLOCK_SCOPED_SYMBOL=(0,a.default)("var used to be block scoped"),t.NOT_LOCAL_BINDING=(0,a.default)("should not be considered a local binding")},function(e,t,r,i,n,s,a,o,u,l,p,c){"use strict";function f(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function h(e){return e&&e.__esModule?e:{default:e}}function d(e){var t=arguments.length<=1||void 0===arguments[1]?e.key||e.property:arguments[1];return e.computed||M.isIdentifier(t)&&(t=M.stringLiteral(t.name)),t}function y(e,t){function r(e){for(var s=!1,a=[],o=e,u=Array.isArray(o),l=0,o=u?o:(0,k.default)(o);;){var p;if(u){if(l>=o.length)break;p=o[l++]}else{if(l=o.next(),l.done)break;p=l.value}var c=p;if(M.isExpression(c))a.push(c);else if(M.isExpressionStatement(c))a.push(c.expression);else{if(M.isVariableDeclaration(c)){if("var"!==c.kind)return n=!0;for(var f=c.declarations,h=Array.isArray(f),d=0,f=h?f:(0,k.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y,m=M.getBindingIdentifiers(v);for(var g in m)i.push({kind:c.kind,id:m[g]});v.init&&a.push(M.assignmentExpression("=",v.id,v.init))}s=!0;continue}if(M.isIfStatement(c)){var b=c.consequent?r([c.consequent]):t.buildUndefinedNode(),x=c.alternate?r([c.alternate]):t.buildUndefinedNode();if(!b||!x)return n=!0;a.push(M.conditionalExpression(c.test,b,x))}else{if(!M.isBlockStatement(c)){if(M.isEmptyStatement(c)){s=!0;continue}return n=!0}a.push(r(c.body))}}s=!1}return(s||0===a.length)&&a.push(t.buildUndefinedNode()),1===a.length?a[0]:M.sequenceExpression(a)}if(e&&e.length){var i=[],n=!1,s=r(e);if(!n){for(var a=0;a<i.length;a++)t.push(i[a]);return s}}}function v(e){var t=arguments.length<=1||void 0===arguments[1]?e.key:arguments[1];j||(j=r(c).default);var i=void 0;return"method"===e.kind?v.increment()+"":(i=M.isIdentifier(t)?t.name:M.isStringLiteral(t)?(0,P.default)(t.value):(0,P.default)(j.removeProperties(M.cloneDeep(t))),e.computed&&(i="["+i+"]"),e.static&&(i="static:"+i),i)}function m(e){return e+="",e=e.replace(/[^a-zA-Z0-9$_]/g,"-"),e=e.replace(/^[-0-9]+/,""),e=e.replace(/[-\s]+(.)?/g,function(e,t){return t?t.toUpperCase():""}),M.isValidIdentifier(e)||(e="_"+e),e||"_"}function g(e){return e=m(e),"eval"!==e&&"arguments"!==e||(e="_"+e),e}function b(e,t){if(M.isStatement(e))return e;var r=!1,i=void 0;if(M.isClass(e))r=!0,i="ClassDeclaration";else if(M.isFunction(e))r=!0,i="FunctionDeclaration";else if(M.isAssignmentExpression(e))return M.expressionStatement(e);if(r&&!e.id&&(i=!1),!i){if(t)return!1;throw new Error("cannot turn "+e.type+" to a statement")}return e.type=i,e}function x(e){if(M.isExpressionStatement(e)&&(e=e.expression),M.isClass(e)?e.type="ClassExpression":M.isFunction(e)&&(e.type="FunctionExpression"),M.isExpression(e))return e;throw new Error("cannot turn "+e.type+" to an expression")}function E(e,t){return M.isBlockStatement(e)?e:(M.isEmptyStatement(e)&&(e=[]),Array.isArray(e)||(M.isStatement(e)||(e=M.isFunction(t)?M.returnStatement(e):M.expressionStatement(e)),e=[e]),M.blockStatement(e))}function A(e){if(void 0===e)return M.identifier("undefined");if(e===!0||e===!1)return M.booleanLiteral(e);if(null===e)return M.nullLiteral();if((0,R.default)(e))return M.stringLiteral(e);if((0,N.default)(e))return M.numericLiteral(e);if((0,F.default)(e)){var t=e.source,r=e.toString().match(/\/([a-z]+|)$/)[1];return M.regExpLiteral(t,r)}if(Array.isArray(e))return M.arrayExpression(e.map(M.valueToNode));if((0,D.default)(e)){var i=[];for(var n in e){var s=void 0;s=M.isValidIdentifier(n)?M.identifier(n):M.stringLiteral(n),i.push(M.objectProperty(s,M.valueToNode(e[n])))}return M.objectExpression(i)}throw new Error("don't know how to turn this value into a node")}t.__esModule=!0;var S=r(i),_=h(S),T=r(n),P=h(T),w=r(s),k=h(w);t.toComputedKey=d,t.toSequenceExpression=y,t.toKeyAlias=v,t.toIdentifier=m,t.toBindingIdentifierName=g,t.toStatement=b,t.toExpression=x,t.toBlock=E,t.valueToNode=A;var C=r(a),D=h(C),O=r(o),N=h(O),I=r(u),F=h(I),B=r(l),R=h(B),L=r(p),M=f(L),j=void 0;v.uid=0,v.increment=function(){return v.uid>=_.default?v.uid=0:v.uid++}},function(e,t,r,i,n,s){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}var u=r(i),l=o(u),p=r(n),c=r(s),f=a(c);(0,f.default)("ArrayExpression",{fields:{elements:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeOrValueType)("null","Expression","SpreadElement"))),default:[]}},visitor:["elements"],aliases:["Expression"]}),(0,f.default)("AssignmentExpression",{fields:{operator:{validate:(0,c.assertValueType)("string")},left:{validate:(0,c.assertNodeType)("LVal")},right:{validate:(0,c.assertNodeType)("Expression")}},builder:["operator","left","right"],visitor:["left","right"],aliases:["Expression"]}),(0,f.default)("BinaryExpression",{builder:["operator","left","right"],fields:{operator:{validate:c.assertOneOf.apply(void 0,p.BINARY_OPERATORS)},left:{validate:(0,c.assertNodeType)("Expression")},right:{validate:(0,c.assertNodeType)("Expression")}},visitor:["left","right"],aliases:["Binary","Expression"]}),(0,f.default)("Directive",{visitor:["value"],fields:{value:{validate:(0,c.assertNodeType)("DirectiveLiteral")}}}),(0,f.default)("DirectiveLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("string")}}}),(0,f.default)("BlockStatement",{builder:["body","directives"],visitor:["directives","body"],fields:{directives:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Directive"))),default:[]},body:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","Statement"]}),(0,f.default)("BreakStatement",{visitor:["label"],fields:{label:{validate:(0,c.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,f.default)("CallExpression",{visitor:["callee","arguments"],fields:{callee:{validate:(0,c.assertNodeType)("Expression")},arguments:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression","SpreadElement")))}},aliases:["Expression"]}),(0,f.default)("CatchClause",{visitor:["param","body"],fields:{param:{validate:(0,c.assertNodeType)("Identifier")},body:{validate:(0,c.assertNodeType)("BlockStatement")}},aliases:["Scopable"]}),(0,f.default)("ConditionalExpression",{visitor:["test","consequent","alternate"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},consequent:{validate:(0,c.assertNodeType)("Expression")},alternate:{validate:(0,c.assertNodeType)("Expression")}},aliases:["Expression","Conditional"]}),(0,f.default)("ContinueStatement",{visitor:["label"],fields:{label:{validate:(0,c.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,f.default)("DebuggerStatement",{aliases:["Statement"]}),(0,f.default)("DoWhileStatement",{visitor:["test","body"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("Statement")}},aliases:["Statement","BlockParent","Loop","While","Scopable"]}),(0,f.default)("EmptyStatement",{aliases:["Statement"]}),(0,f.default)("ExpressionStatement",{visitor:["expression"],fields:{expression:{validate:(0,c.assertNodeType)("Expression")}},aliases:["Statement","ExpressionWrapper"]}),(0,f.default)("File",{builder:["program","comments","tokens"],visitor:["program"],fields:{program:{validate:(0,c.assertNodeType)("Program")}}}),(0,f.default)("ForInStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,c.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("ForStatement",{visitor:["init","test","update","body"],aliases:["Scopable","Statement","For","BlockParent","Loop"],fields:{init:{validate:(0,c.assertNodeType)("VariableDeclaration","Expression"),optional:!0},test:{validate:(0,c.assertNodeType)("Expression"),optional:!0},update:{validate:(0,c.assertNodeType)("Expression"),optional:!0},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("FunctionDeclaration",{builder:["id","params","body","generator","async"],visitor:["id","params","body","returnType","typeParameters"],fields:{id:{validate:(0,c.assertNodeType)("Identifier")},params:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("LVal")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}},aliases:["Scopable","Function","BlockParent","FunctionParent","Statement","Pureish","Declaration"]}),(0,f.default)("FunctionExpression",{inherits:"FunctionDeclaration",aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{id:{validate:(0,c.assertNodeType)("Identifier"),optional:!0},params:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("LVal")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}}}),(0,f.default)("Identifier",{builder:["name"],visitor:["typeAnnotation"],aliases:["Expression","LVal"],fields:{name:{validate:function(e,t,r){!l.isValidIdentifier(r)}},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator")))}}}),(0,f.default)("IfStatement",{visitor:["test","consequent","alternate"],aliases:["Statement","Conditional"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},consequent:{validate:(0,c.assertNodeType)("Statement")},alternate:{optional:!0,validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("LabeledStatement",{visitor:["label","body"],aliases:["Statement"],fields:{label:{validate:(0,c.assertNodeType)("Identifier")},body:{validate:(0,c.assertNodeType)("Statement")}}}),(0,f.default)("StringLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("string")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("NumericLiteral",{builder:["value"],deprecatedAlias:"NumberLiteral",fields:{value:{validate:(0,c.assertValueType)("number")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("NullLiteral",{aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("BooleanLiteral",{builder:["value"],fields:{value:{validate:(0,c.assertValueType)("boolean")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,f.default)("RegExpLiteral",{builder:["pattern","flags"],deprecatedAlias:"RegexLiteral",aliases:["Expression","Literal"],fields:{pattern:{validate:(0,c.assertValueType)("string")},flags:{validate:(0,c.assertValueType)("string"),default:""}}}),(0,f.default)("LogicalExpression",{builder:["operator","left","right"],visitor:["left","right"],aliases:["Binary","Expression"],fields:{operator:{validate:c.assertOneOf.apply(void 0,p.LOGICAL_OPERATORS)},left:{validate:(0,c.assertNodeType)("Expression")},right:{validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("MemberExpression",{builder:["object","property","computed"],visitor:["object","property"],aliases:["Expression","LVal"],fields:{object:{validate:(0,c.assertNodeType)("Expression")},property:{validate:function(e,t,r){var i=e.computed?"Expression":"Identifier";(0,c.assertNodeType)(i)(e,t,r)}},computed:{default:!1}}}),(0,f.default)("NewExpression",{visitor:["callee","arguments"],aliases:["Expression"],fields:{callee:{validate:(0,c.assertNodeType)("Expression")},arguments:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression","SpreadElement")))}}}),(0,f.default)("Program",{visitor:["directives","body"],builder:["body","directives"],fields:{directives:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Directive"))),default:[]},body:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","FunctionParent"]}),(0,f.default)("ObjectExpression",{visitor:["properties"],aliases:["Expression"],fields:{properties:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("ObjectMethod","ObjectProperty","SpreadProperty")))}}}),(0,f.default)("ObjectMethod",{builder:["kind","key","params","body","computed"],fields:{kind:{validate:(0,c.chain)((0,c.assertValueType)("string"),(0,c.assertOneOf)("method","get","set")),default:"method"},computed:{validate:(0,c.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];c.assertNodeType.apply(void 0,i)(e,t,r)}},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator")))},body:{validate:(0,c.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,c.assertValueType)("boolean")},async:{default:!1,validate:(0,c.assertValueType)("boolean")}},visitor:["key","params","body","decorators","returnType","typeParameters"],aliases:["UserWhitespacable","Function","Scopable","BlockParent","FunctionParent","Method","ObjectMember"]}),(0,f.default)("ObjectProperty",{builder:["key","value","computed","shorthand","decorators"],fields:{computed:{validate:(0,c.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];c.assertNodeType.apply(void 0,i)(e,t,r)}},value:{validate:(0,c.assertNodeType)("Expression")},shorthand:{validate:(0,c.assertValueType)("boolean"),default:!1},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator"))),optional:!0}},visitor:["key","value","decorators"],aliases:["UserWhitespacable","Property","ObjectMember"]}),(0,f.default)("RestElement",{visitor:["argument","typeAnnotation"],aliases:["LVal"],fields:{argument:{validate:(0,c.assertNodeType)("LVal")},decorators:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Decorator")))}}}),(0,f.default)("ReturnStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,c.assertNodeType)("Expression"),optional:!0}}}),(0,f.default)("SequenceExpression",{visitor:["expressions"],fields:{expressions:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Expression")))}},aliases:["Expression"]}),(0,f.default)("SwitchCase",{visitor:["test","consequent"],fields:{test:{validate:(0,c.assertNodeType)("Expression"),optional:!0},consequent:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("Statement")))}}}),(0,f.default)("SwitchStatement",{visitor:["discriminant","cases"],aliases:["Statement","BlockParent","Scopable"],fields:{discriminant:{validate:(0,c.assertNodeType)("Expression")},cases:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("SwitchCase")))}}}),(0,f.default)("ThisExpression",{aliases:["Expression"]}),(0,f.default)("ThrowStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("TryStatement",{visitor:["block","handler","finalizer"],aliases:["Statement"],fields:{body:{validate:(0,c.assertNodeType)("BlockStatement")},handler:{optional:!0,handler:(0,c.assertNodeType)("BlockStatement")},finalizer:{optional:!0,validate:(0,c.assertNodeType)("BlockStatement")}}}),(0,f.default)("UnaryExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!0},argument:{validate:(0,c.assertNodeType)("Expression")},operator:{validate:c.assertOneOf.apply(void 0,p.UNARY_OPERATORS)}},visitor:["argument"],aliases:["UnaryLike","Expression"]}),(0,f.default)("UpdateExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!1},argument:{validate:(0,c.assertNodeType)("Expression")},operator:{validate:c.assertOneOf.apply(void 0,p.UPDATE_OPERATORS)}},visitor:["argument"],aliases:["Expression"]}),(0,f.default)("VariableDeclaration",{builder:["kind","declarations"],visitor:["declarations"],aliases:["Statement","Declaration"],fields:{kind:{validate:(0,c.chain)((0,c.assertValueType)("string"),(0,c.assertOneOf)("var","let","const"))},declarations:{validate:(0,c.chain)((0,c.assertValueType)("array"),(0,c.assertEach)((0,c.assertNodeType)("VariableDeclarator")))}}}),(0,f.default)("VariableDeclarator",{visitor:["id","init"],fields:{id:{validate:(0,c.assertNodeType)("LVal")},init:{optional:!0,validate:(0,c.assertNodeType)("Expression")}}}),(0,f.default)("WhileStatement",{visitor:["test","body"],aliases:["Statement","BlockParent","Loop","While","Scopable"],fields:{test:{validate:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("BlockStatement","Statement")}}}),(0,f.default)("WithStatement",{visitor:["object","body"],aliases:["Statement"],fields:{object:{object:(0,c.assertNodeType)("Expression")},body:{validate:(0,c.assertNodeType)("BlockStatement","Statement")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AssignmentPattern",{visitor:["left","right"],aliases:["Pattern","LVal"],fields:{left:{validate:(0,s.assertNodeType)("Identifier")},right:{validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrayPattern",{visitor:["elements","typeAnnotation"],aliases:["Pattern","LVal"],fields:{elements:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression")))},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrowFunctionExpression",{builder:["params","body","async"],visitor:["params","body","returnType"],aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement","Expression")},async:{validate:(0,s.assertValueType)("boolean"),default:!1}}}),(0,a.default)("ClassBody",{visitor:["body"],fields:{body:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ClassMethod","ClassProperty")))}}}),(0,a.default)("ClassDeclaration",{builder:["id","superClass","body","decorators"],visitor:["id","body","superClass","mixins","typeParameters","superTypeParameters","implements","decorators"],aliases:["Scopable","Class","Statement","Declaration","Pureish"],fields:{id:{validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ClassExpression",{inherits:"ClassDeclaration",aliases:["Scopable","Class","Expression","Pureish"],fields:{id:{optional:!0,validate:(0,s.assertNodeType)("Identifier")},body:{validate:(0,s.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,s.assertNodeType)("Expression")},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("ExportAllDeclaration",{visitor:["source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{source:{validate:(0,s.assertNodeType)("StringLiteral")}}}),(0,a.default)("ExportDefaultDeclaration",{visitor:["declaration"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,s.assertNodeType)("FunctionDeclaration","ClassDeclaration","Expression")}}}),(0,a.default)("ExportNamedDeclaration",{visitor:["declaration","specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,s.assertNodeType)("Declaration"),optional:!0},specifiers:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ExportSpecifier")))},source:{validate:(0,s.assertNodeType)("StringLiteral"),optional:!0}}}),(0,a.default)("ExportSpecifier",{visitor:["local","exported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")},exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ForOfStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,s.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,s.assertNodeType)("Expression")},body:{validate:(0,s.assertNodeType)("Statement")}}}),(0,a.default)("ImportDeclaration",{visitor:["specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration"],fields:{specifiers:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier")))},source:{validate:(0,s.assertNodeType)("StringLiteral")}}}),(0,a.default)("ImportDefaultSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ImportNamespaceSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ImportSpecifier",{visitor:["local","imported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,s.assertNodeType)("Identifier")},imported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("MetaProperty",{visitor:["meta","property"],aliases:["Expression"],fields:{meta:{validate:(0,s.assertValueType)("string")},property:{validate:(0,s.assertValueType)("string")}}}),(0,a.default)("ClassMethod",{aliases:["Function","Scopable","BlockParent","FunctionParent","Method"],builder:["kind","key","params","body","computed","static"],visitor:["key","params","body","decorators","returnType","typeParameters"],fields:{kind:{validate:(0,s.chain)((0,s.assertValueType)("string"),(0,s.assertOneOf)("get","set","method","constructor")),default:"method"},computed:{default:!1,validate:(0,s.assertValueType)("boolean")},static:{default:!1,validate:(0,s.assertValueType)("boolean")},key:{validate:function(e,t,r){var i=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];s.assertNodeType.apply(void 0,i)(e,t,r)}},params:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("LVal")))},body:{validate:(0,s.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,s.assertValueType)("boolean")},async:{default:!1,validate:(0,s.assertValueType)("boolean")}}}),(0,a.default)("ObjectPattern",{visitor:["properties","typeAnnotation"],aliases:["Pattern","LVal"],fields:{properties:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("RestProperty","Property")))},decorators:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Decorator")))}}}),(0,a.default)("SpreadElement",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("Super",{aliases:["Expression"]}),(0,a.default)("TaggedTemplateExpression",{visitor:["tag","quasi"],aliases:["Expression"],fields:{tag:{validate:(0,s.assertNodeType)("Expression")},quasi:{validate:(0,s.assertNodeType)("TemplateLiteral")}}}),(0,a.default)("TemplateElement",{builder:["value","tail"],fields:{value:{},tail:{validate:(0,s.assertValueType)("boolean"),default:!1}}}),(0,a.default)("TemplateLiteral",{visitor:["quasis","expressions"],aliases:["Expression","Literal"],fields:{quasis:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("TemplateElement")))},expressions:{validate:(0,s.chain)((0,s.assertValueType)("array"),(0,s.assertEach)((0,s.assertNodeType)("Expression")))}}}),(0,a.default)("YieldExpression",{builder:["argument","delegate"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{delegate:{validate:(0,s.assertValueType)("boolean"),
+default:!1},argument:{optional:!0,validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AwaitExpression",{builder:["argument"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("BindExpression",{visitor:["object","callee"],aliases:["Expression"],fields:{}}),(0,a.default)("Decorator",{visitor:["expression"],fields:{expression:{validate:(0,s.assertNodeType)("Expression")}}}),(0,a.default)("DoExpression",{visitor:["body"],aliases:["Expression"],fields:{body:{validate:(0,s.assertNodeType)("BlockStatement")}}}),(0,a.default)("ExportDefaultSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("ExportNamespaceSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,s.assertNodeType)("Identifier")}}}),(0,a.default)("RestProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("LVal")}}}),(0,a.default)("SpreadProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,s.assertNodeType)("Expression")}}})},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var s=r(i),a=n(s);(0,a.default)("AnyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ArrayTypeAnnotation",{visitor:["elementType"],aliases:["Flow"],fields:{}}),(0,a.default)("BooleanTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("BooleanLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NullLiteralTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ClassImplements",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("ClassProperty",{visitor:["key","value","typeAnnotation","decorators"],aliases:["Flow","Property"],fields:{}}),(0,a.default)("DeclareClass",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareFunction",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareInterface",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModule",{visitor:["id","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareTypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareVariable",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("ExistentialTypeParam",{aliases:["Flow"]}),(0,a.default)("FunctionTypeAnnotation",{visitor:["typeParameters","params","rest","returnType"],aliases:["Flow"],fields:{}}),(0,a.default)("FunctionTypeParam",{visitor:["name","typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("GenericTypeAnnotation",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceExtends",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceDeclaration",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("IntersectionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("MixedTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,a.default)("NullableTypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("NumericLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NumberTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("StringLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("StringTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ThisTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("TupleTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeofTypeAnnotation",{visitor:["argument"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("TypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeCastExpression",{visitor:["expression","typeAnnotation"],aliases:["Flow","ExpressionWrapper","Expression"],fields:{}}),(0,a.default)("TypeParameter",{visitor:["bound"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterDeclaration",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterInstantiation",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeAnnotation",{visitor:["properties","indexers","callProperties"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeCallProperty",{visitor:["value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeIndexer",{visitor:["id","key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeProperty",{visitor:["key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("QualifiedTypeIdentifier",{visitor:["id","qualification"],aliases:["Flow"],fields:{}}),(0,a.default)("UnionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("VoidTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}})},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){var t=a(e);return 1===t.length?t[0]:l.unionTypeAnnotation(t)}function a(e){for(var t={},r={},i=[],n=[],s=0;s<e.length;s++){var o=e[s];if(o&&!(n.indexOf(o)>=0)){if(l.isAnyTypeAnnotation(o))return[o];if(l.isFlowBaseAnnotation(o))r[o.type]=o;else if(l.isUnionTypeAnnotation(o))i.indexOf(o.types)<0&&(e=e.concat(o.types),i.push(o.types));else if(l.isGenericTypeAnnotation(o)){var u=o.id.name;if(t[u]){var p=t[u];p.typeParameters?o.typeParameters&&(p.typeParameters.params=a(p.typeParameters.params.concat(o.typeParameters.params))):p=o.typeParameters}else t[u]=o}else n.push(o)}}for(var c in r)n.push(r[c]);for(var f in t)n.push(t[f]);return n}function o(e){if("string"===e)return l.stringTypeAnnotation();if("number"===e)return l.numberTypeAnnotation();if("undefined"===e)return l.voidTypeAnnotation();if("boolean"===e)return l.booleanTypeAnnotation();if("function"===e)return l.genericTypeAnnotation(l.identifier("Function"));if("object"===e)return l.genericTypeAnnotation(l.identifier("Object"));if("symbol"===e)return l.genericTypeAnnotation(l.identifier("Symbol"));throw new Error("Invalid typeof value")}t.__esModule=!0,t.createUnionTypeAnnotation=s,t.removeTypeDuplicates=a,t.createTypeAnnotationBasedOnTypeof=o;var u=r(i),l=n(u)},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g,b){"use strict";function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function E(e){return e&&e.__esModule?e:{default:e}}function A(e){var t=he["is"+e];t||(t=he["is"+e]=function(t,r){return he.is(e,t,r)}),he["assert"+e]=function(r,i){if(i=i||{},!t(r,i))throw new Error("Expected type "+(0,X.default)(e)+" with option "+(0,X.default)(i))}}function S(e,t,r){if(!t)return!1;var i=_(t.type,e);return!!i&&("undefined"==typeof r||he.shallowEqual(t,r))}function _(e,t){if(e===t)return!0;if(he.ALIAS_KEYS[t])return!1;var r=he.FLIPPED_ALIAS_KEYS[t];if(r){if(r[0]===e)return!0;for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e===o)return!0}}return!1}function T(e,t,r){if(e){var i=he.NODE_FIELDS[e.type];if(i){var n=i[t];n&&n.validate&&(n.optional&&null==r||n.validate(e,t,r))}}}function P(e,t){for(var r=(0,q.default)(t),i=r,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(e[o]!==t[o])return!1}return!0}function w(e,t,r){return e.object=he.memberExpression(e.object,e.property,e.computed),e.property=t,e.computed=!!r,e}function k(e,t){return e.object=he.memberExpression(t,e.object),e}function C(e){var t=arguments.length<=1||void 0===arguments[1]?"body":arguments[1];return e[t]=he.toBlock(e[t],e)}function D(e){var t={};for(var r in e)"_"!==r[0]&&(t[r]=e[r]);return t}function O(e){var t=D(e);return delete t.loc,t}function N(e){var t={};for(var r in e)if("_"!==r[0]){var i=e[r];i&&(i.type?i=he.cloneDeep(i):Array.isArray(i)&&(i=i.map(he.cloneDeep))),t[r]=i}return t}function I(e,t){var r=e.split(".");return function(e){if(!he.isMemberExpression(e))return!1;for(var i=[e],n=0;i.length;){var s=i.shift();if(t&&n===r.length)return!0;if(he.isIdentifier(s)){if(r[n]!==s.name)return!1}else{if(!he.isStringLiteral(s)){if(he.isMemberExpression(s)){if(s.computed&&!he.isStringLiteral(s.property))return!1;i.push(s.object),i.push(s.property);continue}return!1}if(r[n]!==s.value)return!1}if(++n>r.length)return!1}return!0}}function F(e){for(var t=he.COMMENT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,W.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;delete e[s]}return e}function B(e,t){return R(e,t),L(e,t),M(e,t),e}function R(e,t){j("trailingComments",e,t)}function L(e,t){j("leadingComments",e,t)}function M(e,t){j("innerComments",e,t)}function j(e,t,r){t&&r&&(t[e]=(0,le.default)((0,ie.default)([].concat(t[e],r[e]))))}function V(e,t){if(me||(me=r(b).default),!e||!t)return e;for(var i=he.INHERIT_KEYS.optional,n=Array.isArray(i),s=0,i=n?i:(0,W.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;null==e[o]&&(e[o]=t[o])}for(var u in t)"_"===u[0]&&(e[u]=t[u]);for(var l=he.INHERIT_KEYS.force,p=Array.isArray(l),c=0,l=p?l:(0,W.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;e[h]=t[h]}return he.inheritsComments(e,t),me.copyCache(t,e),e}function U(e){if(!Y(e))throw new TypeError("Not a valid node "+(e&&e.type))}function Y(e){return!(!e||!pe.VISITOR_KEYS[e.type])}t.__esModule=!0,t.createTypeAnnotationBasedOnTypeof=t.removeTypeDuplicates=t.createUnionTypeAnnotation=t.valueToNode=t.toBlock=t.toExpression=t.toStatement=t.toBindingIdentifierName=t.toIdentifier=t.toKeyAlias=t.toSequenceExpression=t.toComputedKey=t.isImmutable=t.isScope=t.isSpecifierDefault=t.isVar=t.isBlockScoped=t.isLet=t.isValidIdentifier=t.isReferenced=t.isBinding=t.getOuterBindingIdentifiers=t.getBindingIdentifiers=t.TYPES=t.react=t.DEPRECATED_KEYS=t.BUILDER_KEYS=t.NODE_FIELDS=t.ALIAS_KEYS=t.VISITOR_KEYS=t.NOT_LOCAL_BINDING=t.BLOCK_SCOPED_SYMBOL=t.INHERIT_KEYS=t.UNARY_OPERATORS=t.STRING_UNARY_OPERATORS=t.NUMBER_UNARY_OPERATORS=t.BOOLEAN_UNARY_OPERATORS=t.BINARY_OPERATORS=t.NUMBER_BINARY_OPERATORS=t.BOOLEAN_BINARY_OPERATORS=t.COMPARISON_BINARY_OPERATORS=t.EQUALITY_BINARY_OPERATORS=t.BOOLEAN_NUMBER_BINARY_OPERATORS=t.UPDATE_OPERATORS=t.LOGICAL_OPERATORS=t.COMMENT_KEYS=t.FOR_INIT_KEYS=t.FLATTENABLE_KEYS=t.STATEMENT_OR_BLOCK_KEYS=void 0;var K=r(i),W=E(K),G=r(n),q=E(G),H=r(s),X=E(H),J=r(a);Object.defineProperty(t,"STATEMENT_OR_BLOCK_KEYS",{enumerable:!0,get:function(){return J.STATEMENT_OR_BLOCK_KEYS}}),Object.defineProperty(t,"FLATTENABLE_KEYS",{enumerable:!0,get:function(){return J.FLATTENABLE_KEYS}}),Object.defineProperty(t,"FOR_INIT_KEYS",{enumerable:!0,get:function(){return J.FOR_INIT_KEYS}}),Object.defineProperty(t,"COMMENT_KEYS",{enumerable:!0,get:function(){return J.COMMENT_KEYS}}),Object.defineProperty(t,"LOGICAL_OPERATORS",{enumerable:!0,get:function(){return J.LOGICAL_OPERATORS}}),Object.defineProperty(t,"UPDATE_OPERATORS",{enumerable:!0,get:function(){return J.UPDATE_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_NUMBER_BINARY_OPERATORS}}),Object.defineProperty(t,"EQUALITY_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.EQUALITY_BINARY_OPERATORS}}),Object.defineProperty(t,"COMPARISON_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.COMPARISON_BINARY_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_BINARY_OPERATORS}}),Object.defineProperty(t,"NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return J.NUMBER_BINARY_OPERATORS}}),Object.defineProperty(t,"BINARY_OPERATORS",{enumerable:!0,get:function(){return J.BINARY_OPERATORS}}),Object.defineProperty(t,"BOOLEAN_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.BOOLEAN_UNARY_OPERATORS}}),Object.defineProperty(t,"NUMBER_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.NUMBER_UNARY_OPERATORS}}),Object.defineProperty(t,"STRING_UNARY_OPERATORS",{enumerable:!0,get:function(){return J.STRING_UNARY_OPERATORS}}),Object.defineProperty(t,"UNARY_OPERATORS",{enumerable:!0,get:function(){return J.UNARY_OPERATORS}}),Object.defineProperty(t,"INHERIT_KEYS",{enumerable:!0,get:function(){return J.INHERIT_KEYS}}),Object.defineProperty(t,"BLOCK_SCOPED_SYMBOL",{enumerable:!0,get:function(){return J.BLOCK_SCOPED_SYMBOL}}),Object.defineProperty(t,"NOT_LOCAL_BINDING",{enumerable:!0,get:function(){return J.NOT_LOCAL_BINDING}}),t.is=S,t.isType=_,t.validate=T,t.shallowEqual=P,t.appendToMemberExpression=w,t.prependToMemberExpression=k,t.ensureBlock=C,t.clone=D,t.cloneWithoutLoc=O,t.cloneDeep=N,t.buildMatchMemberExpression=I,t.removeComments=F,t.inheritsComments=B,t.inheritTrailingComments=R,t.inheritLeadingComments=L,t.inheritInnerComments=M,t.inherits=V,t.assertNode=U,t.isNode=Y;var $=r(o);Object.defineProperty(t,"getBindingIdentifiers",{enumerable:!0,get:function(){return $.getBindingIdentifiers}}),Object.defineProperty(t,"getOuterBindingIdentifiers",{enumerable:!0,get:function(){return $.getOuterBindingIdentifiers}});var z=r(u);Object.defineProperty(t,"isBinding",{enumerable:!0,get:function(){return z.isBinding}}),Object.defineProperty(t,"isReferenced",{enumerable:!0,get:function(){return z.isReferenced}}),Object.defineProperty(t,"isValidIdentifier",{enumerable:!0,get:function(){return z.isValidIdentifier}}),Object.defineProperty(t,"isLet",{enumerable:!0,get:function(){return z.isLet}}),Object.defineProperty(t,"isBlockScoped",{enumerable:!0,get:function(){return z.isBlockScoped}}),Object.defineProperty(t,"isVar",{enumerable:!0,get:function(){return z.isVar}}),Object.defineProperty(t,"isSpecifierDefault",{enumerable:!0,get:function(){return z.isSpecifierDefault}}),Object.defineProperty(t,"isScope",{enumerable:!0,get:function(){return z.isScope}}),Object.defineProperty(t,"isImmutable",{enumerable:!0,get:function(){return z.isImmutable}});var Q=r(l);Object.defineProperty(t,"toComputedKey",{enumerable:!0,get:function(){return Q.toComputedKey}}),Object.defineProperty(t,"toSequenceExpression",{enumerable:!0,get:function(){return Q.toSequenceExpression}}),Object.defineProperty(t,"toKeyAlias",{enumerable:!0,get:function(){return Q.toKeyAlias}}),Object.defineProperty(t,"toIdentifier",{enumerable:!0,get:function(){return Q.toIdentifier}}),Object.defineProperty(t,"toBindingIdentifierName",{enumerable:!0,get:function(){return Q.toBindingIdentifierName}}),Object.defineProperty(t,"toStatement",{enumerable:!0,get:function(){return Q.toStatement}}),Object.defineProperty(t,"toExpression",{enumerable:!0,get:function(){return Q.toExpression}}),Object.defineProperty(t,"toBlock",{enumerable:!0,get:function(){return Q.toBlock}}),Object.defineProperty(t,"valueToNode",{enumerable:!0,get:function(){return Q.valueToNode}});var Z=r(p);Object.defineProperty(t,"createUnionTypeAnnotation",{enumerable:!0,get:function(){return Z.createUnionTypeAnnotation}}),Object.defineProperty(t,"removeTypeDuplicates",{enumerable:!0,get:function(){return Z.removeTypeDuplicates}}),Object.defineProperty(t,"createTypeAnnotationBasedOnTypeof",{enumerable:!0,get:function(){return Z.createTypeAnnotationBasedOnTypeof}});var ee=r(c),te=E(ee),re=r(f),ie=E(re),ne=r(h),se=E(ne),ae=r(d),oe=E(ae),ue=r(y),le=E(ue);r(v);var pe=r(m),ce=r(g),fe=x(ce),he=t;t.VISITOR_KEYS=pe.VISITOR_KEYS,t.ALIAS_KEYS=pe.ALIAS_KEYS,t.NODE_FIELDS=pe.NODE_FIELDS,t.BUILDER_KEYS=pe.BUILDER_KEYS,t.DEPRECATED_KEYS=pe.DEPRECATED_KEYS,t.react=fe;for(var de in he.VISITOR_KEYS)A(de);he.FLIPPED_ALIAS_KEYS={},(0,oe.default)(he.ALIAS_KEYS,function(e,t){(0,oe.default)(e,function(e){var r=he.FLIPPED_ALIAS_KEYS[e]=he.FLIPPED_ALIAS_KEYS[e]||[];r.push(t)})}),(0,oe.default)(he.FLIPPED_ALIAS_KEYS,function(e,t){he[t.toUpperCase()+"_TYPES"]=e,A(t)});t.TYPES=(0,q.default)(he.VISITOR_KEYS).concat((0,q.default)(he.FLIPPED_ALIAS_KEYS)).concat((0,q.default)(he.DEPRECATED_KEYS));(0,oe.default)(he.BUILDER_KEYS,function(e,t){function r(){if(arguments.length>e.length)throw new Error("t."+t+": Too many arguments passed. Received "+arguments.length+" but can receive no more than "+e.length);var r={};r.type=t;for(var i=0,n=e,s=Array.isArray(n),a=0,n=s?n:(0,W.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o,l=he.NODE_FIELDS[t][u],p=arguments[i++];void 0===p&&(p=(0,se.default)(l.default)),r[u]=p}for(var c in r)T(r,c,r[c]);return r}he[t]=r,he[t[0].toLowerCase()+t.slice(1)]=r});var ye=function(e){function t(t){return function(){return console.trace("The node type "+e+" has been renamed to "+r),t.apply(this,arguments)}}var r=he.DEPRECATED_KEYS[e];he[e]=he[e[0].toLowerCase()+e.slice(1)]=t(he[r]),he["is"+e]=t(he["is"+r]),he["assert"+e]=t(he["assert"+r])};for(var ve in he.DEPRECATED_KEYS)ye(ve);var me=void 0;(0,te.default)(he),(0,te.default)(he.VISITOR_KEYS)},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return!!e&&/^[a-z]|\-/.test(e)}function a(e,t){for(var r=e.value.split(/\r\n|\n|\r/),i=0,n=0;n<r.length;n++)r[n].match(/[^ \t]/)&&(i=n);for(var s="",a=0;a<r.length;a++){var o=r[a],u=0===a,p=a===r.length-1,c=a===i,f=o.replace(/\t/g," ");u||(f=f.replace(/^[ ]+/,"")),p||(f=f.replace(/[ ]+$/,"")),f&&(c||(f+=" "),s+=f)}s&&t.push(l.stringLiteral(s))}function o(e){for(var t=[],r=0;r<e.children.length;r++){var i=e.children[r];l.isJSXText(i)?a(i,t):(l.isJSXExpressionContainer(i)&&(i=i.expression),l.isJSXEmptyExpression(i)||t.push(i))}return t}t.__esModule=!0,t.isReactComponent=void 0,t.isCompatTag=s,t.buildChildren=o;var u=r(i),l=n(u);t.isReactComponent=l.buildMatchMemberExpression("React.Component")},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t,r){for(var i=[].concat(e),n=(0,p.default)(null);i.length;){var s=i.shift();if(s){var a=f.getBindingIdentifiers.keys[s.type];if(f.isIdentifier(s))if(t){var o=n[s.name]=n[s.name]||[];o.push(s)}else n[s.name]=s;else if(f.isExportDeclaration(s))f.isDeclaration(e.declaration)&&i.push(e.declaration);else{if(r){if(f.isFunctionDeclaration(s)){i.push(s.id);continue}if(f.isFunctionExpression(s))continue}if(a)for(var u=0;u<a.length;u++){var l=a[u];s[l]&&(i=i.concat(s[l]))}}}}return n}function u(e,t){return o(e,t,!0)}t.__esModule=!0;var l=r(i),p=a(l);t.getBindingIdentifiers=o,t.getOuterBindingIdentifiers=u;var c=r(n),f=s(c);o.keys={DeclareClass:["id"],DeclareFunction:["id"],DeclareModule:["id"],DeclareVariable:["id"],InterfaceDeclaration:["id"],TypeAlias:["id"],CatchClause:["param"],LabeledStatement:["label"],UnaryExpression:["argument"],AssignmentExpression:["left"],ImportSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportDefaultSpecifier:["local"],ImportDeclaration:["specifiers"],ExportSpecifier:["exported"],ExportNamespaceSpecifier:["exported"],ExportDefaultSpecifier:["exported"],FunctionDeclaration:["id","params"],FunctionExpression:["id","params"],ClassDeclaration:["id"],ClassExpression:["id"],RestElement:["argument"],UpdateExpression:["argument"],RestProperty:["argument"],ObjectProperty:["value"],AssignmentPattern:["left"],ArrayPattern:["elements"],ObjectPattern:["properties"],VariableDeclaration:["declarations"],VariableDeclarator:["id"]}},function(e,t,r,i,n,s,a,o){"use strict";function u(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function l(e){return e&&e.__esModule?e:{default:e}}function p(e,t){var r=E.getBindingIdentifiers.keys[t.type];if(r)for(var i=0;i<r.length;i++){var n=r[i],s=t[n];if(Array.isArray(s)){if(s.indexOf(e)>=0)return!0}else if(s===e)return!0}return!1}function c(e,t){switch(t.type){case"BindExpression":return t.object===e||t.callee===e;case"MemberExpression":case"JSXMemberExpression":return!(t.property!==e||!t.computed)||t.object===e;case"MetaProperty":return!1;case"ObjectProperty":if(t.key===e)return t.computed;case"VariableDeclarator":return t.id!==e;case"ArrowFunctionExpression":case"FunctionDeclaration":case"FunctionExpression":for(var r=t.params,i=Array.isArray(r),n=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;if(a===e)return!1}return t.id!==e;case"ExportSpecifier":return!t.source&&t.local===e;case"ExportNamespaceSpecifier":case"ExportDefaultSpecifier":return!1;case"JSXAttribute":return t.name!==e;case"ClassProperty":return t.value===e;case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ImportSpecifier":return!1;case"ClassDeclaration":case"ClassExpression":return t.id!==e;case"ClassMethod":case"ObjectMethod":return t.key===e&&t.computed;case"LabeledStatement":return!1;case"CatchClause":return t.param!==e;case"RestElement":return!1;case"AssignmentExpression":return t.right===e;case"AssignmentPattern":return t.right===e;case"ObjectPattern":case"ArrayPattern":return!1}return!0}function f(e){return"string"==typeof e&&!S.default.keyword.isReservedWordES6(e,!0)&&S.default.keyword.isIdentifierNameES6(e)}function h(e){return T.isVariableDeclaration(e)&&("var"!==e.kind||e[P.BLOCK_SCOPED_SYMBOL])}function d(e){return T.isFunctionDeclaration(e)||T.isClassDeclaration(e)||T.isLet(e)}function y(e){return T.isVariableDeclaration(e,{kind:"var"})&&!e[P.BLOCK_SCOPED_SYMBOL]}function v(e){return T.isImportDefaultSpecifier(e)||T.isIdentifier(e.imported||e.exported,{name:"default"})}function m(e,t){return(!T.isBlockStatement(e)||!T.isFunction(t,{body:e}))&&T.isScopable(e)}function g(e){return!!T.isType(e.type,"Immutable")||!!T.isIdentifier(e)&&"undefined"===e.name}t.__esModule=!0;var b=r(i),x=l(b);t.isBinding=p,t.isReferenced=c,t.isValidIdentifier=f,t.isLet=h,t.isBlockScoped=d,t.isVar=y,t.isSpecifierDefault=v,t.isScope=m,t.isImmutable=g;var E=r(n),A=r(s),S=l(A),_=r(a),T=u(_),P=r(o)},function(e,t,r,i,n,s){function a(e){var t=-1,r=e?e.length:0;for(this.__data__=new o;++t<r;)this.add(e[t])}var o=r(i),u=r(n),l=r(s);a.prototype.add=a.prototype.push=u,a.prototype.has=l,e.exports=a},function(e,t,r,i){function n(e,t){var r=e?e.length:0;return!!r&&s(e,t,0)>-1}var s=r(i);e.exports=n},function(e,t,r,i,n){var s=r(i),a=r(n),o=a(s);e.exports=o},function(e,t,r,i){var n=r(i),s=n();e.exports=s},function(e,t,r,i,n){function s(e,t){return e&&a(e,t,o)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i,n,s){function a(e,t){t=u(t,e)?[t]:o(t);for(var r=0,i=t.length;null!=e&&r<i;)e=e[l(t[r++])];return r&&r==i?e:void 0}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n,s){function a(e,t,r,i,n){return e===t||(null==e||null==t||!u(e)&&!l(t)?e!==e&&t!==t:o(e,t,a,r,i,n))}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n,s,a,o,u,l,p){function c(e,t,r,i,n,s){var a=m(e),o=m(t),u=A,l=A;a||(u=v(e),u=u==E?S:u),o||(l=v(t),l=l==E?S:l);var p=u==S&&!g(e),c=l==S&&!g(t),_=u==l;if(_&&!p)return s||(s=new f),a||b(e)?h(e,t,r,i,n,s):d(e,t,u,r,i,n,s);if(!(n&x)){var P=p&&T.call(e,"__wrapped__"),w=c&&T.call(t,"__wrapped__");if(P||w){var k=P?e.value():e,C=w?t.value():t;return s||(s=new f),r(k,C,i,n,s)}}return!!_&&(s||(s=new f),y(e,t,r,i,n,s))}var f=r(i),h=r(n),d=r(s),y=r(a),v=r(o),m=r(u),g=r(l),b=r(p),x=2,E="[object Arguments]",A="[object Array]",S="[object Object]",_=Object.prototype,T=_.hasOwnProperty;e.exports=c},function(e,t,r,i,n){function s(e,t,r,i){var n=r.length,s=n,p=!i;if(null==e)return!s;for(e=Object(e);n--;){var c=r[n];if(p&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++n<s;){c=r[n];var f=c[0],h=e[f],d=c[1];if(p&&c[2]){if(void 0===h&&!(f in e))return!1}else{var y=new a;if(i)var v=i(h,d,f,e,t,y);if(!(void 0===v?o(d,h,i,u|l,y):v))return!1}}return!0}var a=r(i),o=r(n),u=1,l=2;e.exports=s},function(e,t,r,i,n,s,a,o){function u(e){return"function"==typeof e?e:null==e?c:"object"==typeof e?f(e)?p(e[0],e[1]):l(e):h(e)}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o);e.exports=u},function(e,t,r,i,n,s){function a(e){var t=u(e);return 1==t.length&&t[0][2]?l(t[0][0],t[0][1]):function(r){return r===e||o(r,e,t)}}var o=r(i),u=r(n),l=r(s);e.exports=a},function(e,t,r,i,n,s,a,o,u,l){function p(e,t){return d(e)&&y(t)?v(m(e),t):function(r){var i=f(r,e);return void 0===i&&i===t?h(r,e):c(t,i,void 0,g|b)}}var c=r(i),f=r(n),h=r(s),d=r(a),y=r(o),v=r(u),m=r(l),g=1,b=2;e.exports=p},function(e,t,r,i){function n(e){return function(t){return s(t,e)}}var s=r(i);e.exports=n},function(e,t,r,i,n,s,a,o,u){function l(e,t,r){var i=-1,n=c,s=e.length,a=!0,o=[],u=o;if(r)a=!1,n=f;else if(s>=v){var l=t?null:d(e);if(l)return y(l);a=!1,n=h,u=new p}else u=t?[]:o;e:for(;++i<s;){var m=e[i],g=t?t(m):m;if(m=r||0!==m?m:0,a&&g===g){for(var b=u.length;b--;)if(u[b]===g)continue e;t&&u.push(g),o.push(m)}else n(u,g,r)||(u!==o&&u.push(g),o.push(m))}return o}var p=r(i),c=r(n),f=r(s),h=r(a),d=r(o),y=r(u),v=200;e.exports=l},function(e,t,r,i){function n(e,t){return function(r,i){if(null==r)return r;if(!s(r))return e(r,i);for(var n=r.length,a=t?n:-1,o=Object(r);(t?a--:++a<n)&&i(o[a],a,o)!==!1;);return r}}var s=r(i);e.exports=n},function(e,t,r,i,n,s){var a=r(i),o=r(n),u=r(s),l=1/0,p=a&&1/u(new a([,-0]))[1]==l?function(e){return new a(e)}:o;e.exports=p},function(e,t,r,i,n){function s(e,t,r,i,n,s){var p=n&l,c=e.length,f=t.length;if(c!=f&&!(p&&f>c))return!1;var h=s.get(e);if(h)return h==t;var d=-1,y=!0,v=n&u?new a:void 0;for(s.set(e,t);++d<c;){var m=e[d],g=t[d];if(i)var b=p?i(g,m,d,t,e,s):i(m,g,d,e,t,s);if(void 0!==b){if(b)continue;y=!1;break}if(v){if(!o(t,function(e,t){if(!v.has(t)&&(m===e||r(m,e,i,n,s)))return v.add(t)})){y=!1;break}}else if(m!==g&&!r(m,g,i,n,s)){y=!1;break}}return s.delete(e),y}var a=r(i),o=r(n),u=1,l=2;e.exports=s},function(e,t,r,i,n,s,a,o){function u(e,t,r,i,n,s,a){switch(r){case P:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case T:return!(e.byteLength!=t.byteLength||!i(new p(e),new p(t)));case v:case m:return+e==+t;case g:return e.name==t.name&&e.message==t.message;case x:return e!=+e?t!=+t:e==+t;case E:case S:return e==t+"";case b:var o=f;case A:var u=s&y;if(o||(o=h),e.size!=t.size&&!u)return!1;var l=a.get(e);return l?l==t:(s|=d,a.set(e,t),c(o(e),o(t),i,n,s,a));case _:if(k)return k.call(e)==k.call(t)}return!1}var l=r(i),p=r(n),c=r(s),f=r(a),h=r(o),d=1,y=2,v="[object Boolean]",m="[object Date]",g="[object Error]",b="[object Map]",x="[object Number]",E="[object RegExp]",A="[object Set]",S="[object String]",_="[object Symbol]",T="[object ArrayBuffer]",P="[object DataView]",w=l?l.prototype:void 0,k=w?w.valueOf:void 0;e.exports=u},function(e,t,r,i,n){function s(e,t,r,i,n,s){var l=n&u,p=o(e),c=p.length,f=o(t),h=f.length;if(c!=h&&!l)return!1;for(var d=c;d--;){var y=p[d];if(!(l?y in t:a(t,y)))return!1}var v=s.get(e);if(v)return v==t;var m=!0;s.set(e,t);for(var g=l;++d<c;){y=p[d];var b=e[y],x=t[y];if(i)var E=l?i(x,b,y,t,e,s):i(b,x,y,e,t,s);if(!(void 0===E?b===x||r(b,x,i,n,s):E)){m=!1;break}g||(g="constructor"==y)}if(m&&!g){var A=e.constructor,S=t.constructor;A!=S&&"constructor"in e&&"constructor"in t&&!("function"==typeof A&&A instanceof A&&"function"==typeof S&&S instanceof S)&&(m=!1)}return s.delete(e),m}var a=r(i),o=r(n),u=2;e.exports=s},function(e,t,r,i,n){function s(e){for(var t=o(e),r=t.length;r--;){var i=t[r],n=e[i];t[r]=[i,n,a(n)]}return t}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e){return e===e&&!s(e)}var s=r(i);e.exports=n},function(e,t,r,i,n,s,a){function o(e,t){var r=c(e)?u:l;return r(e,p(t,3))}var u=r(i),l=r(n),p=r(s),c=r(a);e.exports=o},function(e,t,r,i){function n(e,t,r){var i=null==e?void 0:s(e,t);return void 0===i?r:i}var s=r(i);e.exports=n},function(e,t,r,i,n){function s(e,t){return null!=e&&o(e,t,a)}var a=r(i),o=r(n);e.exports=s},function(e,t,r,i){function n(e){return"number"==typeof e||s(e)&&u.call(e)==a}var s=r(i),a="[object Number]",o=Object.prototype,u=o.toString;e.exports=n},function(e,t,r,i,n,s){function a(e){if(!l(e)||y.call(e)!=p||u(e))return!1;var t=o(e);if(null===t)return!0;var r=h.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&f.call(r)==d}var o=r(i),u=r(n),l=r(s),p="[object Object]",c=Object.prototype,f=Function.prototype.toString,h=c.hasOwnProperty,d=f.call(Object),y=c.toString;e.exports=a},function(e,t,r,i){function n(e){return s(e)&&u.call(e)==a}var s=r(i),a="[object RegExp]",o=Object.prototype,u=o.toString;e.exports=n},function(e,t,r,i,n){function s(e){return o(e)&&a(e.length)&&!!N[F.call(e)]}var a=r(i),o=r(n),u="[object Arguments]",l="[object Array]",p="[object Boolean]",c="[object Date]",f="[object Error]",h="[object Function]",d="[object Map]",y="[object Number]",v="[object Object]",m="[object RegExp]",g="[object Set]",b="[object String]",x="[object WeakMap]",E="[object ArrayBuffer]",A="[object DataView]",S="[object Float32Array]",_="[object Float64Array]",T="[object Int8Array]",P="[object Int16Array]",w="[object Int32Array]",k="[object Uint8Array]",C="[object Uint8ClampedArray]",D="[object Uint16Array]",O="[object Uint32Array]",N={};N[S]=N[_]=N[T]=N[P]=N[w]=N[k]=N[C]=N[D]=N[O]=!0,N[u]=N[l]=N[E]=N[p]=N[A]=N[c]=N[f]=N[h]=N[d]=N[y]=N[v]=N[m]=N[g]=N[b]=N[x]=!1;var I=Object.prototype,F=I.toString;e.exports=s},function(e,t,r,i,n,s,a){function o(e){return p(e)?u(c(e)):l(e)}var u=r(i),l=r(n),p=r(s),c=r(a);e.exports=o},function(e,t,r,i){function n(e){return e&&e.length?s(e):[]}var s=r(i);e.exports=n},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var a=r(1),o=s(a),u=r(2),l=s(u),p=r(i),c=s(p),f=r(3),h=n(f),d=!1,y=function(){function e(t,r,i,n){(0,l.default)(this,e),this.queue=null,this.parentPath=n,this.scope=t,this.state=i,this.opts=r}return e.prototype.shouldVisit=function(e){var t=this.opts;if(t.enter||t.exit)return!0;if(t[e.type])return!0;var r=h.VISITOR_KEYS[e.type];if(!r||!r.length)return!1;for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,o.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var u=a;if(e[u])return!0}return!1},e.prototype.create=function(e,t,r,i){return c.default.get({parentPath:this.parentPath,parent:e,container:t,key:r,listKey:i})},e.prototype.maybeQueue=function(e,t){if(this.trap)throw new Error("Infinite cycle detected");this.queue&&(t?this.queue.push(e):this.priorityQueue.push(e))},e.prototype.visitMultiple=function(e,t,r){if(0===e.length)return!1;for(var i=[],n=0;n<e.length;n++){var s=e[n];s&&this.shouldVisit(s)&&i.push(this.create(t,e,n,r))}return this.visitQueue(i)},e.prototype.visitSingle=function(e,t){return!!this.shouldVisit(e[t])&&this.visitQueue([this.create(e,e,t)])},e.prototype.visitQueue=function(e){this.queue=e,this.priorityQueue=[];for(var t=[],r=!1,i=e,n=Array.isArray(i),s=0,i=n?i:(0,
+o.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var u=a;if(u.resync(),0!==u.contexts.length&&u.contexts[u.contexts.length-1]===this||u.pushContext(this),null!==u.key&&(d&&e.length>=1e3&&(this.trap=!0),!(t.indexOf(u.node)>=0))){if(t.push(u.node),u.visit()){r=!0;break}if(this.priorityQueue.length&&(r=this.visitQueue(this.priorityQueue),this.priorityQueue=[],this.queue=e,r))break}}for(var l=e,p=Array.isArray(l),c=0,l=p?l:(0,o.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;h.popContext()}return this.queue=null,r},e.prototype.visit=function(e,t){var r=e[t];return!!r&&(Array.isArray(r)?this.visitMultiple(r,e,t):this.visitSingle(e,t))},e}();t.default=y,e.exports=t.default},function(e,t,r,i,n,s,a,o,u,l,p,c,f){"use strict";function h(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function d(e){return e&&e.__esModule?e:{default:e}}function y(e,t,r,i,n){if(e){if(t||(t={}),!t.noScope&&!r&&"Program"!==e.type&&"File"!==e.type)throw new Error(C.get("traverseNeedsParent",e.type));w.explode(t),y.node(e,t,r,i,n)}}function v(e,t){e.node.type===t.type&&(t.has=!0,e.stop())}t.__esModule=!0,t.visitors=t.Hub=t.Scope=t.NodePath=void 0;var m=r(248),g=d(m),b=r(1),x=d(b),E=r(i);Object.defineProperty(t,"NodePath",{enumerable:!0,get:function(){return d(E).default}});var A=r(n);Object.defineProperty(t,"Scope",{enumerable:!0,get:function(){return d(A).default}});var S=r(s);Object.defineProperty(t,"Hub",{enumerable:!0,get:function(){return d(S).default}}),t.default=y;var _=r(a),T=d(_),P=r(o),w=h(P),k=r(20),C=h(k),D=r(u),O=d(D),N=r(3),I=h(N),F=r(l),B=h(F);t.visitors=w,y.visitors=w,y.verify=w.verify,y.explode=w.explode,y.NodePath=r(p),y.Scope=r(c),y.Hub=r(f),y.cheap=function(e,t){if(e){var r=I.VISITOR_KEYS[e.type];if(r){t(e);for(var i=r,n=Array.isArray(i),s=0,i=n?i:(0,x.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a,u=e[o];if(Array.isArray(u))for(var l=u,p=Array.isArray(l),c=0,l=p?l:(0,x.default)(l);;){var f;if(p){if(c>=l.length)break;f=l[c++]}else{if(c=l.next(),c.done)break;f=c.value}var h=f;y.cheap(h,t)}else y.cheap(u,t)}}}},y.node=function(e,t,r,i,n,s){var a=I.VISITOR_KEYS[e.type];if(a)for(var o=new T.default(r,t,i,n),u=a,l=Array.isArray(u),p=0,u=l?u:(0,x.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if((!s||!s[f])&&o.visit(e,f))return}};var R=I.COMMENT_KEYS.concat(["tokens","comments","start","end","loc","raw","rawValue"]);y.clearNode=function(e){for(var t=R,r=Array.isArray(t),i=0,t=r?t:(0,x.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;null!=e[s]&&(e[s]=void 0)}for(var a in e)"_"===a[0]&&null!=e[a]&&(e[a]=void 0);B.path.delete(e);for(var o=(0,g.default)(e),u=o,l=Array.isArray(u),p=0,u=l?u:(0,x.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e[f]=null}},y.removeProperties=function(e){return y.cheap(e,y.clearNode),e},y.hasType=function(e,t,r,i){if((0,O.default)(i,e.type))return!1;if(e.type===r)return!0;var n={has:!1,type:r};return y(e,{blacklist:i,enter:v},t,n),n.has},y.clearCache=function(){B.clear()},y.copyCache=function(e,t){B.path.has(e)&&B.path.set(t,B.path.get(e))}},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}function a(e){for(var t=this;t=t.parentPath;)if(e(t))return t;return null}function o(e){var t=this;do if(e(t))return t;while(t=t.parentPath);return null}function u(){return this.findParent(function(e){return e.isFunction()||e.isProgram()})}function l(){var e=this;do if(Array.isArray(e.container))return e;while(e=e.parentPath)}function p(e){return this.getDeepestCommonAncestorFrom(e,function(e,t,r){for(var i=void 0,n=g.VISITOR_KEYS[e.type],s=r,a=Array.isArray(s),o=0,s=a?s:(0,v.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u,p=l[t+1];if(i)if(p.listKey&&i.listKey===p.listKey&&p.key<i.key)i=p;else{var c=n.indexOf(i.parentKey),f=n.indexOf(p.parentKey);c>f&&(i=p)}else i=p}return i})}function c(e,t){var r=this;if(!e.length)return this;if(1===e.length)return e[0];var i=1/0,n=void 0,s=void 0,a=e.map(function(e){var t=[];do t.unshift(e);while((e=e.parentPath)&&e!==r);return t.length<i&&(i=t.length),t}),o=a[0];e:for(var u=0;u<i;u++){for(var l=o[u],p=a,c=Array.isArray(p),f=0,p=c?p:(0,v.default)(p);;){var h;if(c){if(f>=p.length)break;h=p[f++]}else{if(f=p.next(),f.done)break;h=f.value}var d=h;if(d[u]!==l)break e}n=u,s=l}if(s)return t?t(s,n,a):s;throw new Error("Couldn't find intersection")}function f(){var e=this,t=[];do t.push(e);while(e=e.parentPath);return t}function h(){for(var e=this;e;){for(var t=arguments,r=Array.isArray(t),i=0,t=r?t:(0,v.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(e.node.type===s)return!0}e=e.parentPath}return!1}function d(e){var t=this.isFunction()?this:this.findParent(function(e){return e.isFunction()});if(t){if(t.isFunctionExpression()||t.isFunctionDeclaration()){var r=t.node.shadow;if(r&&(!e||r[e]!==!1))return t}else if(t.isArrowFunctionExpression())return t;return null}}t.__esModule=!0;var y=r(1),v=s(y);t.findParent=a,t.find=o,t.getFunctionParent=u,t.getStatementParent=l,t.getEarliestCommonAncestorFrom=p,t.getDeepestCommonAncestorFrom=c,t.getAncestry=f,t.inType=h,t.inShadow=d;var m=r(3),g=n(m),b=r(i);s(b)},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e){var t=this.opts;return this.debug(function(){return e}),!(!this.node||!this._call(t[e]))||!!this.node&&this._call(t[this.node.type]&&t[this.node.type][e])}function a(e){if(!e)return!1;for(var t=e,r=Array.isArray(t),i=0,t=r?t:(0,P.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n;if(s){var a=this.node;if(!a)return!0;var o=s.call(this.state,this,this.state);if(o)throw new Error("Unexpected return value from visitor method "+s);if(this.node!==a)return!0;if(this.shouldStop||this.shouldSkip||this.removed)return!0}}return!1}function o(){var e=this.opts.blacklist;return e&&e.indexOf(this.node.type)>-1}function u(){return!!this.node&&(!this.isBlacklisted()&&((!this.opts.shouldSkip||!this.opts.shouldSkip(this))&&(this.call("enter")||this.shouldSkip?(this.debug(function(){return"Skip..."}),this.shouldStop):(this.debug(function(){return"Recursing into..."}),k.default.node(this.node,this.opts,this.scope,this.state,this,this.skipKeys),this.call("exit"),this.shouldStop))))}function l(){this.shouldSkip=!0}function p(e){this.skipKeys[e]=!0}function c(){this.shouldStop=!0,this.shouldSkip=!0}function f(){if(!this.opts||!this.opts.noScope){var e=this.context&&this.context.scope;if(!e)for(var t=this.parentPath;t&&!e;){if(t.opts&&t.opts.noScope)return;e=t.scope,t=t.parentPath}this.scope=this.getScope(e),this.scope&&this.scope.init()}}function h(e){return this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.skipKeys={},e&&(this.context=e,this.state=e.state,this.opts=e.opts),this.setScope(),this}function d(){this.removed||(this._resyncParent(),this._resyncList(),this._resyncKey())}function y(){this.parentPath&&(this.parent=this.parentPath.node)}function v(){if(this.container&&this.node!==this.container[this.key]){if(Array.isArray(this.container)){for(var e=0;e<this.container.length;e++)if(this.container[e]===this.node)return this.setKey(e)}else for(var t in this.container)if(this.container[t]===this.node)return this.setKey(t);this.key=null}}function m(){if(this.parent&&this.inList){var e=this.parent[this.listKey];this.container!==e&&(this.container=e||null)}}function g(){null!=this.key&&this.container&&this.container[this.key]===this.node||this._markRemoved()}function b(){this.contexts.pop(),this.setContext(this.contexts[this.contexts.length-1])}function x(e){this.contexts.push(e),this.setContext(e)}function E(e,t,r,i){this.inList=!!r,this.listKey=r,this.parentKey=r||i,this.container=t,this.parentPath=e||this.parentPath,this.setKey(i)}function A(e){this.key=e,this.node=this.container[this.key],this.type=this.node&&this.node.type}function S(){var e=arguments.length<=0||void 0===arguments[0]?this:arguments[0];if(!e.removed)for(var t=this.contexts,r=t,i=Array.isArray(r),n=0,r=i?r:(0,P.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;a.maybeQueue(e)}}function _(){for(var e=this,t=this.contexts;!t.length;)e=e.parentPath,t=e.contexts;return t}t.__esModule=!0;var T=r(1),P=n(T);t.call=s,t._call=a,t.isBlacklisted=o,t.visit=u,t.skip=l,t.skipKey=p,t.stop=c,t.setScope=f,t.setContext=h,t.resync=d,t._resyncParent=y,t._resyncKey=v,t._resyncList=m,t._resyncRemoved=g,t.popContext=b,t.pushContext=x,t.setup=E,t.setKey=A,t.requeue=S,t._getQueueContexts=_;var w=r(i),k=n(w)},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}function a(){var e=this;do{if(!e.parentPath||Array.isArray(e.container)&&e.isStatement())break;e=e.parentPath}while(e);if(e&&(e.isProgram()||e.isFile()))throw new Error("File/Program node, we can't possibly find a statement parent to this");return e}function o(){return"left"===this.key?this.getSibling("right"):"right"===this.key?this.getSibling("left"):void 0}function u(){var e=[],t=function(t){t&&(e=e.concat(t.getCompletionRecords()))};if(this.isIfStatement())t(this.get("consequent")),t(this.get("alternate"));else if(this.isDoExpression()||this.isFor()||this.isWhile())t(this.get("body"));else if(this.isProgram()||this.isBlockStatement())t(this.get("body").pop());else{if(this.isFunction())return this.get("body").getCompletionRecords();this.isTryStatement()?(t(this.get("block")),t(this.get("handler")),t(this.get("finalizer"))):e.push(this)}return e}function l(e){return g.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:e})}function p(e,t){t===!0&&(t=this.context);var r=e.split(".");return 1===r.length?this._getKey(e,t):this._getPattern(r,t)}function c(e,t){var r=this,i=this.node,n=i[e];return Array.isArray(n)?n.map(function(s,a){return g.default.get({listKey:e,parentPath:r,parent:i,container:n,key:a}).setContext(t)}):g.default.get({parentPath:this,parent:i,container:i,key:e}).setContext(t)}function f(e,t){for(var r=this,i=e,n=Array.isArray(i),s=0,i=n?i:(0,v.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;r="."===o?r.parentPath:Array.isArray(r)?r[o]:r.get(o,t)}return r}function h(e){return x.getBindingIdentifiers(this.node,e)}function d(e){return x.getOuterBindingIdentifiers(this.node,e)}t.__esModule=!0;var y=r(1),v=s(y);t.getStatementParent=a,t.getOpposite=o,t.getCompletionRecords=u,t.getSibling=l,t.get=p,t._getKey=c,t._getPattern=f,t.getBindingIdentifiers=h,t.getOuterBindingIdentifiers=d;var m=r(i),g=s(m),b=r(3),x=n(b)},function(e,t,r,i,n,s,a,o,u,l,p,c,f,h,d,y,v,m,g){"use strict";function b(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function x(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var E=r(1),A=x(E),S=r(2),_=x(S),T=r(i),P=b(T),w=r(371),k=x(w),C=r(456),D=x(C),O=r(n),N=x(O),I=r(s),F=x(I),B=r(a),R=x(B),L=r(3),M=b(L),j=r(o),V=(0,k.default)("babel"),U=function(){function e(t,r){(0,_.default)(this,e),this.parent=r,this.hub=t,this.contexts=[],this.data={},this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.state=null,this.opts=null,this.skipKeys=null,this.parentPath=null,this.context=null,this.container=null,this.listKey=null,this.inList=!1,this.parentKey=null,this.key=null,this.node=null,this.scope=null,this.type=null,this.typeAnnotation=null}return e.get=function(t){var r=t.hub,i=t.parentPath,n=t.parent,s=t.container,a=t.listKey,o=t.key;!r&&i&&(r=i.hub),(0,D.default)(n,"To get a node path the parent needs to exist");var u=s[o],l=j.path.get(n)||[];j.path.has(n)||j.path.set(n,l);for(var p=void 0,c=0;c<l.length;c++){var f=l[c];if(f.node===u){p=f;break}}return p||(p=new e(r,n),l.push(p)),p.setup(i,s,a,o),p},e.prototype.getScope=function(e){var t=e;return this.isScope()&&(t=new R.default(this,e)),t},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e,t){var r=this.data[e];return!r&&t&&(r=this.data[e]=t),r},e.prototype.buildCodeFrameError=function(e){var t=arguments.length<=1||void 0===arguments[1]?SyntaxError:arguments[1];return this.hub.file.buildCodeFrameError(this.node,e,t)},e.prototype.traverse=function(e,t){(0,N.default)(this.node,e,this.scope,t,this)},e.prototype.mark=function(e,t){this.hub.file.metadata.marked.push({type:e,message:t,loc:this.node.loc})},e.prototype.set=function(e,t){M.validate(this.node,e,t),this.node[e]=t},e.prototype.getPathLocation=function(){var e=[],t=this;do{var r=t.key;t.inList&&(r=t.listKey+"["+r+"]"),e.unshift(r)}while(t=t.parentPath);return e.join(".")},e.prototype.debug=function(e){V.enabled&&V(this.getPathLocation()+" "+this.type+": "+e())},e}();t.default=U,(0,F.default)(U.prototype,r(u)),(0,F.default)(U.prototype,r(l)),(0,F.default)(U.prototype,r(p)),(0,F.default)(U.prototype,r(c)),(0,F.default)(U.prototype,r(f)),(0,F.default)(U.prototype,r(h)),(0,F.default)(U.prototype,r(d)),(0,F.default)(U.prototype,r(y)),(0,F.default)(U.prototype,r(v)),(0,F.default)(U.prototype,r(m)),(0,F.default)(U.prototype,r(g));for(var Y=function(){if(W){if(G>=K.length)return"break";q=K[G++]}else{if(G=K.next(),G.done)return"break";q=G.value}var e=q,t="is"+e;U.prototype[t]=function(e){return M[t](this.node,e)},U.prototype["assert"+e]=function(r){if(!this[t](r))throw new TypeError("Expected node path of type "+e)}},K=M.TYPES,W=Array.isArray(K),G=0,K=W?K:(0,A.default)(K);;){var q,H=Y();if("break"===H)break}var X=function(e){if("_"===e[0])return"continue";M.TYPES.indexOf(e)<0&&M.TYPES.push(e);var t=P[e];U.prototype["is"+e]=function(e){return t.checkPath(this,e)}};for(var J in P){X(J)}e.exports=t.default},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}function a(){if(this.typeAnnotation)return this.typeAnnotation;var e=this._getTypeAnnotation()||g.anyTypeAnnotation();return g.isTypeAnnotation(e)&&(e=e.typeAnnotation),this.typeAnnotation=e}function o(){var e=this.node;{if(e){if(e.typeAnnotation)return e.typeAnnotation;var t=v[e.type];return t?t.call(this,e):(t=v[this.parentPath.type],t&&t.validParent?this.parentPath.getTypeAnnotation():void 0)}if("init"===this.key&&this.parentPath.isVariableDeclarator()){var r=this.parentPath.parentPath,i=r.parentPath;return"left"===r.key&&i.isForInStatement()?g.stringTypeAnnotation():"left"===r.key&&i.isForOfStatement()?g.anyTypeAnnotation():g.voidTypeAnnotation()}}}function u(e,t){return l(e,this.getTypeAnnotation(),t)}function l(e,t,r){if("string"===e)return g.isStringTypeAnnotation(t);if("number"===e)return g.isNumberTypeAnnotation(t);if("boolean"===e)return g.isBooleanTypeAnnotation(t);if("any"===e)return g.isAnyTypeAnnotation(t);if("mixed"===e)return g.isMixedTypeAnnotation(t);if("void"===e)return g.isVoidTypeAnnotation(t);if(r)return!1;throw new Error("Unknown base type "+e)}function p(e){var t=this.getTypeAnnotation();if(g.isAnyTypeAnnotation(t))return!0;if(g.isUnionTypeAnnotation(t)){for(var r=t.types,i=Array.isArray(r),n=0,r=i?r:(0,d.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;if(g.isAnyTypeAnnotation(a)||l(e,a,!0))return!0}return!1}return l(e,t,!0)}function c(e){var t=this.getTypeAnnotation();if(e=e.getTypeAnnotation(),!g.isAnyTypeAnnotation(t)&&g.isFlowBaseAnnotation(t))return e.type===t.type}function f(e){var t=this.getTypeAnnotation();return g.isGenericTypeAnnotation(t)&&g.isIdentifier(t.id,{name:e})}t.__esModule=!0;var h=r(1),d=s(h);t.getTypeAnnotation=a,t._getTypeAnnotation=o,t.isBaseType=u,t.couldBeBaseType=p,t.baseTypeStrictlyMatches=c,t.isGenericType=f;var y=r(i),v=n(y),m=r(3),g=n(m)},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}function a(){var e=this.get("id");return e.isIdentifier()?this.get("init").getTypeAnnotation():void 0}function o(e){return e.typeAnnotation}function u(e){if(this.get("callee").isIdentifier())return O.genericTypeAnnotation(e.callee)}function l(){return O.stringTypeAnnotation()}function p(e){var t=e.operator;return"void"===t?O.voidTypeAnnotation():O.NUMBER_UNARY_OPERATORS.indexOf(t)>=0?O.numberTypeAnnotation():O.STRING_UNARY_OPERATORS.indexOf(t)>=0?O.stringTypeAnnotation():O.BOOLEAN_UNARY_OPERATORS.indexOf(t)>=0?O.booleanTypeAnnotation():void 0}function c(e){var t=e.operator;if(O.NUMBER_BINARY_OPERATORS.indexOf(t)>=0)return O.numberTypeAnnotation();if(O.BOOLEAN_BINARY_OPERATORS.indexOf(t)>=0)return O.booleanTypeAnnotation();if("+"===t){var r=this.get("right"),i=this.get("left");return i.isBaseType("number")&&r.isBaseType("number")?O.numberTypeAnnotation():i.isBaseType("string")||r.isBaseType("string")?O.stringTypeAnnotation():O.unionTypeAnnotation([O.stringTypeAnnotation(),O.numberTypeAnnotation()])}}function f(){return O.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(),this.get("right").getTypeAnnotation()])}function h(){return O.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(),this.get("alternate").getTypeAnnotation()])}function d(){return this.get("expressions").pop().getTypeAnnotation()}function y(){return this.get("right").getTypeAnnotation()}function v(e){var t=e.operator;if("++"===t||"--"===t)return O.numberTypeAnnotation()}function m(){return O.stringTypeAnnotation()}function g(){return O.numberTypeAnnotation()}function b(){return O.booleanTypeAnnotation()}function x(){return O.nullLiteralTypeAnnotation()}function E(){return O.genericTypeAnnotation(O.identifier("RegExp"))}function A(){return O.genericTypeAnnotation(O.identifier("Object"))}function S(){return O.genericTypeAnnotation(O.identifier("Array"))}function _(){return S()}function T(){return O.genericTypeAnnotation(O.identifier("Function"))}function P(){return k(this.get("callee"))}function w(){return k(this.get("tag"))}function k(e){if(e=e.resolve(),e.isFunction()){if(e.is("async"))return e.is("generator")?O.genericTypeAnnotation(O.identifier("AsyncIterator")):O.genericTypeAnnotation(O.identifier("Promise"));if(e.node.returnType)return e.node.returnType}}t.__esModule=!0,t.Class=t.Function=t.Identifier=void 0;var C=r(i);Object.defineProperty(t,"Identifier",{enumerable:!0,get:function(){return s(C).default}}),t.VariableDeclarator=a,t.TypeCastExpression=o,t.NewExpression=u,t.TemplateLiteral=l,t.UnaryExpression=p,t.BinaryExpression=c,t.LogicalExpression=f,t.ConditionalExpression=h,t.SequenceExpression=d,t.AssignmentExpression=y,t.UpdateExpression=v,t.StringLiteral=m,t.NumericLiteral=g,t.BooleanLiteral=b,t.NullLiteral=x,t.RegExpLiteral=E,t.ObjectExpression=A,t.ArrayExpression=S,t.RestElement=_,t.CallExpression=P,t.TaggedTemplateExpression=w;var D=r(3),O=n(D);o.validParent=!0,_.validParent=!0,t.Function=T,t.Class=T},function(e,t,r,i,n,s){"use strict";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}function u(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertBefore(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key)this.node&&e.push(this.node),this.replaceExpressionWithStatements(e);else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertBefore(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.push(this.node),this._replaceWith(C.blockStatement(e))}return[this]}function l(e,t){this.updateSiblingKeys(e,t.length);for(var r=[],i=0;i<t.length;i++){var n=e+i,s=t[i];if(this.container.splice(n,0,s),this.context){var a=this.context.create(this.parent,this.container,n,this.listKey);this.context.queue&&a.pushContext(this.context),r.push(a)}else r.push(w.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:n}))}for(var o=this._getQueueContexts(),u=r,l=Array.isArray(u),p=0,u=l?u:(0,A.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;f.setScope(),f.debug(function(){return"Inserted."});for(var h=o,d=Array.isArray(h),y=0,h=d?h:(0,A.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;m.maybeQueue(f,!0)}}return r}function p(e){return this._containerInsert(this.key,e)}function c(e){return this._containerInsert(this.key+1,e)}function f(e){var t=e[e.length-1],r=C.isIdentifier(t)||C.isExpressionStatement(t)&&C.isIdentifier(t.expression);r&&!this.isCompletionRecord()&&e.pop()}function h(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertAfter(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key){if(this.node){var t=this.scope.generateDeclaredUidIdentifier();e.unshift(C.expressionStatement(C.assignmentExpression("=",t,this.node))),e.push(C.expressionStatement(t))}this.replaceExpressionWithStatements(e)}else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertAfter(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.unshift(this.node),this._replaceWith(C.blockStatement(e))}return[this]}function d(e,t){if(this.parent)for(var r=S.path.get(this.parent),i=0;i<r.length;i++){var n=r[i];n.key>=e&&(n.key+=t)}}function y(e){if(!e)return[];e.constructor!==Array&&(e=[e]);for(var t=0;t<e.length;t++){var r=e[t],i=void 0;if(r?"object"!==("undefined"==typeof r?"undefined":(0,x.default)(r))?i="contains a non-object node":r.type?r instanceof w.default&&(i="has a NodePath when it expected a raw object"):i="without a type":i="has falsy node",i){var n=Array.isArray(r)?"array":"undefined"==typeof r?"undefined":(0,x.default)(r);throw new Error("Node list "+i+" with the index of "+t+" and type of "+n)}}return e}function v(e,t){this._assertUnremoved(),t=this._verifyNodeList(t);var r=w.default.get({parentPath:this,parent:this.node,container:this.node[e],listKey:e,key:0});return r.insertBefore(t)}function m(e,t){this._assertUnremoved(),t=this._verifyNodeList(t);var r=this.node[e],i=w.default.get({parentPath:this,parent:this.node,container:r,listKey:e,key:r.length});return i.replaceWithMultiple(t)}function g(){var e=arguments.length<=0||void 0===arguments[0]?this.scope:arguments[0],t=new T.default(this,e);return t.run()}t.__esModule=!0;var b=r(11),x=o(b),E=r(1),A=o(E);t.insertBefore=u,t._containerInsert=l,t._containerInsertBefore=p,t._containerInsertAfter=c,t._maybePopFromStatements=f,t.insertAfter=h,t.updateSiblingKeys=d,t._verifyNodeList=y,t.unshiftContainer=v,t.pushContainer=m,t.hoist=g;var S=r(i),_=r(n),T=o(_),P=r(s),w=o(P),k=r(3),C=a(k)},function(e,t,r,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(){return this._assertUnremoved(),this.resync(),this._callRemovalHooks()?void this._markRemoved():(this.shareCommentsWithSiblings(),this._remove(),void this._markRemoved())}function a(){for(var e=f.hooks,t=Array.isArray(e),r=0,e=t?e:(0,c.default)(e);;){var i;if(t){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var n=i;if(n(this,this.parentPath))return!0}}function o(){Array.isArray(this.container)?(this.container.splice(this.key,1),this.updateSiblingKeys(this.key,-1)):this._replaceWith(null)}function u(){this.shouldSkip=!0,this.removed=!0,this.node=null}function l(){if(this.removed)throw this.buildCodeFrameError("NodePath has been removed so is read-only.")}t.__esModule=!0;var p=r(1),c=n(p);t.remove=s,t._callRemovalHooks=a,t._remove=o,t._markRemoved=u,t._assertUnremoved=l;var f=r(i)},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(e){this.resync(),e=this._verifyNodeList(e),S.inheritLeadingComments(e[0],this.node),S.inheritTrailingComments(e[e.length-1],this.node),this.node=this.container[this.key]=null,this.insertAfter(e),this.node?this.requeue():this.remove()}function u(e){this.resync();try{e="("+e+")",e=(0,E.parse)(e)}catch(r){var t=r.loc;throw t&&(r.message+=" - make sure this is an expression.",r.message+="\n"+(0,v.default)(e,t.line,t.column+1)),r}return e=e.program.body[0].expression,g.default.removeProperties(e),this.replaceWith(e)}function l(e){if(this.resync(),this.removed)throw new Error("You can't replace this node, we've already removed it");if(e instanceof x.default&&(e=e.node),!e)throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");if(this.node!==e){if(this.isProgram()&&!S.isProgram(e))throw new Error("You can only replace a Program root node with another Program node");if(Array.isArray(e))throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");if("string"==typeof e)throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");if(this.isNodeType("Statement")&&S.isExpression(e)&&(this.canHaveVariableDeclarationOrExpression()||this.canSwapBetweenExpressionAndStatement(e)||(e=S.expressionStatement(e))),this.isNodeType("Expression")&&S.isStatement(e)&&!this.canHaveVariableDeclarationOrExpression()&&!this.canSwapBetweenExpressionAndStatement(e))return this.replaceExpressionWithStatements([e]);var t=this.node;t&&(S.inheritsComments(e,t),S.removeComments(t)),this._replaceWith(e),this.type=e.type,this.setScope(),this.requeue()}}function p(e){if(!this.container)throw new ReferenceError("Container is falsy");this.inList?S.validate(this.parent,this.key,[e]):S.validate(this.parent,this.key,e),this.debug(function(){return"Replace with "+(e&&e.type)}),this.node=this.container[this.key]=e}function c(e){this.resync();var t=S.toSequenceExpression(e,this.scope);if(S.isSequenceExpression(t)){var r=t.expressions;r.length>=2&&this.parentPath.isExpressionStatement()&&this._maybePopFromStatements(r),1===r.length?this.replaceWith(r[0]):this.replaceWith(t)}else{if(!t){var i=S.functionExpression(null,[],S.blockStatement(e));i.shadow=!0,this.replaceWith(S.callExpression(i,[])),this.traverse(_);for(var n=this.get("callee").getCompletionRecords(),s=n,a=Array.isArray(s),o=0,s=a?s:(0,d.default)(s);;){var u;if(a){if(o>=s.length)break;u=s[o++]}else{if(o=s.next(),o.done)break;u=o.value}var l=u;if(l.isExpressionStatement()){var p=l.findParent(function(e){return e.isLoop()});if(p){var c=this.get("callee"),f=c.scope.generateDeclaredUidIdentifier("ret");c.get("body").pushContainer("body",S.returnStatement(f)),l.get("expression").replaceWith(S.assignmentExpression("=",f,l.node.expression))}else l.replaceWith(S.returnStatement(l.node.expression))}}return this.node}this.replaceWith(t)}}function f(e){return this.resync(),Array.isArray(e)?Array.isArray(this.container)?(e=this._verifyNodeList(e),this._containerInsertAfter(e),this.remove()):this.replaceWithMultiple(e):this.replaceWith(e)}t.__esModule=!0;var h=r(1),d=a(h);t.replaceWithMultiple=o,t.replaceWithSourceString=u,t.replaceWith=l,t._replaceWith=p,t.replaceExpressionWithStatements=c,t.replaceInline=f;var y=r(258),v=a(y),m=r(i),g=a(m),b=r(n),x=a(b),E=r(1579),A=r(3),S=s(A),_={Function:function(e){e.skip()},VariableDeclaration:function(e){if("var"===e.node.kind){var t=e.getBindingIdentifiers();for(var r in t)e.scope.push({id:t[r]});for(var i=[],n=e.node.declarations,s=Array.isArray(n),a=0,n=s?n:(0,d.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;u.init&&i.push(S.expressionStatement(S.assignmentExpression("=",u.id,u.init)))}e.replaceWithMultiple(i)}}}},function(e,t,r,i,n,s,a,o,u,l){"use strict";function p(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}function f(e,t,r){for(var i=j.scope.get(e.node)||[],n=i,s=Array.isArray(n),a=0,n=s?n:(0,x.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;if(u.parent===t&&u.path===e)return u}i.push(r),j.scope.has(e.node)||j.scope.set(e.node,i)}t.__esModule=!0;var h=r(39),d=c(h),y=r(16),v=c(y),m=r(2),g=c(m),b=r(1),x=c(b),E=r(i),A=c(E),S=r(n),_=c(S),T=r(s),P=c(T),w=r(a),k=c(w),C=r(o),D=c(C),O=r(20),N=p(O),I=r(u),F=c(I),B=r(455),R=c(B),L=r(3),M=p(L),j=r(l),V=0,U={For:function(e){for(var t=M.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,x.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isVar()&&e.scope.getFunctionParent().registerBinding("var",a)}},Declaration:function(e){e.isBlockScoped()||e.isExportDeclaration()&&e.get("declaration").isDeclaration()||e.scope.getFunctionParent().registerDeclaration(e)},ReferencedIdentifier:function(e,t){t.references.push(e)},ForXStatement:function(e,t){var r=e.get("left");(r.isPattern()||r.isIdentifier())&&t.constantViolations.push(r)},ExportDeclaration:{exit:function(e){var t=e.node,r=e.scope,i=t.declaration;if(M.isClassDeclaration(i)||M.isFunctionDeclaration(i)){var n=i.id;if(!n)return;var s=r.getBinding(n.name);s&&s.reference()}else if(M.isVariableDeclaration(i))for(var a=i.declarations,o=Array.isArray(a),u=0,a=o?a:(0,x.default)(a);;){var l;if(o){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var p=l,c=M.getBindingIdentifiers(p);for(var f in c){var h=r.getBinding(f);h&&h.reference()}}}},LabeledStatement:function(e){e.scope.getProgramParent().addGlobal(e.node),e.scope.getBlockParent().registerDeclaration(e)},AssignmentExpression:function(e,t){t.assignments.push(e)},UpdateExpression:function(e,t){t.constantViolations.push(e.get("argument"))},UnaryExpression:function(e,t){"delete"===e.node.operator&&t.constantViolations.push(e.get("argument"))},BlockScoped:function(e){var t=e.scope;t.path===e&&(t=t.parent),t.getBlockParent().registerDeclaration(e)},ClassDeclaration:function(e){var t=e.node.id;if(t){var r=t.name;e.scope.bindings[r]=e.scope.getBinding(r)}},Block:function(e){for(var t=e.get("body"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;a.isFunctionDeclaration()&&e.scope.getBlockParent().registerDeclaration(a)}}},Y=0,K=function(){function e(t,r){if((0,g.default)(this,e),r&&r.block===t.node)return r;var i=f(t,r,this);return i?i:(this.uid=Y++,this.parent=r,this.hub=t.hub,this.parentBlock=t.parent,this.block=t.node,void(this.path=t))}return e.prototype.traverse=function(e,t,r){(0,k.default)(e,t,this,r,this.path);
+},e.prototype.generateDeclaredUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0],t=this.generateUidIdentifier(e);return this.push({id:t}),t},e.prototype.generateUidIdentifier=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];return M.identifier(this.generateUid(e))},e.prototype.generateUid=function(){var e=arguments.length<=0||void 0===arguments[0]?"temp":arguments[0];e=M.toIdentifier(e).replace(/^_+/,"").replace(/[0-9]+$/g,"");var t=void 0,r=0;do t=this._generateUid(e,r),r++;while(this.hasBinding(t)||this.hasGlobal(t)||this.hasReference(t));var i=this.getProgramParent();return i.references[t]=!0,i.uids[t]=!0,t},e.prototype._generateUid=function(e,t){var r=e;return t>1&&(r+=t),"_"+r},e.prototype.generateUidIdentifierBasedOnNode=function(e,t){var r=e;M.isAssignmentExpression(e)?r=e.left:M.isVariableDeclarator(e)?r=e.id:(M.isObjectProperty(r)||M.isObjectMethod(r))&&(r=r.key);var i=[],n=function e(t){if(M.isModuleDeclaration(t))if(t.source)e(t.source);else if(t.specifiers&&t.specifiers.length)for(var r=t.specifiers,n=Array.isArray(r),s=0,r=n?r:(0,x.default)(r);;){var a;if(n){if(s>=r.length)break;a=r[s++]}else{if(s=r.next(),s.done)break;a=s.value}var o=a;e(o)}else t.declaration&&e(t.declaration);else if(M.isModuleSpecifier(t))e(t.local);else if(M.isMemberExpression(t))e(t.object),e(t.property);else if(M.isIdentifier(t))i.push(t.name);else if(M.isLiteral(t))i.push(t.value);else if(M.isCallExpression(t))e(t.callee);else if(M.isObjectExpression(t)||M.isObjectPattern(t))for(var u=t.properties,l=Array.isArray(u),p=0,u=l?u:(0,x.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;e(f.key||f.argument)}};n(r);var s=i.join("$");return s=s.replace(/^_/,"")||t||"ref",this.generateUidIdentifier(s.slice(0,20))},e.prototype.isStatic=function(e){if(M.isThisExpression(e)||M.isSuper(e))return!0;if(M.isIdentifier(e)){var t=this.getBinding(e.name);return t?t.constant:this.hasBinding(e.name)}return!1},e.prototype.maybeGenerateMemoised=function(e,t){if(this.isStatic(e))return null;var r=this.generateUidIdentifierBasedOnNode(e);return t||this.push({id:r}),r},e.prototype.checkBlockScopedCollisions=function(e,t,r,i){if("param"!==t&&("hoisted"!==t||"let"!==e.kind)){var n=!1;if(n||(n="let"===t||"let"===e.kind||"const"===e.kind||"module"===e.kind),n||(n="param"===e.kind&&("let"===t||"const"===t)),n)throw this.hub.file.buildCodeFrameError(i,N.get("scopeDuplicateDeclaration",r),TypeError)}},e.prototype.rename=function(e,t,r){var i=this.getBinding(e);if(i)return t=t||this.generateUidIdentifier(e).name,new P.default(i,e,t).rename(r)},e.prototype._renameFromMap=function(e,t,r,i){e[t]&&(e[r]=i,e[t]=null)},e.prototype.dump=function(){var e=(0,_.default)("-",60);console.log(e);var t=this;do{console.log("#",t.block.type);for(var r in t.bindings){var i=t.bindings[r];console.log(" -",r,{constant:i.constant,references:i.references,violations:i.constantViolations.length,kind:i.kind})}}while(t=t.parent);console.log(e)},e.prototype.toArray=function(e,t){var r=this.hub.file;if(M.isIdentifier(e)){var i=this.getBinding(e.name);if(i&&i.constant&&i.path.isGenericType("Array"))return e}if(M.isArrayExpression(e))return e;if(M.isIdentifier(e,{name:"arguments"}))return M.callExpression(M.memberExpression(M.memberExpression(M.memberExpression(M.identifier("Array"),M.identifier("prototype")),M.identifier("slice")),M.identifier("call")),[e]);var n="toArray",s=[e];return t===!0?n="toConsumableArray":t&&(s.push(M.numericLiteral(t)),n="slicedToArray"),M.callExpression(r.addHelper(n),s)},e.prototype.registerDeclaration=function(e){if(e.isLabeledStatement())this.registerBinding("label",e);else if(e.isFunctionDeclaration())this.registerBinding("hoisted",e.get("id"),e);else if(e.isVariableDeclaration())for(var t=e.get("declarations"),r=t,i=Array.isArray(r),n=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(n>=r.length)break;s=r[n++]}else{if(n=r.next(),n.done)break;s=n.value}var a=s;this.registerBinding(e.node.kind,a)}else if(e.isClassDeclaration())this.registerBinding("let",e);else if(e.isImportDeclaration())for(var o=e.get("specifiers"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,x.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("module",f)}else if(e.isExportDeclaration()){var h=e.get("declaration");(h.isClassDeclaration()||h.isFunctionDeclaration()||h.isVariableDeclaration())&&this.registerDeclaration(h)}else this.registerBinding("unknown",e)},e.prototype.buildUndefinedNode=function(){return this.hasBinding("undefined")?M.unaryExpression("void",M.numericLiteral(0),!0):M.identifier("undefined")},e.prototype.registerConstantViolation=function(e){var t=e.getBindingIdentifiers();for(var r in t){var i=this.getBinding(r);i&&i.reassign(e)}},e.prototype.registerBinding=function(e,t){var r=arguments.length<=2||void 0===arguments[2]?t:arguments[2];if(!e)throw new ReferenceError("no `kind`");if(t.isVariableDeclaration())for(var i=t.get("declarations"),n=i,s=Array.isArray(n),a=0,n=s?n:(0,x.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var u=o;this.registerBinding(e,u)}else{var l=this.getProgramParent(),p=t.getBindingIdentifiers(!0);for(var c in p)for(var f=p[c],h=Array.isArray(f),d=0,f=h?f:(0,x.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var v=y,m=this.getOwnBinding(c);if(m){if(m.identifier===v)continue;this.checkBlockScopedCollisions(m,e,c,v)}m&&m.path.isFlow()&&(m=null),l.references[c]=!0,this.bindings[c]=new F.default({identifier:v,existing:m,scope:this,path:r,kind:e})}}},e.prototype.addGlobal=function(e){this.globals[e.name]=e},e.prototype.hasUid=function(e){var t=this;do if(t.uids[e])return!0;while(t=t.parent);return!1},e.prototype.hasGlobal=function(e){var t=this;do if(t.globals[e])return!0;while(t=t.parent);return!1},e.prototype.hasReference=function(e){var t=this;do if(t.references[e])return!0;while(t=t.parent);return!1},e.prototype.isPure=function(e,t){if(M.isIdentifier(e)){var r=this.getBinding(e.name);return!!r&&(!t||r.constant)}if(M.isClass(e))return!(e.superClass&&!this.isPure(e.superClass,t))&&this.isPure(e.body,t);if(M.isClassBody(e)){for(var i=e.body,n=Array.isArray(i),s=0,i=n?i:(0,x.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if(!this.isPure(o,t))return!1}return!0}if(M.isBinary(e))return this.isPure(e.left,t)&&this.isPure(e.right,t);if(M.isArrayExpression(e)){for(var u=e.elements,l=Array.isArray(u),p=0,u=l?u:(0,x.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;if(!this.isPure(f,t))return!1}return!0}if(M.isObjectExpression(e)){for(var h=e.properties,d=Array.isArray(h),y=0,h=d?h:(0,x.default)(h);;){var v;if(d){if(y>=h.length)break;v=h[y++]}else{if(y=h.next(),y.done)break;v=y.value}var m=v;if(!this.isPure(m,t))return!1}return!0}return M.isClassMethod(e)?!(e.computed&&!this.isPure(e.key,t))&&("get"!==e.kind&&"set"!==e.kind):M.isClassProperty(e)||M.isObjectProperty(e)?!(e.computed&&!this.isPure(e.key,t))&&this.isPure(e.value,t):M.isUnaryExpression(e)?this.isPure(e.argument,t):M.isPureish(e)},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e){var t=this;do{var r=t.data[e];if(null!=r)return r}while(t=t.parent)},e.prototype.removeData=function(e){var t=this;do{var r=t.data[e];null!=r&&(t.data[e]=null)}while(t=t.parent)},e.prototype.init=function(){this.references||this.crawl()},e.prototype.crawl=function(){V++,this._crawl(),V--},e.prototype._crawl=function(){var e=this.path;if(this.references=(0,v.default)(null),this.bindings=(0,v.default)(null),this.globals=(0,v.default)(null),this.uids=(0,v.default)(null),this.data=(0,v.default)(null),e.isLoop())for(var t=M.FOR_INIT_KEYS,r=Array.isArray(t),i=0,t=r?t:(0,x.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=e.get(s);a.isBlockScoped()&&this.registerBinding(a.node.kind,a)}if(e.isFunctionExpression()&&e.has("id")&&(e.get("id").node[M.NOT_LOCAL_BINDING]||this.registerBinding("local",e.get("id"),e)),e.isClassExpression()&&e.has("id")&&(e.get("id").node[M.NOT_LOCAL_BINDING]||this.registerBinding("local",e)),e.isFunction())for(var o=e.get("params"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,x.default)(u);;){var c;if(l){if(p>=u.length)break;c=u[p++]}else{if(p=u.next(),p.done)break;c=p.value}var f=c;this.registerBinding("param",f)}e.isCatchClause()&&this.registerBinding("let",e);var h=this.getProgramParent();if(!h.crawling){var d={references:[],constantViolations:[],assignments:[]};this.crawling=!0,e.traverse(U,d),this.crawling=!1;for(var y=d.assignments,m=Array.isArray(y),g=0,y=m?y:(0,x.default)(y);;){var b;if(m){if(g>=y.length)break;b=y[g++]}else{if(g=y.next(),g.done)break;b=g.value}var E=b,A=E.getBindingIdentifiers(),S=void 0;for(var _ in A)E.scope.getBinding(_)||(S=S||E.scope.getProgramParent(),S.addGlobal(A[_]));E.scope.registerConstantViolation(E)}for(var T=d.references,P=Array.isArray(T),w=0,T=P?T:(0,x.default)(T);;){var k;if(P){if(w>=T.length)break;k=T[w++]}else{if(w=T.next(),w.done)break;k=w.value}var C=k,D=C.scope.getBinding(C.node.name);D?D.reference(C):C.scope.getProgramParent().addGlobal(C.node)}for(var O=d.constantViolations,N=Array.isArray(O),I=0,O=N?O:(0,x.default)(O);;){var F;if(N){if(I>=O.length)break;F=O[I++]}else{if(I=O.next(),I.done)break;F=I.value}var B=F;B.scope.registerConstantViolation(B)}}},e.prototype.push=function(e){var t=this.path;t.isBlockStatement()||t.isProgram()||(t=this.getBlockParent().path),t.isSwitchStatement()&&(t=this.getFunctionParent().path),(t.isLoop()||t.isCatchClause()||t.isFunction())&&(M.ensureBlock(t.node),t=t.get("body"));var r=e.unique,i=e.kind||"var",n=null==e._blockHoist?2:e._blockHoist,s="declaration:"+i+":"+n,a=!r&&t.getData(s);if(!a){var o=M.variableDeclaration(i,[]);o._generated=!0,o._blockHoist=n;var u=t.unshiftContainer("body",[o]);a=u[0],r||t.setData(s,a)}var l=M.variableDeclarator(e.id,e.init);a.node.declarations.push(l),this.registerBinding(i,a.get("declarations").pop())},e.prototype.getProgramParent=function(){var e=this;do if(e.path.isProgram())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getFunctionParent=function(){var e=this;do if(e.path.isFunctionParent())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getBlockParent=function(){var e=this;do if(e.path.isBlockParent())return e;while(e=e.parent);throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...")},e.prototype.getAllBindings=function(){var e=(0,v.default)(null),t=this;do(0,D.default)(e,t.bindings),t=t.parent;while(t);return e},e.prototype.getAllBindingsOfKind=function(){for(var e=(0,v.default)(null),t=arguments,r=Array.isArray(t),i=0,t=r?t:(0,x.default)(t);;){var n;if(r){if(i>=t.length)break;n=t[i++]}else{if(i=t.next(),i.done)break;n=i.value}var s=n,a=this;do{for(var o in a.bindings){var u=a.bindings[o];u.kind===s&&(e[o]=u)}a=a.parent}while(a)}return e},e.prototype.bindingIdentifierEquals=function(e,t){return this.getBindingIdentifier(e)===t},e.prototype.warnOnFlowBinding=function(e){return 0===V&&e&&e.path.isFlow()&&console.warn("\n You or one of the Babel plugins you are using are using Flow declarations as bindings.\n Support for this will be removed in version 6.8. To find out the caller, grep for this\n message and change it to a `console.trace()`.\n "),e},e.prototype.getBinding=function(e){var t=this;do{var r=t.getOwnBinding(e);if(r)return this.warnOnFlowBinding(r)}while(t=t.parent)},e.prototype.getOwnBinding=function(e){return this.warnOnFlowBinding(this.bindings[e])},e.prototype.getBindingIdentifier=function(e){var t=this.getBinding(e);return t&&t.identifier},e.prototype.getOwnBindingIdentifier=function(e){var t=this.bindings[e];return t&&t.identifier},e.prototype.hasOwnBinding=function(e){return!!this.getOwnBinding(e)},e.prototype.hasBinding=function(t,r){return!!t&&(!!this.hasOwnBinding(t)||(!!this.parentHasBinding(t,r)||(!!this.hasUid(t)||(!(r||!(0,A.default)(e.globals,t))||!(r||!(0,A.default)(e.contextVariables,t))))))},e.prototype.parentHasBinding=function(e,t){return this.parent&&this.parent.hasBinding(e,t)},e.prototype.moveBindingTo=function(e,t){var r=this.getBinding(e);r&&(r.scope.removeOwnBinding(e),r.scope=t,t.bindings[e]=r)},e.prototype.removeOwnBinding=function(e){delete this.bindings[e]},e.prototype.removeBinding=function(e){var t=this.getBinding(e);t&&t.scope.removeOwnBinding(e);var r=this;do r.uids[e]&&(r.uids[e]=!1);while(r=r.parent)},e}();K.globals=(0,d.default)(R.default.builtin),K.contextVariables=["arguments","undefined","Infinity","NaN"],t.default=K,e.exports=t.default},function(e,t,r,i){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function s(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var a=r(2),o=s(a),u=r(i),l=(s(u),r(3)),p=n(l),c={ReferencedIdentifier:function(e,t){var r=e.node;r.name===t.oldName&&(r.name=t.newName)},Scope:function(e,t){e.scope.bindingIdentifierEquals(t.oldName,t.binding.identifier)||e.skip()},"AssignmentExpression|Declaration":function(e,t){var r=e.getOuterBindingIdentifiers();for(var i in r)i===t.oldName&&(r[i].name=t.newName)}},f=function(){function e(t,r,i){(0,o.default)(this,e),this.newName=i,this.oldName=r,this.binding=t}return e.prototype.maybeConvertFromExportDeclaration=function(e){var t=e.parentPath.isExportDeclaration()&&e.parentPath;if(t){var r=t.isExportDefaultDeclaration();r&&(e.isFunctionDeclaration()||e.isClassDeclaration())&&!e.node.id&&(e.node.id=e.scope.generateUidIdentifier("default"));var i=e.getOuterBindingIdentifiers(),n=[];for(var s in i){var a=s===this.oldName?this.newName:s,o=r?"default":s;n.push(p.exportSpecifier(p.identifier(a),p.identifier(o)))}var u=p.exportNamedDeclaration(null,n);e.isFunctionDeclaration()&&(u._blockHoist=3),t.insertAfter(u),t.replaceWith(e.node)}},e.prototype.maybeConvertFromClassFunctionDeclaration=function(e){},e.prototype.maybeConvertFromClassFunctionExpression=function(e){},e.prototype.rename=function(e){var t=this.binding,r=this.oldName,i=this.newName,n=t.scope,s=t.path,a=s.find(function(e){return e.isDeclaration()||e.isFunctionExpression()});a&&this.maybeConvertFromExportDeclaration(a),n.traverse(e||n.block,c,this),e||(n.removeOwnBinding(r),n.bindings[i]=t,this.binding.identifier.name=i),"hoisted"===t.type,a&&(this.maybeConvertFromClassFunctionDeclaration(a),this.maybeConvertFromClassFunctionExpression(a))},e}();t.default=f,e.exports=t.default},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e._exploded)return e;e._exploded=!0;for(var t in e)if(!y(t)){var r=t.split("|");if(1!==r.length){var i=e[t];delete e[t];for(var n=r,s=Array.isArray(n),a=0,n=s?n:(0,A.default)(n);;){var o;if(s){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var l=o;e[l]=i}}}u(e),delete e.__esModule,f(e),h(e);for(var p=(0,x.default)(e),c=Array.isArray(p),m=0,p=c?p:(0,A.default)(p);;){var g;if(c){if(m>=p.length)break;g=p[m++]}else{if(m=p.next(),m.done)break;g=m.value}var b=g;if(!y(b)){var E=_[b];if(E){var S=e[b];for(var T in S)S[T]=d(E,S[T]);if(delete e[b],E.types)for(var P=E.types,w=Array.isArray(P),C=0,P=w?P:(0,A.default)(P);;){var O;if(w){if(C>=P.length)break;O=P[C++]}else{if(C=P.next(),C.done)break;O=C.value}var N=O;e[N]?v(e[N],S):e[N]=S}else v(e,S)}}}for(var I in e)if(!y(I)){var F=e[I],B=k.FLIPPED_ALIAS_KEYS[I],R=k.DEPRECATED_KEYS[I];if(R&&(console.trace("Visitor defined for "+I+" but it has been renamed to "+R),B=[R]),B){delete e[I];for(var L=B,M=Array.isArray(L),j=0,L=M?L:(0,A.default)(L);;){var V;if(M){if(j>=L.length)break;V=L[j++]}else{if(j=L.next(),j.done)break;V=j.value}var U=V,Y=e[U];Y?v(Y,F):e[U]=(0,D.default)(F)}}}for(var K in e)y(K)||h(e[K]);return e}function u(e){if(!e._verified){if("function"==typeof e)throw new Error(P.get("traverseVerifyRootFunction"));for(var t in e)if("enter"!==t&&"exit"!==t||l(t,e[t]),!y(t)){if(k.TYPES.indexOf(t)<0)throw new Error(P.get("traverseVerifyNodeType",t));var r=e[t];if("object"===("undefined"==typeof r?"undefined":(0,g.default)(r)))for(var i in r){if("enter"!==i&&"exit"!==i)throw new Error(P.get("traverseVerifyVisitorProperty",t,i));l(t+"."+i,r[i])}}e._verified=!0}}function l(e,t){for(var r=[].concat(t),i=r,n=Array.isArray(i),s=0,i=n?i:(0,A.default)(i);;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var o=a;if("function"!=typeof o)throw new TypeError("Non-function found defined in "+e+" with type "+("undefined"==typeof o?"undefined":(0,g.default)(o)))}}function p(e){for(var t=arguments.length<=1||void 0===arguments[1]?[]:arguments[1],r={},i=0;i<e.length;i++){var n=e[i],s=t[i];o(n);for(var a in n){var u=n[a];s&&(u=c(u,s));var l=r[a]=r[a]||{};v(l,u)}}return r}function c(e,t){var r={};for(var i in e){var n=e[i];Array.isArray(n)&&(n=n.map(function(e){var r=function(r){return e.call(t,r,t)};return r.toString=function(){return e.toString()},r}),r[i]=n)}return r}function f(e){for(var t in e)if(!y(t)){var r=e[t];"function"==typeof r&&(e[t]={enter:r})}}function h(e){e.enter&&!Array.isArray(e.enter)&&(e.enter=[e.enter]),e.exit&&!Array.isArray(e.exit)&&(e.exit=[e.exit])}function d(e,t){var r=function(r){if(e.checkPath(r))return t.apply(this,arguments)};return r.toString=function(){return t.toString()},r}function y(e){return"_"===e[0]||("enter"===e||"exit"===e||"shouldSkip"===e||("blacklist"===e||"noScope"===e||"skipKeys"===e))}function v(e,t){for(var r in t)e[r]=[].concat(e[r]||[],t[r])}t.__esModule=!0;var m=r(11),g=a(m),b=r(39),x=a(b),E=r(1),A=a(E);t.explode=o,t.verify=u,t.merge=p;var S=r(i),_=s(S),T=r(20),P=s(T),w=r(3),k=s(w),C=r(n),D=a(C)},function(e,t,r,i,n){"use strict";function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.default=function(e){function t(e,r){if(p.isJSXIdentifier(e)){if("this"===e.name&&p.isReferenced(e,r))return p.thisExpression();if(!u.default.keyword.isIdentifierNameES6(e.name))return p.stringLiteral(e.name);e.type="Identifier"}else if(p.isJSXMemberExpression(e))return p.memberExpression(t(e.object,e),t(e.property,e));return e}function r(e){return p.isJSXExpressionContainer(e)?e.expression:e}function i(e){var t=r(e.value||p.booleanLiteral(!0));return p.isStringLiteral(t)&&!p.isJSXExpressionContainer(e.value)&&(t.value=t.value.replace(/\n\s+/g," ")),p.isValidIdentifier(e.name.name)?e.name.type="Identifier":e.name=p.stringLiteral(e.name.name),p.inherits(p.objectProperty(e.name,t),e)}function n(r,i){r.parent.children=p.react.buildChildren(r.parent);var n=t(r.node.name,r.node),a=[],o=void 0;p.isIdentifier(n)?o=n.name:p.isLiteral(n)&&(o=n.value);var u={tagExpr:n,tagName:o,args:a};e.pre&&e.pre(u,i);var l=r.node.attributes;return l=l.length?s(l,i):p.nullLiteral(),a.push(l),e.post&&e.post(u,i),u.call||p.callExpression(u.callee,a)}function s(e,t){function r(){n.length&&(s.push(p.objectExpression(n)),n=[])}for(var n=[],s=[];e.length;){var a=e.shift();p.isJSXSpreadAttribute(a)?(r(),s.push(a.argument)):n.push(i(a))}return r(),1===s.length?e=s[0]:(p.isObjectExpression(s[0])||s.unshift(p.objectExpression([])),e=p.callExpression(t.addHelper("extends"),s)),e}var a={};return a.JSXNamespacedName=function(e){throw e.buildCodeFrameError("Namespace tags are not supported. ReactJSX is not XML.")},a.JSXElement={exit:function(e,t){var r=n(e.get("openingElement"),t);r.arguments=r.arguments.concat(e.node.children),r.arguments.length>=3&&(r._prettyCall=!0),e.replaceWith(p.inherits(r,e.node))}},a};var o=r(i),u=a(o),l=r(n),p=s(l);e.exports=t.default}]))});
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/App.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/App.vue
new file mode 100644
index 0000000..ea6edca
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/App.vue
@@ -0,0 +1,11 @@
+<template>
+ <router-view key="app"/>
+</template>
+
+<script>
+
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/ifc.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/ifc.js
new file mode 100644
index 0000000..253ee79
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/ifc.js
@@ -0,0 +1,19 @@
+import {postRequest, getRequest} from '@/utils/axioshttp';
+
+let base = WGURL.appDomain;
+
+export const GetIFCOperationList = (userid) => {
+ return getRequest(base + 'api/admin/ifc/operation/list?uid=' + userid)
+}
+
+export const GetNotificationList = (userid) => {
+ return getRequest(base + 'api/admin/ifc/dispatch/notification/latest?uid=' + userid)
+}
+
+export const GetTaskList = (userid) => {
+ return getRequest(base + 'api/admin/ifc/dispatch/task/latest?uid=' + userid)
+}
+
+export const GetApprovalList = (userid) => {
+ return getRequest(base + 'api/admin/ifc/dispatch/approval/latest?uid=' + userid)
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/masterdata.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/masterdata.js
new file mode 100644
index 0000000..8ba186b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/masterdata.js
@@ -0,0 +1,18 @@
+import {postRequest} from '../../utils/axioshttp';
+import {getRequest} from "../../utils/axioshttp";
+
+let base = WGURL.appDomain;
+
+//Customer
+export const GetCustomers = (params) => {
+ return postRequest(base + 'api/admin/masterdata/customer/list', params)
+}
+export const UpdateCustomer = (params) => {
+ return postRequest(base + 'api/admin/masterdata/customer/update', params)
+}
+export const CreateCustomer = (params) => {
+ return postRequest(base + 'api/admin/masterdata/customer/create', params)
+}
+export const DeleteCustomer = (id) => {
+ return getRequest(base + 'api/admin/masterdata/customer/delete?id=' + id)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/order.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/order.js
new file mode 100644
index 0000000..194ffda
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/order.js
@@ -0,0 +1,79 @@
+import {postRequest} from '../../utils/axioshttp';
+import {getRequest} from "../../utils/axioshttp";
+
+let base = WGURL.appDomain;
+
+//ActiveOrder
+export const GetActiveOrders = (params) => {
+ return postRequest(base + 'api/admin/order/active/list', params)
+}
+export const GetActiveOrderDetail = (id) => {
+ return getRequest(base + 'api/admin/order/active/detail?id=' + id)
+}
+export const UpdateActiveOrder = (params) => {
+ return postRequest(base + 'api/admin/order/active/update', params)
+}
+export const CreateActiveOrder = (params) => {
+ return postRequest(base + 'api/admin/order/active/create', params)
+}
+export const DeleteActiveOrder = (id) => {
+ return getRequest(base + 'api/admin/order/active/delete?id=' + id)
+}
+export const CreateWithProducts = (params) => {
+ return postRequest(base + 'api/admin/order/active/createwithproducts', params)
+}
+export const Delivery = (params) => {
+ return postRequest(base + 'api/admin/order/active/delivery', params)
+}
+export const Receive = (params) => {
+ return postRequest(base + 'api/admin/order/active/receive', params)
+}
+export const Reject = (params) => {
+ return postRequest(base + 'api/admin/order/active/reject', params)
+}
+export const Pay = (params) => {
+ return postRequest(base + 'api/admin/order/active/pay', params)
+}
+export const Cancel = (params) => {
+ return postRequest(base + 'api/admin/order/active/cancel', params)
+}
+export const Comment = (params) => {
+ return postRequest(base + 'api/admin/order/active/comment', params)
+}
+export const Complete = (params) => {
+ return postRequest(base + 'api/admin/order/active/complete', params)
+}
+
+//OrderHistory
+export const GetOrderHistories = (params) => {
+ return postRequest(base + 'api/admin/order/history/list', params)
+}
+export const UpdateOrderHistory = (params) => {
+ return postRequest(base + 'api/admin/order/history/update', params)
+}
+export const CreateOrderHistory = (params) => {
+ return postRequest(base + 'api/admin/order/history/create', params)
+}
+export const DeleteOrderHistory = (id) => {
+ return getRequest(base + 'api/admin/order/history/delete?id=' + id)
+}
+export const OrderHistoryDetail = (id) => {
+ return getRequest(base + 'api/admin/order/history/detail?id=' + id)
+}
+
+//Receiver
+export const GetReceivers = (params) => {
+ return postRequest(base + 'api/admin/order/receiver/list', params)
+}
+export const UpdateReceiver = (params) => {
+ return postRequest(base + 'api/admin/order/receiver/update', params)
+}
+export const CreateReceiver = (params) => {
+ return postRequest(base + 'api/admin/order/receiver/create', params)
+}
+export const DeleteReceiver = (id) => {
+ return getRequest(base + 'api/admin/order/receiver/delete?id=' + id)
+}
+export const ReceiverDetail = (id) => {
+ return getRequest(base + 'api/admin/order/receiver/detail?id=' + id)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/organization.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/organization.js
new file mode 100644
index 0000000..f98507a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/organization.js
@@ -0,0 +1,74 @@
+import {postRequest} from '../../utils/axioshttp';
+import {getRequest} from "../../utils/axioshttp";
+
+let base = WGURL.appDomain;
+
+//OrganizationMaster
+export const GetOrganizationMasters = (params) => {
+ return postRequest(base + 'api/admin/organization/master/list', params)
+}
+export const UpdateOrganizationMaster = (params) => {
+ return postRequest(base + 'api/admin/organization/master/update', params)
+}
+export const CreateOrganizationMaster = (params) => {
+ return postRequest(base + 'api/admin/organization/master/create', params)
+}
+export const DeleteOrganizationMaster = (id) => {
+ return getRequest(base + 'api/admin/organization/master/delete?id=' + id)
+}
+
+//OrganizationMajor
+export const GetOrganizationMajors = (params) => {
+ return postRequest(base + 'api/admin/organization/major/list', params)
+}
+export const UpdateOrganizationMajor = (params) => {
+ return postRequest(base + 'api/admin/organization/major/update', params)
+}
+export const CreateOrganizationMajor = (params) => {
+ return postRequest(base + 'api/admin/organization/major/create', params)
+}
+export const DeleteOrganizationMajor = (id) => {
+ return getRequest(base + 'api/admin/organization/major/delete?id=' + id)
+}
+
+//OrganizationClass
+export const GetOrganizationClasses = (params) => {
+ return postRequest(base + 'api/admin/organization/class/list', params)
+}
+export const UpdateOrganizationClass = (params) => {
+ return postRequest(base + 'api/admin/organization/class/update', params)
+}
+export const CreateOrganizationClass = (params) => {
+ return postRequest(base + 'api/admin/organization/class/create', params)
+}
+export const DeleteOrganizationClass = (id) => {
+ return getRequest(base + 'api/admin/organization/class/delete?id=' + id)
+}
+
+//OrganizationDepartment
+export const GetOrganizationDepartments = (params) => {
+ return postRequest(base + 'api/admin/organization/department/list', params)
+}
+export const UpdateOrganizationDepartment = (params) => {
+ return postRequest(base + 'api/admin/organization/department/update', params)
+}
+export const CreateOrganizationDepartment = (params) => {
+ return postRequest(base + 'api/admin/organization/department/create', params)
+}
+export const DeleteOrganizationDepartment = (id) => {
+ return getRequest(base + 'api/admin/organization/department/delete?id=' + id)
+}
+
+//OrganizationGrade
+export const GetOrganizationGrades = (params) => {
+ return postRequest(base + 'api/admin/organization/grade/list', params)
+}
+export const UpdateOrganizationGrade = (params) => {
+ return postRequest(base + 'api/admin/organization/grade/update', params)
+}
+export const CreateOrganizationGrade = (params) => {
+ return postRequest(base + 'api/admin/organization/grade/create', params)
+}
+export const DeleteOrganizationGrade = (id) => {
+ return getRequest(base + 'api/admin/organization/grade/delete?id=' + id)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/question.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/question.js
new file mode 100644
index 0000000..49f9ca3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/question.js
@@ -0,0 +1,156 @@
+import {postRequest} from '../../utils/axioshttp';
+import {getRequest} from "../../utils/axioshttp";
+
+let base = WGURL.appDomain;
+
+//QuestionMaster
+export const GetQuestionMasters = (params) => {
+ return postRequest(base + 'api/admin/question/master/list', params)
+}
+export const GetQuestionMastersWithBLOBsExtend = (params) => {
+ return postRequest(base + 'api/admin/question/master/listwithblobsextend', params)
+}
+export const GetQuestionMasterDetail = (id) => {
+ return getRequest(base + 'api/admin/question/master/detail?id=' + id)
+}
+export const UpdateQuestionMaster = (params) => {
+ return postRequest(base + 'api/admin/question/master/update', params)
+}
+export const CreateQuestionMaster = (params) => {
+ return postRequest(base + 'api/admin/question/master/create', params)
+}
+export const DeleteQuestionMaster = (id) => {
+ return getRequest(base + 'api/admin/question/master/delete?id=' + id)
+}
+export const GetQuestionMastersByPaperid = (paperid) => {
+ return getRequest(`${base}api/admin/question/master/listbypaperid?paperid=${paperid}`)
+}
+
+//QuestionCategory
+export const GetQuestionCategories = (params) => {
+ return postRequest(base + 'api/admin/question/category/list', params)
+}
+export const UpdateQuestionCategory = (params) => {
+ return postRequest(base + 'api/admin/question/category/update', params)
+}
+export const CreateQuestionCategory = (params) => {
+ return postRequest(base + 'api/admin/question/category/create', params)
+}
+export const DeleteQuestionCategory = (id) => {
+ return getRequest(base + 'api/admin/question/category/delete?id=' + id)
+}
+export const GetQuestionCategoryListwithchildren = (params) => {
+ return postRequest(base + 'api/admin/question/category/listwithchildren', params)
+}
+export const GetQuestionCategoryTree = () => {
+ return getRequest(base + 'api/admin/question/category/tree')
+}
+
+//QuestionPaperCategory
+export const GetQuestionPaperCategories = (params) => {
+ return postRequest(base + 'api/admin/question/paper/category/list', params)
+}
+export const UpdateQuestionPaperCategory = (params) => {
+ return postRequest(base + 'api/admin/question/paper/category/update', params)
+}
+export const CreateQuestionPaperCategory = (params) => {
+ return postRequest(base + 'api/admin/question/paper/category/create', params)
+}
+export const DeleteQuestionPaperCategory = (id) => {
+ return getRequest(base + 'api/admin/question/paper/category/delete?id=' + id)
+}
+export const GetQuestionPaperCategoryListwithchildren = (params) => {
+ return postRequest(base + 'api/admin/question/paper/category/listwithchildren', params)
+}
+export const GetQuestionPaperCategoryTree = () => {
+ return getRequest(base + 'api/admin/question/paper/category/tree')
+}
+
+//QuestionPaper
+export const GetQuestionPapers = (params) => {
+ return postRequest(base + 'api/admin/question/paper/list', params)
+}
+export const UpdateQuestionPaper = (params) => {
+ return postRequest(base + 'api/admin/question/paper/update', params)
+}
+export const CreateQuestionPaper = (params) => {
+ return postRequest(base + 'api/admin/question/paper/create', params)
+}
+export const DeleteQuestionPaper = (id) => {
+ return getRequest(base + 'api/admin/question/paper/delete?id=' + id)
+}
+
+//QuestionSubject
+export const GetQuestionSubjects = (params) => {
+ return postRequest(base + 'api/admin/question/subject/list', params)
+}
+export const UpdateQuestionSubject = (params) => {
+ return postRequest(base + 'api/admin/question/subject/update', params)
+}
+export const CreateQuestionSubject = (params) => {
+ return postRequest(base + 'api/admin/question/subject/create', params)
+}
+export const DeleteQuestionSubject = (id) => {
+ return getRequest(base + 'api/admin/question/subject/delete?id=' + id)
+}
+
+//QuestionSubjectKnowledgePoint
+export const GetQuestionSubjectKnowledgePoints = (params) => {
+ return postRequest(base + 'api/admin/question/subject/knowledge-point/list', params)
+}
+export const UpdateQuestionSubjectKnowledgePoint = (params) => {
+ return postRequest(base + 'api/admin/question/subject/knowledge-point/update', params)
+}
+export const CreateQuestionSubjectKnowledgePoint = (params) => {
+ return postRequest(base + 'api/admin/question/subject/knowledge-point/create', params)
+}
+export const DeleteQuestionSubjectKnowledgePoint = (id) => {
+ return getRequest(base + 'api/admin/question/subject/knowledge-point/delete?id=' + id)
+}
+export const GetQuestionKnowledgePointTree = (params) => {
+ return postRequest(base + 'api/admin/question/subject/knowledge-point/tree', params)
+}
+export const GetQuestionSubjectKnowledgePointListwithchildren = (params) => {
+ return postRequest(base + 'api/admin/question/subject/knowledge-point/listwithchildren', params)
+}
+
+//QuestionSubjectGradeRelation
+export const GetQuestionSubjectGradeRelations = (params) => {
+ return postRequest(base + 'api/admin/question/subject/grade/relation/list', params)
+}
+export const UpdateQuestionSubjectGradeRelation = (params) => {
+ return postRequest(base + 'api/admin/question/subject/grade/relation/update', params)
+}
+export const CreateQuestionSubjectGradeRelation = (params) => {
+ return postRequest(base + 'api/admin/question/subject/grade/relation/create', params)
+}
+export const BatchCreateQuestionSubjectGradeRelation = (params) => {
+ return postRequest(base + 'api/admin/question/subject/grade/relation/batchcreate', params)
+}
+export const DeleteQuestionSubjectGradeRelation = (id) => {
+ return getRequest(base + 'api/admin/question/subject/grade/relation/delete?id=' + id)
+}
+export const BatchDeleteQuestionSubjectGradeRelation = (params) => {
+ return postRequest(base + 'api/admin/question/subject/grade/relation/batchdelete', params)
+}
+
+
+//QuestionMasterPaperRelation
+export const GetQuestionMasterPaperRelations = (params) => {
+ return postRequest(base + 'api/admin/question/paper/question/master/relation/list', params)
+}
+export const UpdateQuestionMasterPaperRelation = (params) => {
+ return postRequest(base + 'api/admin/question/paper/question/master/relation/update', params)
+}
+export const CreateQuestionMasterPaperRelation = (params) => {
+ return postRequest(base + 'api/admin/question/paper/question/master/relation/create', params)
+}
+export const BatchCreateQuestionMasterPaperRelation = (params) => {
+ return postRequest(base + 'api/admin/question/paper/question/master/relation/batchcreate', params)
+}
+export const DeleteQuestionMasterPaperRelation = (id) => {
+ return getRequest(base + 'api/admin/question/paper/question/master/relation/delete?id=' + id)
+}
+export const BatchDeleteQuestionMasterPaperRelation = (params) => {
+ return postRequest(base + 'api/admin/question/paper/question/master/relation/batchdelete', params)
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/security.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/security.js
new file mode 100644
index 0000000..1a9bf87
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/security.js
@@ -0,0 +1,53 @@
+import {postRequest, getRequest} from '@/utils/axioshttp';
+
+let base = WGURL.appDomain;
+
+export const getVerifyCodeUrl = (params) => {
+ return base + 'api/admin/oauth/getverifycode?account=' + params + '&&time=' + new Date()
+}
+
+export const doLogin = (data) => {
+ return postRequest(base + 'api/admin/oauth/login', data)
+}
+export const doLoginOut = (accountid) => {
+ return getRequest(base + 'api/admin/oauth/logout?accountid=' + accountid);
+}
+export const loginBySMSCode = (data) => {
+ return postRequest(base + 'api/admin/oauth/loginBySMSCode', data)
+}
+export const SendSMSCode = (cellphone) => {
+ return getRequest(base + 'api/admin/oauth/sendsmscode?cellphone=' + cellphone)
+}
+export const GetAccountWithRolesAndPermissions = (accountid) => {
+ return getRequest(base + 'api/admin/oauth/getaccountwithrolesandpermissions?accountid=' + accountid)
+}
+
+//Account
+export const UpdateAccountPassword = (data) => {
+ return postRequest(base + 'api/admin/security/account/pass', data)
+}
+export const UpdateUserProfile = (data) => {
+ return postRequest(base + 'api/admin/security/account/update/profile', data)
+}
+export const GetUserApplications = (accountid) => {
+ return getRequest(base + 'api/admin/security/application/accountapps?accountid=' + accountid);
+}
+export const GetAllRoles = () => {
+ return getRequest(base + 'api/admin/security/role/all')
+}
+export const GetEmployeePositionWithOrganizationsByEmployeeId = (employeeid) => {
+ return getRequest(base + 'api/admin/security/employee/positionwithorganization?employeeid=' + employeeid)
+}
+export const GetEmployeePositionsByEmployeeId = (employeeid) => {
+ return getRequest(base + 'api/admin/security/employee/positions?employeeid=' + employeeid)
+}
+
+export const GetRoleAll = (permissionLevel) => {
+ return getRequest(base + 'api/admin/security/role/all?permissionLevel=' + permissionLevel);
+}
+export const GetRolesByAccountId = (accountid) => {
+ return getRequest(base + 'api/admin/security/role/listbyaccountid?accountid=' + accountid)
+}
+export const GetRolesByPositionId = (positionid) => {
+ return getRequest(base + 'api/admin/security/role/listbypositionid?positionid=' + positionid)
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/statistics.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/statistics.js
new file mode 100644
index 0000000..f3e19fb
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/statistics.js
@@ -0,0 +1,7 @@
+import {postRequest, getRequest} from '@/utils/axioshttp';
+
+let base = WGURL.appDomain;
+
+export const GetDashboardData = (params) => {
+ return postRequest(base + 'api/admin/dashboard/data', params)
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/system.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/system.js
new file mode 100644
index 0000000..021daab
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/system.js
@@ -0,0 +1,85 @@
+import {postRequest, getRequest,postExportRequest} from '@/utils/axioshttp';
+
+let base = WGURL.appDomain;
+
+//Config
+export const GetSystemConfig = () => {
+ return getRequest(base + 'api/admin/system/config/getsystemconfig?time=' + new Date());
+}
+export const GetConfigs = (params) => {
+ return postRequest(base + 'api/admin/system/config/list', params)
+}
+export const UpdateConfig = (params) => {
+ return postRequest(base + 'api/admin/system/config/update', params)
+}
+export const CreateConfig = (params) => {
+ return postRequest(base + 'api/admin/system/config/create', params)
+}
+export const DeleteConfig = (id) => {
+ return getRequest(base + 'api/admin/system/config/delete?id=' + id)
+}
+export const getLogs = (params) => {
+ return postRequest(base + 'api/admin/system/log/list', params)
+}
+
+//Menu
+export const GetMenus = (params) => {
+ return postRequest(base + 'api/admin/system/menu/list', params)
+}
+export const GetMenuTree = () => {
+ return getRequest(base + 'api/admin/system/menu/tree')
+}
+export const UpdateMenu = (params) => {
+ return postRequest(base + 'api/admin/system/menu/update?', params)
+}
+export const CreateMenu = (params) => {
+ return postRequest(base + 'api/admin/system/menu/create', params)
+}
+export const DeleteMenu = (id) => {
+ return getRequest(base + 'api/admin/system/menu/delete?id=' + id)
+}
+
+//AuditTrail
+export const GetAuditTrails = (params) => {
+ return postRequest(base + 'api/admin/system/audittrail/list', params)
+}
+export const UpdateAuditTrail = (params) => {
+ return postRequest(base + 'api/admin/system/audittrail/update?', params)
+}
+export const CreateAuditTrail = (params) => {
+ return postRequest(base + 'api/admin/system/audittrail/create', params)
+}
+export const DeleteAuditTrail = (id) => {
+ return getRequest(base + 'api/admin/system/audittrail/delete?id=' + id)
+}
+export const ExportAuditTrails = (params) => {
+ return postExportRequest(base + 'api/admin/system/audittrail/export', params)
+}
+
+//Notification
+export const GetNotifications = (params) => {
+ return postRequest(base + 'api/admin/system/notification/list', params)
+}
+export const UpdateNotification = (params) => {
+ return postRequest(base + 'api/admin/system/notification/update', params)
+}
+export const CreateNotification = (params) => {
+ return postRequest(base + 'api/admin/system/notification/create', params)
+}
+export const DeleteNotification = (id) => {
+ return getRequest(base + 'api/admin/system/notification/delete?id=' + id)
+}
+
+//MailSendLog
+export const GetMailSendLogs = (params) => {
+ return postRequest(base + 'api/admin/system/mailsendlog/list', params)
+}
+export const UpdateMailSendLog = (params) => {
+ return postRequest(base + 'api/admin/system/mailsendlog/update?', params)
+}
+export const CreateMailSendLog = (params) => {
+ return postRequest(base + 'api/admin/system/mailsendlog/create', params)
+}
+export const DeleteMailSendLog = (id) => {
+ return getRequest(base + 'api/admin/system/mailsendlog/delete?id=' + id)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/vip.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/vip.js
new file mode 100644
index 0000000..f0678c1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/admin/vip.js
@@ -0,0 +1,94 @@
+import {postRequest} from '../../utils/axioshttp';
+import {getRequest} from "../../utils/axioshttp";
+
+let base = WGURL.appDomain;
+
+//VIPMaster
+export const GetVIPMasters = (params) => {
+ return postRequest(base + 'api/admin/vip/master/list', params)
+}
+export const UpdateVIPMaster = (params) => {
+ return postRequest(base + 'api/admin/vip/master/update', params)
+}
+export const CreateVIPMaster = (params) => {
+ return postRequest(base + 'api/admin/vip/master/create', params)
+}
+export const DeleteVIPMaster = (id) => {
+ return getRequest(base + 'api/admin/vip/master/delete?id=' + id)
+}
+
+//VIPCouponActive
+export const GetVIPCouponActives = (params) => {
+ return postRequest(base + 'api/admin/vip/coupon/active/list', params)
+}
+export const UpdateVIPCouponActive = (params) => {
+ return postRequest(base + 'api/admin/vip/coupon/active/update', params)
+}
+export const CreateVIPCouponActive = (params) => {
+ return postRequest(base + 'api/admin/vip/coupon/active/create', params)
+}
+export const DeleteVIPCouponActive = (id) => {
+ return getRequest(base + 'api/admin/vip/coupon/active/delete?id=' + id)
+}
+
+//VIPCouponHistory
+export const GetVIPCouponHistories = (params) => {
+ return postRequest(base + 'api/admin/vip/coupon/history/list', params)
+}
+export const UpdateVIPCouponHistory = (params) => {
+ return postRequest(base + 'api/admin/vip/coupon/history/update', params)
+}
+export const CreateVIPCouponHistory = (params) => {
+ return postRequest(base + 'api/admin/vip/coupon/history/create', params)
+}
+export const DeleteVIPCouponHistory = (id) => {
+ return getRequest(base + 'api/admin/vip/coupon/history/delete?id=' + id)
+}
+
+//VIPMasterWallet
+export const GetVIPMasterWallets = (params) => {
+ return postRequest(base + 'api/admin/vip/master/wallet/list', params)
+}
+export const GetVIPMasterWalletDetail = (masterid) => {
+ return getRequest(base + 'api/admin/vip/master/wallet/detail?masterid=' + masterid)
+}
+export const UpdateVIPMasterWallet = (params) => {
+ return postRequest(base + 'api/admin/vip/master/wallet/update', params)
+}
+export const CreateVIPMasterWallet = (params) => {
+ return postRequest(base + 'api/admin/vip/master/wallet/create', params)
+}
+export const DeleteVIPMasterWallet = (id) => {
+ return getRequest(base + 'api/admin/vip/master/wallet/delete?id=' + id)
+}
+
+//VIPDepositActivity
+export const GetVIPDepositActivities = (params) => {
+ return postRequest(base + 'api/admin/vip/deposit/activity/list', params)
+}
+export const UpdateVIPDepositActivity = (params) => {
+ return postRequest(base + 'api/admin/vip/deposit/activity/update', params)
+}
+export const CreateVIPDepositActivity = (params) => {
+ return postRequest(base + 'api/admin/vip/deposit/activity/create', params)
+}
+export const DeleteVIPDepositActivity = (id) => {
+ return getRequest(base + 'api/admin/vip/deposit/activity/delete?id=' + id)
+}
+
+//ShoppingCard
+export const GetShoppingCards = (params) => {
+ return postRequest(base + 'api/admin/shopping/card/list', params)
+}
+export const UpdateShoppingCard = (params) => {
+ return postRequest(base + 'api/admin/shopping/card/update', params)
+}
+export const CreateShoppingCard = (params) => {
+ return postRequest(base + 'api/admin/shopping/card/create', params)
+}
+export const DeleteShoppingCard = (id) => {
+ return getRequest(base + 'api/admin/shopping/card/delete?id=' + id)
+}
+export const ShoppingCardDetail = (id) => {
+ return getRequest(base + 'api/admin/shopping/card/detail?id=' + id)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/common.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/common.js
new file mode 100644
index 0000000..84f858a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/common.js
@@ -0,0 +1,29 @@
+import {getRequest, postExportRequest, postFileRequest} from '@/utils/axioshttp';
+
+let base = WGURL.appDomain;
+
+export const UploadFileToFastDFS = (params) => {
+ let url = `${base}api/fastdfs/upload`;
+
+ return postFileRequest(url, params);
+}
+
+export const DownloadFileToFastDFS = (filepath) => {
+ let url = `${base}api/fastdfs/download?filepath=${filepath}`;
+
+ return postExportRequest(url);
+}
+
+export const DeleteFileToFastDFS = (filepath) => {
+ let url = `${base}api/fastdfs/delete?filepath=${filepath}`;
+
+ return getRequest(url);
+}
+
+export const getFileUploadUrl = () => {
+ return `${base}api/fastdfs/upload`;
+}
+
+export const getBaseUrl = () => {
+ return WGURL.appDomain
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/mobile/question.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/mobile/question.js
new file mode 100644
index 0000000..414baa6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/mobile/question.js
@@ -0,0 +1,19 @@
+import { postRequest } from '../../utils/axioshttp';
+import { getRequest } from "../../utils/axioshttp";
+
+let base = WGURL.appDomain;
+
+
+export const GetQuestionMasters = (data) => {
+ return postRequest(base + 'api/wechat/question/master/list', data);
+}
+
+export const GetQuestionMasterDetail = (id) => {
+ return getRequest(base + 'api/wechat/question/master/detail?id=' + id)
+}
+
+export const GetQuestionMastersByPaperid = (paperid) => {
+ return getRequest(base + 'api/wechat/question/master/listbypaperid?paperid=' + paperid)
+}
+
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/open.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/open.js
new file mode 100644
index 0000000..b602b09
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/open.js
@@ -0,0 +1,3 @@
+import {postRequest, getRequest,postExportRequest} from '@/utils/axioshttp';
+
+let base = WGURL.appDomain;
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/portal/security.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/portal/security.js
new file mode 100644
index 0000000..866fd9a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/api/portal/security.js
@@ -0,0 +1,51 @@
+import {postRequest} from '../../utils/axioshttp';
+import {getRequest} from "../../utils/axioshttp";
+
+let base = WGURL.appDomain;
+
+export const getVerifyCodeUrl = (params) => {
+ return base + 'api/portal/oauth/code?account=' + params + '&&time=' + new Date()
+}
+
+//PortalLogin
+export const doPortalLogin = (data) => {
+ return postRequest(base + 'api/portal/oauth/login', data);
+}
+export const doPortalLoginOut = (userid) => {
+ return getRequest(base + 'api/portal/oauth/logout?userid=' + userid);
+}
+export const portalLoginBySMSCode = (data) => {
+ return postRequest(base + 'api/portal/oauth/loginBySMSCode', data);
+}
+export const portalSendSMSCode = (cellphone) => {
+ return getRequest(base + 'api/portal/oauth/sendsmscode?cellphone=' + cellphone)
+}
+export const portalRegisterUser = (data) => {
+ return postRequest(base + 'api/portal/oauth/RegisterUser', data);
+}
+export const portalResetPassword = (data) => {
+ return postRequest(base + 'api/portal/oauth/ResetPassword', data);
+}
+export const portalResetPasswordByEmail = (data) => {
+ return postRequest(base + 'api/portal/oauth/ResetPasswordByEmail', data);
+}
+export const portalRetrievePasswordByEmail = (email) => {
+ return getRequest(base + 'api/portal/oauth/RetrievePasswordByEmail?email=' + email);
+}
+
+//User
+export const GetUserRoles = (id) => {
+ return getRequest(base + 'api/portal/security/user/userroles?id=' + id)
+}
+export const UpdateUserProfile = (data) => {
+ return postRequest(base + 'api/portal/security/user/updateuserprofile', data)
+}
+export const UpdateUserPassword = (data) => {
+ return postRequest(base + 'api/portal/security/user/pass', data)
+}
+export const GetUserProfile = (params) => {
+ return postRequest(base + 'api/portal/security/user/detail', params);
+}
+export const GetCustomerDetail = (data) => {
+ return postRequest(base + 'api/portal/security/user/customerdetail', data)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AppMenuButton.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AppMenuButton.vue
new file mode 100644
index 0000000..31d2db8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AppMenuButton.vue
@@ -0,0 +1,107 @@
+<template>
+ <div class="appmenubutton" :style="{ width: props.width, height: props.height }" :onclick="onClick"
+ :title="props.item.text">
+ <div style="margin-top: 10px;">
+ <svg-icon width="30" height="30" :color="props.color" :name="props.item.icon"/>
+ </div>
+ <div style="margin-top: 10px;">
+ <p style="width: 100%; overflow: hidden">{{ props.item.code }}</p>
+ </div>
+ </div>
+</template>
+
+<script>
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "AppMenuButton",
+ components: {},
+ props: {
+ item: null,
+ height: "100px",
+ width: "100px",
+ color: ""
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+
+ const onClick = () => {
+ switch (props.item.type) {
+ case "menu":
+ if (store.tags.length > store.tagUpperLimit) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.TagQuantityReachedUpperLimit')}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'warning',
+ }
+ );
+
+ return;
+ }
+
+ addTag(props.item);
+ proxy.$router.replace(props.item.link);
+ break;
+ case "link":
+ window.open(props.item.link);
+ break;
+ }
+ };
+ const addTag = (target) => {
+ let stags = store.tags.filter(tab => tab.name === target.name);
+
+ if (stags === [] || stags.length <= 0) {
+ store.tags.push({
+ name: target.name,
+ languagekey: target.languagekey,
+ closable: true,
+ icon: target.icon
+ });
+ }
+ };
+ return {
+ ...toRefs(state), props, onClick
+ }
+ },
+}
+</script>
+
+<style scoped>
+.appmenubutton {
+ border: 1px solid;
+ border-image: linear-gradient(45deg, rgba(255, 255, 255, 0) 0%, var(--el-color-info-light) 20%, rgba(255, 255, 255, 0) 99%) 2 2 2 2;
+ float: left;
+ text-align: center;
+ padding: 5px;
+ font-size: 12px;
+}
+
+.appmenubutton:hover {
+ background-color: var(--el-color-info-light);
+ color: white;
+}
+
+.appmenubutton:active {
+ background-color: var(--el-color-info-light);
+ color: white;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AvatarUploadExt.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AvatarUploadExt.vue
new file mode 100644
index 0000000..8ce7175
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/AvatarUploadExt.vue
@@ -0,0 +1,123 @@
+<template>
+ <div>
+ <svg-icon v-if="!image" name="image_empty"
+ width="100" height="100" style=" margin: 5px"
+ color=""/>
+ <el-image v-else
+ style="width: 100px; height: 100px; margin: 5px"
+ :src="image"
+ :preview-src-list="[image]"
+ :zIndex="1000"
+ fit="cover"
+ disabled
+ />
+ <el-upload class="upload-demo"
+ action
+ accept=".jpeg,.jpg,.png"
+ :http-request="doUpload"
+ :headers="uploadHeaders"
+ :show-file-list="false"
+ :on-success="handleUploadSuccess"
+ :on-error="handleUploadError"
+ :before-upload="beforeUpload">
+ <el-button size="small" :icon="icon.Upload">
+ {{ $t('button.Upload') }}
+ </el-button>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {UploadFileToFastDFS} from "@/api/common";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "AvatarUploadExt",
+ components: {},
+ props: {
+ image: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+
+ const doUpload = (fileObject) => {
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ UploadFileToFastDFS(fd).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ props.successCallBack(resp.data.data.linkurl);
+ }
+ }
+ });
+ };
+
+ const handleUploadSuccess = (res, file) => {
+
+ };
+ const beforeUpload = (file) => {
+ const isJPG = file.type === 'image/jpeg';
+ const isPNG = file.type === 'image/png';
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isJPG && !isPNG) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_FORMAT_INVALID'))
+ }
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleUploadError = (res, file) => {
+ proxy.$message.error(res);
+ };
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ doUpload,
+ handleUploadSuccess,
+ beforeUpload,
+ handleUploadError,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileImporter.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileImporter.vue
new file mode 100644
index 0000000..b9de923
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileImporter.vue
@@ -0,0 +1,113 @@
+<template>
+ <div v-loading="loading">
+ <el-upload class="upload-demo" drag action :http-request="doUpload" accept=".xls,.xlsx" :headers="uploadHeaders"
+ :show-file-list="false" :on-success="handleImportSuccess" :on-error="handleImportError"
+ :before-upload="beforeImportUpload">
+ <div>
+ <el-icon class="el-icon--upload" style="height: 40px; width: 40px;">
+ <upload-filled />
+ </el-icon>
+ <div class="el-upload__text">
+ {{ $t('message.DropFileHereOr') }} <em>{{ $t('message.ClickToUpload') }}</em>
+ </div>
+ </div>
+ <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import * as elementplus from "element-plus";
+import { getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs } from "vue";
+import { useBasicInfoStore } from "@/store/basicInfo";
+
+export default {
+ name: "FileUploadExt",
+ components: {},
+ props: {
+ method: null,
+ url: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let { proxy } = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{ Authorization: localStorage.getItem('Authorization') }],
+ fileList: [],
+ resultFileList: [],
+ loading: false
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const doUpload = (fileObject) => {
+ state.loading = true
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ props.method(props.url, fd).then(resp => {
+ state.loading = false
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ props.successCallBack()
+ }
+ });
+ };
+ const handleImportSuccess = (res, file) => {
+
+ };
+ const beforeImportUpload = (file) => {
+ const isXlsx = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
+ const isXls = file.type === 'application/vnd.ms-excel';
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isXlsx && !isXls) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_FORMAT_INVALID'));
+ }
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+ }
+
+ return true;
+ };
+ const handleImportError = (res, file) => {
+ proxy.$message.error(res);
+ };
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ doUpload,
+ handleImportSuccess,
+ beforeImportUpload,
+ handleImportError,
+ }
+ },
+}
+</script>
+
+<style scoped></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileUploadExt.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileUploadExt.vue
new file mode 100644
index 0000000..29f2a16
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FileUploadExt.vue
@@ -0,0 +1,155 @@
+<template>
+ <div>
+ <el-scrollbar v-if="fileList&&fileList.length>0" max-height="200px">
+ <el-space wrap>
+ <el-card style="width: 250px; margin: 5px;"
+ v-for="(item, i) in fileList" :index="i + 1 + ''" :item="item">
+ <svg-icon v-if="!item.response" name="image_empty" width="100%" height="80" color=""/>
+ <el-image v-else style="width: 100%; height: 80px;" :src="item.response" :fit="'contain'"
+ :preview-src-list="[item.response]"
+ :zIndex="1000"/>
+ <div style="display: flex;justify-content: space-between">
+ <p class="text-overflow">
+ <svg-icon name="masterdata" width="23" height="23" color="var(--el-color-primary)"
+ style="margin-right: 5px;"/>
+ <b>{{ item.name }}</b>
+ </p>
+ <el-button link size="default" type="primary" :icon="icon.Remove"
+ @click="onRemoveFile(item.name)">
+ <p class="text-overflow">{{ $t('button.Remove') }}</p>
+ </el-button>
+ </div>
+ </el-card>
+ </el-space>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ </el-scrollbar>
+ <el-upload class="upload-demo" drag
+ v-model:file-list="fileList"
+ :action="uploadurl"
+ :headers="uploadHeaders"
+ multiple
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :on-error="handleAvatarError"
+ :before-upload="beforeAvatarUpload">
+ <div>
+ <!-- <el-icon class="el-icon--upload" style="height: 40px; width: 40px;">-->
+ <!-- <upload-filled/>-->
+ <!-- </el-icon>-->
+ <div class="el-upload__text">
+ {{ $t('message.DropFileHereOr') }} <em>{{ $t('message.ClickToUpload') }}</em>
+ </div>
+ </div>
+ <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {getFileUploadUrl} from "@/api/common";
+
+export default {
+ name: "FileUploadExt",
+ components: {},
+ props: {
+ files: null,
+ click: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ fileList: [],
+ resultFileList: [],
+ uploadurl: '',
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ state.uploadurl = getFileUploadUrl();
+
+ if (props.files) {
+ state.fileList = [];
+ props.files.map(file => {
+ state.fileList.push({
+ name: file.name,
+ response: file.url
+ });
+ });
+ }
+ };
+
+ const onClick = () => {
+ if (props.click) {
+ props.click(props.item);
+ }
+ };
+
+ const onRemoveFile = (name) => {
+ if (state.fileList && state.fileList.length > 0) {
+ state.fileList = state.fileList.filter(e => e.name !== name);
+ }
+ };
+
+ const handleAvatarSuccess = (res, file) => {
+
+ };
+ const beforeAvatarUpload = (file) => {
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isLt2M) {
+ proxy.$message.error('Avatar picture size can not exceed 2MB!');
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleAvatarError = (res, file) => {
+ proxy.$message.error(res);
+ };
+ const exportValue = () => {
+ state.resultFileList = [];
+ state.fileList.map(file => {
+ state.resultFileList.push({
+ name: file.name,
+ url: file.response
+ });
+ });
+
+ return state.resultFileList;
+ }
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ onClick,
+ onRemoveFile,
+ handleAvatarSuccess,
+ beforeAvatarUpload,
+ handleAvatarError,
+ exportValue,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FlipDown.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FlipDown.vue
new file mode 100644
index 0000000..daf8f10
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/FlipDown.vue
@@ -0,0 +1,379 @@
+<!-- 翻页效果 倒计时组件 -->
+<template>
+ <div :class="['vue-countdown-component', { theme2: theme !== 1 }, { ie: isIE }]">
+ <template v-for="(item, index) in timeArray" :key="index">
+ <div :class="['time-box']">
+ <!-- 底层基础div -->
+ <div class="base">
+ {{ item }}
+ <div class="base-b">{{ timeArrayT[index] }}</div>
+ </div>
+ <!-- 翻页动画div -->
+ <div
+ :class="['face', { anime: isAnimate[index] }]"
+ @animationend="onAnimateEnd(index)"
+ >
+ {{ timeArrayT[index] }}
+ </div>
+ <div :class="['back', { anime: isAnimate[index] }]">{{ item }}</div>
+ </div>
+ <!-- 文字 -->
+ <div
+ class="time-unit"
+ :key="`unit-${index}`"
+ v-if="isTimeUnitShow(index)"
+ >
+ {{ setTimeUnit(index) }}
+ </div>
+ </template>
+ </div>
+</template>
+
+<script setup lang="ts">
+import {ref, computed, watch, onMounted, onBeforeUnmount, Ref} from "vue";
+import {defineProps, defineEmits} from "vue";
+
+const emit = defineEmits(["timeUp"]);
+const props = defineProps({
+ endDate: {type: [Date, Number, String], default: 0}, // 截止时间
+ type: {type: Number, default: 4}, // 时间精度 4/3/2/1
+ theme: {type: Number, default: 1},
+ timeUnit: {type: Array, default: () => []},
+});
+
+const isIE = ref(false);
+const timeArray: Ref<string[]> = ref(
+ props.theme === 2
+ ? new Array(props.type * 2).fill("0")
+ : new Array(props.type).fill("00")
+);
+const timeArrayT: Ref<string[]> = ref(
+ props.theme === 2
+ ? new Array(props.type * 2).fill("0")
+ : new Array(props.type).fill("00")
+);
+const isAnimate: Ref<boolean[]> = ref(
+ props.theme === 2
+ ? new Array(props.type * 2).fill(false)
+ : new Array(props.type).fill(false)
+);
+const timer = ref<NodeJS.Timeout>();
+
+const endTime = computed(() => {
+ if (props.endDate instanceof Date) {
+ return props.endDate.getTime();
+ }
+ return Number(props.endDate) > 0 ? Number(props.endDate) : 0;
+});
+
+const step = computed(() => (props.theme === 1 ? 1 : 2));
+const arr = computed(() => {
+ const length = timeArray.value.length;
+ const temp = [
+ length - 1,
+ length - step.value - 1,
+ length - step.value * 2 - 1,
+ length - step.value * 3 - 1,
+ ];
+ temp.length = props.type > 1 ? props.type : 1;
+ return temp;
+});
+
+watch(timeArray, (newV, oldV) => {
+ const diff: { value: string; index: number }[] = [];
+ newV.forEach((value, index) => {
+ if (value !== oldV[index]) {
+ diff.push({value, index});
+ isAnimate.value[index] = true;
+ }
+ });
+ setTimeout(() => {
+ diff.forEach((item) => {
+ timeArrayT.value[item.index] = item.value;
+ });
+ }, 350);
+});
+
+watch(endTime, (newV) => {
+ if (newV > 0) {
+ start();
+ }
+});
+
+onMounted(() => {
+ if (
+ (window as any).ActiveXObject ||
+ "ActiveXObject" in window ||
+ window.navigator.userAgent.indexOf("Edge") > -1
+ ) {
+ isIE.value = true;
+ }
+ start(0);
+});
+
+onBeforeUnmount(() => {
+ clearTimeout(timer.value);
+});
+
+/**
+ * 开始倒计时
+ * @param st 重复执行的间隔时间
+ */
+const start = (st = 1000) => {
+ clearTimeout(timer.value);
+ timer.value = setTimeout(() => {
+ let t = endTime.value - new Date().getTime(); // 剩余的毫秒数
+ t = t < 0 ? 0 : t;
+ let day = 0; // 剩余的天
+ let hour = 0; // 剩余的小时
+ let min = 0; // 剩余的分钟
+ let second = 0; // 剩余的秒
+ const type = Number(props.type);
+ if (type >= 4) {
+ day = Math.floor(t / 86400000); // 剩余的天
+ hour = Math.floor(t / 3600000 - day * 24); // 剩余的小时 已排除天
+ min = Math.floor(t / 60000 - day * 1440 - hour * 60); // 剩余的分钟 已排除天和小时
+ second = Math.floor(t / 1000 - day * 86400 - hour * 3600 - min * 60); // 剩余的秒
+ } else if (type >= 3) {
+ hour = Math.floor(t / 3600000); // 剩余的小时
+ min = Math.floor(t / 60000 - hour * 60); // 剩余的分钟 已排小时
+ second = Math.floor(t / 1000 - hour * 3600 - min * 60); // 剩余的秒
+ } else if (type >= 2) {
+ min = Math.floor(t / 60000); // 剩余的分钟
+ second = Math.floor(t / 1000 - min * 60); // 剩余的秒
+ } else {
+ second = Math.floor(t / 1000); // 剩余的秒
+ }
+
+ let ar = [];
+ if (Number(props.theme) === 1) {
+ // 不分开
+ type >= 4 && ar.push(String(day).padStart(2, "0"));
+ type >= 3 && ar.push(String(hour).padStart(2, "0"));
+ type >= 2 && ar.push(String(min).padStart(2, "0"));
+ ar.push(String(second).padStart(2, "0"));
+ } else {
+ // 分开
+ type >= 4 && ar.push(...String(day).padStart(2, "0").split(""));
+ type >= 3 && ar.push(...String(hour).padStart(2, "0").split(""));
+ type >= 2 && ar.push(...String(min).padStart(2, "0").split(""));
+ ar.push(...String(second).padStart(2, "0").split(""));
+ }
+ timeArray.value = ar;
+
+ if (t > 0) {
+ start();
+ } else {
+ emit("timeUp");
+ }
+ }, st);
+};
+
+// 动画完毕后,去掉对应的class, 为下次动画做准备
+const onAnimateEnd = (index: number) => {
+ isAnimate.value[index] = false;
+};
+
+const isTimeUnitShow = (index: number) => {
+ if (arr.value.includes(index)) {
+ if (index === timeArray.value.length - 1 && !props.timeUnit[3]) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+};
+
+const setTimeUnit = (index: number) => {
+ switch (index) {
+ case timeArray.value.length - 1:
+ return props.timeUnit[3] || ""; // 秒
+ case timeArray.value.length - step.value - 1:
+ return props.timeUnit[2] || ""; // 分
+ case timeArray.value.length - step.value * 2 - 1:
+ return props.timeUnit[1] || ""; // 时
+ default:
+ return props.timeUnit[0] || ""; // 天
+ }
+};
+
+// return {
+// isIE,
+// timeArray,
+// timeArrayT,
+// isAnimate,
+// endTime,
+// step,
+// arr,
+// onAnimateEnd,
+// isTimeUnitShow,
+// setTimeUnit,
+// };
+</script>
+
+<style lang="less">
+.vue-countdown-component {
+ display: flex;
+ @keyframes animate-flip-face {
+ 0% {
+ transform: rotateX(-0.01deg);
+ opacity: 1; // 改变opacity 为了QQ浏览器和safari(不支持z-index animate)
+ }
+ 50% {
+ opacity: 1;
+ }
+ 51% {
+ opacity: 0;
+ }
+ 100% {
+ transform: rotateX(-180deg);
+ opacity: 0;
+ }
+ }
+ @keyframes animate-flip-back {
+ 0% {
+ transform: rotateX(180deg);
+ }
+ 100% {
+ transform: rotateX(-0.01deg);
+ }
+ }
+
+ &.ie {
+ // 为了ie和老版edge(不支持clip-path)
+ .base {
+ .base-b {
+ clip: rect(15px, auto, auto, auto);
+ }
+ }
+
+ .face {
+ clip: rect(auto, auto, 15px, auto);
+ }
+
+ .back {
+ clip: rect(15px, auto, auto, auto);
+ }
+ }
+
+ &.theme2 {
+ .time-box {
+ min-width: 20px;
+
+ & + .time-box {
+ margin-left: 1px;
+ }
+ }
+ }
+
+ .time-unit {
+ padding: 0 4px;
+ color: #ffffff;
+ font-size: 14px;
+ line-height: 30px;
+ white-space: nowrap;
+ }
+
+ .time-box {
+ position: relative;
+ box-sizing: border-box;
+ height: 30px;
+ min-width: 28px;
+ font-size: 14px;
+ text-align: center;
+ background-color: #eac77f;
+ perspective: 60px;
+ border-radius: 3px;
+ padding: 0 2px;
+ color: #fff;
+ line-height: 30px;
+
+ &:before {
+ content: "";
+ position: absolute;
+ background: #e4ca97;
+ width: 1px;
+ height: 6px;
+ top: 50%;
+ left: -1px;
+ margin-top: -3px;
+ z-index: -1;
+ }
+
+ &:after {
+ content: "";
+ position: absolute;
+ background: #e5cea0;
+ width: 1px;
+ height: 6px;
+ top: 50%;
+ right: -1px;
+ margin-top: -3px;
+ z-index: -1;
+ }
+
+ & + .time-box {
+ margin-left: 8px;
+ }
+
+ & > div {
+ overflow: hidden;
+ animation-timing-function: linear;
+ animation-duration: 400ms;
+ // 为了chrome,需要一个小的角度,否则字体渲染错位
+ transform: rotateX(-0.01deg);
+ border-radius: 3px;
+
+ &.base {
+ position: relative;
+
+ .base-b {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ border-radius: 0 0 3px 3px;
+ width: 100%;
+ height: 100%;
+ background-color: #e7b248; // a1比base浅一点点,为了模拟翻页的阴影效果
+ // background-color: #0ff;
+ clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%);
+ }
+ }
+
+ &.face {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #eac77f;
+ // background-color: #f00;
+ backface-visibility: visible;
+ clip-path: polygon(0 0, 100% 0, 100% 50%, 0 50%);
+ z-index: 2;
+
+ &.anime {
+ animation-name: animate-flip-face;
+ }
+ }
+
+ &.back {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: #e4d1ab; // b0和a1一致
+ // background-color: #aa0;
+ transform: rotateX(-180deg);
+ backface-visibility: visible;
+ clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%);
+
+ &.anime {
+ animation-name: animate-flip-back;
+ }
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MasterDataStatus.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MasterDataStatus.vue
new file mode 100644
index 0000000..0d23e67
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MasterDataStatus.vue
@@ -0,0 +1,54 @@
+<template>
+ <el-text v-if="entity.status===0" type="success">
+ <el-icon>
+ <CircleCheck/>
+ </el-icon>
+ {{ $t('status.Enabled') }}
+ </el-text>
+ <el-text v-else-if="entity.status===1" type="danger">
+ <el-icon>
+ <CircleClose/>
+ </el-icon>
+ {{ $t('status.Disabled') }}
+ </el-text>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {onBeforeUnmount, onMounted, onActivated, reactive, toRefs} from "vue";
+import {CircleCheck, CircleClose} from "@element-plus/icons-vue";
+
+export default {
+ name: "MasterDataStatus",
+ components: {CircleCheck, CircleClose},
+ props: {
+ entity: null
+ },
+ setup(props) {
+ const state = reactive({});
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MenuButton.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MenuButton.vue
new file mode 100644
index 0000000..3ee4f3f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/MenuButton.vue
@@ -0,0 +1,121 @@
+<template>
+ <div class="menubutton" :style="{ width: props.width, height: props.height }" :onclick="onClick">
+ <div style="margin-top: 10px;">
+ <svg-icon width="30" height="30" :color="props.color" :name="props.item.icon"/>
+ </div>
+ <div style="margin-top: 10px;">
+ <p style="width: 100%; overflow: hidden;">{{ props.item.text }}</p>
+ </div>
+ </div>
+</template>
+
+<script>
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "MenuButton",
+ components: {},
+ props: {
+ item: null,
+ height: "100px",
+ width: "100px",
+ color: "",
+ click: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+
+ const onClick = () => {
+ if (!props.click) {
+ switch (props.item.type) {
+ case "menu":
+ if (store.tags.length > store.tagUpperLimit) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.TagQuantityReachedUpperLimit')}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'warning',
+ }
+ );
+
+ return;
+ }
+
+ addTag(props.item);
+ proxy.$router.replace(props.item.link);
+ break;
+ case "link":
+ store.iframe_url = props.item.link;
+ store.iframe_dialogVisible = true;
+ store.iframe_title = props.item.text;
+ store.iframe_loading = true;
+ // window.open(props.item.link);
+ break;
+ }
+ } else {
+ props.click(props.item);
+ }
+ };
+ const addTag = (target) => {
+ let stags = store.tags.filter(tab => tab.name === target.name);
+
+ if (stags === [] || stags.length <= 0) {
+ store.tags.push({
+ name: target.name,
+ languagekey: target.languagekey,
+ closable: true,
+ icon: target.icon,
+ path: target.link
+ });
+ }
+ };
+ return {
+ ...toRefs(state), props, onClick
+ }
+ },
+}
+</script>
+
+<style scoped>
+.menubutton {
+ border: 1px solid;
+ border-image: linear-gradient(45deg, rgba(255, 255, 255, 0) 0%, var(--el-color-primary-light-6) 20%, rgba(255, 255, 255, 0) 99%) 2 2 2 2;
+ float: left;
+ text-align: center;
+ padding: 5px;
+ font-size: 12px;
+ cursor: pointer;
+ -webkit-user-select: none; /* Safari */
+ -moz-user-select: none; /* Firefox */
+ -ms-user-select: none; /* IE10+/Edge */
+ user-select: none; /* Standard syntax */
+}
+
+.menubutton:hover {
+ background-color: var(--el-color-primary-light-6);
+ color: white;
+}
+
+.menubutton:active {
+ background-color: var(--el-color-primary-light-6);
+ color: white;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadBOL.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadBOL.vue
new file mode 100644
index 0000000..c228c20
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadBOL.vue
@@ -0,0 +1,158 @@
+<template>
+ <div>
+ <el-scrollbar v-if="fileList&&fileList.length>0" max-height="200px">
+ <el-space wrap>
+ <el-card style="width: 250px; margin: 5px;"
+ v-for="(item, i) in fileList" :index="i + 1 + ''" :item="item">
+ <svg-icon v-if="!item.response" name="image_empty" width="100%" height="80" color=""/>
+ <el-image v-else style="width: 100%; height: 80px;" :src="item.response" :fit="'contain'"
+ :preview-src-list="[item.response]"
+ :zIndex="1000"/>
+ <div style="display: flex;justify-content: space-between">
+ <p class="text-overflow">
+ <svg-icon name="masterdata" width="23" height="23" color="var(--el-color-primary)"
+ style="margin-right: 5px;"/>
+ <b>{{ item.name }}</b>
+ </p>
+ <el-button link size="default" type="primary" :icon="icon.Remove"
+ @click="onRemoveFile(item.name)">
+ <p class="text-overflow">{{ $t('button.Remove') }}</p>
+ </el-button>
+ </div>
+ </el-card>
+ </el-space>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ </el-scrollbar>
+ <el-upload class="upload-demo" drag
+ action
+ :http-request="doUpload"
+ :headers="uploadHeaders"
+ :show-file-list="false"
+ :on-success="handleUploadSuccess"
+ :on-error="handleUploadError"
+ :before-upload="beforeUpload">
+ <div>
+ <!-- <el-icon class="el-icon--upload" style="height: 40px; width: 40px;">-->
+ <!-- <upload-filled/>-->
+ <!-- </el-icon>-->
+ <div class="el-upload__text">
+ {{ $t('message.DropFileHereOr') }} <em>{{ $t('message.ClickToUpload') }}</em>
+ </div>
+ </div>
+ <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {UploadFileToFastDFS} from "@/api/common";
+
+export default {
+ name: "UploadFileToFastDFS",
+ components: {},
+ props: {
+ files: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ fileList: [],
+ resultFileList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (props.files) {
+ state.fileList = [];
+ props.files.map(file => {
+ state.fileList.push({
+ name: file.name,
+ response: file.url
+ });
+ });
+ }
+ };
+
+ const onRemoveFile = (name) => {
+ if (state.fileList && state.fileList.length > 0) {
+ state.fileList = state.fileList.filter(e => e.name !== name);
+ }
+ };
+
+ const doUpload = (fileObject) => {
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ UploadFileToFastDFS(fd).then(resp => {
+ props.successCallBack(resp);
+ state.fileList.push({
+ name: resp.data.data.relativepath,
+ response: resp.data.data.linkurl
+ });
+ });
+ };
+
+ const handleUploadSuccess = (res, file) => {
+
+ };
+ const beforeUpload = (file) => {
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleUploadError = (res, file) => {
+ proxy.$message.error(res);
+ };
+ const exportValue = () => {
+ state.resultFileList = [];
+ state.fileList.map(file => {
+ state.resultFileList.push({
+ name: file.name,
+ url: file.response
+ });
+ });
+
+ return state.resultFileList;
+ }
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ onRemoveFile,
+ doUpload,
+ handleUploadSuccess,
+ beforeUpload,
+ handleUploadError,
+ exportValue,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadDocument.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadDocument.vue
new file mode 100644
index 0000000..3d69655
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadDocument.vue
@@ -0,0 +1,154 @@
+<template>
+ <div>
+ <el-scrollbar v-if="fileList&&fileList.length>0" max-height="200px">
+ <el-space wrap>
+ <el-card style="width: 250px; margin: 5px;"
+ v-for="(item, i) in fileList" :index="i + 1 + ''" :item="item">
+ <svg-icon v-if="!item.response" name="image_empty" width="100%" height="80" color=""/>
+ <el-image v-else style="width: 100%; height: 80px;" :src="item.response" :fit="'contain'"
+ :preview-src-list="[item.response]"
+ :zIndex="1000"/>
+ <div style="display: flex;justify-content: space-between">
+ <p class="text-overflow">
+ <svg-icon name="masterdata" width="23" height="23" color="var(--el-color-primary)"
+ style="margin-right: 5px;"/>
+ <b>{{ item.name }}</b>
+ </p>
+ <el-button link size="default" type="primary" :icon="icon.Remove"
+ @click="onRemoveFile(item.name)">
+ <p class="text-overflow">{{ $t('button.Remove') }}</p>
+ </el-button>
+ </div>
+ </el-card>
+ </el-space>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ </el-scrollbar>
+ <el-upload class="upload-demo" drag
+ action
+ :http-request="doUpload"
+ :headers="uploadHeaders"
+ :show-file-list="false"
+ :on-success="handleUploadSuccess"
+ :on-error="handleUploadError"
+ :before-upload="beforeUpload">
+ <div>
+ <!-- <el-icon class="el-icon--upload" style="height: 40px; width: 40px;">-->
+ <!-- <upload-filled/>-->
+ <!-- </el-icon>-->
+ <div class="el-upload__text">
+ {{ $t('message.DropFileHereOr') }} <em>{{ $t('message.ClickToUpload') }}</em>
+ </div>
+ </div>
+ <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {UploadFileToFastDFS} from "@/api/common";
+
+export default {
+ name: "UploadDocument",
+ components: {},
+ props: {
+ files: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ fileList: [],
+ resultFileList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (props.files) {
+ state.fileList = [];
+ props.files.map(file => {
+ state.fileList.push({
+ name: file.name,
+ response: file.url
+ });
+ });
+ }
+ };
+
+ const onRemoveFile = (name) => {
+ if (state.fileList && state.fileList.length > 0) {
+ state.fileList = state.fileList.filter(e => e.name !== name);
+ }
+ };
+
+ const doUpload = (fileObject) => {
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ UploadFileToFastDFS(fd).then(resp => {
+ props.successCallBack(resp);
+ });
+ };
+
+ const handleUploadSuccess = (res, file) => {
+
+ };
+ const beforeUpload = (file) => {
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleUploadError = (res, file) => {
+ proxy.$message.error(res);
+ };
+ const exportValue = () => {
+ state.resultFileList = [];
+ state.fileList.map(file => {
+ state.resultFileList.push({
+ name: file.name,
+ url: file.response
+ });
+ });
+
+ return state.resultFileList;
+ }
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ onRemoveFile,
+ doUpload,
+ handleUploadSuccess,
+ beforeUpload,
+ handleUploadError,
+ exportValue,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadExportTemplate.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadExportTemplate.vue
new file mode 100644
index 0000000..0c4afbd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadExportTemplate.vue
@@ -0,0 +1,154 @@
+<template>
+ <div>
+ <el-scrollbar v-if="fileList&&fileList.length>0" max-height="200px">
+ <el-space wrap>
+ <el-card style="width: 250px; margin: 5px;"
+ v-for="(item, i) in fileList" :index="i + 1 + ''" :item="item">
+ <svg-icon v-if="!item.response" name="image_empty" width="100%" height="80" color=""/>
+ <el-image v-else style="width: 100%; height: 80px;" :src="item.response" :fit="'contain'"
+ :preview-src-list="[item.response]"
+ :zIndex="1000"/>
+ <div style="display: flex;justify-content: space-between">
+ <p class="text-overflow">
+ <svg-icon name="masterdata" width="23" height="23" color="var(--el-color-primary)"
+ style="margin-right: 5px;"/>
+ <b>{{ item.name }}</b>
+ </p>
+ <el-button link size="default" type="primary" :icon="icon.Remove"
+ @click="onRemoveFile(item.name)">
+ <p class="text-overflow">{{ $t('button.Remove') }}</p>
+ </el-button>
+ </div>
+ </el-card>
+ </el-space>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ </el-scrollbar>
+ <el-upload class="upload-demo" drag
+ action
+ :http-request="doUpload"
+ :headers="uploadHeaders"
+ :show-file-list="false"
+ :on-success="handleUploadSuccess"
+ :on-error="handleUploadError"
+ :before-upload="beforeUpload">
+ <div>
+ <!-- <el-icon class="el-icon--upload" style="height: 40px; width: 40px;">-->
+ <!-- <upload-filled/>-->
+ <!-- </el-icon>-->
+ <div class="el-upload__text">
+ {{ $t('message.DropFileHereOr') }} <em>{{ $t('message.ClickToUpload') }}</em>
+ </div>
+ </div>
+ <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {UploadFileToFastDFS} from "@/api/common";
+
+export default {
+ name: "FileUploadExportTemplate",
+ components: {},
+ props: {
+ files: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ fileList: [],
+ resultFileList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (props.files) {
+ state.fileList = [];
+ props.files.map(file => {
+ state.fileList.push({
+ name: file.name,
+ response: file.url
+ });
+ });
+ }
+ };
+
+ const onRemoveFile = (name) => {
+ if (state.fileList && state.fileList.length > 0) {
+ state.fileList = state.fileList.filter(e => e.name !== name);
+ }
+ };
+
+ const doUpload = (fileObject) => {
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ UploadFileToFastDFS(fd).then(resp => {
+ props.successCallBack(resp);
+ });
+ };
+
+ const handleUploadSuccess = (res, file) => {
+
+ };
+ const beforeUpload = (file) => {
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleUploadError = (res, file) => {
+ proxy.$message.error(res);
+ };
+ const exportValue = () => {
+ state.resultFileList = [];
+ state.fileList.map(file => {
+ state.resultFileList.push({
+ name: file.name,
+ url: file.response
+ });
+ });
+
+ return state.resultFileList;
+ }
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ onRemoveFile,
+ doUpload,
+ handleUploadSuccess,
+ beforeUpload,
+ handleUploadError,
+ exportValue,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadImportTemplate.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadImportTemplate.vue
new file mode 100644
index 0000000..1476f5a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadImportTemplate.vue
@@ -0,0 +1,154 @@
+<template>
+ <div>
+ <el-scrollbar v-if="fileList&&fileList.length>0" max-height="200px">
+ <el-space wrap>
+ <el-card style="width: 250px; margin: 5px;"
+ v-for="(item, i) in fileList" :index="i + 1 + ''" :item="item">
+ <svg-icon v-if="!item.response" name="image_empty" width="100%" height="80" color=""/>
+ <el-image v-else style="width: 100%; height: 80px;" :src="item.response" :fit="'contain'"
+ :preview-src-list="[item.response]"
+ :zIndex="1000"/>
+ <div style="display: flex;justify-content: space-between">
+ <p class="text-overflow">
+ <svg-icon name="masterdata" width="23" height="23" color="var(--el-color-primary)"
+ style="margin-right: 5px;"/>
+ <b>{{ item.name }}</b>
+ </p>
+ <el-button link size="default" type="primary" :icon="icon.Remove"
+ @click="onRemoveFile(item.name)">
+ <p class="text-overflow">{{ $t('button.Remove') }}</p>
+ </el-button>
+ </div>
+ </el-card>
+ </el-space>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ </el-scrollbar>
+ <el-upload class="upload-demo" drag
+ action
+ :http-request="doUpload"
+ :headers="uploadHeaders"
+ :show-file-list="false"
+ :on-success="handleUploadSuccess"
+ :on-error="handleUploadError"
+ :before-upload="beforeUpload">
+ <div>
+ <!-- <el-icon class="el-icon--upload" style="height: 40px; width: 40px;">-->
+ <!-- <upload-filled/>-->
+ <!-- </el-icon>-->
+ <div class="el-upload__text">
+ {{ $t('message.DropFileHereOr') }} <em>{{ $t('message.ClickToUpload') }}</em>
+ </div>
+ </div>
+ <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {UploadFileToFastDFS} from "@/api/common";
+
+export default {
+ name: "FileUploadImportTemplate",
+ components: {},
+ props: {
+ files: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ fileList: [],
+ resultFileList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (props.files) {
+ state.fileList = [];
+ props.files.map(file => {
+ state.fileList.push({
+ name: file.name,
+ response: file.url
+ });
+ });
+ }
+ };
+
+ const onRemoveFile = (name) => {
+ if (state.fileList && state.fileList.length > 0) {
+ state.fileList = state.fileList.filter(e => e.name !== name);
+ }
+ };
+
+ const doUpload = (fileObject) => {
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ UploadFileToFastDFS(fd).then(resp => {
+ props.successCallBack(resp);
+ });
+ };
+
+ const handleUploadSuccess = (res, file) => {
+
+ };
+ const beforeUpload = (file) => {
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleUploadError = (res, file) => {
+ proxy.$message.error(res);
+ };
+ const exportValue = () => {
+ state.resultFileList = [];
+ state.fileList.map(file => {
+ state.resultFileList.push({
+ name: file.name,
+ url: file.response
+ });
+ });
+
+ return state.resultFileList;
+ }
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ onRemoveFile,
+ doUpload,
+ handleUploadSuccess,
+ beforeUpload,
+ handleUploadError,
+ exportValue,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadReport.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadReport.vue
new file mode 100644
index 0000000..fc17580
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadReport.vue
@@ -0,0 +1,154 @@
+<template>
+ <div>
+ <el-scrollbar v-if="fileList&&fileList.length>0" max-height="200px">
+ <el-space wrap>
+ <el-card style="width: 250px; margin: 5px;"
+ v-for="(item, i) in fileList" :index="i + 1 + ''" :item="item">
+ <svg-icon v-if="!item.response" name="image_empty" width="100%" height="80" color=""/>
+ <el-image v-else style="width: 100%; height: 80px;" :src="item.response" :fit="'contain'"
+ :preview-src-list="[item.response]"
+ :zIndex="1000"/>
+ <div style="display: flex;justify-content: space-between">
+ <p class="text-overflow">
+ <svg-icon name="masterdata" width="23" height="23" color="var(--el-color-primary)"
+ style="margin-right: 5px;"/>
+ <b>{{ item.name }}</b>
+ </p>
+ <el-button link size="default" type="primary" :icon="icon.Remove"
+ @click="onRemoveFile(item.name)">
+ <p class="text-overflow">{{ $t('button.Remove') }}</p>
+ </el-button>
+ </div>
+ </el-card>
+ </el-space>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ </el-scrollbar>
+ <el-upload class="upload-demo" drag
+ action
+ :http-request="doUpload"
+ :headers="uploadHeaders"
+ :show-file-list="false"
+ :on-success="handleUploadSuccess"
+ :on-error="handleUploadError"
+ :before-upload="beforeUpload">
+ <div>
+ <!-- <el-icon class="el-icon--upload" style="height: 40px; width: 40px;">-->
+ <!-- <upload-filled/>-->
+ <!-- </el-icon>-->
+ <div class="el-upload__text">
+ {{ $t('message.DropFileHereOr') }} <em>{{ $t('message.ClickToUpload') }}</em>
+ </div>
+ </div>
+ <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template>
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {UploadFileToFastDFS} from "@/api/common";
+
+export default {
+ name: "UploadFileToFastDFS",
+ components: {},
+ props: {
+ files: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ fileList: [],
+ resultFileList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (props.files) {
+ state.fileList = [];
+ props.files.map(file => {
+ state.fileList.push({
+ name: file.name,
+ response: file.url
+ });
+ });
+ }
+ };
+
+ const onRemoveFile = (name) => {
+ if (state.fileList && state.fileList.length > 0) {
+ state.fileList = state.fileList.filter(e => e.name !== name);
+ }
+ };
+
+ const doUpload = (fileObject) => {
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ UploadFileToFastDFS(fd).then(resp => {
+ props.successCallBack(resp);
+ });
+ };
+
+ const handleUploadSuccess = (res, file) => {
+
+ };
+ const beforeUpload = (file) => {
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleUploadError = (res, file) => {
+ proxy.$message.error(res);
+ };
+ const exportValue = () => {
+ state.resultFileList = [];
+ state.fileList.map(file => {
+ state.resultFileList.push({
+ name: file.name,
+ url: file.response
+ });
+ });
+
+ return state.resultFileList;
+ }
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ onRemoveFile,
+ doUpload,
+ handleUploadSuccess,
+ beforeUpload,
+ handleUploadError,
+ exportValue,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadSingleFile.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadSingleFile.vue
new file mode 100644
index 0000000..52a77d4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/UploadSingleFile.vue
@@ -0,0 +1,151 @@
+<template>
+ <div>
+ <!-- <el-scrollbar v-if="fileList && fileList.length > 0" max-height="200px">
+ <el-space wrap>
+ <el-card style="width: 250px; margin: 5px;" v-for="(item, i) in fileList" :index="i + 1 + ''"
+ :item="item">
+ <svg-icon v-if="!item.response" name="image_empty" width="100%" height="80" color="" />
+ <el-image v-else style="width: 100%; height: 80px;" :src="item.response" :fit="'contain'"
+ :preview-src-list="[item.response]" :zIndex="1000" />
+ <div style="display: flex;justify-content: space-between">
+ <p class="text-overflow">
+ <svg-icon name="masterdata" width="23" height="23" color="var(--el-color-primary)"
+ style="margin-right: 5px;" />
+ <b>{{ item.name }}</b>
+ </p>
+ <el-button link size="default" type="primary" :icon="icon.Remove"
+ @click="onRemoveFile(item.name)">
+ <p class="text-overflow">{{ $t('button.Remove') }}</p>
+ </el-button>
+ </div>
+ </el-card>
+ </el-space>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ </el-scrollbar> -->
+ <el-upload class="upload-demo" drag action :http-request="doUpload" :headers="uploadHeaders"
+ :show-file-list="false" :on-success="handleUploadSuccess" :on-error="handleUploadError"
+ :before-upload="beforeUpload">
+ <div style="width:100px;height: 100px;background:#f5f5f5;cursor: pointer;border-radius: 15px;display: flex;justify-content: center;align-items: center;">
+ <el-icon size="50" color="#7d7d7d">
+ <Upload/>
+ </el-icon>
+ </div>
+ <!-- <template #tip>
+ <div class="el-upload__tip">
+ {{ $t('message.FilesWithSizeLessThan') }} 2MB
+ </div>
+ </template> -->
+ </el-upload>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import {UploadFileToFastDFS} from "@/api/common";
+
+export default {
+ name: "UploadSingleFile",
+ components: {},
+ props: {
+ files: null,
+ successCallBack: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ uploadHeaders: [{'Authorization': localStorage.getItem('Authorization')}],
+ fileList: [],
+ resultFileList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (props.files) {
+ state.fileList = [];
+ props.files.map(file => {
+ state.fileList.push({
+ name: file.name,
+ response: file.url
+ });
+ });
+ }
+ };
+
+ const onRemoveFile = (name) => {
+ if (state.fileList && state.fileList.length > 0) {
+ state.fileList = state.fileList.filter(e => e.name !== name);
+ }
+ };
+
+ const doUpload = (fileObject) => {
+ let fd = new FormData()
+ fd.append('file', fileObject.file);
+
+ UploadFileToFastDFS(fd).then(resp => {
+ props.successCallBack(resp);
+ state.fileList.push({
+ name: resp.data.data.relativepath,
+ response: resp.data.data.linkurl
+ });
+ });
+ };
+
+ const handleUploadSuccess = (res, file) => {
+
+ };
+ const beforeUpload = (file) => {
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isLt2M) {
+ proxy.$message.error(proxy.$t('message.MSG_ERROR_UPLOAD_FILE_SIZE_INVALID'));
+
+ return false;
+ }
+
+ return true;
+ };
+ const handleUploadError = (res, file) => {
+ proxy.$message.error(res);
+ };
+ const exportValue = () => {
+ state.resultFileList = [];
+ state.fileList.map(file => {
+ state.resultFileList.push({
+ name: file.name,
+ url: file.response
+ });
+ });
+
+ return state.resultFileList;
+ }
+
+ return {
+ ...toRefs(state),
+ props,
+ icon,
+ onRemoveFile,
+ doUpload,
+ handleUploadSuccess,
+ beforeUpload,
+ handleUploadError,
+ exportValue,
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+.upload-demo ::v-deep .el-upload-dragger {
+ padding: 0 !important;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/dashboardprogressExt.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/dashboardprogressExt.vue
new file mode 100644
index 0000000..1478906
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/dashboardprogressExt.vue
@@ -0,0 +1,31 @@
+<template>
+ <div>
+ <el-progress type="dashboard"
+ :width="80"
+ :stroke-width="6"
+ :percentage="percentage"
+ :status="status">
+ <template #default="{percentage}">
+ <span class="percentage-value">{{ percentage }} %</span>
+ <br/>
+ <span class="percentage-label">{{ title }}</span>
+ </template>
+ </el-progress>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'dashboardprogressExt',
+ props: {
+ title: '',
+ percentage: 0,
+ status: '',
+ },
+ methods: {}
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/lineprogressExt.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/lineprogressExt.vue
new file mode 100644
index 0000000..da016ec
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/lineprogressExt.vue
@@ -0,0 +1,47 @@
+<template>
+ <div style="width: 100%">
+ <div class="progressExt">
+ <span style="text-align: left; font-size: 14px">{{ title }}</span>
+ <span style="text-align: right; font-size: 14px">{{ count }} {{ uom }}</span>
+ </div>
+ <el-progress :text-inside="true"
+ :stroke-width="6"
+ :format="format"
+ :percentage="percentage"
+ :status="status"/>
+ <div class="progressExt">
+ <span style="text-align: left; font-size: 14px">{{ percentage }} %</span>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'lineprogressExt',
+ props: {
+ title: '',
+ count: 0,
+ uom: '',
+ percentage: 0,
+ status: ''
+ },
+ methods: {
+ format(percentage) {
+ return '';
+ }
+ }
+}
+</script>
+
+<style scoped>
+.progressExt {
+ background-color: transparent;
+ display: flex;
+ align-items: center;
+ horiz-align: left;
+ justify-content: space-between;
+ padding: 2px 0px;
+ box-sizing: border-box;
+ color: #ffffff;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/svgIcon.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/svgIcon.vue
new file mode 100644
index 0000000..ff20329
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/svgIcon.vue
@@ -0,0 +1,81 @@
+<template>
+ <div :style="svgBodyStyle">
+ <img :style="svgStyle" :src="svgSrc" alt="" style="object-fit: cover;">
+ </div>
+</template>
+
+<script>
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+
+export default {
+ name: "svgicon",
+ props: {
+ width: {
+ type: String,
+ required: true,
+ },
+ height: {
+ type: String,
+ required: true,
+ },
+ color: {
+ type: String,
+ required: true,
+ },
+ name: {
+ type: String,
+ required: true,
+ },
+ type: {
+ type: String,
+ required: false,
+ },
+ src: null
+ },
+ components: {},
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ svgStyle: '',
+ svgSrc: '',
+ svgBodyStyle: ''
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ //brands,regular,solid
+ if (props.type) {
+ state.svgSrc = `${state.staticDomain}icon/svgs/${props.type}/${props.name}.svg`;
+ } else if (props.name) {
+ state.svgSrc = `${state.staticDomain}icon/svg/${props.name}.svg`;
+ } else {
+ state.svgSrc = props.src;
+ }
+
+ state.svgBodyStyle = "width:" + props.width + "px;"
+ + "height:" + props.height + "px;"
+ + "overflow:hidden;"
+ + "display: inline-block;line-height:0px;vertical-align:middle;"
+ state.svgStyle = "width:" + props.width + "px;"
+ + "height:" + props.height + "px;"
+ if (props.color) {
+ state.svgStyle = state.svgStyle + "transform: translateX(-" + props.width + "px);"
+ + "filter:drop-shadow(" + props.color + " " + props.width + "px 0);"
+ }
+ };
+
+ return {
+ ...toRefs(state)
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss"></style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/wangEditorExt.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/wangEditorExt.vue
new file mode 100644
index 0000000..b1c144f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/common/wangEditorExt.vue
@@ -0,0 +1,123 @@
+<template>
+ <div class="editor-div" style="border: 1px solid #ccc">
+ <Toolbar
+ style="border-bottom: 1px solid #ccc"
+ :editor="editorRef"
+ :defaultConfig="editorToolbarConfig"
+ :mode="editorMode"
+ />
+ <Editor :style="{height: `${props.height}`}"
+ v-model="editorValueHtml"
+ :defaultConfig="editorConfig"
+ :mode="editorMode"
+ @onCreated="handleEditorCreated"
+ />
+ <div>
+ <el-link href="https://www.latexlive.com/" target="_blank">LaTeX公式在线编辑器</el-link>
+ </div>
+ </div>
+</template>
+
+<script>
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref} from "vue";
+import '@wangeditor/editor/dist/css/style.css';
+import {Editor, Toolbar} from '@wangeditor/editor-for-vue';
+import {getFileUploadUrl} from "@/api/common";
+
+export default {
+ name: "wangEditorExt",
+ components: {Editor, Toolbar},
+ props: {
+ content: "",
+ height: "",
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const state = reactive({});
+
+ const editorRef = shallowRef();
+ const editorToolbarConfig = {
+ insertKeys: {
+ index: 0,
+ keys: [
+ 'insertFormula', // “插入公式”菜单
+ // 'editFormula' // “编辑公式”菜单
+ ],
+ },
+ };
+ const editorConfig = {
+ placeholder: `${proxy.$t('message.PleaseInput')}`,
+ // 选中公式时的悬浮菜单
+ hoverbarKeys: {
+ formula: {
+ menuKeys: ['editFormula'], // “编辑公式”菜单
+ },
+ },
+ };
+ const editorValueHtml = shallowRef(props.content);
+ const editorMode = shallowRef('default');// 或 'simple',
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+ const editor = editorRef.value
+ if (editor != null)
+ editor.destroy()
+ });
+ const handleEditorCreated = (editor) => {
+ editorRef.value = editor // 记录 editor 实例,重要!
+
+ let config = editor.getMenuConfig('uploadImage') // 获取 uploadImage 的当前配置
+ config.server = getFileUploadUrl();
+ config.fieldName = 'file';
+ // 上传之前触发
+ config.onBeforeUpload = (file) => {
+ return file
+ };
+
+ // 上传进度的回调函数
+ config.onProgress = (progress) => {
+
+ };
+
+ // 单个文件上传成功之后
+ config.onSuccess = (file, res) => {
+
+ };
+
+ // 单个文件上传失败
+ config.onFailed = (file, res) => {
+
+ };
+
+ // 上传错误,或者触发 timeout 超时
+ config.onError = (file, err, res) => {
+
+ };
+ }
+ const exportvalue = () => {
+ return editorRef.value.getHtml();
+ }
+ const Init = () => {
+
+ };
+
+ return {
+ ...toRefs(state),
+ editorRef,
+ editorToolbarConfig,
+ editorConfig,
+ editorMode,
+ editorValueHtml, handleEditorCreated,
+ exportvalue, props
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+.editor-div ::v-deep(.w-e-text-container .w-e-scroll) {
+ min-height: 310px !important; //!important是重点,因为原div是行内样式设置的高度300px*/
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/answer.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/answer.vue
new file mode 100644
index 0000000..7eda4d3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/answer.vue
@@ -0,0 +1,155 @@
+<template>
+ <div class="answer-content">
+ <div class="answer-show" v-if="mobilequestion.type == '填空题'">
+ <div style="width:100%;overflow: auto;">
+ <div class="blank-list"
+ v-for="(item, index) in mobilequestion.paper[mobilequestion.questionIndex].answers" :key="index">
+ <span>{{ index + 1 }}. </span><el-input style="width:calc(100% - 2vw);height:8vw;"
+ v-if="mobilequestion.paper[mobilequestion.questionIndex].userAnswer"
+ v-model="mobilequestion.paper[mobilequestion.questionIndex].userAnswer[index].value"
+ @change="inputChange(index)" />
+ </div>
+ </div>
+ </div>
+ <div class="answer-show" v-if="mobilequestion.type == '名词解释'
+ || mobilequestion.type == '简答题'
+ || mobilequestion.type == '论述题'
+ || mobilequestion.type == '分析题'
+ || mobilequestion.type == '案例分析题'">
+ <el-input :autosize="{ minRows: 5, maxRows: 10 }" type="textarea"
+ v-if="mobilequestion.paper[mobilequestion.questionIndex].userAnswer"
+ v-model="mobilequestion.paper[mobilequestion.questionIndex].userAnswer[0].value"
+ @change="textareaChange()" />
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import { getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs } from "vue";
+import { useBasicInfoStore } from "../../../store/basicInfo"
+import { useMobileQurstionStore } from "../../../store/mobilequestion"
+
+export default {
+ name: "question",
+ components: {},
+ setup() {
+ let { proxy } = getCurrentInstance();
+ const useStore = useBasicInfoStore()
+ const mobilequestion = useMobileQurstionStore()
+ const state = reactive({
+ radio: '',
+ checkList: [],
+ judge: '',
+ textarea: '',
+ inputList: []
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+
+ const Init = () => {
+ if (mobilequestion.paper[mobilequestion.questionIndex].userAnswer) {
+ state.inputList = mobilequestion.paper[mobilequestion.questionIndex].userAnswer
+ } else {
+ let arr = []
+ for (let i = 0; i < mobilequestion.paper[mobilequestion.questionIndex].answers.length; i++) {
+ arr.push({ value: '' })
+ }
+ mobilequestion.paper[mobilequestion.questionIndex].userAnswer = arr
+ state.inputList = arr
+ }
+
+ };
+
+ const inputChange = (item, index) => {
+ mobilequestion.paper[mobilequestion.questionIndex].answers = mobilequestion.paper[mobilequestion.questionIndex].answers.sort((a, b) => a.sequenceno - b.sequenceno)
+ let status = true
+ let empty = true
+ for (let i = 0; i < state.inputList.length; i++) {
+ if (state.inputList[i].value.replace(/\s+/g, "").toString()) {
+ empty = false
+ }
+ }
+ if (empty == true) {
+ return;
+ }
+
+ for (let i = 0; i < mobilequestion.paper[mobilequestion.questionIndex].answers.length; i++) {
+ if (mobilequestion.paper[mobilequestion.questionIndex].answers[i].qkey.replace(/\s+/g, "") != state.inputList[i].value.replace(/\s+/g, "")) {
+ status = false
+ }
+ }
+
+ if (status == false) {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "false"
+ } else {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "true"
+ }
+
+ }
+
+ const textareaChange = () => {
+ let arr = mobilequestion.paper[mobilequestion.questionIndex].answers[0].qkey.split("#")
+ for (let i = 0; i < arr.length; i++) {
+ if (mobilequestion.paper[mobilequestion.questionIndex].userAnswer[0].value.indexOf(arr[i]) == -1) {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "false"
+ return
+ }
+ }
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "true"
+ }
+
+
+
+ return {
+ ...toRefs(state),
+ icon,
+ mobilequestion,
+ inputChange,
+ textareaChange
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.answer-content {
+ @extend .center;
+ background-color: #f5f5f5;
+ overflow: auto;
+ width: 100%;
+}
+
+.answer-show {
+ overflow: auto;
+ width: 87vw;
+ background-color: #fff;
+ padding: 4vw;
+ border-radius: 10px;
+ display: flex;
+ justify-content: center;
+
+
+ .blank-list {
+ width: 100%;
+ overflow: auto;
+ margin: 2vw 0px;
+ display: flex;
+ justify-content: space-between;
+ line-height: 8vw;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/controlbar.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/controlbar.vue
new file mode 100644
index 0000000..2cca50b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/controlbar.vue
@@ -0,0 +1,158 @@
+<template>
+ <div class="controlbar-content">
+ <div class="controlbar-control">
+ <button class="controlbar-back" @click="back">上一题</button>
+ <button class="controlbar-next" @click="next">下一题</button>
+ <button class="controlbar-over" @click="over">结束答题</button>
+ </div>
+ <div class="controlbar-number">
+ <span style="margin-left: 4vw;">第{{ mobilequestion.questionIndex + 1 }}/{{mobilequestion.paper.length}}题</span>
+ <span style="color: darkgray;margin-left: 4vw;font-size: 14px;font-weight: 500;">
+ 难度
+ </span>
+ <el-rate style="margin-left: 2vw;" v-model="mobilequestion.paper[mobilequestion.questionIndex].level" disabled />
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import { getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs } from "vue";
+import wx from "weixin-js-sdk";
+import { useBasicInfoStore } from "../../../store/basicInfo"
+import { useMobileQurstionStore } from "../../../store/mobilequestion"
+
+export default {
+ name: "question",
+ props: {
+ refresh: {
+ type: Function,
+ required: true
+ },
+ },
+ components: {},
+ setup(props) {
+ let { proxy } = getCurrentInstance();
+ const useStore = useBasicInfoStore()
+ const mobilequestion = useMobileQurstionStore()
+ const state = reactive({
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ };
+
+ const back = () => {
+ if (mobilequestion.questionIndex > 0) {
+ mobilequestion.questionIndex = mobilequestion.questionIndex - 1
+
+
+ props.refresh()
+
+ }
+ }
+ const next = () => {
+ if (mobilequestion.questionIndex < mobilequestion.paper.length - 1) {
+ mobilequestion.questionIndex = mobilequestion.questionIndex + 1
+ // state.refresh = false;
+ // nextTick(() => {
+ // state.refresh = true;
+ // });
+ props.refresh()
+
+ }
+ }
+
+ const over = () => {
+ wx.miniProgram.navigateBack()
+ }
+
+
+
+ return {
+ ...toRefs(state),
+ icon,
+ back,
+ next,
+ over,
+ props,
+ mobilequestion
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.controlbar-content {
+ @extend .center;
+ background-color: #f5f5f5;
+ overflow: auto;
+ width: 100%;
+}
+
+.controlbar-control {
+ width: 100%;
+ height: 12vw;
+ background-color: #fff;
+
+
+ .controlbar-back {
+ border-radius: 20px 0px 0px 20px;
+ width: 18vw;
+ height: 8vw;
+ float: left;
+ background-color: #11999e;
+ margin-left: 4vw;
+ margin-top: 2vw;
+ color: #fff;
+ border: 0px;
+ }
+
+ .controlbar-next {
+ border-radius: 0px 20px 20px 0px;
+ width: 18vw;
+ height: 8vw;
+ float: left;
+ background-color: #f38181;
+ margin-top: 2vw;
+ color: #fff;
+ border: 0px;
+ }
+
+ .controlbar-over {
+ border-radius: 20px;
+ width: 20vw;
+ height: 8vw;
+ float: right;
+ background-color: #f73859;
+ margin-top: 2vw;
+ margin-right: 4vw;
+ color: #fff;
+ border: 0px;
+ }
+}
+
+.controlbar-number {
+ width: 100vw;
+ height: 10vw;
+ background-color: #f5f5f5;
+ text-align: left;
+ font-weight: 550;
+ // line-height: 10vw;
+ display: flex;
+ align-items: center;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/option.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/option.vue
new file mode 100644
index 0000000..e022a04
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/option.vue
@@ -0,0 +1,181 @@
+<template>
+ <div class="option-content">
+ <div class="option-show" >
+ <el-radio-group style="margin: 20px;"
+ v-model="mobilequestion.paper[mobilequestion.questionIndex].userAnswer"
+ v-if="mobilequestion.type == '单选题'" @change="singleChange">
+ <el-radio
+ v-for="(item, index) in mobilequestion.paper[mobilequestion.questionIndex].options.sort((a, b) => a.sequenceno - b.sequenceno)"
+ :label="item.qkey" size="large">
+ <template #default>
+ <div class="radio-div">
+ <span>{{ item.qkey }}</span>
+ <WangEditorShow :content="item.qvalue" />
+ <!-- <div v-html="item.qvalue" class="radio-content"></div> -->
+ </div>
+ </template>
+ </el-radio>
+ </el-radio-group>
+ <el-radio-group style="margin: 20px; display: inline-block;"
+ v-model="mobilequestion.paper[mobilequestion.questionIndex].userAnswer"
+ v-if="mobilequestion.type == '判断题'" @change="judgeChange">
+ <el-radio label="T" size="large">正确</el-radio>
+ <el-radio style="margin-left: 20px;" label="F" size="large">错误</el-radio>
+ </el-radio-group>
+ <el-checkbox-group style="margin: 20px;"
+ v-model="mobilequestion.paper[mobilequestion.questionIndex].userAnswer"
+ v-if="mobilequestion.type == '多选题'" @change="multipleChange">
+ <el-checkbox
+ v-for="(item, index) in mobilequestion.paper[mobilequestion.questionIndex].options.sort((a, b) => a.sequenceno - b.sequenceno)"
+ :label="item.qkey" size="large">
+ <template #default>
+ <div class="radio-div">
+ <span>{{ item.qkey }}</span>
+ <WangEditorShow :content="item.qvalue" />
+ </div>
+ </template>
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import { getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, ref } from "vue";
+import { useBasicInfoStore } from "../../../store/basicInfo"
+import { useMobileQurstionStore } from "../../../store/mobilequestion"
+import WangEditorShow from './wangeditorshow.vue';
+
+
+export default {
+ name: "option",
+ components: { WangEditorShow },
+ setup() {
+ let { proxy } = getCurrentInstance();
+ const useStore = useBasicInfoStore()
+ const mobilequestion = useMobileQurstionStore()
+ const state = reactive({
+
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+
+ const Init = () => {
+ };
+
+ const singleChange = (val) => {
+ mobilequestion.paper[mobilequestion.questionIndex].userAnswer = val
+ if (val == mobilequestion.paper[mobilequestion.questionIndex].answers[0].qkey) {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "true"
+ } else {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "false"
+ }
+ }
+
+ const judgeChange = (val) => {
+ mobilequestion.paper[mobilequestion.questionIndex].userAnswer = val
+ if (val == mobilequestion.paper[mobilequestion.questionIndex].answers[0].qkey) {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "true"
+ } else {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "false"
+ }
+ }
+
+ const multipleChange = (val) => {
+ mobilequestion.paper[mobilequestion.questionIndex].userAnswer = val.sort()
+ let answerArr = []
+ let answerKey = mobilequestion.paper[mobilequestion.questionIndex].answers.sort((a, b) => a.sequenceno - b.sequenceno)
+ for (let i = 0; i < answerKey.length; i++) {
+ answerArr.push(answerKey[i].qkey)
+ }
+ if (JSON.stringify(answerArr) == JSON.stringify(val.sort())) {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "true"
+ } else {
+ mobilequestion.paper[mobilequestion.questionIndex].userStatus = "false"
+ }
+ }
+
+
+ return {
+ ...toRefs(state),
+ icon,
+ mobilequestion,
+ singleChange,
+ judgeChange,
+ multipleChange
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.option-content {
+ @extend .center;
+ background-color: #f5f5f5;
+ overflow: auto;
+ width: 100%;
+}
+
+.option-show {
+ width: 95vw;
+ // height: 300px;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+
+ //padding: 30px;
+ ::v-deep .el-radio-group {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ }
+
+ ::v-deep .el-radio.el-radio--large {
+ height: auto;
+ margin: 0px;
+ }
+
+ ::v-deep .el-checkbox-group {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+ margin: 10px;
+ }
+
+ ::v-deep .el-checkbox.el-checkbox--large {
+ height: auto;
+ margin: 0px;
+ }
+}
+
+.radio-div {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+}
+
+.radio-content {
+ // text-overflow: ellipsis;
+ white-space: normal;
+ line-height: 18px;
+ // vertical-align: middle;
+ // display: inline-block;
+ margin-left: 10px;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/stem.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/stem.vue
new file mode 100644
index 0000000..f115b89
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/stem.vue
@@ -0,0 +1,72 @@
+<template>
+ <div class="stem-content">
+ <div class="stem-show"
+ v-if="mobilequestion.paper != null && mobilequestion.paper[mobilequestion.questionIndex].stem">
+ <WangEditorShow :content="mobilequestion.paper[mobilequestion.questionIndex].stem" />
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import { getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs } from "vue";
+import { useBasicInfoStore } from "../../../store/basicInfo"
+import { useMobileQurstionStore } from "../../../store/mobilequestion"
+import WangEditorShow from './wangeditorshow.vue';
+
+export default {
+ name: "question",
+ components: {
+ WangEditorShow
+ },
+ setup() {
+ let { proxy } = getCurrentInstance();
+ const useStore = useBasicInfoStore()
+ const mobilequestion = useMobileQurstionStore()
+ const state = reactive({
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+
+ const Init = () => {
+ };
+
+
+ return {
+ ...toRefs(state),
+ icon,
+ mobilequestion
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.stem-content {
+ @extend .center;
+ background-color: #f5f5f5;
+ overflow: auto;
+ width: 100%;
+}
+
+.stem-show {
+ width: 95vw;
+ overflow: auto;
+ border-radius: 10px;
+}
+</style>
+
+
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/wangEditorShow.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/wangEditorShow.vue
new file mode 100644
index 0000000..e78b626
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/components/mobile/question/wangEditorShow.vue
@@ -0,0 +1,69 @@
+<template>
+ <div class="editor-div">
+ <Editor v-model="editorValueHtml" :mode="editorMode" :defaultConfig="editorConfig" />
+ </div>
+</template>
+
+<script>
+import { getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref } from "vue";
+import '@wangeditor/editor/dist/css/style.css';
+import { Editor } from '@wangeditor/editor-for-vue';
+
+export default {
+ name: "wangEditorExt",
+ components: { Editor },
+ props: {
+ content: "",
+ },
+ setup(props) {
+ let { proxy } = getCurrentInstance();
+ const state = reactive({});
+
+ const editorRef = shallowRef();
+
+ const editorValueHtml = shallowRef(props.content);
+ const editorMode = shallowRef('default');// 或 'simple',
+ const editorConfig = {
+ readOnly: true,
+ scroll: false
+ };
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+ const editor = editorRef.value
+ if (editor != null)
+ editor.destroy()
+ });
+
+
+ const Init = () => {
+console.log(props.content,77899)
+ };
+
+ return {
+ ...toRefs(state),
+ editorRef,
+ editorMode,
+ editorValueHtml,
+ props,
+ editorConfig
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+.editor-div {
+ overflow: auto;
+ ::v-deep .w-e-text-container {
+ overflow: auto;
+ padding: 0px;
+ }
+
+ ::v-deep .w-e-scroll {
+ overflow: hidden;
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/element-variables.scss b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/element-variables.scss
new file mode 100644
index 0000000..463074a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/element-variables.scss
@@ -0,0 +1,236 @@
+/* 改变主题色变量 */
+
+$theme: _orange;
+
+:root {
+ @if $theme==_orange {
+ --el-color-primary: #fd6a00;
+ --el-color-primary-light-1: #DE4112;
+ --el-color-primary-light-2: #DE4112;
+ --el-color-primary-light-3: #dc4d23;
+ --el-color-primary-light-4: #dc5930;
+ --el-color-primary-light-5: #fca66c;
+ --el-color-primary-light-6: #f8a875;
+ --el-color-primary-light-7: #e59f68;
+ --el-color-primary-light-8: #f1cca3;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2: #b6472a;
+ }
+ @else if $theme==_green {
+ --el-color-primary: #529b2e;
+ --el-color-primary-light-1: #95d475;
+ --el-color-primary-light-2: #b3e19d;
+ --el-color-primary-light-3: #d1edc4;
+ --el-color-primary-light-4: #d1edc4;
+ --el-color-primary-light-5: #d1edc4;
+ --el-color-primary-light-6: #d1edc4;
+ --el-color-primary-light-7: #e1f3d8;
+ --el-color-primary-light-8: #e1f3d8;
+ --el-color-primary-light-9: #f0f9eb;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#d1edc4;
+ }
+ @else if $theme==_blue {
+ --el-color-primary: #409eff;
+ --el-color-primary-light-1: #53a8ff;
+ --el-color-primary-light-2: #66b1ff;
+ --el-color-primary-light-3: #79bbff;
+ --el-color-primary-light-4: #8cc5ff;
+ --el-color-primary-light-5: #a0cfff;
+ --el-color-primary-light-6: #b3d8ff;
+ --el-color-primary-light-7: #c6e2ff;
+ --el-color-primary-light-8: #d9ecff;
+ --el-color-primary-light-9: #ecf5ff;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#79bbff;
+ }
+ @else if $theme==_one_rmb {
+ --el-color-primary: #46512c;
+ --el-color-primary-light-1: #7e8364;
+ --el-color-primary-light-2: #bcc6a4;
+ --el-color-primary-light-3: #dac48e;
+ --el-color-primary-light-4: #cfd7c4;
+ --el-color-primary-light-5: #fca66c;
+ --el-color-primary-light-6: #f8a875;
+ --el-color-primary-light-7: #e59f68;
+ --el-color-primary-light-8: #f1cca3;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#dac48e;
+ }
+ @else if $theme==_five_rmb {
+ --el-color-primary: #443459;
+ --el-color-primary-light-1: #776087;
+ --el-color-primary-light-2: #9a86a9;
+ --el-color-primary-light-3: #8ee3a6;
+ --el-color-primary-light-4: #d1c1ac;
+ --el-color-primary-light-5: #fca66c;
+ --el-color-primary-light-6: #f8a875;
+ --el-color-primary-light-7: #e59f68;
+ --el-color-primary-light-8: #f1cca3;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#8ee3a6;
+ }
+ @else if $theme==_ten_rmb {
+ --el-color-primary: #4d6694;
+ --el-color-primary-light-1: #6182a8;
+ --el-color-primary-light-2: #c6c0d7;
+ --el-color-primary-light-3: #9dd9ec;
+ --el-color-primary-light-4: #d4e4f1;
+ --el-color-primary-light-5: #a0cfff;
+ --el-color-primary-light-6: #b3d8ff;
+ --el-color-primary-light-7: #c6e2ff;
+ --el-color-primary-light-8: #d9ecff;
+ --el-color-primary-light-9: #ecf5ff;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#9dd9ec;
+ }
+ @else if $theme==_twenty_rmb {
+ --el-color-primary: #462d25;
+ --el-color-primary-light-1: #6a4d31;
+ --el-color-primary-light-2: #8c786a;
+ --el-color-primary-light-3: #919c85;
+ --el-color-primary-light-4: #ebc284;
+ --el-color-primary-light-5: #fca66c;
+ --el-color-primary-light-6: #f8a875;
+ --el-color-primary-light-7: #e59f68;
+ --el-color-primary-light-8: #f1cca3;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#919c85;
+ }
+ @else if $theme==_fifty_rmb {
+ --el-color-primary: #194536;
+ --el-color-primary-light-1: #527a72;
+ --el-color-primary-light-2: #92b8ab;
+ --el-color-primary-light-3: #7c809d;
+ --el-color-primary-light-4: #c7c0d2;
+ --el-color-primary-light-5: #fca66c;
+ --el-color-primary-light-6: #f8a875;
+ --el-color-primary-light-7: #e59f68;
+ --el-color-primary-light-8: #f1cca3;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#7c809d;
+ }
+ @else if $theme==_hundred_rmb {
+ --el-color-primary: #b60e2b;
+ --el-color-primary-light-1: #e24136;
+ --el-color-primary-light-2: #cc5369;
+ --el-color-primary-light-3: #bcb0d7;
+ --el-color-primary-light-4: #efa5b2;
+ --el-color-primary-light-5: #fca66c;
+ --el-color-primary-light-6: #f8a875;
+ --el-color-primary-light-7: #e59f68;
+ --el-color-primary-light-8: #f1cca3;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#bcb0d7;
+ }
+ @else if $theme==_future {
+ --el-color-primary: #071f2a;
+ --el-color-primary-light-1: #081e2b;
+ --el-color-primary-light-2: #255367;
+ --el-color-primary-light-3: #317d91;
+ --el-color-primary-light-4: #3c8193;
+ --el-color-primary-light-5: #538896;
+ --el-color-primary-light-6: #5f8d9a;
+ --el-color-primary-light-7: #69909b;
+ --el-color-primary-light-8: #76959d;
+ --el-color-primary-light-9: #9ab8c0;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#071f2a;
+ }
+ @else {
+ --el-color-primary: #DE4112;
+ --el-color-primary-light-1: #DE4112;
+ --el-color-primary-light-2: #DE4112;
+ --el-color-primary-light-3: #dc4d23;
+ --el-color-primary-light-4: #dc5930;
+ --el-color-primary-light-5: #fca66c;
+ --el-color-primary-light-6: #f8a875;
+ --el-color-primary-light-7: #e59f68;
+ --el-color-primary-light-8: #f1cca3;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-white: #ffffff;
+ --el-color-black: #000000;
+ --el-color-primary-dark-2:#dc4d23;
+ }
+ --el-color-success: #67c23a;
+ --el-color-success-light: #e1f3d8;
+ --el-color-success-lighter: #f0f9eb;
+ --el-color-warning: #e6a23c;
+ --el-color-warning-light: #faecd8;
+ --el-color-warning-lighter: #fdf6ec;
+ --el-color-danger: #c71f1f;
+ --el-color-danger-light: #e06a6a;
+ --el-color-danger-lighter: #f5e0e0;
+ --el-color-error: #f56c6c;
+ --el-color-error-light: #fde2e2;
+ --el-color-error-lighter: #fef0f0;
+ --el-color-info: #909399;
+ --el-color-info-light: #e9e9eb;
+ --el-color-info-lighter: #f4f4f5;
+ --el-bg-color: #f5f7fa;
+ --el-border-width-base: 1px;
+ --el-border-style-base: solid;
+ --el-border-color-hover: var(--el-text-color-placeholder);
+ --el-border-base: var(--el-border-width-base) var(--el-border-style-base) var(--el-border-color-base);
+ --el-svg-monochrome-grey: #dcdde0;
+ --el-fill-base: var(--el-color-white);
+ --el-font-size-extra-large: 20px;
+ --el-font-size-large: 18px;
+ --el-font-size-medium: 16px;
+ --el-font-size-base: 14px;
+ --el-font-size-small: 13px;
+ --el-font-size-extra-small: 12px;
+ --el-font-weight-primary: 500;
+ --el-font-line-height-primary: 24px;
+ --el-text-color-disabled-base: #bbb;
+ --el-index-normal: 1;
+ --el-index-top: 1000;
+ --el-index-popper: 2000;
+ --el-text-color-primary: #303133;
+ --el-text-color-regular: #606266;
+ --el-text-color-secondary: #909399;
+ --el-text-color-placeholder: #c0c4cc;
+ --el-border-color-base: #dcdfe6;
+ --el-border-color-light: #e4e7ed;
+ --el-border-color-lighter: #ebeef5;
+ --el-border-color-extra-light: #f2f6fc;
+ --el-border-radius-base: 4px;
+ --el-border-radius-small: 2px;
+ --el-border-radius-round: 20px;
+ --el-border-radius-circle: 100%;
+ --el-box-shadow-base: 0 2px 4px rgba(0, 0, 0, 0.12),
+ 0 0 6px rgba(0, 0, 0, 0.04);
+ --el-box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ --el-disabled-bg-color: var(--el-bg-color);
+ --el-disabled-text-color: var(--el-text-color-placeholder);
+ --el-disabled-border-color: var(--el-border-color-light);
+ --el-transition-duration: 0.3s;
+ --el-transition-duration-fast: 0.2s;
+ --el-transition-function-ease-in-out-bezier: cubic-bezier(0.645, 0.045, 0.355, 1);
+ --el-transition-function-fast-bezier: cubic-bezier(0.23, 1, 0.32, 1);
+ --el-transition-all: all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);
+ --el-transition-fade: opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);
+ --el-transition-md-fade: transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),
+ opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);
+ --el-transition-fade-linear: opacity var(--el-transition-duration-fast) linear;
+ --el-transition-border: border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);
+ --el-transition-color: color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);
+}
+
+@import "element-plus/theme-chalk/index.css";
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/icons/svg/404.svg b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/icons/svg/404.svg
new file mode 100644
index 0000000..4dc91e3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/icons/svg/404.svg
@@ -0,0 +1,208 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
+ <g id="background-complete">
+ <path
+ d="M238.4,445.05H45.3a5.71,5.71,0,0,1-5.71-5.71V60.66A5.71,5.71,0,0,1,45.3,55H238.4a5.71,5.71,0,0,1,5.71,5.71V439.34A5.71,5.71,0,0,1,238.4,445.05ZM45.3,55.2a5.47,5.47,0,0,0-5.46,5.46V439.34a5.47,5.47,0,0,0,5.46,5.46H238.4a5.47,5.47,0,0,0,5.46-5.46V60.66a5.47,5.47,0,0,0-5.46-5.46Z"
+ style="fill:#ebebeb"></path>
+ <path
+ d="M454.7,445.05H261.6a5.71,5.71,0,0,1-5.71-5.71V60.66A5.71,5.71,0,0,1,261.6,55H454.7a5.71,5.71,0,0,1,5.71,5.71V439.34A5.71,5.71,0,0,1,454.7,445.05ZM261.6,55.2a5.47,5.47,0,0,0-5.46,5.46V439.34a5.47,5.47,0,0,0,5.46,5.46H454.7a5.47,5.47,0,0,0,5.46-5.46V60.66a5.47,5.47,0,0,0-5.46-5.46Z"
+ style="fill:#ebebeb"></path>
+ <polygon
+ points="113.05 168.25 114.67 171.52 118.29 172.05 115.67 174.6 116.29 178.2 113.05 176.5 109.82 178.2 110.44 174.6 107.82 172.05 111.44 171.52 113.05 168.25"
+ style="fill:#ebebeb"></polygon>
+ <polygon
+ points="436.7 322.48 438.32 325.76 441.94 326.29 439.32 328.83 439.94 332.44 436.7 330.74 433.47 332.44 434.09 328.83 431.47 326.29 435.09 325.76 436.7 322.48"
+ style="fill:#f5f5f5"></polygon>
+ <polygon
+ points="372.6 417.57 374.22 420.84 377.83 421.37 375.21 423.92 375.83 427.52 372.6 425.82 369.37 427.52 369.98 423.92 367.37 421.37 370.98 420.84 372.6 417.57"
+ style="fill:#f5f5f5"></polygon>
+ <path
+ d="M225.94,110.15l.6,1.22,1.35.2a.4.4,0,0,1,.22.69l-1,.95.23,1.34a.41.41,0,0,1-.59.43l-1.2-.64-1.2.64a.41.41,0,0,1-.59-.43l.22-1.34-1-.95a.4.4,0,0,1,.23-.69l1.34-.2.6-1.22A.41.41,0,0,1,225.94,110.15Z"
+ style="fill:#ebebeb"></path>
+ <path
+ d="M60.78,402l.6,1.21,1.34.2a.41.41,0,0,1,.23.7l-1,.94.23,1.34a.41.41,0,0,1-.59.43l-1.2-.63-1.2.63a.41.41,0,0,1-.59-.43l.23-1.34-1-.94a.41.41,0,0,1,.22-.7l1.34-.2L60,402A.41.41,0,0,1,60.78,402Z"
+ style="fill:#f5f5f5"></path>
+ <path
+ d="M87.75,97.3l.6,1.22,1.35.19a.41.41,0,0,1,.22.7l-1,1,.23,1.33a.4.4,0,0,1-.59.43l-1.2-.63-1.2.63a.4.4,0,0,1-.59-.43l.22-1.33-1-1a.41.41,0,0,1,.23-.7l1.34-.19L87,97.3A.41.41,0,0,1,87.75,97.3Z"
+ style="fill:#ebebeb"></path>
+ <path d="M86.13,338.32A1.33,1.33,0,1,1,84.8,337,1.33,1.33,0,0,1,86.13,338.32Z" style="fill:#ebebeb"></path>
+ <path d="M275.67,171.89a1.33,1.33,0,1,1-1.33-1.32A1.32,1.32,0,0,1,275.67,171.89Z" style="fill:#ebebeb"></path>
+ <path d="M206.71,98.4a1.33,1.33,0,1,1-1.33-1.33A1.34,1.34,0,0,1,206.71,98.4Z" style="fill:#f5f5f5"></path>
+ <circle cx="207.14" cy="415.38" r="7.35" transform="translate(-89.89 58.7) rotate(-13.28)" style="fill:#f0f0f0">
+ </circle>
+ <path d="M204.6,411.09a7.09,7.09,0,0,0-4.19,1.36,7.34,7.34,0,0,0,10.5,9.23s0,0,0,0a7.17,7.17,0,0,0-6.31-10.58Z"
+ style="fill:#e6e6e6"></path>
+ </g>
+ <g id="background-simple">
+ <path
+ d="M104.69,145.88c-15.32,40.81-2.09,95.9,21.58,139,61,111.9,209.44,48.63,206.88-2.19,3.48-48.48-40.12-62.88-54.91-90.06C195.42,39.21,117,111.47,104.69,145.88Z">
+ </path>
+ <path
+ d="M104.69,145.88c-15.32,40.81-2.09,95.9,21.58,139,61,111.9,209.44,48.63,206.88-2.19,3.48-48.48-40.12-62.88-54.91-90.06C195.42,39.21,117,111.47,104.69,145.88Z"
+ style="fill:#fff;opacity:0.9"></path>
+ </g>
+ <g id="404">
+ <path
+ d="M147.68,287.64H86.83V260.17l60.85-72.34H176.8v73.9h15.09v25.91H176.8v22.48H147.68Zm0-25.91V223.89l-32.16,37.84Z">
+ </path>
+ <path
+ d="M202.3,249.51q0-34.29,12.34-48t37.61-13.7q12.13,0,19.93,3a36.79,36.79,0,0,1,12.71,7.79,41.59,41.59,0,0,1,7.75,10.09,52.38,52.38,0,0,1,4.55,12.34,115.36,115.36,0,0,1,3.36,28q0,32.72-11.07,47.89t-38.13,15.18q-15.18,0-24.53-4.84a39.76,39.76,0,0,1-15.33-14.19q-4.35-6.64-6.77-18.17A124.33,124.33,0,0,1,202.3,249.51Zm33.14.08q0,23,4.05,31.37t11.77,8.41a12.34,12.34,0,0,0,8.82-3.57q3.74-3.57,5.5-11.28t1.76-24q0-23.94-4.06-32.19t-12.18-8.24q-8.28,0-12,8.41T235.44,249.59Z">
+ </path>
+ <path
+ d="M371.74,287.64H310.89V260.17l60.85-72.34h29.12v73.9H416v25.91H400.86v22.48H371.74Zm0-25.91V223.89l-32.15,37.84Z">
+ </path>
+ </g>
+ <g id="Planets">
+ <g style="opacity:0.30000000000000004">
+ <path d="M201,145.62a1.87,1.87,0,1,1-1.86-1.87A1.86,1.86,0,0,1,201,145.62Z"></path>
+ <circle cx="72.97" cy="216.13" r="1.32"></circle>
+ <circle cx="291.05" cy="408.33" r="1.89"></circle>
+ <circle cx="336.5" cy="332" r="1.32"></circle>
+ <path d="M424.17,95.62a1.32,1.32,0,1,1-1.32-1.32A1.32,1.32,0,0,1,424.17,95.62Z"></path>
+ <path d="M172.75,69a1.32,1.32,0,1,1-1.32-1.32A1.33,1.33,0,0,1,172.75,69Z"></path>
+ <circle cx="277.7" cy="136.94" r="1.32"></circle>
+ </g>
+ <circle cx="141.23" cy="116.36" r="21.91"></circle>
+ <circle cx="141.23" cy="116.36" r="21.91" style="fill:#fff;opacity:0.7000000000000001"></circle>
+ <path
+ d="M133.68,99.83A21.84,21.84,0,0,0,125,101.6a21.92,21.92,0,0,0,24.87,34.89h0a21.92,21.92,0,0,0-16.23-36.65Z"
+ style="fill:#B064C7;opacity:0.2"></path>
+ <path d="M131.5,105.62a2,2,0,1,1-2-2A2,2,0,0,1,131.5,105.62Z" style="fill:#B064C7;opacity:0.2"></path>
+ <path d="M155.06,103.62a2,2,0,1,1-2-2A2,2,0,0,1,155.06,103.62Z" style="fill:#B064C7;opacity:0.2"></path>
+ <path d="M151.06,117.9a3.28,3.28,0,1,1-3.28-3.28A3.28,3.28,0,0,1,151.06,117.9Z"
+ style="fill:#B064C7;opacity:0.2"></path>
+ <path d="M140.64,127.25a4.38,4.38,0,1,1-4.38-4.38A4.38,4.38,0,0,1,140.64,127.25Z"
+ style="fill:#B064C7;opacity:0.2"></path>
+ <circle cx="382.2" cy="376.25" r="19.23" transform="translate(-71.8 661.78) rotate(-76.72)"></circle>
+ <circle cx="382.2" cy="376.25" r="19.23" transform="translate(-71.8 661.78) rotate(-76.72)"
+ style="fill:#fff;opacity:0.30000000000000004"></circle>
+ <path d="M394.33,361.34a19.22,19.22,0,0,0-17.67,33.32,19,19,0,0,0,5.53.82,19.23,19.23,0,0,0,12.14-34.14Z"
+ style="fill:#B064C7;opacity:0.4"></path>
+ <path
+ d="M363.83,382c-20.53,9.66-5.22,17.11,23.71,6.71,26.79-9.63,37-21.77,13-18C401.83,375.76,368.28,388.83,363.83,382Z">
+ </path>
+ </g>
+ <g id="Astronaut">
+ <path d="M394.1,187.83C367.21,206,332.4,230,322.79,287.64h-2.05c9.35-57,42.89-81.57,69.79-99.81Z"
+ style="opacity:0.2"></path>
+ <path
+ d="M255,368.27c-17,0-33.81-7.67-42-20.19-5.05-7.74-10.92-23.95,6.56-45.58l1.55,1.26c-12.36,15.3-14.64,30.65-6.43,43.23,10,15.3,33.59,23,53.73,17.52,20.63-5.61,33.15-23.55,34.36-49.22,4.13-87.81,50.78-114.86,84.84-134.61,21.17-12.27,36.46-21.13,33.1-39.84-.47-2.59-1.5-4.38-3.17-5.48-4.35-2.87-12.85-.88-22.69,1.41-19.31,4.5-45.75,10.66-61.5-16.13l1.73-1c15,25.53,39.57,19.8,59.32,15.2,10.29-2.39,19.17-4.46,24.24-1.13,2.15,1.41,3.47,3.64,4,6.8,3.61,20.08-13,29.72-34.05,41.92-33.67,19.52-79.77,46.25-83.85,133-1.26,26.6-14.32,45.21-35.84,51.06A52.88,52.88,0,0,1,255,368.27Z">
+ </path>
+ <path
+ d="M255,368.27c-17,0-33.81-7.67-42-20.19-5.05-7.74-10.92-23.95,6.56-45.58l1.55,1.26c-12.36,15.3-14.64,30.65-6.43,43.23,10,15.3,33.59,23,53.73,17.52,20.63-5.61,33.15-23.55,34.36-49.22,4.13-87.81,50.78-114.86,84.84-134.61,21.17-12.27,36.46-21.13,33.1-39.84-.47-2.59-1.5-4.38-3.17-5.48-4.35-2.87-12.85-.88-22.69,1.41-19.31,4.5-45.75,10.66-61.5-16.13l1.73-1c15,25.53,39.57,19.8,59.32,15.2,10.29-2.39,19.17-4.46,24.24-1.13,2.15,1.41,3.47,3.64,4,6.8,3.61,20.08-13,29.72-34.05,41.92-33.67,19.52-79.77,46.25-83.85,133-1.26,26.6-14.32,45.21-35.84,51.06A52.88,52.88,0,0,1,255,368.27Z"
+ style="fill:#fff;opacity:0.2"></path>
+ <path d="M312.76,97a46.05,46.05,0,0,1,13.58,2.13s11,18.77,12.3,23.07c-.46,4.24-7.61,11.19-7.61,11.19Z"></path>
+ <path d="M312.76,97a46.05,46.05,0,0,1,13.58,2.13s11,18.77,12.3,23.07c-.46,4.24-7.61,11.19-7.61,11.19Z"
+ style="fill:#fff;opacity:0.30000000000000004"></path>
+ <path
+ d="M345.34,188.13a141.41,141.41,0,0,1-11.56-16.38q-1.26-2.17-2.39-4.42c-.43-.85-.84-1.7-1.24-2.56a10.76,10.76,0,0,1-1.21-2.69c-1.2-12.67,3.14-22-1-32.17l-16.48,6.44s1.4,18.12,4.6,29c2,6.73,6.48,12.55,10.81,17.94,1.35,1.68,2.65,3.41,4,5.1s2.71,3.06,4,4.65c1.95,2.41,2.59,4.72,1.12,7.56l-.25.45c-.42.74,1.54,1.58,2.78,0,2-2.58,1.72-2.42,3.46-4.62,1.06-1.33,2.27-2.78,3.32-4A3.37,3.37,0,0,0,345.34,188.13Z">
+ </path>
+ <path
+ d="M345.34,188.13a141.41,141.41,0,0,1-11.56-16.38q-1.26-2.17-2.39-4.42c-.43-.85-.84-1.7-1.24-2.56a10.76,10.76,0,0,1-1.21-2.69c-1.2-12.67,3.14-22-1-32.17l-16.48,6.44s1.4,18.12,4.6,29c2,6.73,6.48,12.55,10.81,17.94,1.35,1.68,2.65,3.41,4,5.1s2.71,3.06,4,4.65c1.95,2.41,2.59,4.72,1.12,7.56l-.25.45c-.42.74,1.54,1.58,2.78,0,2-2.58,1.72-2.42,3.46-4.62,1.06-1.33,2.27-2.78,3.32-4A3.37,3.37,0,0,0,345.34,188.13Z"
+ style="fill:#fff;opacity:0.7000000000000001"></path>
+ <path d="M341.31,182.92a54.69,54.69,0,0,1-8.66,7.52c.43.48.85,1,1.28,1.46a43.92,43.92,0,0,0,8.5-7.51Z"
+ style="fill:#B064C7;opacity:0.30000000000000004"></path>
+ <path
+ d="M345.34,188.13l-.12-.14a5.18,5.18,0,0,0-1.27,3.17,5,5,0,0,0,.38,2.35l.95-1.13A3.37,3.37,0,0,0,345.34,188.13Z"
+ style="fill:#B064C7;opacity:0.30000000000000004"></path>
+ <path
+ d="M308.84,109a35.38,35.38,0,0,1-6.37,7.19,23.27,23.27,0,0,1-4.42,3,19,19,0,0,1-2.58,1.09l-.68.22-.22.06-.47.13a5.93,5.93,0,0,1-.88.14,7.55,7.55,0,0,1-2.51-.23,12.24,12.24,0,0,1-2.94-1.27,25,25,0,0,1-2.15-1.41,40.31,40.31,0,0,1-3.58-3,53.16,53.16,0,0,1-6-6.74,2.51,2.51,0,0,1,3.35-3.62l.08,0c2.36,1.5,4.74,3.08,7.06,4.49,1.18.69,2.32,1.39,3.45,1.93a15.29,15.29,0,0,0,1.59.72,3.12,3.12,0,0,0,1.07.26c.06,0,0-.07-.37-.06a2.93,2.93,0,0,0-.35,0l-.22.05,0,0,.33-.17a13.53,13.53,0,0,0,1.29-.79,18.4,18.4,0,0,0,2.5-2.12,63.62,63.62,0,0,0,4.9-5.79l0,0a5,5,0,0,1,8,5.93Z">
+ </path>
+ <path
+ d="M308.84,109a35.38,35.38,0,0,1-6.37,7.19,23.27,23.27,0,0,1-4.42,3,19,19,0,0,1-2.58,1.09l-.68.22-.22.06-.47.13a5.93,5.93,0,0,1-.88.14,7.55,7.55,0,0,1-2.51-.23,12.24,12.24,0,0,1-2.94-1.27,25,25,0,0,1-2.15-1.41,40.31,40.31,0,0,1-3.58-3,53.16,53.16,0,0,1-6-6.74,2.51,2.51,0,0,1,3.35-3.62l.08,0c2.36,1.5,4.74,3.08,7.06,4.49,1.18.69,2.32,1.39,3.45,1.93a15.29,15.29,0,0,0,1.59.72,3.12,3.12,0,0,0,1.07.26c.06,0,0-.07-.37-.06a2.93,2.93,0,0,0-.35,0l-.22.05,0,0,.33-.17a13.53,13.53,0,0,0,1.29-.79,18.4,18.4,0,0,0,2.5-2.12,63.62,63.62,0,0,0,4.9-5.79l0,0a5,5,0,0,1,8,5.93Z"
+ style="fill:#fff;opacity:0.7000000000000001"></path>
+ <path
+ d="M272.29,102.42l1.17,2s.89,2.62,2.68,3.1l4.86-1.57-.25-.41h0c-.62-.94-.55-2.77-.34-4.29s-.57-1.57-1.15-1.19a3.82,3.82,0,0,0-.84,1.65,7.77,7.77,0,0,0-.79-.93l-1.48-1.48a1.72,1.72,0,0,0-2.34-.06l-1.2,1.07A1.71,1.71,0,0,0,272.29,102.42Z">
+ </path>
+ <path
+ d="M272.29,102.42l1.17,2s.89,2.62,2.68,3.1l4.86-1.57-.25-.41h0c-.62-.94-.55-2.77-.34-4.29s-.57-1.57-1.15-1.19a3.82,3.82,0,0,0-.84,1.65,7.77,7.77,0,0,0-.79-.93l-1.48-1.48a1.72,1.72,0,0,0-2.34-.06l-1.2,1.07A1.71,1.71,0,0,0,272.29,102.42Z"
+ style="fill:#fff;opacity:0.7000000000000001"></path>
+ <path
+ d="M317.67,95.22a59.64,59.64,0,0,0-15.34,6.47,4.32,4.32,0,0,0-1.94,4.53c1.93,9.44,6.32,22.08,11.06,30.13l22.11-9.15c.15-3.9-5.22-16.52-10.69-28.72C321.89,96.29,320,94.66,317.67,95.22Z">
+ </path>
+ <path
+ d="M317.67,95.22a59.64,59.64,0,0,0-15.34,6.47,4.32,4.32,0,0,0-1.94,4.53c1.93,9.44,6.32,22.08,11.06,30.13l22.11-9.15c.15-3.9-5.22-16.52-10.69-28.72C321.89,96.29,320,94.66,317.67,95.22Z"
+ style="fill:#fff;opacity:0.8"></path>
+ <path d="M326.3,106.21l-4.39-1.47c1,2.57,4.53,5.82,7,7.73C328.11,110.47,327.22,108.37,326.3,106.21Z"
+ style="fill:#B064C7;opacity:0.30000000000000004"></path>
+ <path
+ d="M316.22,85.32c-1.83-3.48-5.78-5.23-10.52-4.84-4,.34-7.54,4.42-7.12,6.62S302.36,90.24,303,91l-2.77,2a3,3,0,0,0-.6,4.29c1.17,1.48,2.71,3,3.6,4.12,7.66-.2,13.33-3.12,15.38-5.93C317.84,91.92,318,88.78,316.22,85.32Z">
+ </path>
+ <path
+ d="M316.22,85.32c-1.83-3.48-5.78-5.23-10.52-4.84-4,.34-7.54,4.42-7.12,6.62S302.36,90.24,303,91l-2.77,2a3,3,0,0,0-.6,4.29c1.17,1.48,2.71,3,3.6,4.12,7.66-.2,13.33-3.12,15.38-5.93C317.84,91.92,318,88.78,316.22,85.32Z"
+ style="fill:#fff;opacity:0.8"></path>
+ <path d="M312.46,87.48a7.57,7.57,0,1,1-9.81-4.3A7.58,7.58,0,0,1,312.46,87.48Z" style="fill:#263238"></path>
+ <path
+ d="M377.39,177.6c-.11-3.29-.26-3-.35-5.77-.06-1.7-.07-3.59-.08-5.22a3.36,3.36,0,0,0-2.7-3.28c-1.32-.27-2.65-.52-4-.8-1.73-.37-3.44-.77-5.13-1.26-1.32-.38-2.62-.8-3.91-1.27s-2.74-1-4.08-1.62c-1.58-.67-3.14-1.39-4.68-2.14-1.73-.82-3.44-1.68-5.15-2.55-6.58-10.89-6.72-18.07-13.78-26.49l-15.16,6.86s11.14,19.76,18.72,28.14c4.37,4.82,11.22,7,17.33,8.58,4.41,1.13,8.88,2,13.35,2.83,1.74.32,3.63.44,5.13,1.48a5.74,5.74,0,0,1,2.14,3.45q.1.42.18.84C375.41,180.22,377.46,179.58,377.39,177.6Z">
+ </path>
+ <path
+ d="M377.39,177.6c-.11-3.29-.26-3-.35-5.77-.06-1.7-.07-3.59-.08-5.22a3.36,3.36,0,0,0-2.7-3.28c-1.32-.27-2.65-.52-4-.8-1.73-.37-3.44-.77-5.13-1.26-1.32-.38-2.62-.8-3.91-1.27s-2.74-1-4.08-1.62c-1.58-.67-3.14-1.39-4.68-2.14-1.73-.82-3.44-1.68-5.15-2.55-6.58-10.89-6.72-18.07-13.78-26.49l-15.16,6.86s11.14,19.76,18.72,28.14c4.37,4.82,11.22,7,17.33,8.58,4.41,1.13,8.88,2,13.35,2.83,1.74.32,3.63.44,5.13,1.48a5.74,5.74,0,0,1,2.14,3.45q.1.42.18.84C375.41,180.22,377.46,179.58,377.39,177.6Z"
+ style="fill:#fff;opacity:0.8"></path>
+ <path
+ d="M369.7,162.4c-.6-.13-1.2-.26-1.81-.41.05,3.46-1.57,9.42-2.16,11.23l1.9.36A38.11,38.11,0,0,0,369.7,162.4Z"
+ style="fill:#B064C7;opacity:0.30000000000000004"></path>
+ <path
+ d="M377,166.61a3.36,3.36,0,0,0-2.69-3.28l-1-.19a4.58,4.58,0,0,0,1.63,2.9,5.09,5.09,0,0,0,2,1.14C377,167,377,166.8,377,166.61Z"
+ style="fill:#B064C7;opacity:0.30000000000000004"></path>
+ <path
+ d="M311.05,87.54c.4,1.52-1.3,3.11-2.65,1.8a30.83,30.83,0,0,0-4.12-3.69c-1.39-.87.46-2.39,2.65-1.8A5.94,5.94,0,0,1,311.05,87.54Z"
+ style="fill:#fff"></path>
+ <path
+ d="M311.16,135.86c-.7.26.58,1.46.58,1.46s14-4.79,22.5-9.72a1.88,1.88,0,0,0-.68-1.58A216,216,0,0,1,311.16,135.86Z">
+ </path>
+ <path
+ d="M311.16,135.86c-.7.26.58,1.46.58,1.46s14-4.79,22.5-9.72a1.88,1.88,0,0,0-.68-1.58A216,216,0,0,1,311.16,135.86Z"
+ style="fill:#fff;opacity:0.5"></path>
+ <path
+ d="M321.46,94.56c2.76,1.4,5.35,2.87,8,4.5,1.29.82,2.57,1.65,3.84,2.55s2.53,1.82,3.8,2.86l.47.39.59.54a12.74,12.74,0,0,1,1,1c.32.35.59.69.85,1s.54.68.77,1a43.8,43.8,0,0,1,2.58,4,59.05,59.05,0,0,1,4,8.35,2.52,2.52,0,0,1-4.19,2.62l-.05-.06c-2-2.13-3.93-4.37-5.87-6.46s-3.91-4.21-5.54-5.14c-2.27-1.41-4.8-2.82-7.31-4.2l-7.56-4.2h0a5,5,0,0,1,4.68-8.84Z">
+ </path>
+ <path
+ d="M321.46,94.56c2.76,1.4,5.35,2.87,8,4.5,1.29.82,2.57,1.65,3.84,2.55s2.53,1.82,3.8,2.86l.47.39.59.54a12.74,12.74,0,0,1,1,1c.32.35.59.69.85,1s.54.68.77,1a43.8,43.8,0,0,1,2.58,4,59.05,59.05,0,0,1,4,8.35,2.52,2.52,0,0,1-4.19,2.62l-.05-.06c-2-2.13-3.93-4.37-5.87-6.46s-3.91-4.21-5.54-5.14c-2.27-1.41-4.8-2.82-7.31-4.2l-7.56-4.2h0a5,5,0,0,1,4.68-8.84Z"
+ style="fill:#fff;opacity:0.8"></path>
+ <path
+ d="M349.73,125.74l-.85-2.13s-.47-2.72-2.16-3.48l-5,.79.17.44h0c.46,1,.11,2.83-.34,4.29s.31,1.65.95,1.36c.36-.16.71-.81,1.09-1.5a8.46,8.46,0,0,0,.63,1l1.23,1.69a1.72,1.72,0,0,0,2.3.44l1.36-.87A1.7,1.7,0,0,0,349.73,125.74Z">
+ </path>
+ <path
+ d="M349.73,125.74l-.85-2.13s-.47-2.72-2.16-3.48l-5,.79.17.44h0c.46,1,.11,2.83-.34,4.29s.31,1.65.95,1.36c.36-.16.71-.81,1.09-1.5a8.46,8.46,0,0,0,.63,1l1.23,1.69a1.72,1.72,0,0,0,2.3.44l1.36-.87A1.7,1.7,0,0,0,349.73,125.74Z"
+ style="fill:#fff;opacity:0.8"></path>
+ <path
+ d="M317.24,106.06l-1.22.1-7.49,18.08a4,4,0,0,0,1.22-.1s9.76-3.64,12.71-5C320.48,115.05,317.24,106.06,317.24,106.06Z"
+ style="fill:#B064C7;opacity:0.30000000000000004"></path>
+ <path
+ d="M303.57,110.8a43.41,43.41,0,0,0,5,13.44c3.66-1.26,9.76-3.64,12.72-5A135.36,135.36,0,0,1,316,106.16C312.87,106.37,306,109,303.57,110.8Z"
+ style="fill:#fff"></path>
+ <path d="M311,114.71a2.58,2.58,0,1,1-1.73-3.21A2.58,2.58,0,0,1,311,114.71Z"
+ style="fill:#B064C7;opacity:0.30000000000000004"></path>
+ <path d="M312.91,111.27a.85.85,0,1,1-.56-1A.84.84,0,0,1,312.91,111.27Z"
+ style="fill:#B064C7;opacity:0.6000000000000001"></path>
+ <path d="M315.15,110.4a.85.85,0,1,1-1.62-.49.84.84,0,0,1,1.05-.56A.85.85,0,0,1,315.15,110.4Z"
+ style="fill:#B064C7;opacity:0.6000000000000001"></path>
+ <polygon points="318.29 118.19 309.04 121.84 308.49 120.02 317.73 116.37 318.29 118.19"
+ style="fill:#B064C7;opacity:0.5"></polygon>
+ </g>
+ <g id="Rocket">
+ <path
+ d="M267.26,257.17a94,94,0,0,1-1.68,17.35q-1.77,7.71-5.5,11.28a12.3,12.3,0,0,1-8.81,3.57q-7.71,0-11.77-8.41a23.79,23.79,0,0,1-1.21-3.11,144.31,144.31,0,0,0-15.92,16l-5.31,6.26a38.62,38.62,0,0,0,9.77,7.19q9.34,4.83,24.52,4.84c1.78,0,3.5-.05,5.17-.15a143.39,143.39,0,0,0,15.1-29l14.85-38.72Z"
+ style="opacity:0.2"></path>
+ <path d="M133.39,310l17.5,17.5,49-46.17C183,274.88,150.16,293.19,133.39,310Z" style="fill:#263238"></path>
+ <path d="M194.42,371c-5.59-5.6-17.5-17.5-17.5-17.5l46.17-49C229.5,321.35,211.19,354.22,194.42,371Z"
+ style="fill:#263238"></path>
+ <path
+ d="M261.4,260.7l19.09-36.81L243.68,243a144.22,144.22,0,0,0-32.44,23l-62.75,59.07,30.83,30.83,59.07-62.75A144.22,144.22,0,0,0,261.4,260.7Z">
+ </path>
+ <path
+ d="M261.4,260.7l19.09-36.81L243.68,243a144.22,144.22,0,0,0-32.44,23l-62.75,59.07,30.83,30.83,59.07-62.75A144.22,144.22,0,0,0,261.4,260.7Z"
+ style="fill:#fff;opacity:0.6000000000000001"></path>
+ <circle cx="222.2" cy="282.18" r="12.9" style="fill:#fff"></circle>
+ <circle cx="222.2" cy="282.18" r="8.29"></circle>
+ <polygon points="189.75 344.82 159.56 314.63 184.28 291.37 213.01 320.11 189.75 344.82"
+ style="fill:#B064C7;opacity:0.30000000000000004"></polygon>
+ <path
+ d="M140.22,337.62c-22.6,1.83-30.09,16.3-32.65,35.53-1.3,9.81-1.88,19.74-10.11,25.48a2.77,2.77,0,0,0,1.63,5.06c30.34-.95,44.49-15.8,46.27-22a43.06,43.06,0,0,1-2.49,9.47,2.76,2.76,0,0,0,4,3.39c8.51-5.33,19.19-15.15,19.9-31.08C160.51,354.6,140.22,337.62,140.22,337.62Z">
+ </path>
+ <path
+ d="M140.22,337.62c-22.6,1.83-30.09,16.3-32.65,35.53-1.3,9.81-1.88,19.74-10.11,25.48a2.77,2.77,0,0,0,1.63,5.06c30.34-.95,44.49-15.8,46.27-22a43.06,43.06,0,0,1-2.49,9.47,2.76,2.76,0,0,0,4,3.39c8.51-5.33,19.19-15.15,19.9-31.08C160.51,354.6,140.22,337.62,140.22,337.62Z"
+ style="fill:#fff;opacity:0.2"></path>
+ <polygon points="170.28 370.3 134.08 334.1 153.36 329.93 174.45 351.02 170.28 370.3">
+ </polygon>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/index.css b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/index.css
new file mode 100644
index 0000000..219b4ba
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/index.css
@@ -0,0 +1,314 @@
+html,
+body {
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ margin: 0;
+ padding: 0;
+ background: #e4e7ea;
+ background-repeat: no-repeat;
+ background-size: 100%;
+ background-attachment: fixed;
+ background-position: center;
+ height: 100%;
+ min-width: 1000px;
+}
+
+#app {
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #2c3e50;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ overflow: auto;
+}
+
+#app::-webkit-scrollbar {
+ /*滚动条整体样式*/
+ width: 0px;
+ /*高宽分别对应横竖滚动条的尺寸*/
+ height: 1px;
+}
+
+#app::-webkit-scrollbar-thumb {
+ /*滚动条里面小方块*/
+ border-radius: 10px;
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ background: #C0C0C0;
+}
+
+#app::-webkit-scrollbar-track {
+ /*滚动条里面轨道*/
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ border-radius: 10px;
+ background: transparent;
+}
+
+.el-form-item .el-form-item__label {
+ /*line-height: 30px;*/
+}
+
+.el-form-item .el-radio {
+ /*line-height: 30px;*/
+}
+
+.popover-textarea {
+ width: 100%;
+ display: inline-flex;
+ font-size: 13px;
+ border: 1px solid #dedede;
+ height: 26px;
+ border-radius: 5px;
+ cursor: pointer;
+ align-items: center;
+ padding-left: 8px;
+ box-sizing: border-box;
+ margin-left: 3px;
+}
+
+.filter-span-title {
+ text-align: right;
+ float: left;
+ width: 120px;
+ margin-top: 5px;
+ padding-right: 10px;;
+}
+
+.filter-span-input {
+ width: 170px;
+}
+
+.advanced-search-box {
+ border-style: solid;
+ border-color: var(--el-color-primary);
+ border-width: 1px;
+ border-radius: 5px;
+ box-sizing: border-box;
+ font: bold 16px Microsoft YaHei;
+ padding: 15px;
+ margin: 10px 0px;
+}
+
+.el-popover::-webkit-scrollbar {
+ /*滚动条整体样式*/
+ width: 5px;
+ /*高宽分别对应横竖滚动条的尺寸*/
+ height: 1px;
+}
+
+.el-dialog {
+ display: flex;
+ flex-direction: column;
+ margin: 0 !important;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ max-height: calc(100% - 10px);
+ max-width: calc(100% - 10px);
+}
+
+.el-dialog .el-dialog__body {
+ flex: 1;
+ overflow: auto;
+ /*padding: 0px 0px;*/
+}
+
+.el-dialog__body::-webkit-scrollbar {
+ /*滚动条整体样式*/
+ width: 5px;
+ /*高宽分别对应横竖滚动条的尺寸*/
+ height: 1px;
+}
+
+.el-dialog__body::-webkit-scrollbar-thumb {
+ /*滚动条里面小方块*/
+ border-radius: 10px;
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ background: #C0C0C0;
+}
+
+.el-dialog__body::-webkit-scrollbar-track {
+ /*滚动条里面轨道*/
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ border-radius: 10px;
+ background: transparent;
+}
+
+.el-dialog-customer .el-dialog__header {
+ padding: 10px;
+ height: 28px;
+ color: white;
+ /*width: calc(100% - 20px);*/
+ background-color: var(--el-color-primary);
+}
+
+.el-dialog-customer .el-dialog__footer {
+ padding: 10px 20px 10px 10px;
+}
+
+.el-dialog-customer .header-title {
+ vertical-align: center;
+ horiz-align: center;
+ align-items: center;
+}
+
+.el-dialog-customer .title-name {
+ font: normal bold 20px STSong, serif;
+}
+
+.el-dialog-customer .el-dialog__headerbtn {
+ font: normal bold 14px STSong, serif;
+}
+
+.el-dialog-customer .el-dialog__close {
+ background: white;
+ border-radius: 15px;
+ padding: 5px;
+}
+
+.confirmButtonClass {
+ color: white;
+ border-color: #F56C6C;
+ background: #F56C6C;
+}
+
+.cancelButtonClass {
+ color: black;
+ background: white;
+}
+
+.el-dropdown-link img {
+ width: 30px;
+ height: 30px;
+}
+
+.el-dropdown-link {
+ display: flex;
+ align-items: center;
+ font-size: 15px;
+}
+
+.el-carousel__item h3 {
+ color: #475669;
+ font-size: 14px;
+ opacity: 0.75;
+ line-height: 200px;
+ margin: 0;
+}
+
+.el-carousel__item:nth-child(2n) {
+ background-color: #99a9bf;
+}
+
+.el-carousel__item:nth-child(2n+1) {
+ background-color: #d3dce6;
+}
+
+.el-overlay-dialog::-webkit-scrollbar {
+ /*滚动条整体样式*/
+ width: 1px;
+ /*高宽分别对应横竖滚动条的尺寸*/
+ height: 1px;
+}
+
+.el-overlay-dialog::-webkit-scrollbar-thumb {
+ /*滚动条里面小方块*/
+ border-radius: 10px;
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ background: #C0C0C0;
+}
+
+.el-overlay-dialog::-webkit-scrollbar-track {
+ /*滚动条里面轨道*/
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ border-radius: 10px;
+ background: transparent;
+}
+
+.el-card .el-card__header {
+ padding: 10px;
+ height: auto;
+ background-color: #e4e7ea;
+}
+
+.text-overflow {
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin: 1px;
+}
+
+.el-card-list .el-card__header {
+ background-color: var(--el-color-info-lighter);
+}
+
+.step-form {
+ margin: 10px 1px;
+ border: 1px solid;
+ padding: 20px 135px 20px 10px;
+ border-image: linear-gradient(45deg, rgba(255, 255, 255, 0) 0%, var(--el-color-primary-light-6) 20%, rgba(255, 255, 255, 0) 99%) 2 2 2 2;
+}
+
+.form-detail-content {
+ padding-left: 5px;
+ line-height: 30px;
+ min-height: 30px;
+ width: 100%;
+ border-radius: 4px;
+ border: solid 1px var(--el-border-color);
+ background: var(--el-disabled-bg-color);
+}
+
+.percentage-value {
+ display: block;
+ margin-top: 10px;
+ font-size: 28px;
+}
+
+.percentage-label {
+ display: block;
+ margin-top: 10px;
+ font-size: 12px;
+}
+
+.demo-progress .el-progress--line {
+ margin-bottom: 15px;
+ max-width: 600px;
+}
+
+.demo-progress .el-progress--circle {
+ margin-right: 15px;
+}
+
+.customer-table .el-col {
+ border: 1px solid;
+ border-image: linear-gradient(0deg, rgba(255, 255, 255, 0) 0%, var(--el-border-color) 20%, rgba(255, 255, 255, 0) 99%) 2 2 2 2;
+}
+
+.customer-table .el-form-item {
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+.customer-table .el-form-item--default {
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+.card-block {
+ border: 1 solid var(--el-bg-color);
+ padding: 10px;
+ margin: 5px;
+ background-color: var(--el-bg-color);
+}
+
+.el-scrollbar::-webkit-scrollbar {
+ /*滚动条整体样式*/
+ width: 0px;
+ /*高宽分别对应横竖滚动条的尺寸*/
+ height: 1px;
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/main.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/main.js
new file mode 100644
index 0000000..19cf94d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/main.js
@@ -0,0 +1,120 @@
+//vue 项目在ie浏览器的兼容问题
+//import '@babel/polyfill';
+import promise from 'es6-promise'
+import { createApp, nextTick } from 'vue'
+import App from './App.vue'
+import i18n, { setLanguage } from "../public/assets/i18n/i18n";
+import svgIcon from './components/common/svgIcon.vue'
+import './index.css'
+import router from './router'
+import axios from 'axios'
+import 'default-passive-events'
+import Vue3SeamlessScroll from "vue3-seamless-scroll"
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+import 'element-plus/theme-chalk/display.css'
+import './element-variables.scss'
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+import elementEnLocale from 'element-plus/dist/locale/en.mjs' // element-ui英文包
+import elementZhLocale from 'element-plus/dist/locale/zh-cn.mjs' // element-ui中文包
+import elementRuLocale from 'element-plus/dist/locale/ru.mjs' // element-ui俄语包
+import { postRequest, postKeyValueRequest, putRequest, deleteRequest, getRequest } from "./utils/axioshttp"
+import Cookies from "js-cookie";
+import JsonViewer from "vue3-json-viewer";
+import "vue3-json-viewer/dist/index.css";
+import { createPinia } from 'pinia'
+import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
+import { dialogdrag, prefixDirective, thousandsDirective } from './utils/directive'
+import BasicNavigator from './router/navigators/basicNavigator';
+
+promise.polyfill()
+axios.defaults.withCredentials = false
+Object.fromEntries = (entries) => { //为低版本浏览器重构fromEntries
+ const map = new Map();
+ for (let i = 0; i < entries.length; i++) {
+ map.set(entries[i][0], entries[i][1])
+ }
+
+ return map;
+}
+
+const pinia = createPinia();
+pinia.use(piniaPluginPersistedstate)
+
+import { Boot } from '@wangeditor/editor'
+import formulaModule from "@wangeditor/plugin-formula";
+// 注册。要在创建编辑器之前注册,且只能注册一次,不可重复注册。
+Boot.registerModule(formulaModule);
+
+const app = createApp(App)
+app.config.errorHandler = (err, vm, info) => {
+ // 处理错误
+ // `info` 是 Vue 特定的错误信息,比如错误所在的生命周期钩子
+ console.error(err, vm, info);
+}
+app.config.warnHandler = function (msg, vm, trace) {
+ // `trace` 是组件的继承关系追踪
+ console.warn(msg, vm, trace);
+}
+app.config.productionTip = false
+app.config.globalProperties.Cookies = Cookies
+app.config.globalProperties.postRequest = postRequest
+app.config.globalProperties.postKeyValueRequest = postKeyValueRequest
+app.config.globalProperties.putRequest = putRequest
+app.config.globalProperties.deleteRequest = deleteRequest
+app.config.globalProperties.getRequest = getRequest
+app.config.globalProperties.$axios = axios
+app.config.globalProperties.openLoading = function (target) {
+ const loading = this.$loading({ // 声明一个loading对象
+ lock: true, // 是否锁屏
+ text: `${this.$t('label.Loading')}`, // 加载动画的文字
+ spinner: 'el-icon-loading', // 引入的loading图标
+ background: 'rgba(0, 0, 0, 0.7)', // 背景颜色
+ target: target, // 需要遮罩的区域
+ body: false,
+ class: 'mask' // 遮罩层新增类名
+ });
+ // 设定定时器,超时10S后自动关闭遮罩层,避免请求失败时,遮罩层一直存在的问题
+ setTimeout(function () {
+ loading.close();
+ }, 20000)
+ return loading;
+}
+
+app.directive('dialogdrag', {
+ beforeMount() {
+ },
+ mounted(el) {
+ //dialogdrag(el)
+ }
+})
+
+
+// input金额展示千分位
+app.directive("thousands", thousandsDirective);
+// input前缀符号
+app.directive('prefix', prefixDirective);
+
+app.use(BasicNavigator)
+app.use(i18n)
+app.use(Vue3SeamlessScroll)
+app.use(ElementPlus, {
+ locale: Cookies.get('language') === 'zh_cn' ? elementZhLocale : Cookies.get('language') === 'en_us' ? elementEnLocale : Cookies.get('language') === 'ru' ? elementRuLocale : elementEnLocale,
+ size: 'small',
+ zIndex: 3000
+})
+app.use(pinia)
+app.use(router)
+app.use(JsonViewer);
+app.component('svg-icon', svgIcon);
+for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+ app.component(key, component)
+}
+
+setLanguage().then((i18n) => {
+ app.config.globalProperties.$i18n = i18n;
+}).catch((error) => {
+ console.error(error);
+}).finally(() => {
+ app.mount('#app')
+})
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/plugins/svgBuilder.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/plugins/svgBuilder.js
new file mode 100644
index 0000000..da64f0f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/plugins/svgBuilder.js
@@ -0,0 +1,74 @@
+import {readFileSync, readdirSync} from 'fs'
+
+let idPerfix = ''
+const svgTitle = /<svg([^>+].*?)>/
+const clearHeightWidth = /(width|height)="([^>+].*?)"/g
+
+const hasViewBox = /(viewBox="[^>+].*?")/g
+
+const clearReturn = /(\r)|(\n)/g
+
+function findSvgFile(dir) {
+ const svgRes = []
+ const dirents = readdirSync(dir, {
+ withFileTypes: true
+ })
+ for (const dirent of dirents) {
+ if (dirent.isDirectory()) {
+ svgRes.push(...findSvgFile(dir + dirent.name + '/'))
+ } else {
+ const svg = readFileSync(dir + dirent.name)
+ .toString()
+ .replace(clearReturn, '')
+ .replace(svgTitle, ($1, $2) => {
+ // console.log(++i)
+ // console.log(dirent.name)
+ let width = 0
+ let height = 0
+ let content = $2.replace(
+ clearHeightWidth,
+ (s1, s2, s3) => {
+ if (s2 === 'width') {
+ width = s3
+ } else if (s2 === 'height') {
+ height = s3
+ }
+ return ''
+ }
+ )
+ if (!hasViewBox.test($2)) {
+ content += `viewBox="0 0 ${width} ${height}"`
+ }
+ return `<symbol id="${idPerfix}-${dirent.name.replace(
+ '.svg',
+ ''
+ )}" ${content}>`
+ })
+ .replace('</svg>', '</symbol>')
+ svgRes.push(svg)
+ }
+ }
+ return svgRes
+}
+
+export const svgBuilder = (path, perfix = 'icon') => {
+ if (path === '') return
+ idPerfix = perfix
+ const res = findSvgFile(path)
+ // console.log(res.length)
+ // const res = []
+ return {
+ name: 'svg-transform',
+ transformIndexHtml(html) {
+ return html.replace(
+ '<body>',
+ `
+ <body>
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; width: 0; height: 0">
+ ${res.join('')}
+ </svg>
+ `
+ )
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/index.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/index.js
new file mode 100644
index 0000000..b1f753c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/index.js
@@ -0,0 +1,453 @@
+import {
+ createRouter,
+ createWebHistory,
+ createWebHashHistory,
+ createMemoryHistory,
+} from 'vue-router'
+import {GetMenus} from "@/api/admin/system";
+import {GetAccountWithRolesAndPermissions} from "@/api/admin/security";
+import {saveLocalStorage, getLocalStorage} from '@/utils/common'
+import Cookies from "js-cookie";
+import * as elementplus from "element-plus";
+import i18n from "../../public/assets/i18n/i18n";
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+
+NProgress.configure({showSpinner: false}, {ease: 'ease', speed: 600});
+
+import License from '../views/License.vue'
+import LicenseSecrecy from '../views/LicenseSecrecy.vue'
+import LayoutAdmin from '../views/admin/Layout.vue'
+import AdminLogin from '../views/admin/Login.vue'
+import AccountActivation from '../views/admin/AccountActivation.vue'
+import Register from '../views/admin/Register.vue'
+import RetrievePassword from '../views/admin/RetrievePassword.vue'
+import Workbench from '../views/admin/Workbench.vue'
+import AdminProfile from '../views/admin/UserProfile.vue'
+
+import masterdataRoutes from './routedata/masterdata';
+import QuestionSubjectKnowledgePoint from '../views/admin/question/QuestionSubjectKnowledgePoint.vue'
+import QuestionPaper from '../views/admin/question/QuestionPaper.vue'
+import QuestionPaperQuestionList from '../views/admin/question/QuestionPaperQuestionList.vue'
+
+import OrganizationDepartment from '../views/admin/organization/OrganizationDepartment.vue'
+import OrganizationMajor from '../views/admin/organization/OrganizationMajor.vue'
+import OrganizationGrade from '../views/admin/organization/OrganizationGrade.vue'
+import OrganizationGradeSubjectRelation from '../views/admin/question/OrganizationGradeSubjectRelation.vue'
+import ActiveOrderDetail from '../views/admin/order/ActiveOrderDetail.vue'
+
+import MobileQuestion from '../views/mobile/question/question.vue'
+
+const routePaths = {
+ Workbench: '/admin/workbench',
+ Navigation: '/admin/workbench',
+ AdminLogin: '/admin/login',
+ AccountActivation: '/admin/accountactivation',
+ RetrievePassword: '/admin/retrievepassword',
+ Register: '/admin/register',
+ License: '/license',
+ LicenseSecrecy: '/license/secrecy',
+ AdminProfile: '/admin/profile',
+ Error404: '/404',
+ Error500: '/500',
+};
+
+const modules = import.meta.glob('../views/**/**/*.vue')
+const routes = [
+ {
+ path: '/:catchAll(.*)',
+ redirect: '/404',
+ },
+ {
+ path: routePaths.AdminLogin,
+ name: 'AdminLogin',
+ component: AdminLogin,
+ },
+ {
+ path: routePaths.AccountActivation,
+ name: 'AccountActivation',
+ component: AccountActivation,
+ },
+ {
+ path: routePaths.RetrievePassword,
+ name: 'RetrievePassword',
+ component: RetrievePassword,
+ },
+ {
+ path: routePaths.Register,
+ name: 'Register',
+ component: Register,
+ },
+ {
+ path: routePaths.License,
+ name: 'License',
+ component: License,
+ },
+ {
+ path: routePaths.LicenseSecrecy,
+ name: 'LicenseSecrecy',
+ component: LicenseSecrecy,
+ },
+ {
+ path: '/admin',
+ name: '/Admin',
+ component: LayoutAdmin,
+ redirect: routePaths.Workbench,
+ children: [
+ {
+ path: routePaths.Error404,
+ name: '404',
+ component: () => import(`@/views/error/404.vue`),
+ },
+ {
+ path: routePaths.Workbench,
+ name: 'Workbench',
+ component: Workbench,
+ meta: {
+ languagekey: 'Workbench',
+ icon: 'workbench'
+ },
+ },
+ {
+ path: routePaths.AdminProfile,
+ name: 'AdminProfile',
+ component: AdminProfile,
+ meta: {
+ languagekey: 'Profile',
+ icon: 'user'
+ },
+ },
+ {
+ path: '/admin/question/QuestionSubjectKnowledgePoint',
+ name: 'QuestionSubjectKnowledgePoint',
+ component: QuestionSubjectKnowledgePoint,
+ meta: {
+ keepAlive: true
+ }
+ },
+ {
+ path: '/admin/question/QuestionPaper',
+ name: 'QuestionPaper',
+ component: QuestionPaper,
+ meta: {
+ keepAlive: true
+ }
+ },
+ {
+ path: '/admin/question/QuestionPaperQuestionList',
+ name: 'QuestionPaperQuestionList',
+ component: QuestionPaperQuestionList,
+ meta: {
+ keepAlive: true
+ }
+ },
+ {
+ path: '/admin/organization/OrganizationDepartment',
+ name: 'OrganizationDepartment',
+ component: OrganizationDepartment,
+ meta: {
+ keepAlive: true
+ }
+ },
+ {
+ path: '/admin/organization/OrganizationMajor',
+ name: 'OrganizationMajor',
+ component: OrganizationMajor,
+ meta: {
+ keepAlive: true
+ }
+ },
+ {
+ path: '/admin/organization/OrganizationGrade',
+ name: 'OrganizationGrade',
+ component: OrganizationGrade,
+ meta: {
+ keepAlive: true
+ }
+ },
+ {
+ path: '/admin/organization/OrganizationGradeSubjectRelation',
+ name: 'OrganizationGradeSubjectRelation',
+ component: OrganizationGradeSubjectRelation,
+ meta: {
+ keepAlive: true
+ }
+ },
+ {
+ path: '/admin/order/ActiveOrderDetail',
+ name: 'ActiveOrderDetail',
+ component: ActiveOrderDetail,
+ meta: {
+ keepAlive: true
+ }
+ },
+ ]
+ },
+ {
+ path: '/mobile/question',
+ name: 'Question',
+ component: MobileQuestion,
+ },
+ ...masterdataRoutes.routes,
+]
+
+const routerHistory = createWebHistory(WGURL.namespace);
+const routerHash = createWebHashHistory(WGURL.namespace);
+const routerBbstract = createMemoryHistory(WGURL.namespace);
+const router = createRouter({
+ history: routerHistory, routes: routes
+});
+
+router.routeDatas = {
+ masterdataRoutes,
+}
+
+let localstorageMenus;
+let userid;
+let token;
+
+router.beforeEach(async (to, from, next) => {
+ NProgress.start();
+
+ //处理浏览器直接访问路由时路由找不到的问题
+ if (to.name === "404" && to.redirectedFrom.path) {
+ if (!checkToken() || !checkUser()) {
+ if (WGURL.UseSSO) {
+ window.location.href = `${WGURL.SSOLoginUri}?source=${window.location.href}`;
+ } else {
+ next({path: '/admin/login', replace: true});
+ }
+
+ NProgress.done();
+ return;
+ }
+
+ const hasRouters = await getAsyncRouters();
+ const hasPermission = await getAsyncUserWithRolesAndPermissions(userid);
+ if (hasRouters && hasPermission) {
+ if (router.getRoutes().filter(e => e.path === to.redirectedFrom.path).shift()) {
+ next({path: to.redirectedFrom.path});
+ } else {
+ next();
+ }
+
+ NProgress.done();
+ return;
+ } else {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: `${i18n.t('message.AccessIsDenied')}`,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ if (WGURL.UseSSO) {
+ window.location.href = `${WGURL.SSOLoginUri}?source=${window.location.href}`;
+ } else {
+ next({path: '/admin/login', replace: true});
+ }
+
+ NProgress.done();
+ return;
+ }
+ }
+
+ let frompath = from.path.toLocaleLowerCase();
+ let topath = to.path.toLocaleLowerCase();
+
+ if (!topath.startsWith('/admin/')) {
+ next();
+
+ NProgress.done();
+ return;
+ } else if (topath === '/admin/login') {
+ if (WGURL.UseSSO) {
+ window.location.href = `${WGURL.SSOLoginUri}?source=${window.location.href}`;
+ } else {
+ next();
+ }
+
+ NProgress.done();
+ return;
+ } else if (topath === '/admin/accountactivation' || topath === '/admin/retrievepassword' || topath === '/admin/register') {
+ next();
+
+ NProgress.done();
+ return;
+ } else if (topath !== '/admin/login') {
+ if (!checkToken() || !checkUser()) {
+ if (WGURL.UseSSO) {
+ window.location.href = `${WGURL.SSOLoginUri}?source=${window.location.href}`;
+ } else {
+ next({path: '/admin/login', replace: true});
+ }
+
+ NProgress.done();
+ return;
+ }
+
+ const hasRouters = await getAsyncRouters();
+ const hasPermission = await getAsyncUserWithRolesAndPermissions(userid);
+ if (hasRouters && hasPermission) {
+ next();
+
+ NProgress.done();
+ return;
+ } else {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: `${i18n.t('message.AccessIsDenied')}`,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ if (WGURL.UseSSO) {
+ window.location.href = `${WGURL.SSOLoginUri}?source=${window.location.href}`;
+ } else {
+ next({path: '/admin/login', replace: true});
+ }
+
+ NProgress.done();
+ return;
+ }
+ }
+
+ NProgress.done();
+});
+
+router.afterEach((to, from) => {
+ let frompath = from.path.toLocaleLowerCase();
+ let topath = to.path.toLocaleLowerCase();
+
+ if (topath.startsWith('/admin/') && topath !== '/admin/login') {
+ getAsyncRouters().then((resp) => {
+
+ });
+ }
+});
+
+router.onError(error => {
+ console.error(error);
+});
+
+async function getAsyncUserWithRolesAndPermissions(userid) {
+ let roles = getLocalStorage("roles");
+ let permissions = getLocalStorage("permissions");
+
+ if (!roles || roles === [] || roles.length === 0 || !permissions || permissions === [] || permissions.length === 0) {
+ const resp = await GetAccountWithRolesAndPermissions(userid);
+
+ let data = resp.data;
+ if (data && data.code === 200) {
+ let user = data.data;
+ let roles = data.data.roles;
+ let permissions = data.data.permissions;
+
+ saveLocalStorage("user", user);
+ saveLocalStorage("roles", roles);
+ saveLocalStorage("permissions", permissions);
+
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return true;
+ }
+}
+
+async function getAsyncRouters() {
+ if (localstorageMenus && localstorageMenus.length > 0) {
+ initRouter(localstorageMenus);
+ return true;
+ }
+
+ localstorageMenus = getLocalStorage(`${WGURL.routeKey}-menus`);
+ if (localstorageMenus && localstorageMenus.length > 0) {
+ initRouter(localstorageMenus);
+ return true;
+ }
+
+ const resp = await GetMenus({});
+ if (resp && resp.data && resp.data.data && resp.data.data.length > 0) {
+ let menus = [];
+ let allMenus = resp.data.data;
+ let permissions = getLocalStorage('permissions');
+
+ if (permissions && permissions.length > 0) {
+ let paths = permissions.map(p => p.url);
+ allMenus.map(menu => {
+ if (paths.includes(menu.path)) {
+ if (menu.children) {
+ menu.children = menu.children.filter(e => paths.includes(e.path));
+ }
+ menus.push(menu);
+ }
+ });
+ }
+
+ saveLocalStorage(`${WGURL.routeKey}-menus`, menus);
+
+ initRouter(menus);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function initRouter(routerdbdata) {
+ let fmtRoutes = formatRoutes(routerdbdata)
+ fmtRoutes.forEach((r) => {
+ router.addRoute(r);
+ });
+
+ localStorage.setItem(`${WGURL.routeKey}-routes`, JSON.stringify(fmtRoutes));
+}
+
+function formatRoutes(data) {
+ let fmRoutes = [];
+ if (data != null && data.length > 0) {
+ data.forEach((d) => {
+ let {url, path, name, languagekey, meta, icon, children} = d;
+ if (children && children instanceof Array) {
+ children = formatRoutes(children);
+ }
+ let component = LayoutAdmin;
+ Object.keys(modules).forEach(key => {
+ if (key === '../views' + path + '.vue') {
+ component = modules[key];
+ }
+ });
+ let fmRouter = {
+ url: url, path: path, name: name, meta: {
+ languagekey: languagekey, icon: icon
+ }, children: children, component: component
+ }
+ fmRoutes.push(fmRouter);
+ });
+ }
+
+ return fmRoutes;
+}
+
+function checkToken() {
+ token = Cookies.get('Authorization', {domain: WGURL.cookieDomain});
+ if (token == null || token === '' || token === 'null') {
+ return false;
+ }
+ localStorage.setItem('Authorization', token);
+
+ return true;
+}
+
+function checkUser() {
+ userid = Cookies.get('userid', {domain: WGURL.cookieDomain});
+ if (userid == null || userid === '' || userid === 'null') {
+ return false;
+ }
+ localStorage.setItem('userid', userid);
+
+ return true;
+}
+
+export default router;
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/basicNavigator.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/basicNavigator.js
new file mode 100644
index 0000000..38a9f64
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/basicNavigator.js
@@ -0,0 +1,36 @@
+import router from "../index";
+
+class BasicNavigator {
+ constructor(arg) {
+
+ }
+
+ back() {
+ if (router.options.history.location) {
+ router.back();
+ } else {
+ this.toWorkbench();
+ }
+ }
+
+ toWorkbench(redirect) {
+ router.replace(route.Workbench).then(r => {
+ console.log(r);
+ });
+ }
+
+ toAdminLogin(redirect) {
+ router.replace(route.AdminLogin).then(r => {
+ console.log(r);
+ });
+ }
+}
+
+export default {
+ install(app, options) {
+ // 挂载到 app 上
+ app.config.globalProperties.$basicNavigator = new BasicNavigator();
+ },
+ };
+
+//export default new BasicNavigator();
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/masterdataNavigator.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/masterdataNavigator.js
new file mode 100644
index 0000000..297211d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/navigators/masterdataNavigator.js
@@ -0,0 +1,13 @@
+import router from "../index";
+
+class MasterDataNavigator {
+ constructor(arg) {
+
+ }
+
+ toProductDetail(id) {
+
+ }
+}
+
+export default new MasterDataNavigator();
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routeList.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routeList.js
new file mode 100644
index 0000000..3032b56
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routeList.js
@@ -0,0 +1,40 @@
+let array = [
+ {
+ path: '/admin/system/Notification',
+ children: []
+ },
+ {
+ path: '/admin/system/Config',
+ children: []
+ },
+ {
+ path: '/admin/system/AuditTrail',
+ children: []
+ },
+ {
+ path: '/admin/system/Log',
+ children: []
+ },
+ {
+ path: '/admin/system/Menu',
+ children: []
+ },
+]
+
+export const routerIndex = (val) => {
+ for (let i = 0; i < array.length; i++) {
+ if (array[i].path == val || array[i].children.includes(val)) {
+ return i
+ }
+ }
+}
+
+export const getRouter = (val) => {
+ let path = ""
+ for (let i = 0; i < array.length; i++) {
+ if (array[i].children.includes(val)) {
+ path = array[i].path
+ }
+ }
+ return path;
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routedata/masterdata.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routedata/masterdata.js
new file mode 100644
index 0000000..1ef3008
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/router/routedata/masterdata.js
@@ -0,0 +1,24 @@
+import LayoutAdmin from "@/views/admin/Layout.vue";
+
+const routePaths = {
+
+};
+
+const routes = [
+ {
+ path: '/admin/masterdata',
+ name: 'Masterdata',
+ component: LayoutAdmin,
+ redirect: '/admin/workbench',
+ children: [
+
+ ]
+ },
+]
+
+const masterdataRoutes = {
+ routePaths,
+ routes
+}
+
+export default masterdataRoutes;
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/basicInfo.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/basicInfo.js
new file mode 100644
index 0000000..03a4311
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/basicInfo.js
@@ -0,0 +1,186 @@
+import {ref, computed, reactive, toRefs} from 'vue'
+import {defineStore} from 'pinia'
+import Cookies from "js-cookie";
+import {saveLocalStorage, getLocalStorage} from '../utils/common'
+
+export const useBasicInfoStore = defineStore('basicInfo', () => {
+ const state = reactive({
+ config: {
+ Theme: "light",
+ ListSize: localStorage.getItem("ListSize") ? localStorage.getItem("ListSize") : 10,
+ },
+ ifc_operations: [],
+ ifc_tasks: [],
+ ifc_meetings: [],
+ ifc_notifications: [],
+ iframe_url: null,
+ iframe_title: "@@@",
+ iframe_style: "width: 100%; height: 80vh;",
+ iframe_loading: false,
+ iframe_dialogVisible: false,
+ iframe_dialogWidth: "80%",
+ sessions: {},
+ tagUpperLimit: 8,
+ routes: [],
+ tags: [{
+ name: 'Workbench',
+ closable: false,
+ icon: 'workbench',
+ languagekey: 'Workbench'
+ }],
+ users: [],
+ userid: null,
+ currentSession: null,
+ customer: {
+ id: "",
+ name: "",
+ userface: ""
+ },
+ organization: null,
+ department: null,
+ major: null,
+ grade: null,
+ class: null,
+ subject: null,
+ paper: null,
+ order: null,
+ languages: [],
+ user: localStorage.getItem('user') ? getLocalStorage('user') : {
+ id: "",
+ name: "",
+ userface: ""
+ },
+ roles: localStorage.getItem('roles') ? getLocalStorage('roles') : [],
+ permissions: localStorage.getItem('permissions') ? getLocalStorage('permissions') : [],
+ permissionLevel: 4,
+ filterKey: '',
+ stomp: null,
+ isDot: {},
+ Authorization: localStorage.getItem('Authorization') ? localStorage.getItem('Authorization') : ''
+ })
+
+ const setToken = (token) => {
+ saveLocalStorage('Authorization', token);
+ }
+
+ const isLogin = () => {
+ if (localStorage.getItem('Authorization')) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ const setSessionData = (data) => {
+
+ let user = data.data;
+ let userid = data.data.id;
+ let token = data.message;
+ let roles = data.data.roles;
+ let permissions = data.data.permissions;
+
+ state.Authorization = token;
+ state.user = data.data;
+ state.userid = userid;
+ state.roles = data.data.roles
+ state.permissions = data.data.permissions
+
+ saveLocalStorage("user", user);
+ saveLocalStorage("userid", userid);
+ saveLocalStorage("Authorization", token);
+ saveLocalStorage("roles", roles);
+ saveLocalStorage("permissions", permissions);
+
+ //cookie 最大size为:
+ Cookies.set('userid', userid, {domain: WGURL.cookieDomain, expires: 7});
+ Cookies.set('Authorization', token, {domain: WGURL.cookieDomain, expires: 7});
+
+ let permissionLevel = 0;
+ if (roles != null && roles.length > 0) {
+ let engineerroles = roles.filter(x => x.type === 0);
+ let superadministratorroles = roles.filter(x => x.type === 1);
+ let administratorroles = roles.filter(x => x.type === 2);
+ let otherroles = roles.filter(x => x.type === 3);
+
+ if (engineerroles != null && engineerroles.length > 0) {
+ permissionLevel = 0;
+ } else if (superadministratorroles != null && superadministratorroles.length > 0) {
+ permissionLevel = 1;
+ } else if (administratorroles != null && administratorroles.length > 0) {
+ permissionLevel = 2;
+ } else if (otherroles != null && otherroles.length > 0) {
+ permissionLevel = 3;
+ } else {
+ permissionLevel = 99999;
+ }
+ }
+ state.permissionLevel = permissionLevel
+ }
+
+ const removeSessionData = () => {
+ localStorage.removeItem('Authorization');
+ localStorage.removeItem(`${WGURL.routeKey}-menus`);
+ localStorage.removeItem(`${WGURL.routeKey}-routes`);
+ localStorage.removeItem("userid");
+ localStorage.removeItem("roles");
+ localStorage.removeItem("user");
+ localStorage.removeItem("permissions");
+
+ state.tags = [{
+ name: 'Workbench',
+ closable: false,
+ icon: 'workbench',
+ languagekey: 'Workbench'
+ }];
+
+ Cookies.remove('userid', {domain: WGURL.cookieDomain});
+ Cookies.remove('Authorization', {domain: WGURL.cookieDomain});
+ }
+
+ const hasPermission = (permissionKey) => {
+ let result = false;
+
+ if (permissionKey == null || permissionKey === "" || permissionKey === undefined) {
+ return false;
+ }
+
+ if (state.permissions != null && state.permissions.length > 0) {
+ let pkey = permissionKey.toLowerCase().trim();
+ state.permissions.map((e) => {
+ if (e.url) {
+ let _pkey = e.url.toLowerCase().trim();
+
+ if (_pkey === pkey) {
+ result = true;
+ }
+ }
+ });
+ }
+
+ return result;
+ }
+
+ const launchIframe = (url, title) => {
+ state.iframe_url = url;
+ state.iframe_dialogVisible = true;
+ state.iframe_title = title;
+ state.iframe_loading = true;
+ }
+
+ const launchApprovalFlow = (url, title) => {
+ launchIframe(url, title);
+ }
+
+ return {
+ ...toRefs(state),
+ setToken,
+ hasPermission,
+ isLogin,
+ setSessionData,
+ removeSessionData,
+ launchIframe,
+ launchApprovalFlow
+ }
+}, {
+ persist: true,
+})
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/mobilequestion.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/mobilequestion.js
new file mode 100644
index 0000000..c4ee994
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/store/mobilequestion.js
@@ -0,0 +1,19 @@
+import { ref, computed, reactive, toRefs } from 'vue'
+import { defineStore } from 'pinia'
+import { GetQuestionMasterDetail } from "../api/mobile/question"
+
+export const useMobileQurstionStore = defineStore('mobilequestion', () => {
+ const state = reactive({
+ type: null,
+ paper: null,
+ questionIndex: 0
+ })
+
+ return { ...toRefs(state) }
+}, {
+ persist: false,
+ // persist: {
+ // enabled: true,
+ // //strategies: [{storage: localStorage, paths: ['basicInfo']}]
+ // }
+})
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/axioshttp.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/axioshttp.js
new file mode 100644
index 0000000..5b78db6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/axioshttp.js
@@ -0,0 +1,186 @@
+import axios from 'axios';
+import * as elementplus from 'element-plus'
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+import i18n from "../../public/assets/i18n/i18n";
+import router from "../router/index";
+
+axios.interceptors.request.use(
+ config => {
+ config.headers.Authorization = localStorage.getItem('Authorization');
+ return config;
+ },
+ error => {
+ console.error(error);
+ elementplus.ElNotification({
+ title: 'Error',
+ message: error.message,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ return Promise.reject(error);
+ }
+);
+
+axios.interceptors.response.use(
+ success => {
+ //console.debug(success);
+ return success;
+
+ if (success.data.code == null) {
+ elementplus.ElNotification({
+ title: 'Warning',
+ message: `${i18n.t('message.UnknownSystemMessage')}`,
+ position: 'top-right',
+ duration: 5000,
+ type: 'warning'
+ });
+ } else if (success.data.code && success.data.code == 200) {
+ elementplus.ElNotification({
+ title: 'Success',
+ message: success.data.message,
+ position: 'top-right',
+ duration: 5000,
+ type: 'success'
+ });
+ } else if (success.data.code == 500) {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: success.data.message,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ } else if (success.data.code == 401 || success.data.code == 403) {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: success.data.message,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ }
+ return success;
+ },
+ error => {
+ if (error.response == undefined) {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: error.message,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ } else if (error.response.status == 504 || error.response.status == 404) {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: `${i18n.t('message.NetworkError')}`,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ } else if (error.response.status == 500) {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: error.response.data.msg,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ } else if (error.response.status == 403) {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: `${i18n.t('message.AccessIsDenied')}`,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ } else if (error.response.status == 401) {
+ router.replace('/admin/login');
+ const store = useBasicInfoStore();
+
+ store.removeSessionData();
+ } else {
+ elementplus.ElNotification({
+ title: 'Error',
+ message: error,
+ position: 'top-right',
+ duration: 5000,
+ type: 'error'
+ });
+ }
+
+ return error;
+ }
+);
+
+export const postKeyValueRequest = (url, params) => {
+ return axios({
+ method: 'post',
+ url: `${url}`,
+ data: params,
+ transformRequest: [function (data) {
+ let ret = '';
+ for (let i in data) {
+ ret += encodeURIComponent(i) + '=' + encodeURIComponent(data[i]) + '&'
+ }
+ return ret;
+ }],
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
+ }
+ });
+};
+export const postFileRequest = (url, formdata) => {
+ return axios({
+ method: 'post',
+ url: `${url}`,
+ data: formdata,
+ headers: {
+ 'Content-Type': 'multipart/form-data'
+ }
+ })
+};
+export const postRequest = (url, params) => {
+ return axios({
+ method: 'post',
+ url: `${url}`,
+ data: JSON.stringify(params),
+ headers: {
+ 'Content-Type': 'application/json;charset=UTF-8'
+ }
+ })
+};
+export const postExportRequest = (url, params) => {
+ return axios({
+ method: 'post',
+ url: `${url}`,
+ data: JSON.stringify(params),
+ headers: {
+ 'Content-Type': 'application/json;charset=UTF-8'
+ },
+ responseType: 'blob',
+ })
+};
+export const putRequest = (url, params) => {
+ return axios({
+ method: 'put',
+ url: `${url}`,
+ data: params
+ })
+};
+export const getRequest = (url, params) => {
+ return axios({
+ method: 'get',
+ url: `${url}`,
+ params: params,
+ })
+};
+export const deleteRequest = (url, params) => {
+ return axios({
+ method: 'delete',
+ url: `${url}`,
+ params: params
+ })
+};
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/common.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/common.js
new file mode 100644
index 0000000..41d3342
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/common.js
@@ -0,0 +1,234 @@
+/**
+ * 格式化日期格式
+ */
+export const formatDate = (date, fmt) => {
+ if (/(y+)/.test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
+ }
+ let o = {
+ 'M+': date.getMonth() + 1,
+ 'd+': date.getDate(),
+ 'h+': date.getHours(),
+ 'm+': date.getMinutes(),
+ 's+': date.getSeconds()
+ }
+ for (let k in o) {
+ if (new RegExp(`(${k})`).test(fmt)) {
+ let str = o[k] + ''
+ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
+ }
+ }
+ return fmt
+}
+
+export const padLeftZero = (str) => {
+ return ('00' + str).substr(str.length)
+}
+
+/**
+ * 网络图像文件转Base64
+ */
+export const getBase64Image = (img) => {
+ var canvas = document.createElement("canvas");
+ canvas.width = img.width;
+ canvas.height = img.height;
+ var ctx = canvas.getContext("2d");
+ ctx.drawImage(img, 0, 0, img.width, img.height);
+ var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
+ var dataURL = canvas.toDataURL("image/" + ext);
+ return dataURL;
+}
+
+/**
+ *Base64字符串转二进制
+ */
+export const dataURLtoBlob = (dataurl) => {
+ var arr = dataurl.split(','),
+ mime = arr[0].match(/:(.*?);/)[1],
+ bstr = atob(arr[1]),
+ n = bstr.length,
+ u8arr = new Uint8Array(n);
+ while (n--) {
+ u8arr[n] = bstr.charCodeAt(n);
+ }
+ return new Blob([u8arr], {
+ type: mime
+ });
+}
+
+/**
+ *blob to dataURL
+ */
+export const blobToDataURL = (blob, callback) => {
+ var a = new FileReader();
+ a.onload = function (e) {
+ callback(e.target.result);
+ }
+ a.readAsDataURL(blob);
+ return a;
+}
+
+/**
+ * 获取当前时间字符串
+ * @returns {string}
+ * @constructor
+ */
+export const GetDateTimeStr = (d, yearOffset, monthOffset, dayOffset) => {
+ var year = (d.getFullYear() + yearOffset).toString();
+ var month = (d.getMonth() + 1 + monthOffset).toString();
+ if (month.length === 1) {
+ month = "0" + month;
+ }
+ var date = (d.getDate() + dayOffset).toString();
+ if (date.length === 1) {
+ date = "0" + date;
+ }
+ var hour = d.getHours().toString();
+ if (hour.length === 1) {
+ hour = "0" + hour;
+ }
+ var minute = d.getMinutes().toString();
+ if (minute.length === 1) {
+ minute = "0" + minute;
+ }
+ var second = d.getSeconds().toString();
+ if (second.length === 1) {
+ second = "0" + second;
+ }
+
+ return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
+}
+
+export const GetDateStr = (d, yearOffset, monthOffset, dayOffset) => {
+ var year = (d.getFullYear() + yearOffset).toString();
+ var month = (d.getMonth() + 1 + monthOffset).toString();
+ if (month.length === 1) {
+ month = "0" + month;
+ }
+ var day = (d.getDate() + dayOffset).toString();
+ if (day.length === 1) {
+ day = "0" + day;
+ }
+
+ return year + "-" + month + "-" + day;
+}
+
+export const DownloadBlobFileStream = (resp, filename) => {
+ const blob = new Blob([resp.data])
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob) // 创建下载的链接
+ downloadElement.href = href
+ downloadElement.download = filename // 下载后文件名
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 点击下载
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
+}
+
+export const NewGuid = () => {
+ var curguid = "";
+ for (var i = 1; i <= 32; i++) {
+ var id = Math.floor(Math.random() * 16.0).toString(16);
+ curguid += id;
+ if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
+ curguid += "-";
+ }
+ return curguid;
+}
+
+export const saveLocalStorage = (name, data) => { //localStorage 存储数组对象的方法
+ if (data == null) {
+ return;
+ }
+
+ localStorage.setItem(name, JSON.stringify(data))
+}
+
+export const getLocalStorage = (name) => { //localStorage 获取数组对象的方法
+ let data = window.localStorage.getItem(name);
+ if (data == null || data == undefined || data == 'undefined' || data == '') {
+ return null;
+ }
+
+ return JSON.parse(data);
+}
+
+export const getQueryVariable = (variable) => {
+ let query = window.location.search.substring(1);
+ let vars = query.split("&");
+ for (let i = 0; i < vars.length; i++) {
+ let pair = vars[i].split("=");
+ if (pair[0] == variable) {
+ return pair[1];
+ }
+ }
+ return (false);
+}
+
+export const isJSON = (str) => {
+ if (typeof str == 'string') {
+ try {
+ JSON.parse(str);
+ return true;
+ } catch (e) {
+ console.log(e);
+ return false;
+ }
+ }
+ console.log('It is not a string!')
+}
+
+export const formatterDatetime = (datestr) => {
+ if (!datestr)
+ return '---';
+
+ let date = new Date(datestr);
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+};
+
+export const formatterDate = (datestr) => {
+ if (!datestr)
+ return '---';
+
+ let date = new Date(datestr);
+
+ return formatDate(date, 'yyyy-MM-dd');
+};
+
+export const formatterNumber = (num, len) => {
+ if (!num) {
+ return '---';
+ }
+
+ return num.toFixed(len);
+};
+
+export const parseToBoolean = (obj) => {
+ if (!obj)
+ return false;
+
+ if (obj === 0 || obj === "0" || obj.toLowerCase() === "true") {
+ return true;
+ } else {
+ return false;
+ }
+};
+
+function setSSOCookie(name, value, days) {
+ const d = new Date();
+ d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
+ const expires = "expires=" + d.toUTCString();
+ document.cookie = `${name}=${value};${expires};path=/;domain=.example.com;secure;SameSite=None`;
+}
+
+function getSSOCookie(name) {
+ const nameEQ = name + "=";
+ const ca = document.cookie.split(';');
+ for (let i = 0; i < ca.length; i++) {
+ let c = ca[i];
+ while (c.charAt(0) === ' ') c = c.substring(1, c.length);
+ if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
+ }
+ return null;
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/directive.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/directive.js
new file mode 100644
index 0000000..202dcc9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/directive.js
@@ -0,0 +1,145 @@
+import { nextTick } from "vue";
+
+
+
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+//自定义指令
+//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+//dialog
+export const dialogdrag = (el) => {
+ const dialogHeaderEl = el.querySelector('.el-dialog__header');
+ const dragDom = el.querySelector('.el-dialog');
+
+ dialogHeaderEl.style.cursor = 'move';
+ const dragDomCurrentStyle = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
+
+ dialogHeaderEl.onmousedown = (e) => {
+ //鼠标坐标
+ const mouseXAxis = e.clientX;
+ const mouseYAxis = e.clientY;
+
+ //鼠标坐标
+ const dialogHeaderElXAxis = dialogHeaderEl.offsetLeft;
+ const dialogHeaderElYAxis = dialogHeaderEl.offsetTop;
+
+ const originalDialogHeaderElXAxis = mouseXAxis - dialogHeaderElXAxis;
+ const originalDialogHeaderElYAxis = mouseYAxis - dialogHeaderElYAxis;
+
+ //获取浏览器宽度
+ const screenWidth = document.body.clientWidth;
+ const screenHeight = document.documentElement.clientHeight;
+
+ //获取窗体大小
+ const dragDomWidth = dragDom.offsetWidth;
+ const dragDomHeight = dragDom.offsetHeight;
+
+ //获取窗体偏移量
+ const originalDragDomXAxis = dragDom.offsetLeft;
+ const originalDragDomYAxis = dragDom.offsetTop;
+
+ //获取窗体最大偏移量
+ const maxDragDomLeft = screenWidth - originalDragDomXAxis - dragDomWidth;
+ const maxDragDomTop = screenHeight - originalDragDomYAxis - dragDomHeight;
+
+ //处理窗体样式
+ let dragDomCurrentStyleL, dragDomCurrentStyleT;
+ if (dragDomCurrentStyle.left.includes('%')) {
+ dragDomCurrentStyleL = +document.body.clientWidth * (+dragDomCurrentStyle.left.replace(/\%/g, '') / 100);
+ dragDomCurrentStyleT = +document.body.clientHeight * (+dragDomCurrentStyle.top.replace(/\%/g, '') / 100);
+ } else {
+ dragDomCurrentStyleL = +dragDomCurrentStyle.left.replace(/px/g, '');
+ dragDomCurrentStyleT = +dragDomCurrentStyle.top.replace(/px/g, '');
+ }
+
+ document.onmousemove = function (e) {
+ let targetMoveXAxis = e.clientX - originalDialogHeaderElXAxis;
+ let targetMoveYAxis = e.clientY - originalDialogHeaderElYAxis;
+
+ dragDom.style.left = `${targetMoveXAxis + dragDomCurrentStyleL}px`;
+ dragDom.style.top = `${targetMoveYAxis + dragDomCurrentStyleT}px`;
+ }
+
+ document.onmouseup = function (e) {
+ document.onmousemove = null;
+ document.onmouseup = null;
+ }
+ }
+}
+
+
+export const prefixDirective = {
+ mounted: function(el, binding) {
+ const prefix = binding.value;
+ const input = el.querySelector('input');
+
+ if (input) {
+ // 使用span元素包裹前缀
+ const span = document.createElement('span');
+ span.style.userSelect = 'none';
+ span.textContent = prefix;
+ // 插入到input前面
+ el.insertBefore(span, input);
+ }
+ }
+ };
+
+
+ export const thousandsDirective = {
+ mounted: function (el, binding) {
+ // 获取数字输入框
+ const numberInput = el.getElementsByTagName('input')[0];
+ // 创建一个新的 el-input 元素用来展示格式化后的值
+ const textInput = document.createElement('input');
+ textInput.type = 'text';
+ textInput.autocomplete = 'off';
+ textInput.classList.add('el-input__inner');
+ // 把创建的元素插入到数字框后
+ numberInput.insertAdjacentElement('afterend', textInput);
+ // 默认效果
+ textInput.style.display = 'block';
+ numberInput.style.display = 'none';
+ // 文本框聚焦时显示原来数字类型框
+ textInput.onfocus = (e) => {
+ textInput.style.display = 'none';
+ numberInput.style.display = 'block';
+ // 等待数字框加载成功时聚焦数字框
+ nextTick(() => {
+ numberInput.focus();
+ });
+ };
+ // 数字框失焦时显示格式化后的值
+ numberInput.onblur = (e) => {
+ numberInput.style.display = 'none';
+ textInput.style.display = 'block';
+ };
+ },
+ updated: function (el, binding) {
+ // debugger
+ // 数据改变时格式化赋值到隐藏的文本框
+ if (el.tagName.toLocaleUpperCase() !== 'INPUT') {
+ const numberInput = el.getElementsByTagName('input')[0];
+ const textInput = el.getElementsByTagName('input')[1];
+ // 同步禁用状态
+ const parentClass = el.classList.value;
+ if (parentClass.includes('is-disabled')) {
+ textInput.setAttribute('disabled', true);
+ } else {
+ textInput.removeAttribute('disabled');
+ }
+ // 千分位格式化
+ const valueWithoutComma = numberInput.value.replace(/,/g, ''); // 去除千分号的','
+ if (valueWithoutComma) {
+ // 转换为浮点数
+ const floatValue = parseFloat(valueWithoutComma);
+ // 格式化为千分位
+ textInput.value = floatValue.toLocaleString('zh', {
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ });
+ } else {
+ textInput.value = '';
+ }
+ }
+ }
+ };
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/sockjs.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/sockjs.js
new file mode 100644
index 0000000..2e4570c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/sockjs.js
@@ -0,0 +1,6018 @@
+/* sockjs-client v1.1.2 | http://sockjs.org | MIT license */
+(function (f) {
+ if (typeof exports === "object" && typeof module !== "undefined") {
+ module.exports = f()
+ } else if (typeof define === "function" && define.amd) {
+ define([], f)
+ } else {
+ var g;
+ if (typeof window !== "undefined") {
+ g = window
+ } else if (typeof global !== "undefined") {
+ g = global
+ } else if (typeof self !== "undefined") {
+ g = self
+ } else {
+ g = this
+ }
+ g.SockJS = f()
+ }
+})(function () {
+ var define, module, exports;
+ return (function e(t, n, r) {
+ function s(o, u) {
+ if (!n[o]) {
+ if (!t[o]) {
+ var a = typeof require == "function" && require;
+ if (!u && a) return a(o, !0);
+ if (i) return i(o, !0);
+ var f = new Error("Cannot find module '" + o + "'");
+ throw f.code = "MODULE_NOT_FOUND", f
+ }
+ var l = n[o] = {exports: {}};
+ t[o][0].call(l.exports, function (e) {
+ var n = t[o][1][e];
+ return s(n ? n : e)
+ }, l, l.exports, e, t, n, r)
+ }
+ return n[o].exports
+ }
+
+ var i = typeof require == "function" && require;
+ for (var o = 0; o < r.length; o++) s(r[o]);
+ return s
+ })({
+ 1: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ var transportList = require('./transport-list');
+
+ module.exports = require('./main')(transportList);
+
+// TODO can't get rid of this until all servers do
+ if ('_sockjs_onload' in global) {
+ setTimeout(global._sockjs_onload, 1);
+ }
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"./main": 14, "./transport-list": 16}],
+ 2: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , Event = require('./event')
+ ;
+
+ function CloseEvent() {
+ Event.call(this);
+ this.initEvent('close', false, false);
+ this.wasClean = false;
+ this.code = 0;
+ this.reason = '';
+ }
+
+ inherits(CloseEvent, Event);
+
+ module.exports = CloseEvent;
+
+ }, {"./event": 4, "inherits": 56}],
+ 3: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , EventTarget = require('./eventtarget')
+ ;
+
+ function EventEmitter() {
+ EventTarget.call(this);
+ }
+
+ inherits(EventEmitter, EventTarget);
+
+ EventEmitter.prototype.removeAllListeners = function (type) {
+ if (type) {
+ delete this._listeners[type];
+ } else {
+ this._listeners = {};
+ }
+ };
+
+ EventEmitter.prototype.once = function (type, listener) {
+ var self = this
+ , fired = false;
+
+ function g() {
+ self.removeListener(type, g);
+
+ if (!fired) {
+ fired = true;
+ listener.apply(this, arguments);
+ }
+ }
+
+ this.on(type, g);
+ };
+
+ EventEmitter.prototype.emit = function () {
+ var type = arguments[0];
+ var listeners = this._listeners[type];
+ if (!listeners) {
+ return;
+ }
+ // equivalent of Array.prototype.slice.call(arguments, 1);
+ var l = arguments.length;
+ var args = new Array(l - 1);
+ for (var ai = 1; ai < l; ai++) {
+ args[ai - 1] = arguments[ai];
+ }
+ for (var i = 0; i < listeners.length; i++) {
+ listeners[i].apply(this, args);
+ }
+ };
+
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener = EventTarget.prototype.addEventListener;
+ EventEmitter.prototype.removeListener = EventTarget.prototype.removeEventListener;
+
+ module.exports.EventEmitter = EventEmitter;
+
+ }, {"./eventtarget": 5, "inherits": 56}],
+ 4: [function (require, module, exports) {
+ 'use strict';
+
+ function Event(eventType) {
+ this.type = eventType;
+ }
+
+ Event.prototype.initEvent = function (eventType, canBubble, cancelable) {
+ this.type = eventType;
+ this.bubbles = canBubble;
+ this.cancelable = cancelable;
+ this.timeStamp = +new Date();
+ return this;
+ };
+
+ Event.prototype.stopPropagation = function () {
+ };
+ Event.prototype.preventDefault = function () {
+ };
+
+ Event.CAPTURING_PHASE = 1;
+ Event.AT_TARGET = 2;
+ Event.BUBBLING_PHASE = 3;
+
+ module.exports = Event;
+
+ }, {}],
+ 5: [function (require, module, exports) {
+ 'use strict';
+
+ /* Simplified implementation of DOM2 EventTarget.
+ * http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget
+ */
+
+ function EventTarget() {
+ this._listeners = {};
+ }
+
+ EventTarget.prototype.addEventListener = function (eventType, listener) {
+ if (!(eventType in this._listeners)) {
+ this._listeners[eventType] = [];
+ }
+ var arr = this._listeners[eventType];
+ // #4
+ if (arr.indexOf(listener) === -1) {
+ // Make a copy so as not to interfere with a current dispatchEvent.
+ arr = arr.concat([listener]);
+ }
+ this._listeners[eventType] = arr;
+ };
+
+ EventTarget.prototype.removeEventListener = function (eventType, listener) {
+ var arr = this._listeners[eventType];
+ if (!arr) {
+ return;
+ }
+ var idx = arr.indexOf(listener);
+ if (idx !== -1) {
+ if (arr.length > 1) {
+ // Make a copy so as not to interfere with a current dispatchEvent.
+ this._listeners[eventType] = arr.slice(0, idx).concat(arr.slice(idx + 1));
+ } else {
+ delete this._listeners[eventType];
+ }
+ return;
+ }
+ };
+
+ EventTarget.prototype.dispatchEvent = function () {
+ var event = arguments[0];
+ var t = event.type;
+ // equivalent of Array.prototype.slice.call(arguments, 0);
+ var args = arguments.length === 1 ? [event] : Array.apply(null, arguments);
+ // TODO: This doesn't match the real behavior; per spec, onfoo get
+ // their place in line from the /first/ time they're set from
+ // non-null. Although WebKit bumps it to the end every time it's
+ // set.
+ if (this['on' + t]) {
+ this['on' + t].apply(this, args);
+ }
+ if (t in this._listeners) {
+ // Grab a reference to the listeners list. removeEventListener may alter the list.
+ var listeners = this._listeners[t];
+ for (var i = 0; i < listeners.length; i++) {
+ listeners[i].apply(this, args);
+ }
+ }
+ };
+
+ module.exports = EventTarget;
+
+ }, {}],
+ 6: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , Event = require('./event')
+ ;
+
+ function TransportMessageEvent(data) {
+ Event.call(this);
+ this.initEvent('message', false, false);
+ this.data = data;
+ }
+
+ inherits(TransportMessageEvent, Event);
+
+ module.exports = TransportMessageEvent;
+
+ }, {"./event": 4, "inherits": 56}],
+ 7: [function (require, module, exports) {
+ 'use strict';
+
+ var JSON3 = require('json3')
+ , iframeUtils = require('./utils/iframe')
+ ;
+
+ function FacadeJS(transport) {
+ this._transport = transport;
+ transport.on('message', this._transportMessage.bind(this));
+ transport.on('close', this._transportClose.bind(this));
+ }
+
+ FacadeJS.prototype._transportClose = function (code, reason) {
+ iframeUtils.postMessage('c', JSON3.stringify([code, reason]));
+ };
+ FacadeJS.prototype._transportMessage = function (frame) {
+ iframeUtils.postMessage('t', frame);
+ };
+ FacadeJS.prototype._send = function (data) {
+ this._transport.send(data);
+ };
+ FacadeJS.prototype._close = function () {
+ this._transport.close();
+ this._transport.removeAllListeners();
+ };
+
+ module.exports = FacadeJS;
+
+ }, {"./utils/iframe": 47, "json3": 57}],
+ 8: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var urlUtils = require('./utils/url')
+ , eventUtils = require('./utils/event')
+ , JSON3 = require('json3')
+ , FacadeJS = require('./facade')
+ , InfoIframeReceiver = require('./info-iframe-receiver')
+ , iframeUtils = require('./utils/iframe')
+ , loc = require('./location')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:iframe-bootstrap');
+ }
+
+ module.exports = function (SockJS, availableTransports) {
+ var transportMap = {};
+ availableTransports.forEach(function (at) {
+ if (at.facadeTransport) {
+ transportMap[at.facadeTransport.transportName] = at.facadeTransport;
+ }
+ });
+
+ // hard-coded for the info iframe
+ // TODO see if we can make this more dynamic
+ transportMap[InfoIframeReceiver.transportName] = InfoIframeReceiver;
+ var parentOrigin;
+
+ /* eslint-disable camelcase */
+ SockJS.bootstrap_iframe = function () {
+ /* eslint-enable camelcase */
+ var facade;
+ iframeUtils.currentWindowId = loc.hash.slice(1);
+ var onMessage = function (e) {
+ if (e.source !== parent) {
+ return;
+ }
+ if (typeof parentOrigin === 'undefined') {
+ parentOrigin = e.origin;
+ }
+ if (e.origin !== parentOrigin) {
+ return;
+ }
+
+ var iframeMessage;
+ try {
+ iframeMessage = JSON3.parse(e.data);
+ } catch (ignored) {
+ debug('bad json', e.data);
+ return;
+ }
+
+ if (iframeMessage.windowId !== iframeUtils.currentWindowId) {
+ return;
+ }
+ switch (iframeMessage.type) {
+ case 's':
+ var p;
+ try {
+ p = JSON3.parse(iframeMessage.data);
+ } catch (ignored) {
+ debug('bad json', iframeMessage.data);
+ break;
+ }
+ var version = p[0];
+ var transport = p[1];
+ var transUrl = p[2];
+ var baseUrl = p[3];
+ debug(version, transport, transUrl, baseUrl);
+ // change this to semver logic
+ if (version !== SockJS.version) {
+ throw new Error('Incompatible SockJS! Main site uses:' +
+ ' "' + version + '", the iframe:' +
+ ' "' + SockJS.version + '".');
+ }
+
+ if (!urlUtils.isOriginEqual(transUrl, loc.href) ||
+ !urlUtils.isOriginEqual(baseUrl, loc.href)) {
+ throw new Error('Can\'t connect to different domain from within an ' +
+ 'iframe. (' + loc.href + ', ' + transUrl + ', ' + baseUrl + ')');
+ }
+ facade = new FacadeJS(new transportMap[transport](transUrl, baseUrl));
+ break;
+ case 'm':
+ facade._send(iframeMessage.data);
+ break;
+ case 'c':
+ if (facade) {
+ facade._close();
+ }
+ facade = null;
+ break;
+ }
+ };
+
+ eventUtils.attachEvent('message', onMessage);
+
+ // Start
+ iframeUtils.postMessage('s');
+ };
+ };
+
+ }).call(this, {env: {}})
+
+ }, {
+ "./facade": 7,
+ "./info-iframe-receiver": 10,
+ "./location": 13,
+ "./utils/event": 46,
+ "./utils/iframe": 47,
+ "./utils/url": 52,
+ "debug": 54,
+ "json3": 57
+ }],
+ 9: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var EventEmitter = require('events').EventEmitter
+ , inherits = require('inherits')
+ , JSON3 = require('json3')
+ , objectUtils = require('./utils/object')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:info-ajax');
+ }
+
+ function InfoAjax(url, AjaxObject) {
+ EventEmitter.call(this);
+
+ var self = this;
+ var t0 = +new Date();
+ this.xo = new AjaxObject('GET', url);
+
+ this.xo.once('finish', function (status, text) {
+ var info, rtt;
+ if (status === 200) {
+ rtt = (+new Date()) - t0;
+ if (text) {
+ try {
+ info = JSON3.parse(text);
+ } catch (e) {
+ debug('bad json', text);
+ }
+ }
+
+ if (!objectUtils.isObject(info)) {
+ info = {};
+ }
+ }
+ self.emit('finish', info, rtt);
+ self.removeAllListeners();
+ });
+ }
+
+ inherits(InfoAjax, EventEmitter);
+
+ InfoAjax.prototype.close = function () {
+ this.removeAllListeners();
+ this.xo.close();
+ };
+
+ module.exports = InfoAjax;
+
+ }).call(this, {env: {}})
+
+ }, {"./utils/object": 49, "debug": 54, "events": 3, "inherits": 56, "json3": 57}],
+ 10: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , EventEmitter = require('events').EventEmitter
+ , JSON3 = require('json3')
+ , XHRLocalObject = require('./transport/sender/xhr-local')
+ , InfoAjax = require('./info-ajax')
+ ;
+
+ function InfoReceiverIframe(transUrl) {
+ var self = this;
+ EventEmitter.call(this);
+
+ this.ir = new InfoAjax(transUrl, XHRLocalObject);
+ this.ir.once('finish', function (info, rtt) {
+ self.ir = null;
+ self.emit('message', JSON3.stringify([info, rtt]));
+ });
+ }
+
+ inherits(InfoReceiverIframe, EventEmitter);
+
+ InfoReceiverIframe.transportName = 'iframe-info-receiver';
+
+ InfoReceiverIframe.prototype.close = function () {
+ if (this.ir) {
+ this.ir.close();
+ this.ir = null;
+ }
+ this.removeAllListeners();
+ };
+
+ module.exports = InfoReceiverIframe;
+
+ }, {"./info-ajax": 9, "./transport/sender/xhr-local": 37, "events": 3, "inherits": 56, "json3": 57}],
+ 11: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ var EventEmitter = require('events').EventEmitter
+ , inherits = require('inherits')
+ , JSON3 = require('json3')
+ , utils = require('./utils/event')
+ , IframeTransport = require('./transport/iframe')
+ , InfoReceiverIframe = require('./info-iframe-receiver')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:info-iframe');
+ }
+
+ function InfoIframe(baseUrl, url) {
+ var self = this;
+ EventEmitter.call(this);
+
+ var go = function () {
+ var ifr = self.ifr = new IframeTransport(InfoReceiverIframe.transportName, url, baseUrl);
+
+ ifr.once('message', function (msg) {
+ if (msg) {
+ var d;
+ try {
+ d = JSON3.parse(msg);
+ } catch (e) {
+ debug('bad json', msg);
+ self.emit('finish');
+ self.close();
+ return;
+ }
+
+ var info = d[0], rtt = d[1];
+ self.emit('finish', info, rtt);
+ }
+ self.close();
+ });
+
+ ifr.once('close', function () {
+ self.emit('finish');
+ self.close();
+ });
+ };
+
+ // TODO this seems the same as the 'needBody' from transports
+ if (!global.document.body) {
+ utils.attachEvent('load', go);
+ } else {
+ go();
+ }
+ }
+
+ inherits(InfoIframe, EventEmitter);
+
+ InfoIframe.enabled = function () {
+ return IframeTransport.enabled();
+ };
+
+ InfoIframe.prototype.close = function () {
+ if (this.ifr) {
+ this.ifr.close();
+ }
+ this.removeAllListeners();
+ this.ifr = null;
+ };
+
+ module.exports = InfoIframe;
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {
+ "./info-iframe-receiver": 10,
+ "./transport/iframe": 22,
+ "./utils/event": 46,
+ "debug": 54,
+ "events": 3,
+ "inherits": 56,
+ "json3": 57
+ }],
+ 12: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var EventEmitter = require('events').EventEmitter
+ , inherits = require('inherits')
+ , urlUtils = require('./utils/url')
+ , XDR = require('./transport/sender/xdr')
+ , XHRCors = require('./transport/sender/xhr-cors')
+ , XHRLocal = require('./transport/sender/xhr-local')
+ , XHRFake = require('./transport/sender/xhr-fake')
+ , InfoIframe = require('./info-iframe')
+ , InfoAjax = require('./info-ajax')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:info-receiver');
+ }
+
+ function InfoReceiver(baseUrl, urlInfo) {
+ debug(baseUrl);
+ var self = this;
+ EventEmitter.call(this);
+
+ setTimeout(function () {
+ self.doXhr(baseUrl, urlInfo);
+ }, 0);
+ }
+
+ inherits(InfoReceiver, EventEmitter);
+
+// TODO this is currently ignoring the list of available transports and the whitelist
+
+ InfoReceiver._getReceiver = function (baseUrl, url, urlInfo) {
+ // determine method of CORS support (if needed)
+ if (urlInfo.sameOrigin) {
+ return new InfoAjax(url, XHRLocal);
+ }
+ if (XHRCors.enabled) {
+ return new InfoAjax(url, XHRCors);
+ }
+ if (XDR.enabled && urlInfo.sameScheme) {
+ return new InfoAjax(url, XDR);
+ }
+ if (InfoIframe.enabled()) {
+ return new InfoIframe(baseUrl, url);
+ }
+ return new InfoAjax(url, XHRFake);
+ };
+
+ InfoReceiver.prototype.doXhr = function (baseUrl, urlInfo) {
+ var self = this
+ , url = urlUtils.addPath(baseUrl, '/info')
+ ;
+ debug('doXhr', url);
+
+ this.xo = InfoReceiver._getReceiver(baseUrl, url, urlInfo);
+
+ this.timeoutRef = setTimeout(function () {
+ debug('timeout');
+ self._cleanup(false);
+ self.emit('finish');
+ }, InfoReceiver.timeout);
+
+ this.xo.once('finish', function (info, rtt) {
+ debug('finish', info, rtt);
+ self._cleanup(true);
+ self.emit('finish', info, rtt);
+ });
+ };
+
+ InfoReceiver.prototype._cleanup = function (wasClean) {
+ debug('_cleanup');
+ clearTimeout(this.timeoutRef);
+ this.timeoutRef = null;
+ if (!wasClean && this.xo) {
+ this.xo.close();
+ }
+ this.xo = null;
+ };
+
+ InfoReceiver.prototype.close = function () {
+ debug('close');
+ this.removeAllListeners();
+ this._cleanup(false);
+ };
+
+ InfoReceiver.timeout = 8000;
+
+ module.exports = InfoReceiver;
+
+ }).call(this, {env: {}})
+
+ }, {
+ "./info-ajax": 9,
+ "./info-iframe": 11,
+ "./transport/sender/xdr": 34,
+ "./transport/sender/xhr-cors": 35,
+ "./transport/sender/xhr-fake": 36,
+ "./transport/sender/xhr-local": 37,
+ "./utils/url": 52,
+ "debug": 54,
+ "events": 3,
+ "inherits": 56
+ }],
+ 13: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ module.exports = global.location || {
+ origin: 'http://localhost:80'
+ , protocol: 'http'
+ , host: 'localhost'
+ , port: 80
+ , href: 'http://localhost/'
+ , hash: ''
+ };
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {}],
+ 14: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ require('./shims');
+
+ var URL = require('url-parse')
+ , inherits = require('inherits')
+ , JSON3 = require('json3')
+ , random = require('./utils/random')
+ , escape = require('./utils/escape')
+ , urlUtils = require('./utils/url')
+ , eventUtils = require('./utils/event')
+ , transport = require('./utils/transport')
+ , objectUtils = require('./utils/object')
+ , browser = require('./utils/browser')
+ , log = require('./utils/log')
+ , Event = require('./event/event')
+ , EventTarget = require('./event/eventtarget')
+ , loc = require('./location')
+ , CloseEvent = require('./event/close')
+ , TransportMessageEvent = require('./event/trans-message')
+ , InfoReceiver = require('./info-receiver')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:main');
+ }
+
+ var transports;
+
+// follow constructor steps defined at http://dev.w3.org/html5/websockets/#the-websocket-interface
+ function SockJS(url, protocols, options) {
+ if (!(this instanceof SockJS)) {
+ return new SockJS(url, protocols, options);
+ }
+ if (arguments.length < 1) {
+ throw new TypeError("Failed to construct 'SockJS: 1 argument required, but only 0 present");
+ }
+ EventTarget.call(this);
+
+ this.readyState = SockJS.CONNECTING;
+ this.extensions = '';
+ this.protocol = '';
+
+ // non-standard extension
+ options = options || {};
+ if (options.protocols_whitelist) {
+ log.warn("'protocols_whitelist' is DEPRECATED. Use 'transports' instead.");
+ }
+ this._transportsWhitelist = options.transports;
+ this._transportOptions = options.transportOptions || {};
+
+ var sessionId = options.sessionId || 8;
+ if (typeof sessionId === 'function') {
+ this._generateSessionId = sessionId;
+ } else if (typeof sessionId === 'number') {
+ this._generateSessionId = function () {
+ return random.string(sessionId);
+ };
+ } else {
+ throw new TypeError('If sessionId is used in the options, it needs to be a number or a function.');
+ }
+
+ this._server = options.server || random.numberString(1000);
+
+ // Step 1 of WS spec - parse and validate the url. Issue #8
+ var parsedUrl = new URL(url);
+ if (!parsedUrl.host || !parsedUrl.protocol) {
+ throw new SyntaxError("The URL '" + url + "' is invalid");
+ } else if (parsedUrl.hash) {
+ throw new SyntaxError('The URL must not contain a fragment');
+ } else if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {
+ throw new SyntaxError("The URL's scheme must be either 'http:' or 'https:'. '" + parsedUrl.protocol + "' is not allowed.");
+ }
+
+ var secure = parsedUrl.protocol === 'https:';
+ // Step 2 - don't allow secure origin with an insecure protocol
+ if (loc.protocol === 'https' && !secure) {
+ throw new Error('SecurityError: An insecure SockJS connection may not be initiated from a page loaded over HTTPS');
+ }
+
+ // Step 3 - check port access - no need here
+ // Step 4 - parse protocols argument
+ if (!protocols) {
+ protocols = [];
+ } else if (!Array.isArray(protocols)) {
+ protocols = [protocols];
+ }
+
+ // Step 5 - check protocols argument
+ var sortedProtocols = protocols.sort();
+ sortedProtocols.forEach(function (proto, i) {
+ if (!proto) {
+ throw new SyntaxError("The protocols entry '" + proto + "' is invalid.");
+ }
+ if (i < (sortedProtocols.length - 1) && proto === sortedProtocols[i + 1]) {
+ throw new SyntaxError("The protocols entry '" + proto + "' is duplicated.");
+ }
+ });
+
+ // Step 6 - convert origin
+ var o = urlUtils.getOrigin(loc.href);
+ this._origin = o ? o.toLowerCase() : null;
+
+ // remove the trailing slash
+ parsedUrl.set('pathname', parsedUrl.pathname.replace(/\/+$/, ''));
+
+ // store the sanitized url
+ this.url = parsedUrl.href;
+ debug('using url', this.url);
+
+ // Step 7 - start connection in background
+ // obtain server info
+ // http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html#section-26
+ this._urlInfo = {
+ nullOrigin: !browser.hasDomain()
+ , sameOrigin: urlUtils.isOriginEqual(this.url, loc.href)
+ , sameScheme: urlUtils.isSchemeEqual(this.url, loc.href)
+ };
+
+ this._ir = new InfoReceiver(this.url, this._urlInfo);
+ this._ir.once('finish', this._receiveInfo.bind(this));
+ }
+
+ inherits(SockJS, EventTarget);
+
+ function userSetCode(code) {
+ return code === 1000 || (code >= 3000 && code <= 4999);
+ }
+
+ SockJS.prototype.close = function (code, reason) {
+ // Step 1
+ if (code && !userSetCode(code)) {
+ throw new Error('InvalidAccessError: Invalid code');
+ }
+ // Step 2.4 states the max is 123 bytes, but we are just checking length
+ if (reason && reason.length > 123) {
+ throw new SyntaxError('reason argument has an invalid length');
+ }
+
+ // Step 3.1
+ if (this.readyState === SockJS.CLOSING || this.readyState === SockJS.CLOSED) {
+ return;
+ }
+
+ // TODO look at docs to determine how to set this
+ var wasClean = true;
+ this._close(code || 1000, reason || 'Normal closure', wasClean);
+ };
+
+ SockJS.prototype.send = function (data) {
+ // #13 - convert anything non-string to string
+ // TODO this currently turns objects into [object Object]
+ if (typeof data !== 'string') {
+ data = '' + data;
+ }
+ if (this.readyState === SockJS.CONNECTING) {
+ throw new Error('InvalidStateError: The connection has not been established yet');
+ }
+ if (this.readyState !== SockJS.OPEN) {
+ return;
+ }
+ this._transport.send(escape.quote(data));
+ };
+
+ SockJS.version = require('./version');
+
+ SockJS.CONNECTING = 0;
+ SockJS.OPEN = 1;
+ SockJS.CLOSING = 2;
+ SockJS.CLOSED = 3;
+
+ SockJS.prototype._receiveInfo = function (info, rtt) {
+ debug('_receiveInfo', rtt);
+ this._ir = null;
+ if (!info) {
+ this._close(1002, 'Cannot connect to server');
+ return;
+ }
+
+ // establish a round-trip timeout (RTO) based on the
+ // round-trip time (RTT)
+ this._rto = this.countRTO(rtt);
+ // allow server to override url used for the actual transport
+ this._transUrl = info.base_url ? info.base_url : this.url;
+ info = objectUtils.extend(info, this._urlInfo);
+ debug('info', info);
+ // determine list of desired and supported transports
+ var enabledTransports = transports.filterToEnabled(this._transportsWhitelist, info);
+ this._transports = enabledTransports.main;
+ debug(this._transports.length + ' enabled transports');
+
+ this._connect();
+ };
+
+ SockJS.prototype._connect = function () {
+ for (var Transport = this._transports.shift(); Transport; Transport = this._transports.shift()) {
+ debug('attempt', Transport.transportName);
+ if (Transport.needBody) {
+ if (!global.document.body ||
+ (typeof global.document.readyState !== 'undefined' &&
+ global.document.readyState !== 'complete' &&
+ global.document.readyState !== 'interactive')) {
+ debug('waiting for body');
+ this._transports.unshift(Transport);
+ eventUtils.attachEvent('load', this._connect.bind(this));
+ return;
+ }
+ }
+
+ // calculate timeout based on RTO and round trips. Default to 5s
+ var timeoutMs = (this._rto * Transport.roundTrips) || 5000;
+ this._transportTimeoutId = setTimeout(this._transportTimeout.bind(this), timeoutMs);
+ debug('using timeout', timeoutMs);
+
+ var transportUrl = urlUtils.addPath(this._transUrl, '/' + this._server + '/' + this._generateSessionId());
+ var options = this._transportOptions[Transport.transportName];
+ debug('transport url', transportUrl);
+ var transportObj = new Transport(transportUrl, this._transUrl, options);
+ transportObj.on('message', this._transportMessage.bind(this));
+ transportObj.once('close', this._transportClose.bind(this));
+ transportObj.transportName = Transport.transportName;
+ this._transport = transportObj;
+
+ return;
+ }
+ this._close(2000, 'All transports failed', false);
+ };
+
+ SockJS.prototype._transportTimeout = function () {
+ debug('_transportTimeout');
+ if (this.readyState === SockJS.CONNECTING) {
+ this._transportClose(2007, 'Transport timed out');
+ }
+ };
+
+ SockJS.prototype._transportMessage = function (msg) {
+ debug('_transportMessage', msg);
+ var self = this
+ , type = msg.slice(0, 1)
+ , content = msg.slice(1)
+ , payload
+ ;
+
+ // first check for messages that don't need a payload
+ switch (type) {
+ case 'o':
+ this._open();
+ return;
+ case 'h':
+ this.dispatchEvent(new Event('heartbeat'));
+ debug('heartbeat', this.transport);
+ return;
+ }
+
+ if (content) {
+ try {
+ payload = JSON3.parse(content);
+ } catch (e) {
+ debug('bad json', content);
+ }
+ }
+
+ if (typeof payload === 'undefined') {
+ debug('empty payload', content);
+ return;
+ }
+
+ switch (type) {
+ case 'a':
+ if (Array.isArray(payload)) {
+ payload.forEach(function (p) {
+ debug('message', self.transport, p);
+ self.dispatchEvent(new TransportMessageEvent(p));
+ });
+ }
+ break;
+ case 'm':
+ debug('message', this.transport, payload);
+ this.dispatchEvent(new TransportMessageEvent(payload));
+ break;
+ case 'c':
+ if (Array.isArray(payload) && payload.length === 2) {
+ this._close(payload[0], payload[1], true);
+ }
+ break;
+ }
+ };
+
+ SockJS.prototype._transportClose = function (code, reason) {
+ debug('_transportClose', this.transport, code, reason);
+ if (this._transport) {
+ this._transport.removeAllListeners();
+ this._transport = null;
+ this.transport = null;
+ }
+
+ if (!userSetCode(code) && code !== 2000 && this.readyState === SockJS.CONNECTING) {
+ this._connect();
+ return;
+ }
+
+ this._close(code, reason);
+ };
+
+ SockJS.prototype._open = function () {
+ debug('_open', this._transport.transportName, this.readyState);
+ if (this.readyState === SockJS.CONNECTING) {
+ if (this._transportTimeoutId) {
+ clearTimeout(this._transportTimeoutId);
+ this._transportTimeoutId = null;
+ }
+ this.readyState = SockJS.OPEN;
+ this.transport = this._transport.transportName;
+ this.dispatchEvent(new Event('open'));
+ debug('connected', this.transport);
+ } else {
+ // The server might have been restarted, and lost track of our
+ // connection.
+ this._close(1006, 'Server lost session');
+ }
+ };
+
+ SockJS.prototype._close = function (code, reason, wasClean) {
+ debug('_close', this.transport, code, reason, wasClean, this.readyState);
+ var forceFail = false;
+
+ if (this._ir) {
+ forceFail = true;
+ this._ir.close();
+ this._ir = null;
+ }
+ if (this._transport) {
+ this._transport.close();
+ this._transport = null;
+ this.transport = null;
+ }
+
+ if (this.readyState === SockJS.CLOSED) {
+ throw new Error('InvalidStateError: SockJS has already been closed');
+ }
+
+ this.readyState = SockJS.CLOSING;
+ setTimeout(function () {
+ this.readyState = SockJS.CLOSED;
+
+ if (forceFail) {
+ this.dispatchEvent(new Event('error'));
+ }
+
+ var e = new CloseEvent('close');
+ e.wasClean = wasClean || false;
+ e.code = code || 1000;
+ e.reason = reason;
+
+ this.dispatchEvent(e);
+ this.onmessage = this.onclose = this.onerror = null;
+ debug('disconnected');
+ }.bind(this), 0);
+ };
+
+// See: http://www.erg.abdn.ac.uk/~gerrit/dccp/notes/ccid2/rto_estimator/
+// and RFC 2988.
+ SockJS.prototype.countRTO = function (rtt) {
+ // In a local environment, when using IE8/9 and the `jsonp-polling`
+ // transport the time needed to establish a connection (the time that pass
+ // from the opening of the transport to the call of `_dispatchOpen`) is
+ // around 200msec (the lower bound used in the article above) and this
+ // causes spurious timeouts. For this reason we calculate a value slightly
+ // larger than that used in the article.
+ if (rtt > 100) {
+ return 4 * rtt; // rto > 400msec
+ }
+ return 300 + rtt; // 300msec < rto <= 400msec
+ };
+
+ module.exports = function (availableTransports) {
+ transports = transport(availableTransports);
+ require('./iframe-bootstrap')(SockJS, availableTransports);
+ return SockJS;
+ };
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {
+ "./event/close": 2,
+ "./event/event": 4,
+ "./event/eventtarget": 5,
+ "./event/trans-message": 6,
+ "./iframe-bootstrap": 8,
+ "./info-receiver": 12,
+ "./location": 13,
+ "./shims": 15,
+ "./utils/browser": 44,
+ "./utils/escape": 45,
+ "./utils/event": 46,
+ "./utils/log": 48,
+ "./utils/object": 49,
+ "./utils/random": 50,
+ "./utils/transport": 51,
+ "./utils/url": 52,
+ "./version": 53,
+ "debug": 54,
+ "inherits": 56,
+ "json3": 57,
+ "url-parse": 61
+ }],
+ 15: [function (require, module, exports) {
+ /* eslint-disable */
+ /* jscs: disable */
+ 'use strict';
+
+// pulled specific shims from https://github.com/es-shims/es5-shim
+
+ var ArrayPrototype = Array.prototype;
+ var ObjectPrototype = Object.prototype;
+ var FunctionPrototype = Function.prototype;
+ var StringPrototype = String.prototype;
+ var array_slice = ArrayPrototype.slice;
+
+ var _toString = ObjectPrototype.toString;
+ var isFunction = function (val) {
+ return ObjectPrototype.toString.call(val) === '[object Function]';
+ };
+ var isArray = function isArray(obj) {
+ return _toString.call(obj) === '[object Array]';
+ };
+ var isString = function isString(obj) {
+ return _toString.call(obj) === '[object String]';
+ };
+
+ var supportsDescriptors = Object.defineProperty && (function () {
+ try {
+ Object.defineProperty({}, 'x', {});
+ return true;
+ } catch (e) { /* this is ES3 */
+ return false;
+ }
+ }());
+
+// Define configurable, writable and non-enumerable props
+// if they don't exist.
+ var defineProperty;
+ if (supportsDescriptors) {
+ defineProperty = function (object, name, method, forceAssign) {
+ if (!forceAssign && (name in object)) {
+ return;
+ }
+ Object.defineProperty(object, name, {
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ value: method
+ });
+ };
+ } else {
+ defineProperty = function (object, name, method, forceAssign) {
+ if (!forceAssign && (name in object)) {
+ return;
+ }
+ object[name] = method;
+ };
+ }
+ var defineProperties = function (object, map, forceAssign) {
+ for (var name in map) {
+ if (ObjectPrototype.hasOwnProperty.call(map, name)) {
+ defineProperty(object, name, map[name], forceAssign);
+ }
+ }
+ };
+
+ var toObject = function (o) {
+ if (o == null) { // this matches both null and undefined
+ throw new TypeError("can't convert " + o + ' to object');
+ }
+ return Object(o);
+ };
+
+//
+// Util
+// ======
+//
+
+// ES5 9.4
+// http://es5.github.com/#x9.4
+// http://jsperf.com/to-integer
+
+ function toInteger(num) {
+ var n = +num;
+ if (n !== n) { // isNaN
+ n = 0;
+ } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
+ }
+ return n;
+ }
+
+ function ToUint32(x) {
+ return x >>> 0;
+ }
+
+//
+// Function
+// ========
+//
+
+// ES-5 15.3.4.5
+// http://es5.github.com/#x15.3.4.5
+
+ function Empty() {
+ }
+
+ defineProperties(FunctionPrototype, {
+ bind: function bind(that) { // .length is 1
+ // 1. Let Target be the this value.
+ var target = this;
+ // 2. If IsCallable(Target) is false, throw a TypeError exception.
+ if (!isFunction(target)) {
+ throw new TypeError('Function.prototype.bind called on incompatible ' + target);
+ }
+ // 3. Let A be a new (possibly empty) internal list of all of the
+ // argument values provided after thisArg (arg1, arg2 etc), in order.
+ // XXX slicedArgs will stand in for "A" if used
+ var args = array_slice.call(arguments, 1); // for normal call
+ // 4. Let F be a new native ECMAScript object.
+ // 11. Set the [[Prototype]] internal property of F to the standard
+ // built-in Function prototype object as specified in 15.3.3.1.
+ // 12. Set the [[Call]] internal property of F as described in
+ // 15.3.4.5.1.
+ // 13. Set the [[Construct]] internal property of F as described in
+ // 15.3.4.5.2.
+ // 14. Set the [[HasInstance]] internal property of F as described in
+ // 15.3.4.5.3.
+ var binder = function () {
+
+ if (this instanceof bound) {
+ // 15.3.4.5.2 [[Construct]]
+ // When the [[Construct]] internal method of a function object,
+ // F that was created using the bind function is called with a
+ // list of arguments ExtraArgs, the following steps are taken:
+ // 1. Let target be the value of F's [[TargetFunction]]
+ // internal property.
+ // 2. If target has no [[Construct]] internal method, a
+ // TypeError exception is thrown.
+ // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
+ // property.
+ // 4. Let args be a new list containing the same values as the
+ // list boundArgs in the same order followed by the same
+ // values as the list ExtraArgs in the same order.
+ // 5. Return the result of calling the [[Construct]] internal
+ // method of target providing args as the arguments.
+
+ var result = target.apply(
+ this,
+ args.concat(array_slice.call(arguments))
+ );
+ if (Object(result) === result) {
+ return result;
+ }
+ return this;
+
+ } else {
+ // 15.3.4.5.1 [[Call]]
+ // When the [[Call]] internal method of a function object, F,
+ // which was created using the bind function is called with a
+ // this value and a list of arguments ExtraArgs, the following
+ // steps are taken:
+ // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
+ // property.
+ // 2. Let boundThis be the value of F's [[BoundThis]] internal
+ // property.
+ // 3. Let target be the value of F's [[TargetFunction]] internal
+ // property.
+ // 4. Let args be a new list containing the same values as the
+ // list boundArgs in the same order followed by the same
+ // values as the list ExtraArgs in the same order.
+ // 5. Return the result of calling the [[Call]] internal method
+ // of target providing boundThis as the this value and
+ // providing args as the arguments.
+
+ // equiv: target.call(this, ...boundArgs, ...args)
+ return target.apply(
+ that,
+ args.concat(array_slice.call(arguments))
+ );
+
+ }
+
+ };
+
+ // 15. If the [[Class]] internal property of Target is "Function", then
+ // a. Let L be the length property of Target minus the length of A.
+ // b. Set the length own property of F to either 0 or L, whichever is
+ // larger.
+ // 16. Else set the length own property of F to 0.
+
+ var boundLength = Math.max(0, target.length - args.length);
+
+ // 17. Set the attributes of the length own property of F to the values
+ // specified in 15.3.5.1.
+ var boundArgs = [];
+ for (var i = 0; i < boundLength; i++) {
+ boundArgs.push('$' + i);
+ }
+
+ // XXX Build a dynamic function with desired amount of arguments is the only
+ // way to set the length property of a function.
+ // In environments where Content Security Policies enabled (Chrome extensions,
+ // for ex.) all use of eval or Function costructor throws an exception.
+ // However in all of these environments Function.prototype.bind exists
+ // and so this code will never be executed.
+ var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this, arguments); }')(binder);
+
+ if (target.prototype) {
+ Empty.prototype = target.prototype;
+ bound.prototype = new Empty();
+ // Clean up dangling references.
+ Empty.prototype = null;
+ }
+
+ // TODO
+ // 18. Set the [[Extensible]] internal property of F to true.
+
+ // TODO
+ // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
+ // 20. Call the [[DefineOwnProperty]] internal method of F with
+ // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
+ // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
+ // false.
+ // 21. Call the [[DefineOwnProperty]] internal method of F with
+ // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
+ // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
+ // and false.
+
+ // TODO
+ // NOTE Function objects created using Function.prototype.bind do not
+ // have a prototype property or the [[Code]], [[FormalParameters]], and
+ // [[Scope]] internal properties.
+ // XXX can't delete prototype in pure-js.
+
+ // 22. Return F.
+ return bound;
+ }
+ });
+
+//
+// Array
+// =====
+//
+
+// ES5 15.4.3.2
+// http://es5.github.com/#x15.4.3.2
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
+ defineProperties(Array, {isArray: isArray});
+
+
+ var boxedString = Object('a');
+ var splitString = boxedString[0] !== 'a' || !(0 in boxedString);
+
+ var properlyBoxesContext = function properlyBoxed(method) {
+ // Check node 0.6.21 bug where third parameter is not boxed
+ var properlyBoxesNonStrict = true;
+ var properlyBoxesStrict = true;
+ if (method) {
+ method.call('foo', function (_, __, context) {
+ if (typeof context !== 'object') {
+ properlyBoxesNonStrict = false;
+ }
+ });
+
+ method.call([1], function () {
+ 'use strict';
+ properlyBoxesStrict = typeof this === 'string';
+ }, 'x');
+ }
+ return !!method && properlyBoxesNonStrict && properlyBoxesStrict;
+ };
+
+ defineProperties(ArrayPrototype, {
+ forEach: function forEach(fun /*, thisp*/) {
+ var object = toObject(this),
+ self = splitString && isString(this) ? this.split('') : object,
+ thisp = arguments[1],
+ i = -1,
+ length = self.length >>> 0;
+
+ // If no callback function or if callback is not a callable function
+ if (!isFunction(fun)) {
+ throw new TypeError(); // TODO message
+ }
+
+ while (++i < length) {
+ if (i in self) {
+ // Invoke the callback function with call, passing arguments:
+ // context, property value, property key, thisArg object
+ // context
+ fun.call(thisp, self[i], i, object);
+ }
+ }
+ }
+ }, !properlyBoxesContext(ArrayPrototype.forEach));
+
+// ES5 15.4.4.14
+// http://es5.github.com/#x15.4.4.14
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
+ var hasFirefox2IndexOfBug = Array.prototype.indexOf && [0, 1].indexOf(1, 2) !== -1;
+ defineProperties(ArrayPrototype, {
+ indexOf: function indexOf(sought /*, fromIndex */) {
+ var self = splitString && isString(this) ? this.split('') : toObject(this),
+ length = self.length >>> 0;
+
+ if (!length) {
+ return -1;
+ }
+
+ var i = 0;
+ if (arguments.length > 1) {
+ i = toInteger(arguments[1]);
+ }
+
+ // handle negative indices
+ i = i >= 0 ? i : Math.max(0, length + i);
+ for (; i < length; i++) {
+ if (i in self && self[i] === sought) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ }, hasFirefox2IndexOfBug);
+
+//
+// String
+// ======
+//
+
+// ES5 15.5.4.14
+// http://es5.github.com/#x15.5.4.14
+
+// [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers]
+// Many browsers do not split properly with regular expressions or they
+// do not perform the split correctly under obscure conditions.
+// See http://blog.stevenlevithan.com/archives/cross-browser-split
+// I've tested in many browsers and this seems to cover the deviant ones:
+// 'ab'.split(/(?:ab)*/) should be ["", ""], not [""]
+// '.'.split(/(.?)(.?)/) should be ["", ".", "", ""], not ["", ""]
+// 'tesst'.split(/(s)*/) should be ["t", undefined, "e", "s", "t"], not
+// [undefined, "t", undefined, "e", ...]
+// ''.split(/.?/) should be [], not [""]
+// '.'.split(/()()/) should be ["."], not ["", "", "."]
+
+ var string_split = StringPrototype.split;
+ if (
+ 'ab'.split(/(?:ab)*/).length !== 2 ||
+ '.'.split(/(.?)(.?)/).length !== 4 ||
+ 'tesst'.split(/(s)*/)[1] === 't' ||
+ 'test'.split(/(?:)/, -1).length !== 4 ||
+ ''.split(/.?/).length ||
+ '.'.split(/()()/).length > 1
+ ) {
+ (function () {
+ var compliantExecNpcg = /()??/.exec('')[1] === void 0; // NPCG: nonparticipating capturing group
+
+ StringPrototype.split = function (separator, limit) {
+ var string = this;
+ if (separator === void 0 && limit === 0) {
+ return [];
+ }
+
+ // If `separator` is not a regex, use native split
+ if (_toString.call(separator) !== '[object RegExp]') {
+ return string_split.call(this, separator, limit);
+ }
+
+ var output = [],
+ flags = (separator.ignoreCase ? 'i' : '') +
+ (separator.multiline ? 'm' : '') +
+ (separator.extended ? 'x' : '') + // Proposed for ES6
+ (separator.sticky ? 'y' : ''), // Firefox 3+
+ lastLastIndex = 0,
+ // Make `global` and avoid `lastIndex` issues by working with a copy
+ separator2, match, lastIndex, lastLength;
+ separator = new RegExp(separator.source, flags + 'g');
+ string += ''; // Type-convert
+ if (!compliantExecNpcg) {
+ // Doesn't need flags gy, but they don't hurt
+ separator2 = new RegExp('^' + separator.source + '$(?!\\s)', flags);
+ }
+ /* Values for `limit`, per the spec:
+ * If undefined: 4294967295 // Math.pow(2, 32) - 1
+ * If 0, Infinity, or NaN: 0
+ * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
+ * If negative number: 4294967296 - Math.floor(Math.abs(limit))
+ * If other: Type-convert, then use the above rules
+ */
+ limit = limit === void 0 ?
+ -1 >>> 0 : // Math.pow(2, 32) - 1
+ ToUint32(limit);
+ while (match = separator.exec(string)) {
+ // `separator.lastIndex` is not reliable cross-browser
+ lastIndex = match.index + match[0].length;
+ if (lastIndex > lastLastIndex) {
+ output.push(string.slice(lastLastIndex, match.index));
+ // Fix browsers whose `exec` methods don't consistently return `undefined` for
+ // nonparticipating capturing groups
+ if (!compliantExecNpcg && match.length > 1) {
+ match[0].replace(separator2, function () {
+ for (var i = 1; i < arguments.length - 2; i++) {
+ if (arguments[i] === void 0) {
+ match[i] = void 0;
+ }
+ }
+ });
+ }
+ if (match.length > 1 && match.index < string.length) {
+ ArrayPrototype.push.apply(output, match.slice(1));
+ }
+ lastLength = match[0].length;
+ lastLastIndex = lastIndex;
+ if (output.length >= limit) {
+ break;
+ }
+ }
+ if (separator.lastIndex === match.index) {
+ separator.lastIndex++; // Avoid an infinite loop
+ }
+ }
+ if (lastLastIndex === string.length) {
+ if (lastLength || !separator.test('')) {
+ output.push('');
+ }
+ } else {
+ output.push(string.slice(lastLastIndex));
+ }
+ return output.length > limit ? output.slice(0, limit) : output;
+ };
+ }());
+
+// [bugfix, chrome]
+// If separator is undefined, then the result array contains just one String,
+// which is the this value (converted to a String). If limit is not undefined,
+// then the output array is truncated so that it contains no more than limit
+// elements.
+// "0".split(undefined, 0) -> []
+ } else if ('0'.split(void 0, 0).length) {
+ StringPrototype.split = function split(separator, limit) {
+ if (separator === void 0 && limit === 0) {
+ return [];
+ }
+ return string_split.call(this, separator, limit);
+ };
+ }
+
+// ECMA-262, 3rd B.2.3
+// Not an ECMAScript standard, although ECMAScript 3rd Edition has a
+// non-normative section suggesting uniform semantics and it should be
+// normalized across all browsers
+// [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE
+ var string_substr = StringPrototype.substr;
+ var hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b';
+ defineProperties(StringPrototype, {
+ substr: function substr(start, length) {
+ return string_substr.call(
+ this,
+ start < 0 ? ((start = this.length + start) < 0 ? 0 : start) : start,
+ length
+ );
+ }
+ }, hasNegativeSubstrBug);
+
+ }, {}],
+ 16: [function (require, module, exports) {
+ 'use strict';
+
+ module.exports = [
+ // streaming transports
+ require('./transport/websocket')
+ , require('./transport/xhr-streaming')
+ , require('./transport/xdr-streaming')
+ , require('./transport/eventsource')
+ , require('./transport/lib/iframe-wrap')(require('./transport/eventsource'))
+
+ // polling transports
+ , require('./transport/htmlfile')
+ , require('./transport/lib/iframe-wrap')(require('./transport/htmlfile'))
+ , require('./transport/xhr-polling')
+ , require('./transport/xdr-polling')
+ , require('./transport/lib/iframe-wrap')(require('./transport/xhr-polling'))
+ , require('./transport/jsonp-polling')
+ ];
+
+ }, {
+ "./transport/eventsource": 20,
+ "./transport/htmlfile": 21,
+ "./transport/jsonp-polling": 23,
+ "./transport/lib/iframe-wrap": 26,
+ "./transport/websocket": 38,
+ "./transport/xdr-polling": 39,
+ "./transport/xdr-streaming": 40,
+ "./transport/xhr-polling": 41,
+ "./transport/xhr-streaming": 42
+ }],
+ 17: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ var EventEmitter = require('events').EventEmitter
+ , inherits = require('inherits')
+ , utils = require('../../utils/event')
+ , urlUtils = require('../../utils/url')
+ , XHR = global.XMLHttpRequest
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:browser:xhr');
+ }
+
+ function AbstractXHRObject(method, url, payload, opts) {
+ debug(method, url);
+ var self = this;
+ EventEmitter.call(this);
+
+ setTimeout(function () {
+ self._start(method, url, payload, opts);
+ }, 0);
+ }
+
+ inherits(AbstractXHRObject, EventEmitter);
+
+ AbstractXHRObject.prototype._start = function (method, url, payload, opts) {
+ var self = this;
+
+ try {
+ this.xhr = new XHR();
+ } catch (x) {
+ // intentionally empty
+ }
+
+ if (!this.xhr) {
+ debug('no xhr');
+ this.emit('finish', 0, 'no xhr support');
+ this._cleanup();
+ return;
+ }
+
+ // several browsers cache POSTs
+ url = urlUtils.addQuery(url, 't=' + (+new Date()));
+
+ // Explorer tends to keep connection open, even after the
+ // tab gets closed: http://bugs.jquery.com/ticket/5280
+ this.unloadRef = utils.unloadAdd(function () {
+ debug('unload cleanup');
+ self._cleanup(true);
+ });
+ try {
+ this.xhr.open(method, url, true);
+ if (this.timeout && 'timeout' in this.xhr) {
+ this.xhr.timeout = this.timeout;
+ this.xhr.ontimeout = function () {
+ debug('xhr timeout');
+ self.emit('finish', 0, '');
+ self._cleanup(false);
+ };
+ }
+ } catch (e) {
+ debug('exception', e);
+ // IE raises an exception on wrong port.
+ this.emit('finish', 0, '');
+ this._cleanup(false);
+ return;
+ }
+
+ if ((!opts || !opts.noCredentials) && AbstractXHRObject.supportsCORS) {
+ debug('withCredentials');
+ // Mozilla docs says https://developer.mozilla.org/en/XMLHttpRequest :
+ // "This never affects same-site requests."
+
+ this.xhr.withCredentials = 'true';
+ }
+ if (opts && opts.headers) {
+ for (var key in opts.headers) {
+ this.xhr.setRequestHeader(key, opts.headers[key]);
+ }
+ }
+
+ this.xhr.onreadystatechange = function () {
+ if (self.xhr) {
+ var x = self.xhr;
+ var text, status;
+ debug('readyState', x.readyState);
+ switch (x.readyState) {
+ case 3:
+ // IE doesn't like peeking into responseText or status
+ // on Microsoft.XMLHTTP and readystate=3
+ try {
+ status = x.status;
+ text = x.responseText;
+ } catch (e) {
+ // intentionally empty
+ }
+ debug('status', status);
+ // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450
+ if (status === 1223) {
+ status = 204;
+ }
+
+ // IE does return readystate == 3 for 404 answers.
+ if (status === 200 && text && text.length > 0) {
+ debug('chunk');
+ self.emit('chunk', status, text);
+ }
+ break;
+ case 4:
+ status = x.status;
+ debug('status', status);
+ // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450
+ if (status === 1223) {
+ status = 204;
+ }
+ // IE returns this for a bad port
+ // http://msdn.microsoft.com/en-us/library/windows/desktop/aa383770(v=vs.85).aspx
+ if (status === 12005 || status === 12029) {
+ status = 0;
+ }
+
+ debug('finish', status, x.responseText);
+ self.emit('finish', status, x.responseText);
+ self._cleanup(false);
+ break;
+ }
+ }
+ };
+
+ try {
+ self.xhr.send(payload);
+ } catch (e) {
+ self.emit('finish', 0, '');
+ self._cleanup(false);
+ }
+ };
+
+ AbstractXHRObject.prototype._cleanup = function (abort) {
+ debug('cleanup');
+ if (!this.xhr) {
+ return;
+ }
+ this.removeAllListeners();
+ utils.unloadDel(this.unloadRef);
+
+ // IE needs this field to be a function
+ this.xhr.onreadystatechange = function () {
+ };
+ if (this.xhr.ontimeout) {
+ this.xhr.ontimeout = null;
+ }
+
+ if (abort) {
+ try {
+ this.xhr.abort();
+ } catch (x) {
+ // intentionally empty
+ }
+ }
+ this.unloadRef = this.xhr = null;
+ };
+
+ AbstractXHRObject.prototype.close = function () {
+ debug('close');
+ this._cleanup(true);
+ };
+
+ AbstractXHRObject.enabled = !!XHR;
+// override XMLHttpRequest for IE6/7
+// obfuscate to avoid firewalls
+ var axo = ['Active'].concat('Object').join('X');
+ if (!AbstractXHRObject.enabled && (axo in global)) {
+ debug('overriding xmlhttprequest');
+ XHR = function () {
+ try {
+ return new global[axo]('Microsoft.XMLHTTP');
+ } catch (e) {
+ return null;
+ }
+ };
+ AbstractXHRObject.enabled = !!new XHR();
+ }
+
+ var cors = false;
+ try {
+ cors = 'withCredentials' in new XHR();
+ } catch (ignored) {
+ // intentionally empty
+ }
+
+ AbstractXHRObject.supportsCORS = cors;
+
+ module.exports = AbstractXHRObject;
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"../../utils/event": 46, "../../utils/url": 52, "debug": 54, "events": 3, "inherits": 56}],
+ 18: [function (require, module, exports) {
+ (function (global) {
+ module.exports = global.EventSource;
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {}],
+ 19: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ var Driver = global.WebSocket || global.MozWebSocket;
+ if (Driver) {
+ module.exports = function WebSocketBrowserDriver(url) {
+ return new Driver(url);
+ };
+ } else {
+ module.exports = undefined;
+ }
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {}],
+ 20: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , AjaxBasedTransport = require('./lib/ajax-based')
+ , EventSourceReceiver = require('./receiver/eventsource')
+ , XHRCorsObject = require('./sender/xhr-cors')
+ , EventSourceDriver = require('eventsource')
+ ;
+
+ function EventSourceTransport(transUrl) {
+ if (!EventSourceTransport.enabled()) {
+ throw new Error('Transport created when disabled');
+ }
+
+ AjaxBasedTransport.call(this, transUrl, '/eventsource', EventSourceReceiver, XHRCorsObject);
+ }
+
+ inherits(EventSourceTransport, AjaxBasedTransport);
+
+ EventSourceTransport.enabled = function () {
+ return !!EventSourceDriver;
+ };
+
+ EventSourceTransport.transportName = 'eventsource';
+ EventSourceTransport.roundTrips = 2;
+
+ module.exports = EventSourceTransport;
+
+ }, {
+ "./lib/ajax-based": 24,
+ "./receiver/eventsource": 29,
+ "./sender/xhr-cors": 35,
+ "eventsource": 18,
+ "inherits": 56
+ }],
+ 21: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , HtmlfileReceiver = require('./receiver/htmlfile')
+ , XHRLocalObject = require('./sender/xhr-local')
+ , AjaxBasedTransport = require('./lib/ajax-based')
+ ;
+
+ function HtmlFileTransport(transUrl) {
+ if (!HtmlfileReceiver.enabled) {
+ throw new Error('Transport created when disabled');
+ }
+ AjaxBasedTransport.call(this, transUrl, '/htmlfile', HtmlfileReceiver, XHRLocalObject);
+ }
+
+ inherits(HtmlFileTransport, AjaxBasedTransport);
+
+ HtmlFileTransport.enabled = function (info) {
+ return HtmlfileReceiver.enabled && info.sameOrigin;
+ };
+
+ HtmlFileTransport.transportName = 'htmlfile';
+ HtmlFileTransport.roundTrips = 2;
+
+ module.exports = HtmlFileTransport;
+
+ }, {"./lib/ajax-based": 24, "./receiver/htmlfile": 30, "./sender/xhr-local": 37, "inherits": 56}],
+ 22: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+// Few cool transports do work only for same-origin. In order to make
+// them work cross-domain we shall use iframe, served from the
+// remote domain. New browsers have capabilities to communicate with
+// cross domain iframe using postMessage(). In IE it was implemented
+// from IE 8+, but of course, IE got some details wrong:
+// http://msdn.microsoft.com/en-us/library/cc197015(v=VS.85).aspx
+// http://stevesouders.com/misc/test-postmessage.php
+
+ var inherits = require('inherits')
+ , JSON3 = require('json3')
+ , EventEmitter = require('events').EventEmitter
+ , version = require('../version')
+ , urlUtils = require('../utils/url')
+ , iframeUtils = require('../utils/iframe')
+ , eventUtils = require('../utils/event')
+ , random = require('../utils/random')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:transport:iframe');
+ }
+
+ function IframeTransport(transport, transUrl, baseUrl) {
+ if (!IframeTransport.enabled()) {
+ throw new Error('Transport created when disabled');
+ }
+ EventEmitter.call(this);
+
+ var self = this;
+ this.origin = urlUtils.getOrigin(baseUrl);
+ this.baseUrl = baseUrl;
+ this.transUrl = transUrl;
+ this.transport = transport;
+ this.windowId = random.string(8);
+
+ var iframeUrl = urlUtils.addPath(baseUrl, '/iframe.html') + '#' + this.windowId;
+ debug(transport, transUrl, iframeUrl);
+
+ this.iframeObj = iframeUtils.createIframe(iframeUrl, function (r) {
+ debug('err callback');
+ self.emit('close', 1006, 'Unable to load an iframe (' + r + ')');
+ self.close();
+ });
+
+ this.onmessageCallback = this._message.bind(this);
+ eventUtils.attachEvent('message', this.onmessageCallback);
+ }
+
+ inherits(IframeTransport, EventEmitter);
+
+ IframeTransport.prototype.close = function () {
+ debug('close');
+ this.removeAllListeners();
+ if (this.iframeObj) {
+ eventUtils.detachEvent('message', this.onmessageCallback);
+ try {
+ // When the iframe is not loaded, IE raises an exception
+ // on 'contentWindow'.
+ this.postMessage('c');
+ } catch (x) {
+ // intentionally empty
+ }
+ this.iframeObj.cleanup();
+ this.iframeObj = null;
+ this.onmessageCallback = this.iframeObj = null;
+ }
+ };
+
+ IframeTransport.prototype._message = function (e) {
+ debug('message', e.data);
+ if (!urlUtils.isOriginEqual(e.origin, this.origin)) {
+ debug('not same origin', e.origin, this.origin);
+ return;
+ }
+
+ var iframeMessage;
+ try {
+ iframeMessage = JSON3.parse(e.data);
+ } catch (ignored) {
+ debug('bad json', e.data);
+ return;
+ }
+
+ if (iframeMessage.windowId !== this.windowId) {
+ debug('mismatched window id', iframeMessage.windowId, this.windowId);
+ return;
+ }
+
+ switch (iframeMessage.type) {
+ case 's':
+ this.iframeObj.loaded();
+ // window global dependency
+ this.postMessage('s', JSON3.stringify([
+ version
+ , this.transport
+ , this.transUrl
+ , this.baseUrl
+ ]));
+ break;
+ case 't':
+ this.emit('message', iframeMessage.data);
+ break;
+ case 'c':
+ var cdata;
+ try {
+ cdata = JSON3.parse(iframeMessage.data);
+ } catch (ignored) {
+ debug('bad json', iframeMessage.data);
+ return;
+ }
+ this.emit('close', cdata[0], cdata[1]);
+ this.close();
+ break;
+ }
+ };
+
+ IframeTransport.prototype.postMessage = function (type, data) {
+ debug('postMessage', type, data);
+ this.iframeObj.post(JSON3.stringify({
+ windowId: this.windowId
+ , type: type
+ , data: data || ''
+ }), this.origin);
+ };
+
+ IframeTransport.prototype.send = function (message) {
+ debug('send', message);
+ this.postMessage('m', message);
+ };
+
+ IframeTransport.enabled = function () {
+ return iframeUtils.iframeEnabled;
+ };
+
+ IframeTransport.transportName = 'iframe';
+ IframeTransport.roundTrips = 2;
+
+ module.exports = IframeTransport;
+
+ }).call(this, {env: {}})
+
+ }, {
+ "../utils/event": 46,
+ "../utils/iframe": 47,
+ "../utils/random": 50,
+ "../utils/url": 52,
+ "../version": 53,
+ "debug": 54,
+ "events": 3,
+ "inherits": 56,
+ "json3": 57
+ }],
+ 23: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+// The simplest and most robust transport, using the well-know cross
+// domain hack - JSONP. This transport is quite inefficient - one
+// message could use up to one http request. But at least it works almost
+// everywhere.
+// Known limitations:
+// o you will get a spinning cursor
+// o for Konqueror a dumb timer is needed to detect errors
+
+ var inherits = require('inherits')
+ , SenderReceiver = require('./lib/sender-receiver')
+ , JsonpReceiver = require('./receiver/jsonp')
+ , jsonpSender = require('./sender/jsonp')
+ ;
+
+ function JsonPTransport(transUrl) {
+ if (!JsonPTransport.enabled()) {
+ throw new Error('Transport created when disabled');
+ }
+ SenderReceiver.call(this, transUrl, '/jsonp', jsonpSender, JsonpReceiver);
+ }
+
+ inherits(JsonPTransport, SenderReceiver);
+
+ JsonPTransport.enabled = function () {
+ return !!global.document;
+ };
+
+ JsonPTransport.transportName = 'jsonp-polling';
+ JsonPTransport.roundTrips = 1;
+ JsonPTransport.needBody = true;
+
+ module.exports = JsonPTransport;
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"./lib/sender-receiver": 28, "./receiver/jsonp": 31, "./sender/jsonp": 33, "inherits": 56}],
+ 24: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , urlUtils = require('../../utils/url')
+ , SenderReceiver = require('./sender-receiver')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:ajax-based');
+ }
+
+ function createAjaxSender(AjaxObject) {
+ return function (url, payload, callback) {
+ debug('create ajax sender', url, payload);
+ var opt = {};
+ if (typeof payload === 'string') {
+ opt.headers = {'Content-type': 'text/plain'};
+ }
+ var ajaxUrl = urlUtils.addPath(url, '/xhr_send');
+ var xo = new AjaxObject('POST', ajaxUrl, payload, opt);
+ xo.once('finish', function (status) {
+ debug('finish', status);
+ xo = null;
+
+ if (status !== 200 && status !== 204) {
+ return callback(new Error('http status ' + status));
+ }
+ callback();
+ });
+ return function () {
+ debug('abort');
+ xo.close();
+ xo = null;
+
+ var err = new Error('Aborted');
+ err.code = 1000;
+ callback(err);
+ };
+ };
+ }
+
+ function AjaxBasedTransport(transUrl, urlSuffix, Receiver, AjaxObject) {
+ SenderReceiver.call(this, transUrl, urlSuffix, createAjaxSender(AjaxObject), Receiver, AjaxObject);
+ }
+
+ inherits(AjaxBasedTransport, SenderReceiver);
+
+ module.exports = AjaxBasedTransport;
+
+ }).call(this, {env: {}})
+
+ }, {"../../utils/url": 52, "./sender-receiver": 28, "debug": 54, "inherits": 56}],
+ 25: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , EventEmitter = require('events').EventEmitter
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:buffered-sender');
+ }
+
+ function BufferedSender(url, sender) {
+ debug(url);
+ EventEmitter.call(this);
+ this.sendBuffer = [];
+ this.sender = sender;
+ this.url = url;
+ }
+
+ inherits(BufferedSender, EventEmitter);
+
+ BufferedSender.prototype.send = function (message) {
+ debug('send', message);
+ this.sendBuffer.push(message);
+ if (!this.sendStop) {
+ this.sendSchedule();
+ }
+ };
+
+// For polling transports in a situation when in the message callback,
+// new message is being send. If the sending connection was started
+// before receiving one, it is possible to saturate the network and
+// timeout due to the lack of receiving socket. To avoid that we delay
+// sending messages by some small time, in order to let receiving
+// connection be started beforehand. This is only a halfmeasure and
+// does not fix the big problem, but it does make the tests go more
+// stable on slow networks.
+ BufferedSender.prototype.sendScheduleWait = function () {
+ debug('sendScheduleWait');
+ var self = this;
+ var tref;
+ this.sendStop = function () {
+ debug('sendStop');
+ self.sendStop = null;
+ clearTimeout(tref);
+ };
+ tref = setTimeout(function () {
+ debug('timeout');
+ self.sendStop = null;
+ self.sendSchedule();
+ }, 25);
+ };
+
+ BufferedSender.prototype.sendSchedule = function () {
+ debug('sendSchedule', this.sendBuffer.length);
+ var self = this;
+ if (this.sendBuffer.length > 0) {
+ var payload = '[' + this.sendBuffer.join(',') + ']';
+ this.sendStop = this.sender(this.url, payload, function (err) {
+ self.sendStop = null;
+ if (err) {
+ debug('error', err);
+ self.emit('close', err.code || 1006, 'Sending error: ' + err);
+ self.close();
+ } else {
+ self.sendScheduleWait();
+ }
+ });
+ this.sendBuffer = [];
+ }
+ };
+
+ BufferedSender.prototype._cleanup = function () {
+ debug('_cleanup');
+ this.removeAllListeners();
+ };
+
+ BufferedSender.prototype.close = function () {
+ debug('close');
+ this._cleanup();
+ if (this.sendStop) {
+ this.sendStop();
+ this.sendStop = null;
+ }
+ };
+
+ module.exports = BufferedSender;
+
+ }).call(this, {env: {}})
+
+ }, {"debug": 54, "events": 3, "inherits": 56}],
+ 26: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , IframeTransport = require('../iframe')
+ , objectUtils = require('../../utils/object')
+ ;
+
+ module.exports = function (transport) {
+
+ function IframeWrapTransport(transUrl, baseUrl) {
+ IframeTransport.call(this, transport.transportName, transUrl, baseUrl);
+ }
+
+ inherits(IframeWrapTransport, IframeTransport);
+
+ IframeWrapTransport.enabled = function (url, info) {
+ if (!global.document) {
+ return false;
+ }
+
+ var iframeInfo = objectUtils.extend({}, info);
+ iframeInfo.sameOrigin = true;
+ return transport.enabled(iframeInfo) && IframeTransport.enabled();
+ };
+
+ IframeWrapTransport.transportName = 'iframe-' + transport.transportName;
+ IframeWrapTransport.needBody = true;
+ IframeWrapTransport.roundTrips = IframeTransport.roundTrips + transport.roundTrips - 1; // html, javascript (2) + transport - no CORS (1)
+
+ IframeWrapTransport.facadeTransport = transport;
+
+ return IframeWrapTransport;
+ };
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"../../utils/object": 49, "../iframe": 22, "inherits": 56}],
+ 27: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , EventEmitter = require('events').EventEmitter
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:polling');
+ }
+
+ function Polling(Receiver, receiveUrl, AjaxObject) {
+ debug(receiveUrl);
+ EventEmitter.call(this);
+ this.Receiver = Receiver;
+ this.receiveUrl = receiveUrl;
+ this.AjaxObject = AjaxObject;
+ this._scheduleReceiver();
+ }
+
+ inherits(Polling, EventEmitter);
+
+ Polling.prototype._scheduleReceiver = function () {
+ debug('_scheduleReceiver');
+ var self = this;
+ var poll = this.poll = new this.Receiver(this.receiveUrl, this.AjaxObject);
+
+ poll.on('message', function (msg) {
+ debug('message', msg);
+ self.emit('message', msg);
+ });
+
+ poll.once('close', function (code, reason) {
+ debug('close', code, reason, self.pollIsClosing);
+ self.poll = poll = null;
+
+ if (!self.pollIsClosing) {
+ if (reason === 'network') {
+ self._scheduleReceiver();
+ } else {
+ self.emit('close', code || 1006, reason);
+ self.removeAllListeners();
+ }
+ }
+ });
+ };
+
+ Polling.prototype.abort = function () {
+ debug('abort');
+ this.removeAllListeners();
+ this.pollIsClosing = true;
+ if (this.poll) {
+ this.poll.abort();
+ }
+ };
+
+ module.exports = Polling;
+
+ }).call(this, {env: {}})
+
+ }, {"debug": 54, "events": 3, "inherits": 56}],
+ 28: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , urlUtils = require('../../utils/url')
+ , BufferedSender = require('./buffered-sender')
+ , Polling = require('./polling')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:sender-receiver');
+ }
+
+ function SenderReceiver(transUrl, urlSuffix, senderFunc, Receiver, AjaxObject) {
+ var pollUrl = urlUtils.addPath(transUrl, urlSuffix);
+ debug(pollUrl);
+ var self = this;
+ BufferedSender.call(this, transUrl, senderFunc);
+
+ this.poll = new Polling(Receiver, pollUrl, AjaxObject);
+ this.poll.on('message', function (msg) {
+ debug('poll message', msg);
+ self.emit('message', msg);
+ });
+ this.poll.once('close', function (code, reason) {
+ debug('poll close', code, reason);
+ self.poll = null;
+ self.emit('close', code, reason);
+ self.close();
+ });
+ }
+
+ inherits(SenderReceiver, BufferedSender);
+
+ SenderReceiver.prototype.close = function () {
+ BufferedSender.prototype.close.call(this);
+ debug('close');
+ this.removeAllListeners();
+ if (this.poll) {
+ this.poll.abort();
+ this.poll = null;
+ }
+ };
+
+ module.exports = SenderReceiver;
+
+ }).call(this, {env: {}})
+
+ }, {"../../utils/url": 52, "./buffered-sender": 25, "./polling": 27, "debug": 54, "inherits": 56}],
+ 29: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , EventEmitter = require('events').EventEmitter
+ , EventSourceDriver = require('eventsource')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:receiver:eventsource');
+ }
+
+ function EventSourceReceiver(url) {
+ debug(url);
+ EventEmitter.call(this);
+
+ var self = this;
+ var es = this.es = new EventSourceDriver(url);
+ es.onmessage = function (e) {
+ debug('message', e.data);
+ self.emit('message', decodeURI(e.data));
+ };
+ es.onerror = function (e) {
+ debug('error', es.readyState, e);
+ // ES on reconnection has readyState = 0 or 1.
+ // on network error it's CLOSED = 2
+ var reason = (es.readyState !== 2 ? 'network' : 'permanent');
+ self._cleanup();
+ self._close(reason);
+ };
+ }
+
+ inherits(EventSourceReceiver, EventEmitter);
+
+ EventSourceReceiver.prototype.abort = function () {
+ debug('abort');
+ this._cleanup();
+ this._close('user');
+ };
+
+ EventSourceReceiver.prototype._cleanup = function () {
+ debug('cleanup');
+ var es = this.es;
+ if (es) {
+ es.onmessage = es.onerror = null;
+ es.close();
+ this.es = null;
+ }
+ };
+
+ EventSourceReceiver.prototype._close = function (reason) {
+ debug('close', reason);
+ var self = this;
+ // Safari and chrome < 15 crash if we close window before
+ // waiting for ES cleanup. See:
+ // https://code.google.com/p/chromium/issues/detail?id=89155
+ setTimeout(function () {
+ self.emit('close', null, reason);
+ self.removeAllListeners();
+ }, 200);
+ };
+
+ module.exports = EventSourceReceiver;
+
+ }).call(this, {env: {}})
+
+ }, {"debug": 54, "events": 3, "eventsource": 18, "inherits": 56}],
+ 30: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , iframeUtils = require('../../utils/iframe')
+ , urlUtils = require('../../utils/url')
+ , EventEmitter = require('events').EventEmitter
+ , random = require('../../utils/random')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:receiver:htmlfile');
+ }
+
+ function HtmlfileReceiver(url) {
+ debug(url);
+ EventEmitter.call(this);
+ var self = this;
+ iframeUtils.polluteGlobalNamespace();
+
+ this.id = 'a' + random.string(6);
+ url = urlUtils.addQuery(url, 'c=' + decodeURIComponent(iframeUtils.WPrefix + '.' + this.id));
+
+ debug('using htmlfile', HtmlfileReceiver.htmlfileEnabled);
+ var constructFunc = HtmlfileReceiver.htmlfileEnabled ?
+ iframeUtils.createHtmlfile : iframeUtils.createIframe;
+
+ global[iframeUtils.WPrefix][this.id] = {
+ start: function () {
+ debug('start');
+ self.iframeObj.loaded();
+ }
+ , message: function (data) {
+ debug('message', data);
+ self.emit('message', data);
+ }
+ , stop: function () {
+ debug('stop');
+ self._cleanup();
+ self._close('network');
+ }
+ };
+ this.iframeObj = constructFunc(url, function () {
+ debug('callback');
+ self._cleanup();
+ self._close('permanent');
+ });
+ }
+
+ inherits(HtmlfileReceiver, EventEmitter);
+
+ HtmlfileReceiver.prototype.abort = function () {
+ debug('abort');
+ this._cleanup();
+ this._close('user');
+ };
+
+ HtmlfileReceiver.prototype._cleanup = function () {
+ debug('_cleanup');
+ if (this.iframeObj) {
+ this.iframeObj.cleanup();
+ this.iframeObj = null;
+ }
+ delete global[iframeUtils.WPrefix][this.id];
+ };
+
+ HtmlfileReceiver.prototype._close = function (reason) {
+ debug('_close', reason);
+ this.emit('close', null, reason);
+ this.removeAllListeners();
+ };
+
+ HtmlfileReceiver.htmlfileEnabled = false;
+
+// obfuscate to avoid firewalls
+ var axo = ['Active'].concat('Object').join('X');
+ if (axo in global) {
+ try {
+ HtmlfileReceiver.htmlfileEnabled = !!new global[axo]('htmlfile');
+ } catch (x) {
+ // intentionally empty
+ }
+ }
+
+ HtmlfileReceiver.enabled = HtmlfileReceiver.htmlfileEnabled || iframeUtils.iframeEnabled;
+
+ module.exports = HtmlfileReceiver;
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {
+ "../../utils/iframe": 47,
+ "../../utils/random": 50,
+ "../../utils/url": 52,
+ "debug": 54,
+ "events": 3,
+ "inherits": 56
+ }],
+ 31: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ var utils = require('../../utils/iframe')
+ , random = require('../../utils/random')
+ , browser = require('../../utils/browser')
+ , urlUtils = require('../../utils/url')
+ , inherits = require('inherits')
+ , EventEmitter = require('events').EventEmitter
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:receiver:jsonp');
+ }
+
+ function JsonpReceiver(url) {
+ debug(url);
+ var self = this;
+ EventEmitter.call(this);
+
+ utils.polluteGlobalNamespace();
+
+ this.id = 'a' + random.string(6);
+ var urlWithId = urlUtils.addQuery(url, 'c=' + encodeURIComponent(utils.WPrefix + '.' + this.id));
+
+ global[utils.WPrefix][this.id] = this._callback.bind(this);
+ this._createScript(urlWithId);
+
+ // Fallback mostly for Konqueror - stupid timer, 35 seconds shall be plenty.
+ this.timeoutId = setTimeout(function () {
+ debug('timeout');
+ self._abort(new Error('JSONP script loaded abnormally (timeout)'));
+ }, JsonpReceiver.timeout);
+ }
+
+ inherits(JsonpReceiver, EventEmitter);
+
+ JsonpReceiver.prototype.abort = function () {
+ debug('abort');
+ if (global[utils.WPrefix][this.id]) {
+ var err = new Error('JSONP user aborted read');
+ err.code = 1000;
+ this._abort(err);
+ }
+ };
+
+ JsonpReceiver.timeout = 35000;
+ JsonpReceiver.scriptErrorTimeout = 1000;
+
+ JsonpReceiver.prototype._callback = function (data) {
+ debug('_callback', data);
+ this._cleanup();
+
+ if (this.aborting) {
+ return;
+ }
+
+ if (data) {
+ debug('message', data);
+ this.emit('message', data);
+ }
+ this.emit('close', null, 'network');
+ this.removeAllListeners();
+ };
+
+ JsonpReceiver.prototype._abort = function (err) {
+ debug('_abort', err);
+ this._cleanup();
+ this.aborting = true;
+ this.emit('close', err.code, err.message);
+ this.removeAllListeners();
+ };
+
+ JsonpReceiver.prototype._cleanup = function () {
+ debug('_cleanup');
+ clearTimeout(this.timeoutId);
+ if (this.script2) {
+ this.script2.parentNode.removeChild(this.script2);
+ this.script2 = null;
+ }
+ if (this.script) {
+ var script = this.script;
+ // Unfortunately, you can't really abort script loading of
+ // the script.
+ script.parentNode.removeChild(script);
+ script.onreadystatechange = script.onerror =
+ script.onload = script.onclick = null;
+ this.script = null;
+ }
+ delete global[utils.WPrefix][this.id];
+ };
+
+ JsonpReceiver.prototype._scriptError = function () {
+ debug('_scriptError');
+ var self = this;
+ if (this.errorTimer) {
+ return;
+ }
+
+ this.errorTimer = setTimeout(function () {
+ if (!self.loadedOkay) {
+ self._abort(new Error('JSONP script loaded abnormally (onerror)'));
+ }
+ }, JsonpReceiver.scriptErrorTimeout);
+ };
+
+ JsonpReceiver.prototype._createScript = function (url) {
+ debug('_createScript', url);
+ var self = this;
+ var script = this.script = global.document.createElement('script');
+ var script2; // Opera synchronous load trick.
+
+ script.id = 'a' + random.string(8);
+ script.src = url;
+ script.type = 'text/javascript';
+ script.charset = 'UTF-8';
+ script.onerror = this._scriptError.bind(this);
+ script.onload = function () {
+ debug('onload');
+ self._abort(new Error('JSONP script loaded abnormally (onload)'));
+ };
+
+ // IE9 fires 'error' event after onreadystatechange or before, in random order.
+ // Use loadedOkay to determine if actually errored
+ script.onreadystatechange = function () {
+ debug('onreadystatechange', script.readyState);
+ if (/loaded|closed/.test(script.readyState)) {
+ if (script && script.htmlFor && script.onclick) {
+ self.loadedOkay = true;
+ try {
+ // In IE, actually execute the script.
+ script.onclick();
+ } catch (x) {
+ // intentionally empty
+ }
+ }
+ if (script) {
+ self._abort(new Error('JSONP script loaded abnormally (onreadystatechange)'));
+ }
+ }
+ };
+ // IE: event/htmlFor/onclick trick.
+ // One can't rely on proper order for onreadystatechange. In order to
+ // make sure, set a 'htmlFor' and 'event' properties, so that
+ // script code will be installed as 'onclick' handler for the
+ // script object. Later, onreadystatechange, manually execute this
+ // code. FF and Chrome doesn't work with 'event' and 'htmlFor'
+ // set. For reference see:
+ // http://jaubourg.net/2010/07/loading-script-as-onclick-handler-of.html
+ // Also, read on that about script ordering:
+ // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
+ if (typeof script.async === 'undefined' && global.document.attachEvent) {
+ // According to mozilla docs, in recent browsers script.async defaults
+ // to 'true', so we may use it to detect a good browser:
+ // https://developer.mozilla.org/en/HTML/Element/script
+ if (!browser.isOpera()) {
+ // Naively assume we're in IE
+ try {
+ script.htmlFor = script.id;
+ script.event = 'onclick';
+ } catch (x) {
+ // intentionally empty
+ }
+ script.async = true;
+ } else {
+ // Opera, second sync script hack
+ script2 = this.script2 = global.document.createElement('script');
+ script2.text = "try{var a = document.getElementById('" + script.id + "'); if(a)a.onerror();}catch(x){};";
+ script.async = script2.async = false;
+ }
+ }
+ if (typeof script.async !== 'undefined') {
+ script.async = true;
+ }
+
+ var head = global.document.getElementsByTagName('head')[0];
+ head.insertBefore(script, head.firstChild);
+ if (script2) {
+ head.insertBefore(script2, head.firstChild);
+ }
+ };
+
+ module.exports = JsonpReceiver;
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {
+ "../../utils/browser": 44,
+ "../../utils/iframe": 47,
+ "../../utils/random": 50,
+ "../../utils/url": 52,
+ "debug": 54,
+ "events": 3,
+ "inherits": 56
+ }],
+ 32: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , EventEmitter = require('events').EventEmitter
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:receiver:xhr');
+ }
+
+ function XhrReceiver(url, AjaxObject) {
+ debug(url);
+ EventEmitter.call(this);
+ var self = this;
+
+ this.bufferPosition = 0;
+
+ this.xo = new AjaxObject('POST', url, null);
+ this.xo.on('chunk', this._chunkHandler.bind(this));
+ this.xo.once('finish', function (status, text) {
+ debug('finish', status, text);
+ self._chunkHandler(status, text);
+ self.xo = null;
+ var reason = status === 200 ? 'network' : 'permanent';
+ debug('close', reason);
+ self.emit('close', null, reason);
+ self._cleanup();
+ });
+ }
+
+ inherits(XhrReceiver, EventEmitter);
+
+ XhrReceiver.prototype._chunkHandler = function (status, text) {
+ debug('_chunkHandler', status);
+ if (status !== 200 || !text) {
+ return;
+ }
+
+ for (var idx = -1; ; this.bufferPosition += idx + 1) {
+ var buf = text.slice(this.bufferPosition);
+ idx = buf.indexOf('\n');
+ if (idx === -1) {
+ break;
+ }
+ var msg = buf.slice(0, idx);
+ if (msg) {
+ debug('message', msg);
+ this.emit('message', msg);
+ }
+ }
+ };
+
+ XhrReceiver.prototype._cleanup = function () {
+ debug('_cleanup');
+ this.removeAllListeners();
+ };
+
+ XhrReceiver.prototype.abort = function () {
+ debug('abort');
+ if (this.xo) {
+ this.xo.close();
+ debug('close');
+ this.emit('close', null, 'user');
+ this.xo = null;
+ }
+ this._cleanup();
+ };
+
+ module.exports = XhrReceiver;
+
+ }).call(this, {env: {}})
+
+ }, {"debug": 54, "events": 3, "inherits": 56}],
+ 33: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ var random = require('../../utils/random')
+ , urlUtils = require('../../utils/url')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:sender:jsonp');
+ }
+
+ var form, area;
+
+ function createIframe(id) {
+ debug('createIframe', id);
+ try {
+ // ie6 dynamic iframes with target="" support (thanks Chris Lambacher)
+ return global.document.createElement('<iframe name="' + id + '">');
+ } catch (x) {
+ var iframe = global.document.createElement('iframe');
+ iframe.name = id;
+ return iframe;
+ }
+ }
+
+ function createForm() {
+ debug('createForm');
+ form = global.document.createElement('form');
+ form.style.display = 'none';
+ form.style.position = 'absolute';
+ form.method = 'POST';
+ form.enctype = 'application/x-www-form-urlencoded';
+ form.acceptCharset = 'UTF-8';
+
+ area = global.document.createElement('textarea');
+ area.name = 'd';
+ form.appendChild(area);
+
+ global.document.body.appendChild(form);
+ }
+
+ module.exports = function (url, payload, callback) {
+ debug(url, payload);
+ if (!form) {
+ createForm();
+ }
+ var id = 'a' + random.string(8);
+ form.target = id;
+ form.action = urlUtils.addQuery(urlUtils.addPath(url, '/jsonp_send'), 'i=' + id);
+
+ var iframe = createIframe(id);
+ iframe.id = id;
+ iframe.style.display = 'none';
+ form.appendChild(iframe);
+
+ try {
+ area.value = payload;
+ } catch (e) {
+ // seriously broken browsers get here
+ }
+ form.submit();
+
+ var completed = function (err) {
+ debug('completed', id, err);
+ if (!iframe.onerror) {
+ return;
+ }
+ iframe.onreadystatechange = iframe.onerror = iframe.onload = null;
+ // Opera mini doesn't like if we GC iframe
+ // immediately, thus this timeout.
+ setTimeout(function () {
+ debug('cleaning up', id);
+ iframe.parentNode.removeChild(iframe);
+ iframe = null;
+ }, 500);
+ area.value = '';
+ // It is not possible to detect if the iframe succeeded or
+ // failed to submit our form.
+ callback(err);
+ };
+ iframe.onerror = function () {
+ debug('onerror', id);
+ completed();
+ };
+ iframe.onload = function () {
+ debug('onload', id);
+ completed();
+ };
+ iframe.onreadystatechange = function (e) {
+ debug('onreadystatechange', id, iframe.readyState, e);
+ if (iframe.readyState === 'complete') {
+ completed();
+ }
+ };
+ return function () {
+ debug('aborted', id);
+ completed(new Error('Aborted'));
+ };
+ };
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"../../utils/random": 50, "../../utils/url": 52, "debug": 54}],
+ 34: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ var EventEmitter = require('events').EventEmitter
+ , inherits = require('inherits')
+ , eventUtils = require('../../utils/event')
+ , browser = require('../../utils/browser')
+ , urlUtils = require('../../utils/url')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:sender:xdr');
+ }
+
+// References:
+// http://ajaxian.com/archives/100-line-ajax-wrapper
+// http://msdn.microsoft.com/en-us/library/cc288060(v=VS.85).aspx
+
+ function XDRObject(method, url, payload) {
+ debug(method, url);
+ var self = this;
+ EventEmitter.call(this);
+
+ setTimeout(function () {
+ self._start(method, url, payload);
+ }, 0);
+ }
+
+ inherits(XDRObject, EventEmitter);
+
+ XDRObject.prototype._start = function (method, url, payload) {
+ debug('_start');
+ var self = this;
+ var xdr = new global.XDomainRequest();
+ // IE caches even POSTs
+ url = urlUtils.addQuery(url, 't=' + (+new Date()));
+
+ xdr.onerror = function () {
+ debug('onerror');
+ self._error();
+ };
+ xdr.ontimeout = function () {
+ debug('ontimeout');
+ self._error();
+ };
+ xdr.onprogress = function () {
+ debug('progress', xdr.responseText);
+ self.emit('chunk', 200, xdr.responseText);
+ };
+ xdr.onload = function () {
+ debug('load');
+ self.emit('finish', 200, xdr.responseText);
+ self._cleanup(false);
+ };
+ this.xdr = xdr;
+ this.unloadRef = eventUtils.unloadAdd(function () {
+ self._cleanup(true);
+ });
+ try {
+ // Fails with AccessDenied if port number is bogus
+ this.xdr.open(method, url);
+ if (this.timeout) {
+ this.xdr.timeout = this.timeout;
+ }
+ this.xdr.send(payload);
+ } catch (x) {
+ this._error();
+ }
+ };
+
+ XDRObject.prototype._error = function () {
+ this.emit('finish', 0, '');
+ this._cleanup(false);
+ };
+
+ XDRObject.prototype._cleanup = function (abort) {
+ debug('cleanup', abort);
+ if (!this.xdr) {
+ return;
+ }
+ this.removeAllListeners();
+ eventUtils.unloadDel(this.unloadRef);
+
+ this.xdr.ontimeout = this.xdr.onerror = this.xdr.onprogress = this.xdr.onload = null;
+ if (abort) {
+ try {
+ this.xdr.abort();
+ } catch (x) {
+ // intentionally empty
+ }
+ }
+ this.unloadRef = this.xdr = null;
+ };
+
+ XDRObject.prototype.close = function () {
+ debug('close');
+ this._cleanup(true);
+ };
+
+// IE 8/9 if the request target uses the same scheme - #79
+ XDRObject.enabled = !!(global.XDomainRequest && browser.hasDomain());
+
+ module.exports = XDRObject;
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {
+ "../../utils/browser": 44,
+ "../../utils/event": 46,
+ "../../utils/url": 52,
+ "debug": 54,
+ "events": 3,
+ "inherits": 56
+ }],
+ 35: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , XhrDriver = require('../driver/xhr')
+ ;
+
+ function XHRCorsObject(method, url, payload, opts) {
+ XhrDriver.call(this, method, url, payload, opts);
+ }
+
+ inherits(XHRCorsObject, XhrDriver);
+
+ XHRCorsObject.enabled = XhrDriver.enabled && XhrDriver.supportsCORS;
+
+ module.exports = XHRCorsObject;
+
+ }, {"../driver/xhr": 17, "inherits": 56}],
+ 36: [function (require, module, exports) {
+ 'use strict';
+
+ var EventEmitter = require('events').EventEmitter
+ , inherits = require('inherits')
+ ;
+
+ function XHRFake(/* method, url, payload, opts */) {
+ var self = this;
+ EventEmitter.call(this);
+
+ this.to = setTimeout(function () {
+ self.emit('finish', 200, '{}');
+ }, XHRFake.timeout);
+ }
+
+ inherits(XHRFake, EventEmitter);
+
+ XHRFake.prototype.close = function () {
+ clearTimeout(this.to);
+ };
+
+ XHRFake.timeout = 2000;
+
+ module.exports = XHRFake;
+
+ }, {"events": 3, "inherits": 56}],
+ 37: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , XhrDriver = require('../driver/xhr')
+ ;
+
+ function XHRLocalObject(method, url, payload /*, opts */) {
+ XhrDriver.call(this, method, url, payload, {
+ noCredentials: true
+ });
+ }
+
+ inherits(XHRLocalObject, XhrDriver);
+
+ XHRLocalObject.enabled = XhrDriver.enabled;
+
+ module.exports = XHRLocalObject;
+
+ }, {"../driver/xhr": 17, "inherits": 56}],
+ 38: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var utils = require('../utils/event')
+ , urlUtils = require('../utils/url')
+ , inherits = require('inherits')
+ , EventEmitter = require('events').EventEmitter
+ , WebsocketDriver = require('./driver/websocket')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:websocket');
+ }
+
+ function WebSocketTransport(transUrl, ignore, options) {
+ if (!WebSocketTransport.enabled()) {
+ throw new Error('Transport created when disabled');
+ }
+
+ EventEmitter.call(this);
+ debug('constructor', transUrl);
+
+ var self = this;
+ var url = urlUtils.addPath(transUrl, '/websocket');
+ if (url.slice(0, 5) === 'https') {
+ url = 'wss' + url.slice(5);
+ } else {
+ url = 'ws' + url.slice(4);
+ }
+ this.url = url;
+
+ this.ws = new WebsocketDriver(this.url, [], options);
+ this.ws.onmessage = function (e) {
+ debug('message event', e.data);
+ self.emit('message', e.data);
+ };
+ // Firefox has an interesting bug. If a websocket connection is
+ // created after onunload, it stays alive even when user
+ // navigates away from the page. In such situation let's lie -
+ // let's not open the ws connection at all. See:
+ // https://github.com/sockjs/sockjs-client/issues/28
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=696085
+ this.unloadRef = utils.unloadAdd(function () {
+ debug('unload');
+ self.ws.close();
+ });
+ this.ws.onclose = function (e) {
+ debug('close event', e.code, e.reason);
+ self.emit('close', e.code, e.reason);
+ self._cleanup();
+ };
+ this.ws.onerror = function (e) {
+ debug('error event', e);
+ self.emit('close', 1006, 'WebSocket connection broken');
+ self._cleanup();
+ };
+ }
+
+ inherits(WebSocketTransport, EventEmitter);
+
+ WebSocketTransport.prototype.send = function (data) {
+ var msg = '[' + data + ']';
+ debug('send', msg);
+ this.ws.send(msg);
+ };
+
+ WebSocketTransport.prototype.close = function () {
+ debug('close');
+ var ws = this.ws;
+ this._cleanup();
+ if (ws) {
+ ws.close();
+ }
+ };
+
+ WebSocketTransport.prototype._cleanup = function () {
+ debug('_cleanup');
+ var ws = this.ws;
+ if (ws) {
+ ws.onmessage = ws.onclose = ws.onerror = null;
+ }
+ utils.unloadDel(this.unloadRef);
+ this.unloadRef = this.ws = null;
+ this.removeAllListeners();
+ };
+
+ WebSocketTransport.enabled = function () {
+ debug('enabled');
+ return !!WebsocketDriver;
+ };
+ WebSocketTransport.transportName = 'websocket';
+
+// In theory, ws should require 1 round trip. But in chrome, this is
+// not very stable over SSL. Most likely a ws connection requires a
+// separate SSL connection, in which case 2 round trips are an
+// absolute minumum.
+ WebSocketTransport.roundTrips = 2;
+
+ module.exports = WebSocketTransport;
+
+ }).call(this, {env: {}})
+
+ }, {
+ "../utils/event": 46,
+ "../utils/url": 52,
+ "./driver/websocket": 19,
+ "debug": 54,
+ "events": 3,
+ "inherits": 56
+ }],
+ 39: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , AjaxBasedTransport = require('./lib/ajax-based')
+ , XdrStreamingTransport = require('./xdr-streaming')
+ , XhrReceiver = require('./receiver/xhr')
+ , XDRObject = require('./sender/xdr')
+ ;
+
+ function XdrPollingTransport(transUrl) {
+ if (!XDRObject.enabled) {
+ throw new Error('Transport created when disabled');
+ }
+ AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XDRObject);
+ }
+
+ inherits(XdrPollingTransport, AjaxBasedTransport);
+
+ XdrPollingTransport.enabled = XdrStreamingTransport.enabled;
+ XdrPollingTransport.transportName = 'xdr-polling';
+ XdrPollingTransport.roundTrips = 2; // preflight, ajax
+
+ module.exports = XdrPollingTransport;
+
+ }, {"./lib/ajax-based": 24, "./receiver/xhr": 32, "./sender/xdr": 34, "./xdr-streaming": 40, "inherits": 56}],
+ 40: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , AjaxBasedTransport = require('./lib/ajax-based')
+ , XhrReceiver = require('./receiver/xhr')
+ , XDRObject = require('./sender/xdr')
+ ;
+
+// According to:
+// http://stackoverflow.com/questions/1641507/detect-browser-support-for-cross-domain-xmlhttprequests
+// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
+
+ function XdrStreamingTransport(transUrl) {
+ if (!XDRObject.enabled) {
+ throw new Error('Transport created when disabled');
+ }
+ AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XDRObject);
+ }
+
+ inherits(XdrStreamingTransport, AjaxBasedTransport);
+
+ XdrStreamingTransport.enabled = function (info) {
+ if (info.cookie_needed || info.nullOrigin) {
+ return false;
+ }
+ return XDRObject.enabled && info.sameScheme;
+ };
+
+ XdrStreamingTransport.transportName = 'xdr-streaming';
+ XdrStreamingTransport.roundTrips = 2; // preflight, ajax
+
+ module.exports = XdrStreamingTransport;
+
+ }, {"./lib/ajax-based": 24, "./receiver/xhr": 32, "./sender/xdr": 34, "inherits": 56}],
+ 41: [function (require, module, exports) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , AjaxBasedTransport = require('./lib/ajax-based')
+ , XhrReceiver = require('./receiver/xhr')
+ , XHRCorsObject = require('./sender/xhr-cors')
+ , XHRLocalObject = require('./sender/xhr-local')
+ ;
+
+ function XhrPollingTransport(transUrl) {
+ if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {
+ throw new Error('Transport created when disabled');
+ }
+ AjaxBasedTransport.call(this, transUrl, '/xhr', XhrReceiver, XHRCorsObject);
+ }
+
+ inherits(XhrPollingTransport, AjaxBasedTransport);
+
+ XhrPollingTransport.enabled = function (info) {
+ if (info.nullOrigin) {
+ return false;
+ }
+
+ if (XHRLocalObject.enabled && info.sameOrigin) {
+ return true;
+ }
+ return XHRCorsObject.enabled;
+ };
+
+ XhrPollingTransport.transportName = 'xhr-polling';
+ XhrPollingTransport.roundTrips = 2; // preflight, ajax
+
+ module.exports = XhrPollingTransport;
+
+ }, {
+ "./lib/ajax-based": 24,
+ "./receiver/xhr": 32,
+ "./sender/xhr-cors": 35,
+ "./sender/xhr-local": 37,
+ "inherits": 56
+ }],
+ 42: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ var inherits = require('inherits')
+ , AjaxBasedTransport = require('./lib/ajax-based')
+ , XhrReceiver = require('./receiver/xhr')
+ , XHRCorsObject = require('./sender/xhr-cors')
+ , XHRLocalObject = require('./sender/xhr-local')
+ , browser = require('../utils/browser')
+ ;
+
+ function XhrStreamingTransport(transUrl) {
+ if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {
+ throw new Error('Transport created when disabled');
+ }
+ AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XHRCorsObject);
+ }
+
+ inherits(XhrStreamingTransport, AjaxBasedTransport);
+
+ XhrStreamingTransport.enabled = function (info) {
+ if (info.nullOrigin) {
+ return false;
+ }
+ // Opera doesn't support xhr-streaming #60
+ // But it might be able to #92
+ if (browser.isOpera()) {
+ return false;
+ }
+
+ return XHRCorsObject.enabled;
+ };
+
+ XhrStreamingTransport.transportName = 'xhr-streaming';
+ XhrStreamingTransport.roundTrips = 2; // preflight, ajax
+
+// Safari gets confused when a streaming ajax request is started
+// before onload. This causes the load indicator to spin indefinetely.
+// Only require body when used in a browser
+ XhrStreamingTransport.needBody = !!global.document;
+
+ module.exports = XhrStreamingTransport;
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {
+ "../utils/browser": 44,
+ "./lib/ajax-based": 24,
+ "./receiver/xhr": 32,
+ "./sender/xhr-cors": 35,
+ "./sender/xhr-local": 37,
+ "inherits": 56
+ }],
+ 43: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ if (global.crypto && global.crypto.getRandomValues) {
+ module.exports.randomBytes = function (length) {
+ var bytes = new Uint8Array(length);
+ global.crypto.getRandomValues(bytes);
+ return bytes;
+ };
+ } else {
+ module.exports.randomBytes = function (length) {
+ var bytes = new Array(length);
+ for (var i = 0; i < length; i++) {
+ bytes[i] = Math.floor(Math.random() * 256);
+ }
+ return bytes;
+ };
+ }
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {}],
+ 44: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ module.exports = {
+ isOpera: function () {
+ return global.navigator &&
+ /opera/i.test(global.navigator.userAgent);
+ }
+
+ , isKonqueror: function () {
+ return global.navigator &&
+ /konqueror/i.test(global.navigator.userAgent);
+ }
+
+ // #187 wrap document.domain in try/catch because of WP8 from file:///
+ , hasDomain: function () {
+ // non-browser client always has a domain
+ if (!global.document) {
+ return true;
+ }
+
+ try {
+ return !!global.document.domain;
+ } catch (e) {
+ return false;
+ }
+ }
+ };
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {}],
+ 45: [function (require, module, exports) {
+ 'use strict';
+
+ var JSON3 = require('json3');
+
+// Some extra characters that Chrome gets wrong, and substitutes with
+// something else on the wire.
+// eslint-disable-next-line no-control-regex
+ var extraEscapable = /[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g
+ , extraLookup;
+
+// This may be quite slow, so let's delay until user actually uses bad
+// characters.
+ var unrollLookup = function (escapable) {
+ var i;
+ var unrolled = {};
+ var c = [];
+ for (i = 0; i < 65536; i++) {
+ c.push(String.fromCharCode(i));
+ }
+ escapable.lastIndex = 0;
+ c.join('').replace(escapable, function (a) {
+ unrolled[a] = '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ return '';
+ });
+ escapable.lastIndex = 0;
+ return unrolled;
+ };
+
+// Quote string, also taking care of unicode characters that browsers
+// often break. Especially, take care of unicode surrogates:
+// http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates
+ module.exports = {
+ quote: function (string) {
+ var quoted = JSON3.stringify(string);
+
+ // In most cases this should be very fast and good enough.
+ extraEscapable.lastIndex = 0;
+ if (!extraEscapable.test(quoted)) {
+ return quoted;
+ }
+
+ if (!extraLookup) {
+ extraLookup = unrollLookup(extraEscapable);
+ }
+
+ return quoted.replace(extraEscapable, function (a) {
+ return extraLookup[a];
+ });
+ }
+ };
+
+ }, {"json3": 57}],
+ 46: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ var random = require('./random');
+
+ var onUnload = {}
+ , afterUnload = false
+ // detect google chrome packaged apps because they don't allow the 'unload' event
+ , isChromePackagedApp = global.chrome && global.chrome.app && global.chrome.app.runtime
+ ;
+
+ module.exports = {
+ attachEvent: function (event, listener) {
+ if (typeof global.addEventListener !== 'undefined') {
+ global.addEventListener(event, listener, false);
+ } else if (global.document && global.attachEvent) {
+ // IE quirks.
+ // According to: http://stevesouders.com/misc/test-postmessage.php
+ // the message gets delivered only to 'document', not 'window'.
+ global.document.attachEvent('on' + event, listener);
+ // I get 'window' for ie8.
+ global.attachEvent('on' + event, listener);
+ }
+ }
+
+ , detachEvent: function (event, listener) {
+ if (typeof global.addEventListener !== 'undefined') {
+ global.removeEventListener(event, listener, false);
+ } else if (global.document && global.detachEvent) {
+ global.document.detachEvent('on' + event, listener);
+ global.detachEvent('on' + event, listener);
+ }
+ }
+
+ , unloadAdd: function (listener) {
+ if (isChromePackagedApp) {
+ return null;
+ }
+
+ var ref = random.string(8);
+ onUnload[ref] = listener;
+ if (afterUnload) {
+ setTimeout(this.triggerUnloadCallbacks, 0);
+ }
+ return ref;
+ }
+
+ , unloadDel: function (ref) {
+ if (ref in onUnload) {
+ delete onUnload[ref];
+ }
+ }
+
+ , triggerUnloadCallbacks: function () {
+ for (var ref in onUnload) {
+ onUnload[ref]();
+ delete onUnload[ref];
+ }
+ }
+ };
+
+ var unloadTriggered = function () {
+ if (afterUnload) {
+ return;
+ }
+ afterUnload = true;
+ module.exports.triggerUnloadCallbacks();
+ };
+
+// 'unload' alone is not reliable in opera within an iframe, but we
+// can't use `beforeunload` as IE fires it on javascript: links.
+ if (!isChromePackagedApp) {
+ module.exports.attachEvent('unload', unloadTriggered);
+ }
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"./random": 50}],
+ 47: [function (require, module, exports) {
+ (function (process, global) {
+ 'use strict';
+
+ var eventUtils = require('./event')
+ , JSON3 = require('json3')
+ , browser = require('./browser')
+ ;
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:utils:iframe');
+ }
+
+ module.exports = {
+ WPrefix: '_jp'
+ , currentWindowId: null
+
+ , polluteGlobalNamespace: function () {
+ if (!(module.exports.WPrefix in global)) {
+ global[module.exports.WPrefix] = {};
+ }
+ }
+
+ , postMessage: function (type, data) {
+ if (global.parent !== global) {
+ global.parent.postMessage(JSON3.stringify({
+ windowId: module.exports.currentWindowId
+ , type: type
+ , data: data || ''
+ }), '*');
+ } else {
+ debug('Cannot postMessage, no parent window.', type, data);
+ }
+ }
+
+ , createIframe: function (iframeUrl, errorCallback) {
+ var iframe = global.document.createElement('iframe');
+ var tref, unloadRef;
+ var unattach = function () {
+ debug('unattach');
+ clearTimeout(tref);
+ // Explorer had problems with that.
+ try {
+ iframe.onload = null;
+ } catch (x) {
+ // intentionally empty
+ }
+ iframe.onerror = null;
+ };
+ var cleanup = function () {
+ debug('cleanup');
+ if (iframe) {
+ unattach();
+ // This timeout makes chrome fire onbeforeunload event
+ // within iframe. Without the timeout it goes straight to
+ // onunload.
+ setTimeout(function () {
+ if (iframe) {
+ iframe.parentNode.removeChild(iframe);
+ }
+ iframe = null;
+ }, 0);
+ eventUtils.unloadDel(unloadRef);
+ }
+ };
+ var onerror = function (err) {
+ debug('onerror', err);
+ if (iframe) {
+ cleanup();
+ errorCallback(err);
+ }
+ };
+ var post = function (msg, origin) {
+ debug('post', msg, origin);
+ try {
+ // When the iframe is not loaded, IE raises an exception
+ // on 'contentWindow'.
+ setTimeout(function () {
+ if (iframe && iframe.contentWindow) {
+ iframe.contentWindow.postMessage(msg, origin);
+ }
+ }, 0);
+ } catch (x) {
+ // intentionally empty
+ }
+ };
+
+ iframe.src = iframeUrl;
+ iframe.style.display = 'none';
+ iframe.style.position = 'absolute';
+ iframe.onerror = function () {
+ onerror('onerror');
+ };
+ iframe.onload = function () {
+ debug('onload');
+ // `onload` is triggered before scripts on the iframe are
+ // executed. Give it few seconds to actually load stuff.
+ clearTimeout(tref);
+ tref = setTimeout(function () {
+ onerror('onload timeout');
+ }, 2000);
+ };
+ global.document.body.appendChild(iframe);
+ tref = setTimeout(function () {
+ onerror('timeout');
+ }, 15000);
+ unloadRef = eventUtils.unloadAdd(cleanup);
+ return {
+ post: post
+ , cleanup: cleanup
+ , loaded: unattach
+ };
+ }
+
+ /* eslint no-undef: "off", new-cap: "off" */
+ , createHtmlfile: function (iframeUrl, errorCallback) {
+ var axo = ['Active'].concat('Object').join('X');
+ var doc = new global[axo]('htmlfile');
+ var tref, unloadRef;
+ var iframe;
+ var unattach = function () {
+ clearTimeout(tref);
+ iframe.onerror = null;
+ };
+ var cleanup = function () {
+ if (doc) {
+ unattach();
+ eventUtils.unloadDel(unloadRef);
+ iframe.parentNode.removeChild(iframe);
+ iframe = doc = null;
+ CollectGarbage();
+ }
+ };
+ var onerror = function (r) {
+ debug('onerror', r);
+ if (doc) {
+ cleanup();
+ errorCallback(r);
+ }
+ };
+ var post = function (msg, origin) {
+ try {
+ // When the iframe is not loaded, IE raises an exception
+ // on 'contentWindow'.
+ setTimeout(function () {
+ if (iframe && iframe.contentWindow) {
+ iframe.contentWindow.postMessage(msg, origin);
+ }
+ }, 0);
+ } catch (x) {
+ // intentionally empty
+ }
+ };
+
+ doc.open();
+ doc.write('<html><s' + 'cript>' +
+ 'document.domain="' + global.document.domain + '";' +
+ '</s' + 'cript></html>');
+ doc.close();
+ doc.parentWindow[module.exports.WPrefix] = global[module.exports.WPrefix];
+ var c = doc.createElement('div');
+ doc.body.appendChild(c);
+ iframe = doc.createElement('iframe');
+ c.appendChild(iframe);
+ iframe.src = iframeUrl;
+ iframe.onerror = function () {
+ onerror('onerror');
+ };
+ tref = setTimeout(function () {
+ onerror('timeout');
+ }, 15000);
+ unloadRef = eventUtils.unloadAdd(cleanup);
+ return {
+ post: post
+ , cleanup: cleanup
+ , loaded: unattach
+ };
+ }
+ };
+
+ module.exports.iframeEnabled = false;
+ if (global.document) {
+ // postMessage misbehaves in konqueror 4.6.5 - the messages are delivered with
+ // huge delay, or not at all.
+ module.exports.iframeEnabled = (typeof global.postMessage === 'function' ||
+ typeof global.postMessage === 'object') && (!browser.isKonqueror());
+ }
+
+ }).call(this, {env: {}}, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"./browser": 44, "./event": 46, "debug": 54, "json3": 57}],
+ 48: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ var logObject = {};
+ ['log', 'debug', 'warn'].forEach(function (level) {
+ var levelExists;
+
+ try {
+ levelExists = global.console && global.console[level] && global.console[level].apply;
+ } catch (e) {
+ // do nothing
+ }
+
+ logObject[level] = levelExists ? function () {
+ return global.console[level].apply(global.console, arguments);
+ } : (level === 'log' ? function () {
+ } : logObject.log);
+ });
+
+ module.exports = logObject;
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {}],
+ 49: [function (require, module, exports) {
+ 'use strict';
+
+ module.exports = {
+ isObject: function (obj) {
+ var type = typeof obj;
+ return type === 'function' || type === 'object' && !!obj;
+ }
+
+ , extend: function (obj) {
+ if (!this.isObject(obj)) {
+ return obj;
+ }
+ var source, prop;
+ for (var i = 1, length = arguments.length; i < length; i++) {
+ source = arguments[i];
+ for (prop in source) {
+ if (Object.prototype.hasOwnProperty.call(source, prop)) {
+ obj[prop] = source[prop];
+ }
+ }
+ }
+ return obj;
+ }
+ };
+
+ }, {}],
+ 50: [function (require, module, exports) {
+ 'use strict';
+
+ /* global crypto:true */
+ var crypto = require('crypto');
+
+// This string has length 32, a power of 2, so the modulus doesn't introduce a
+// bias.
+ var _randomStringChars = 'abcdefghijklmnopqrstuvwxyz012345';
+ module.exports = {
+ string: function (length) {
+ var max = _randomStringChars.length;
+ var bytes = crypto.randomBytes(length);
+ var ret = [];
+ for (var i = 0; i < length; i++) {
+ ret.push(_randomStringChars.substr(bytes[i] % max, 1));
+ }
+ return ret.join('');
+ }
+
+ , number: function (max) {
+ return Math.floor(Math.random() * max);
+ }
+
+ , numberString: function (max) {
+ var t = ('' + (max - 1)).length;
+ var p = new Array(t + 1).join('0');
+ return (p + this.number(max)).slice(-t);
+ }
+ };
+
+ }, {"crypto": 43}],
+ 51: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:utils:transport');
+ }
+
+ module.exports = function (availableTransports) {
+ return {
+ filterToEnabled: function (transportsWhitelist, info) {
+ var transports = {
+ main: []
+ , facade: []
+ };
+ if (!transportsWhitelist) {
+ transportsWhitelist = [];
+ } else if (typeof transportsWhitelist === 'string') {
+ transportsWhitelist = [transportsWhitelist];
+ }
+
+ availableTransports.forEach(function (trans) {
+ if (!trans) {
+ return;
+ }
+
+ if (trans.transportName === 'websocket' && info.websocket === false) {
+ debug('disabled from server', 'websocket');
+ return;
+ }
+
+ if (transportsWhitelist.length &&
+ transportsWhitelist.indexOf(trans.transportName) === -1) {
+ debug('not in whitelist', trans.transportName);
+ return;
+ }
+
+ if (trans.enabled(info)) {
+ debug('enabled', trans.transportName);
+ transports.main.push(trans);
+ if (trans.facadeTransport) {
+ transports.facade.push(trans.facadeTransport);
+ }
+ } else {
+ debug('disabled', trans.transportName);
+ }
+ });
+ return transports;
+ }
+ };
+ };
+
+ }).call(this, {env: {}})
+
+ }, {"debug": 54}],
+ 52: [function (require, module, exports) {
+ (function (process) {
+ 'use strict';
+
+ var URL = require('url-parse');
+
+ var debug = function () {
+ };
+ if (process.env.NODE_ENV !== 'production') {
+ debug = require('debug')('sockjs-client:utils:url');
+ }
+
+ module.exports = {
+ getOrigin: function (url) {
+ if (!url) {
+ return null;
+ }
+
+ var p = new URL(url);
+ if (p.protocol === 'file:') {
+ return null;
+ }
+
+ var port = p.port;
+ if (!port) {
+ port = (p.protocol === 'https:') ? '443' : '80';
+ }
+
+ return p.protocol + '//' + p.hostname + ':' + port;
+ }
+
+ , isOriginEqual: function (a, b) {
+ var res = this.getOrigin(a) === this.getOrigin(b);
+ debug('same', a, b, res);
+ return res;
+ }
+
+ , isSchemeEqual: function (a, b) {
+ return (a.split(':')[0] === b.split(':')[0]);
+ }
+
+ , addPath: function (url, path) {
+ var qs = url.split('?');
+ return qs[0] + path + (qs[1] ? '?' + qs[1] : '');
+ }
+
+ , addQuery: function (url, q) {
+ return url + (url.indexOf('?') === -1 ? ('?' + q) : ('&' + q));
+ }
+ };
+
+ }).call(this, {env: {}})
+
+ }, {"debug": 54, "url-parse": 61}],
+ 53: [function (require, module, exports) {
+ module.exports = '1.1.2';
+
+ }, {}],
+ 54: [function (require, module, exports) {
+ (function (process) {
+ /**
+ * This is the web browser implementation of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+ exports = module.exports = require('./debug');
+ exports.log = log;
+ exports.formatArgs = formatArgs;
+ exports.save = save;
+ exports.load = load;
+ exports.useColors = useColors;
+ exports.storage = 'undefined' != typeof chrome
+ && 'undefined' != typeof chrome.storage
+ ? chrome.storage.local
+ : localstorage();
+
+ /**
+ * Colors.
+ */
+
+ exports.colors = [
+ 'lightseagreen',
+ 'forestgreen',
+ 'goldenrod',
+ 'dodgerblue',
+ 'darkorchid',
+ 'crimson'
+ ];
+
+ /**
+ * Currently only WebKit-based Web Inspectors, Firefox >= v31,
+ * and the Firebug extension (any Firefox version) are known
+ * to support "%c" CSS customizations.
+ *
+ * TODO: add a `localStorage` variable to explicitly enable/disable colors
+ */
+
+ function useColors() {
+ // NB: In an Electron preload script, document will be defined but not fully
+ // initialized. Since we know we're in Chrome, we'll just detect this case
+ // explicitly
+ if (typeof window !== 'undefined' && window && typeof window.process !== 'undefined' && window.process.type === 'renderer') {
+ return true;
+ }
+
+ // is webkit? http://stackoverflow.com/a/16459606/376773
+ // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
+ return (typeof document !== 'undefined' && document && 'WebkitAppearance' in document.documentElement.style) ||
+ // is firebug? http://stackoverflow.com/a/398120/376773
+ (typeof window !== 'undefined' && window && window.console && (console.firebug || (console.exception && console.table))) ||
+ // is firefox >= v31?
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
+ (typeof navigator !== 'undefined' && navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
+ // double check webkit in userAgent just in case we are in a worker
+ (typeof navigator !== 'undefined' && navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
+ }
+
+ /**
+ * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
+ */
+
+ exports.formatters.j = function (v) {
+ try {
+ return JSON.stringify(v);
+ } catch (err) {
+ return '[UnexpectedJSONParseError]: ' + err.message;
+ }
+ };
+
+
+ /**
+ * Colorize log arguments if enabled.
+ *
+ * @api public
+ */
+
+ function formatArgs(args) {
+ var useColors = this.useColors;
+
+ args[0] = (useColors ? '%c' : '')
+ + this.namespace
+ + (useColors ? ' %c' : ' ')
+ + args[0]
+ + (useColors ? '%c ' : ' ')
+ + '+' + exports.humanize(this.diff);
+
+ if (!useColors) return;
+
+ var c = 'color: ' + this.color;
+ args.splice(1, 0, c, 'color: inherit')
+
+ // the final "%c" is somewhat tricky, because there could be other
+ // arguments passed either before or after the %c, so we need to
+ // figure out the correct index to insert the CSS into
+ var index = 0;
+ var lastC = 0;
+ args[0].replace(/%[a-zA-Z%]/g, function (match) {
+ if ('%%' === match) return;
+ index++;
+ if ('%c' === match) {
+ // we only are interested in the *last* %c
+ // (the user may have provided their own)
+ lastC = index;
+ }
+ });
+
+ args.splice(lastC, 0, c);
+ }
+
+ /**
+ * Invokes `console.log()` when available.
+ * No-op when `console.log` is not a "function".
+ *
+ * @api public
+ */
+
+ function log() {
+ // this hackery is required for IE8/9, where
+ // the `console.log` function doesn't have 'apply'
+ return 'object' === typeof console
+ && console.log
+ && Function.prototype.apply.call(console.log, console, arguments);
+ }
+
+ /**
+ * Save `namespaces`.
+ *
+ * @param {String} namespaces
+ * @api private
+ */
+
+ function save(namespaces) {
+ try {
+ if (null == namespaces) {
+ exports.storage.removeItem('debug');
+ } else {
+ exports.storage.debug = namespaces;
+ }
+ } catch (e) {
+ }
+ }
+
+ /**
+ * Load `namespaces`.
+ *
+ * @return {String} returns the previously persisted debug modes
+ * @api private
+ */
+
+ function load() {
+ try {
+ return exports.storage.debug;
+ } catch (e) {
+ }
+
+ // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
+ if (typeof process !== 'undefined' && 'env' in process) {
+ return process.env.DEBUG;
+ }
+ }
+
+ /**
+ * Enable namespaces listed in `localStorage.debug` initially.
+ */
+
+ exports.enable(load());
+
+ /**
+ * Localstorage attempts to return the localstorage.
+ *
+ * This is necessary because safari throws
+ * when a user disables cookies/localstorage
+ * and you attempt to access it.
+ *
+ * @return {LocalStorage}
+ * @api private
+ */
+
+ function localstorage() {
+ try {
+ return window.localStorage;
+ } catch (e) {
+ }
+ }
+
+ }).call(this, {env: {}})
+
+ }, {"./debug": 55}],
+ 55: [function (require, module, exports) {
+
+ /**
+ * This is the common logic for both the Node.js and web browser
+ * implementations of `debug()`.
+ *
+ * Expose `debug()` as the module.
+ */
+
+ exports = module.exports = createDebug.debug = createDebug.default = createDebug;
+ exports.coerce = coerce;
+ exports.disable = disable;
+ exports.enable = enable;
+ exports.enabled = enabled;
+ exports.humanize = require('ms');
+
+ /**
+ * The currently active debug mode names, and names to skip.
+ */
+
+ exports.names = [];
+ exports.skips = [];
+
+ /**
+ * Map of special "%n" handling functions, for the debug "format" argument.
+ *
+ * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
+ */
+
+ exports.formatters = {};
+
+ /**
+ * Previous log timestamp.
+ */
+
+ var prevTime;
+
+ /**
+ * Select a color.
+ * @param {String} namespace
+ * @return {Number}
+ * @api private
+ */
+
+ function selectColor(namespace) {
+ var hash = 0, i;
+
+ for (i in namespace) {
+ hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
+ hash |= 0; // Convert to 32bit integer
+ }
+
+ return exports.colors[Math.abs(hash) % exports.colors.length];
+ }
+
+ /**
+ * Create a debugger with the given `namespace`.
+ *
+ * @param {String} namespace
+ * @return {Function}
+ * @api public
+ */
+
+ function createDebug(namespace) {
+
+ function debug() {
+ // disabled?
+ if (!debug.enabled) return;
+
+ var self = debug;
+
+ // set `diff` timestamp
+ var curr = +new Date();
+ var ms = curr - (prevTime || curr);
+ self.diff = ms;
+ self.prev = prevTime;
+ self.curr = curr;
+ prevTime = curr;
+
+ // turn the `arguments` into a proper Array
+ var args = new Array(arguments.length);
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i];
+ }
+
+ args[0] = exports.coerce(args[0]);
+
+ if ('string' !== typeof args[0]) {
+ // anything else let's inspect with %O
+ args.unshift('%O');
+ }
+
+ // apply any `formatters` transformations
+ var index = 0;
+ args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {
+ // if we encounter an escaped % then don't increase the array index
+ if (match === '%%') return match;
+ index++;
+ var formatter = exports.formatters[format];
+ if ('function' === typeof formatter) {
+ var val = args[index];
+ match = formatter.call(self, val);
+
+ // now we need to remove `args[index]` since it's inlined in the `format`
+ args.splice(index, 1);
+ index--;
+ }
+ return match;
+ });
+
+ // apply env-specific formatting (colors, etc.)
+ exports.formatArgs.call(self, args);
+
+ var logFn = debug.log || exports.log || console.log.bind(console);
+ logFn.apply(self, args);
+ }
+
+ debug.namespace = namespace;
+ debug.enabled = exports.enabled(namespace);
+ debug.useColors = exports.useColors();
+ debug.color = selectColor(namespace);
+
+ // env-specific initialization logic for debug instances
+ if ('function' === typeof exports.init) {
+ exports.init(debug);
+ }
+
+ return debug;
+ }
+
+ /**
+ * Enables a debug mode by namespaces. This can include modes
+ * separated by a colon and wildcards.
+ *
+ * @param {String} namespaces
+ * @api public
+ */
+
+ function enable(namespaces) {
+ exports.save(namespaces);
+
+ var split = (namespaces || '').split(/[\s,]+/);
+ var len = split.length;
+
+ for (var i = 0; i < len; i++) {
+ if (!split[i]) continue; // ignore empty strings
+ namespaces = split[i].replace(/\*/g, '.*?');
+ if (namespaces[0] === '-') {
+ exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
+ } else {
+ exports.names.push(new RegExp('^' + namespaces + '$'));
+ }
+ }
+ }
+
+ /**
+ * Disable debug output.
+ *
+ * @api public
+ */
+
+ function disable() {
+ exports.enable('');
+ }
+
+ /**
+ * Returns true if the given mode name is enabled, false otherwise.
+ *
+ * @param {String} name
+ * @return {Boolean}
+ * @api public
+ */
+
+ function enabled(name) {
+ var i, len;
+ for (i = 0, len = exports.skips.length; i < len; i++) {
+ if (exports.skips[i].test(name)) {
+ return false;
+ }
+ }
+ for (i = 0, len = exports.names.length; i < len; i++) {
+ if (exports.names[i].test(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Coerce `val`.
+ *
+ * @param {Mixed} val
+ * @return {Mixed}
+ * @api private
+ */
+
+ function coerce(val) {
+ if (val instanceof Error) return val.stack || val.message;
+ return val;
+ }
+
+ }, {"ms": 58}],
+ 56: [function (require, module, exports) {
+ if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ };
+ } else {
+ // old school shim for old browsers
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ var TempCtor = function () {
+ }
+ TempCtor.prototype = superCtor.prototype
+ ctor.prototype = new TempCtor()
+ ctor.prototype.constructor = ctor
+ }
+ }
+
+ }, {}],
+ 57: [function (require, module, exports) {
+ (function (global) {
+ /*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */
+ ;(function () {
+ // Detect the `define` function exposed by asynchronous module loaders. The
+ // strict `define` check is necessary for compatibility with `r.js`.
+ var isLoader = typeof define === "function" && define.amd;
+
+ // A set of types used to distinguish objects from primitives.
+ var objectTypes = {
+ "function": true,
+ "object": true
+ };
+
+ // Detect the `exports` object exposed by CommonJS implementations.
+ var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
+
+ // Use the `global` object exposed by Node (including Browserify via
+ // `insert-module-globals`), Narwhal, and Ringo as the default context,
+ // and the `window` object in browsers. Rhino exports a `global` function
+ // instead.
+ var root = objectTypes[typeof window] && window || this,
+ freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == "object" && global;
+
+ if (freeGlobal && (freeGlobal["global"] === freeGlobal || freeGlobal["window"] === freeGlobal || freeGlobal["self"] === freeGlobal)) {
+ root = freeGlobal;
+ }
+
+ // Public: Initializes JSON 3 using the given `context` object, attaching the
+ // `stringify` and `parse` functions to the specified `exports` object.
+ function runInContext(context, exports) {
+ context || (context = root["Object"]());
+ exports || (exports = root["Object"]());
+
+ // Native constructor aliases.
+ var Number = context["Number"] || root["Number"],
+ String = context["String"] || root["String"],
+ Object = context["Object"] || root["Object"],
+ Date = context["Date"] || root["Date"],
+ SyntaxError = context["SyntaxError"] || root["SyntaxError"],
+ TypeError = context["TypeError"] || root["TypeError"],
+ Math = context["Math"] || root["Math"],
+ nativeJSON = context["JSON"] || root["JSON"];
+
+ // Delegate to the native `stringify` and `parse` implementations.
+ if (typeof nativeJSON == "object" && nativeJSON) {
+ exports.stringify = nativeJSON.stringify;
+ exports.parse = nativeJSON.parse;
+ }
+
+ // Convenience aliases.
+ var objectProto = Object.prototype,
+ getClass = objectProto.toString,
+ isProperty, forEach, undef;
+
+ // Test the `Date#getUTC*` methods. Based on work by @Yaffle.
+ var isExtended = new Date(-3509827334573292);
+ try {
+ // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical
+ // results for certain dates in Opera >= 10.53.
+ isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&
+ // Safari < 2.0.2 stores the internal millisecond time value correctly,
+ // but clips the values returned by the date methods to the range of
+ // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).
+ isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;
+ } catch (exception) {
+ }
+
+ // Internal: Determines whether the native `JSON.stringify` and `parse`
+ // implementations are spec-compliant. Based on work by Ken Snyder.
+ function has(name) {
+ if (has[name] !== undef) {
+ // Return cached feature test result.
+ return has[name];
+ }
+ var isSupported;
+ if (name == "bug-string-char-index") {
+ // IE <= 7 doesn't support accessing string characters using square
+ // bracket notation. IE 8 only supports this for primitives.
+ isSupported = "a"[0] != "a";
+ } else if (name == "json") {
+ // Indicates whether both `JSON.stringify` and `JSON.parse` are
+ // supported.
+ isSupported = has("json-stringify") && has("json-parse");
+ } else {
+ var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';
+ // Test `JSON.stringify`.
+ if (name == "json-stringify") {
+ var stringify = exports.stringify,
+ stringifySupported = typeof stringify == "function" && isExtended;
+ if (stringifySupported) {
+ // A test function object with a custom `toJSON` method.
+ (value = function () {
+ return 1;
+ }).toJSON = value;
+ try {
+ stringifySupported =
+ // Firefox 3.1b1 and b2 serialize string, number, and boolean
+ // primitives as object literals.
+ stringify(0) === "0" &&
+ // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object
+ // literals.
+ stringify(new Number()) === "0" &&
+ stringify(new String()) == '""' &&
+ // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or
+ // does not define a canonical JSON representation (this applies to
+ // objects with `toJSON` properties as well, *unless* they are nested
+ // within an object or array).
+ stringify(getClass) === undef &&
+ // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and
+ // FF 3.1b3 pass this test.
+ stringify(undef) === undef &&
+ // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,
+ // respectively, if the value is omitted entirely.
+ stringify() === undef &&
+ // FF 3.1b1, 2 throw an error if the given value is not a number,
+ // string, array, object, Boolean, or `null` literal. This applies to
+ // objects with custom `toJSON` methods as well, unless they are nested
+ // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`
+ // methods entirely.
+ stringify(value) === "1" &&
+ stringify([value]) == "[1]" &&
+ // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of
+ // `"[null]"`.
+ stringify([undef]) == "[null]" &&
+ // YUI 3.0.0b1 fails to serialize `null` literals.
+ stringify(null) == "null" &&
+ // FF 3.1b1, 2 halts serialization if an array contains a function:
+ // `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3
+ // elides non-JSON values from objects and arrays, unless they
+ // define custom `toJSON` methods.
+ stringify([undef, getClass, null]) == "[null,null,null]" &&
+ // Simple serialization test. FF 3.1b1 uses Unicode escape sequences
+ // where character escape codes are expected (e.g., `\b` => `\u0008`).
+ stringify({"a": [value, true, false, null, "\x00\b\n\f\r\t"]}) == serialized &&
+ // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.
+ stringify(null, value) === "1" &&
+ stringify([1, 2], null, 1) == "[\n 1,\n 2\n]" &&
+ // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly
+ // serialize extended years.
+ stringify(new Date(-8.64e15)) == '"-271821-04-20T00:00:00.000Z"' &&
+ // The milliseconds are optional in ES 5, but required in 5.1.
+ stringify(new Date(8.64e15)) == '"+275760-09-13T00:00:00.000Z"' &&
+ // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative
+ // four-digit years instead of six-digit years. Credits: @Yaffle.
+ stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' &&
+ // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond
+ // values less than 1000. Credits: @Yaffle.
+ stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"';
+ } catch (exception) {
+ stringifySupported = false;
+ }
+ }
+ isSupported = stringifySupported;
+ }
+ // Test `JSON.parse`.
+ if (name == "json-parse") {
+ var parse = exports.parse;
+ if (typeof parse == "function") {
+ try {
+ // FF 3.1b1, b2 will throw an exception if a bare literal is provided.
+ // Conforming implementations should also coerce the initial argument to
+ // a string prior to parsing.
+ if (parse("0") === 0 && !parse(false)) {
+ // Simple parsing test.
+ value = parse(serialized);
+ var parseSupported = value["a"].length == 5 && value["a"][0] === 1;
+ if (parseSupported) {
+ try {
+ // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.
+ parseSupported = !parse('"\t"');
+ } catch (exception) {
+ }
+ if (parseSupported) {
+ try {
+ // FF 4.0 and 4.0.1 allow leading `+` signs and leading
+ // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow
+ // certain octal literals.
+ parseSupported = parse("01") !== 1;
+ } catch (exception) {
+ }
+ }
+ if (parseSupported) {
+ try {
+ // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal
+ // points. These environments, along with FF 3.1b1 and 2,
+ // also allow trailing commas in JSON objects and arrays.
+ parseSupported = parse("1.") !== 1;
+ } catch (exception) {
+ }
+ }
+ }
+ }
+ } catch (exception) {
+ parseSupported = false;
+ }
+ }
+ isSupported = parseSupported;
+ }
+ }
+ return has[name] = !!isSupported;
+ }
+
+ if (!has("json")) {
+ // Common `[[Class]]` name aliases.
+ var functionClass = "[object Function]",
+ dateClass = "[object Date]",
+ numberClass = "[object Number]",
+ stringClass = "[object String]",
+ arrayClass = "[object Array]",
+ booleanClass = "[object Boolean]";
+
+ // Detect incomplete support for accessing string characters by index.
+ var charIndexBuggy = has("bug-string-char-index");
+
+ // Define additional utility methods if the `Date` methods are buggy.
+ if (!isExtended) {
+ var floor = Math.floor;
+ // A mapping between the months of the year and the number of days between
+ // January 1st and the first of the respective month.
+ var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+ // Internal: Calculates the number of days between the Unix epoch and the
+ // first day of the given month.
+ var getDay = function (year, month) {
+ return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);
+ };
+ }
+
+ // Internal: Determines if a property is a direct property of the given
+ // object. Delegates to the native `Object#hasOwnProperty` method.
+ if (!(isProperty = objectProto.hasOwnProperty)) {
+ isProperty = function (property) {
+ var members = {}, constructor;
+ if ((members.__proto__ = null, members.__proto__ = {
+ // The *proto* property cannot be set multiple times in recent
+ // versions of Firefox and SeaMonkey.
+ "toString": 1
+ }, members).toString != getClass) {
+ // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but
+ // supports the mutable *proto* property.
+ isProperty = function (property) {
+ // Capture and break the object's prototype chain (see section 8.6.2
+ // of the ES 5.1 spec). The parenthesized expression prevents an
+ // unsafe transformation by the Closure Compiler.
+ var original = this.__proto__,
+ result = property in (this.__proto__ = null, this);
+ // Restore the original prototype chain.
+ this.__proto__ = original;
+ return result;
+ };
+ } else {
+ // Capture a reference to the top-level `Object` constructor.
+ constructor = members.constructor;
+ // Use the `constructor` property to simulate `Object#hasOwnProperty` in
+ // other environments.
+ isProperty = function (property) {
+ var parent = (this.constructor || constructor).prototype;
+ return property in this && !(property in parent && this[property] === parent[property]);
+ };
+ }
+ members = null;
+ return isProperty.call(this, property);
+ };
+ }
+
+ // Internal: Normalizes the `for...in` iteration algorithm across
+ // environments. Each enumerated key is yielded to a `callback` function.
+ forEach = function (object, callback) {
+ var size = 0, Properties, members, property;
+
+ // Tests for bugs in the current environment's `for...in` algorithm. The
+ // `valueOf` property inherits the non-enumerable flag from
+ // `Object.prototype` in older versions of IE, Netscape, and Mozilla.
+ (Properties = function () {
+ this.valueOf = 0;
+ }).prototype.valueOf = 0;
+
+ // Iterate over a new instance of the `Properties` class.
+ members = new Properties();
+ for (property in members) {
+ // Ignore all properties inherited from `Object.prototype`.
+ if (isProperty.call(members, property)) {
+ size++;
+ }
+ }
+ Properties = members = null;
+
+ // Normalize the iteration algorithm.
+ if (!size) {
+ // A list of non-enumerable properties inherited from `Object.prototype`.
+ members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"];
+ // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable
+ // properties.
+ forEach = function (object, callback) {
+ var isFunction = getClass.call(object) == functionClass, property, length;
+ var hasProperty = !isFunction && typeof object.constructor != "function" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty;
+ for (property in object) {
+ // Gecko <= 1.0 enumerates the `prototype` property of functions under
+ // certain conditions; IE does not.
+ if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) {
+ callback(property);
+ }
+ }
+ // Manually invoke the callback for each non-enumerable property.
+ for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property)) ;
+ };
+ } else if (size == 2) {
+ // Safari <= 2.0.4 enumerates shadowed properties twice.
+ forEach = function (object, callback) {
+ // Create a set of iterated properties.
+ var members = {}, isFunction = getClass.call(object) == functionClass, property;
+ for (property in object) {
+ // Store each property name to prevent double enumeration. The
+ // `prototype` property of functions is not enumerated due to cross-
+ // environment inconsistencies.
+ if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {
+ callback(property);
+ }
+ }
+ };
+ } else {
+ // No bugs detected; use the standard `for...in` algorithm.
+ forEach = function (object, callback) {
+ var isFunction = getClass.call(object) == functionClass, property,
+ isConstructor;
+ for (property in object) {
+ if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) {
+ callback(property);
+ }
+ }
+ // Manually invoke the callback for the `constructor` property due to
+ // cross-environment inconsistencies.
+ if (isConstructor || isProperty.call(object, (property = "constructor"))) {
+ callback(property);
+ }
+ };
+ }
+ return forEach(object, callback);
+ };
+
+ // Public: Serializes a JavaScript `value` as a JSON string. The optional
+ // `filter` argument may specify either a function that alters how object and
+ // array members are serialized, or an array of strings and numbers that
+ // indicates which properties should be serialized. The optional `width`
+ // argument may be either a string or number that specifies the indentation
+ // level of the output.
+ if (!has("json-stringify")) {
+ // Internal: A map of control characters and their escaped equivalents.
+ var Escapes = {
+ 92: "\\\\",
+ 34: '\\"',
+ 8: "\\b",
+ 12: "\\f",
+ 10: "\\n",
+ 13: "\\r",
+ 9: "\\t"
+ };
+
+ // Internal: Converts `value` into a zero-padded string such that its
+ // length is at least equal to `width`. The `width` must be <= 6.
+ var leadingZeroes = "000000";
+ var toPaddedString = function (width, value) {
+ // The `|| 0` expression is necessary to work around a bug in
+ // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.
+ return (leadingZeroes + (value || 0)).slice(-width);
+ };
+
+ // Internal: Double-quotes a string `value`, replacing all ASCII control
+ // characters (characters with code unit values between 0 and 31) with
+ // their escaped equivalents. This is an implementation of the
+ // `Quote(value)` operation defined in ES 5.1 section 15.12.3.
+ var unicodePrefix = "\\u00";
+ var quote = function (value) {
+ var result = '"', index = 0, length = value.length,
+ useCharIndex = !charIndexBuggy || length > 10;
+ var symbols = useCharIndex && (charIndexBuggy ? value.split("") : value);
+ for (; index < length; index++) {
+ var charCode = value.charCodeAt(index);
+ // If the character is a control character, append its Unicode or
+ // shorthand escape sequence; otherwise, append the character as-is.
+ switch (charCode) {
+ case 8:
+ case 9:
+ case 10:
+ case 12:
+ case 13:
+ case 34:
+ case 92:
+ result += Escapes[charCode];
+ break;
+ default:
+ if (charCode < 32) {
+ result += unicodePrefix + toPaddedString(2, charCode.toString(16));
+ break;
+ }
+ result += useCharIndex ? symbols[index] : value.charAt(index);
+ }
+ }
+ return result + '"';
+ };
+
+ // Internal: Recursively serializes an object. Implements the
+ // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.
+ var serialize = function (property, object, callback, properties, whitespace, indentation, stack) {
+ var value, className, year, month, date, time, hours, minutes, seconds,
+ milliseconds, results, element, index, length, prefix, result;
+ try {
+ // Necessary for host object support.
+ value = object[property];
+ } catch (exception) {
+ }
+ if (typeof value == "object" && value) {
+ className = getClass.call(value);
+ if (className == dateClass && !isProperty.call(value, "toJSON")) {
+ if (value > -1 / 0 && value < 1 / 0) {
+ // Dates are serialized according to the `Date#toJSON` method
+ // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15
+ // for the ISO 8601 date time string format.
+ if (getDay) {
+ // Manually compute the year, month, date, hours, minutes,
+ // seconds, and milliseconds if the `getUTC*` methods are
+ // buggy. Adapted from @Yaffle's `date-shim` project.
+ date = floor(value / 864e5);
+ for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++) ;
+ for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++) ;
+ date = 1 + date - getDay(year, month);
+ // The `time` value specifies the time within the day (see ES
+ // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used
+ // to compute `A modulo B`, as the `%` operator does not
+ // correspond to the `modulo` operation for negative numbers.
+ time = (value % 864e5 + 864e5) % 864e5;
+ // The hours, minutes, seconds, and milliseconds are obtained by
+ // decomposing the time within the day. See section 15.9.1.10.
+ hours = floor(time / 36e5) % 24;
+ minutes = floor(time / 6e4) % 60;
+ seconds = floor(time / 1e3) % 60;
+ milliseconds = time % 1e3;
+ } else {
+ year = value.getUTCFullYear();
+ month = value.getUTCMonth();
+ date = value.getUTCDate();
+ hours = value.getUTCHours();
+ minutes = value.getUTCMinutes();
+ seconds = value.getUTCSeconds();
+ milliseconds = value.getUTCMilliseconds();
+ }
+ // Serialize extended years correctly.
+ value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +
+ "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) +
+ // Months, dates, hours, minutes, and seconds should have two
+ // digits; milliseconds should have three.
+ "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) +
+ // Milliseconds are optional in ES 5.0, but required in 5.1.
+ "." + toPaddedString(3, milliseconds) + "Z";
+ } else {
+ value = null;
+ }
+ } else if (typeof value.toJSON == "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) {
+ // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the
+ // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3
+ // ignores all `toJSON` methods on these objects unless they are
+ // defined directly on an instance.
+ value = value.toJSON(property);
+ }
+ }
+ if (callback) {
+ // If a replacement function was provided, call it to obtain the value
+ // for serialization.
+ value = callback.call(object, property, value);
+ }
+ if (value === null) {
+ return "null";
+ }
+ className = getClass.call(value);
+ if (className == booleanClass) {
+ // Booleans are represented literally.
+ return "" + value;
+ } else if (className == numberClass) {
+ // JSON numbers must be finite. `Infinity` and `NaN` are serialized as
+ // `"null"`.
+ return value > -1 / 0 && value < 1 / 0 ? "" + value : "null";
+ } else if (className == stringClass) {
+ // Strings are double-quoted and escaped.
+ return quote("" + value);
+ }
+ // Recursively serialize objects and arrays.
+ if (typeof value == "object") {
+ // Check for cyclic structures. This is a linear search; performance
+ // is inversely proportional to the number of unique nested objects.
+ for (length = stack.length; length--;) {
+ if (stack[length] === value) {
+ // Cyclic structures cannot be serialized by `JSON.stringify`.
+ throw TypeError();
+ }
+ }
+ // Add the object to the stack of traversed objects.
+ stack.push(value);
+ results = [];
+ // Save the current indentation level and indent one additional level.
+ prefix = indentation;
+ indentation += whitespace;
+ if (className == arrayClass) {
+ // Recursively serialize array elements.
+ for (index = 0, length = value.length; index < length; index++) {
+ element = serialize(index, value, callback, properties, whitespace, indentation, stack);
+ results.push(element === undef ? "null" : element);
+ }
+ result = results.length ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]";
+ } else {
+ // Recursively serialize object members. Members are selected from
+ // either a user-specified list of property names, or the object
+ // itself.
+ forEach(properties || value, function (property) {
+ var element = serialize(property, value, callback, properties, whitespace, indentation, stack);
+ if (element !== undef) {
+ // According to ES 5.1 section 15.12.3: "If `gap` {whitespace}
+ // is not the empty string, let `member` {quote(property) + ":"}
+ // be the concatenation of `member` and the `space` character."
+ // The "`space` character" refers to the literal space
+ // character, not the `space` {width} argument provided to
+ // `JSON.stringify`.
+ results.push(quote(property) + ":" + (whitespace ? " " : "") + element);
+ }
+ });
+ result = results.length ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}";
+ }
+ // Remove the object from the traversed object stack.
+ stack.pop();
+ return result;
+ }
+ };
+
+ // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.
+ exports.stringify = function (source, filter, width) {
+ var whitespace, callback, properties, className;
+ if (objectTypes[typeof filter] && filter) {
+ if ((className = getClass.call(filter)) == functionClass) {
+ callback = filter;
+ } else if (className == arrayClass) {
+ // Convert the property names array into a makeshift set.
+ properties = {};
+ for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1)) ;
+ }
+ }
+ if (width) {
+ if ((className = getClass.call(width)) == numberClass) {
+ // Convert the `width` to an integer and create a string containing
+ // `width` number of space characters.
+ if ((width -= width % 1) > 0) {
+ for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " ") ;
+ }
+ } else if (className == stringClass) {
+ whitespace = width.length <= 10 ? width : width.slice(0, 10);
+ }
+ }
+ // Opera <= 7.54u2 discards the values associated with empty string keys
+ // (`""`) only if they are used directly within an object member list
+ // (e.g., `!("" in { "": 1})`).
+ return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []);
+ };
+ }
+
+ // Public: Parses a JSON source string.
+ if (!has("json-parse")) {
+ var fromCharCode = String.fromCharCode;
+
+ // Internal: A map of escaped control characters and their unescaped
+ // equivalents.
+ var Unescapes = {
+ 92: "\\",
+ 34: '"',
+ 47: "/",
+ 98: "\b",
+ 116: "\t",
+ 110: "\n",
+ 102: "\f",
+ 114: "\r"
+ };
+
+ // Internal: Stores the parser state.
+ var Index, Source;
+
+ // Internal: Resets the parser state and throws a `SyntaxError`.
+ var abort = function () {
+ Index = Source = null;
+ throw SyntaxError();
+ };
+
+ // Internal: Returns the next token, or `"$"` if the parser has reached
+ // the end of the source string. A token may be a string, number, `null`
+ // literal, or Boolean literal.
+ var lex = function () {
+ var source = Source, length = source.length, value, begin, position, isSigned,
+ charCode;
+ while (Index < length) {
+ charCode = source.charCodeAt(Index);
+ switch (charCode) {
+ case 9:
+ case 10:
+ case 13:
+ case 32:
+ // Skip whitespace tokens, including tabs, carriage returns, line
+ // feeds, and space characters.
+ Index++;
+ break;
+ case 123:
+ case 125:
+ case 91:
+ case 93:
+ case 58:
+ case 44:
+ // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at
+ // the current position.
+ value = charIndexBuggy ? source.charAt(Index) : source[Index];
+ Index++;
+ return value;
+ case 34:
+ // `"` delimits a JSON string; advance to the next character and
+ // begin parsing the string. String tokens are prefixed with the
+ // sentinel `@` character to distinguish them from punctuators and
+ // end-of-string tokens.
+ for (value = "@", Index++; Index < length;) {
+ charCode = source.charCodeAt(Index);
+ if (charCode < 32) {
+ // Unescaped ASCII control characters (those with a code unit
+ // less than the space character) are not permitted.
+ abort();
+ } else if (charCode == 92) {
+ // A reverse solidus (`\`) marks the beginning of an escaped
+ // control character (including `"`, `\`, and `/`) or Unicode
+ // escape sequence.
+ charCode = source.charCodeAt(++Index);
+ switch (charCode) {
+ case 92:
+ case 34:
+ case 47:
+ case 98:
+ case 116:
+ case 110:
+ case 102:
+ case 114:
+ // Revive escaped control characters.
+ value += Unescapes[charCode];
+ Index++;
+ break;
+ case 117:
+ // `\u` marks the beginning of a Unicode escape sequence.
+ // Advance to the first character and validate the
+ // four-digit code point.
+ begin = ++Index;
+ for (position = Index + 4; Index < position; Index++) {
+ charCode = source.charCodeAt(Index);
+ // A valid sequence comprises four hexdigits (case-
+ // insensitive) that form a single hexadecimal value.
+ if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {
+ // Invalid Unicode escape sequence.
+ abort();
+ }
+ }
+ // Revive the escaped character.
+ value += fromCharCode("0x" + source.slice(begin, Index));
+ break;
+ default:
+ // Invalid escape sequence.
+ abort();
+ }
+ } else {
+ if (charCode == 34) {
+ // An unescaped double-quote character marks the end of the
+ // string.
+ break;
+ }
+ charCode = source.charCodeAt(Index);
+ begin = Index;
+ // Optimize for the common case where a string is valid.
+ while (charCode >= 32 && charCode != 92 && charCode != 34) {
+ charCode = source.charCodeAt(++Index);
+ }
+ // Append the string as-is.
+ value += source.slice(begin, Index);
+ }
+ }
+ if (source.charCodeAt(Index) == 34) {
+ // Advance to the next character and return the revived string.
+ Index++;
+ return value;
+ }
+ // Unterminated string.
+ abort();
+ default:
+ // Parse numbers and literals.
+ begin = Index;
+ // Advance past the negative sign, if one is specified.
+ if (charCode == 45) {
+ isSigned = true;
+ charCode = source.charCodeAt(++Index);
+ }
+ // Parse an integer or floating-point value.
+ if (charCode >= 48 && charCode <= 57) {
+ // Leading zeroes are interpreted as octal literals.
+ if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {
+ // Illegal octal literal.
+ abort();
+ }
+ isSigned = false;
+ // Parse the integer component.
+ for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++) ;
+ // Floats cannot contain a leading decimal point; however, this
+ // case is already accounted for by the parser.
+ if (source.charCodeAt(Index) == 46) {
+ position = ++Index;
+ // Parse the decimal component.
+ for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++) ;
+ if (position == Index) {
+ // Illegal trailing decimal.
+ abort();
+ }
+ Index = position;
+ }
+ // Parse exponents. The `e` denoting the exponent is
+ // case-insensitive.
+ charCode = source.charCodeAt(Index);
+ if (charCode == 101 || charCode == 69) {
+ charCode = source.charCodeAt(++Index);
+ // Skip past the sign following the exponent, if one is
+ // specified.
+ if (charCode == 43 || charCode == 45) {
+ Index++;
+ }
+ // Parse the exponential component.
+ for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++) ;
+ if (position == Index) {
+ // Illegal empty exponent.
+ abort();
+ }
+ Index = position;
+ }
+ // Coerce the parsed value to a JavaScript number.
+ return +source.slice(begin, Index);
+ }
+ // A negative sign may only precede numbers.
+ if (isSigned) {
+ abort();
+ }
+ // `true`, `false`, and `null` literals.
+ if (source.slice(Index, Index + 4) == "true") {
+ Index += 4;
+ return true;
+ } else if (source.slice(Index, Index + 5) == "false") {
+ Index += 5;
+ return false;
+ } else if (source.slice(Index, Index + 4) == "null") {
+ Index += 4;
+ return null;
+ }
+ // Unrecognized token.
+ abort();
+ }
+ }
+ // Return the sentinel `$` character if the parser has reached the end
+ // of the source string.
+ return "$";
+ };
+
+ // Internal: Parses a JSON `value` token.
+ var get = function (value) {
+ var results, hasMembers;
+ if (value == "$") {
+ // Unexpected end of input.
+ abort();
+ }
+ if (typeof value == "string") {
+ if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") {
+ // Remove the sentinel `@` character.
+ return value.slice(1);
+ }
+ // Parse object and array literals.
+ if (value == "[") {
+ // Parses a JSON array, returning a new JavaScript array.
+ results = [];
+ for (; ; hasMembers || (hasMembers = true)) {
+ value = lex();
+ // A closing square bracket marks the end of the array literal.
+ if (value == "]") {
+ break;
+ }
+ // If the array literal contains elements, the current token
+ // should be a comma separating the previous element from the
+ // next.
+ if (hasMembers) {
+ if (value == ",") {
+ value = lex();
+ if (value == "]") {
+ // Unexpected trailing `,` in array literal.
+ abort();
+ }
+ } else {
+ // A `,` must separate each array element.
+ abort();
+ }
+ }
+ // Elisions and leading commas are not permitted.
+ if (value == ",") {
+ abort();
+ }
+ results.push(get(value));
+ }
+ return results;
+ } else if (value == "{") {
+ // Parses a JSON object, returning a new JavaScript object.
+ results = {};
+ for (; ; hasMembers || (hasMembers = true)) {
+ value = lex();
+ // A closing curly brace marks the end of the object literal.
+ if (value == "}") {
+ break;
+ }
+ // If the object literal contains members, the current token
+ // should be a comma separator.
+ if (hasMembers) {
+ if (value == ",") {
+ value = lex();
+ if (value == "}") {
+ // Unexpected trailing `,` in object literal.
+ abort();
+ }
+ } else {
+ // A `,` must separate each object member.
+ abort();
+ }
+ }
+ // Leading commas are not permitted, object property names must be
+ // double-quoted strings, and a `:` must separate each property
+ // name and value.
+ if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") {
+ abort();
+ }
+ results[value.slice(1)] = get(lex());
+ }
+ return results;
+ }
+ // Unexpected token encountered.
+ abort();
+ }
+ return value;
+ };
+
+ // Internal: Updates a traversed object member.
+ var update = function (source, property, callback) {
+ var element = walk(source, property, callback);
+ if (element === undef) {
+ delete source[property];
+ } else {
+ source[property] = element;
+ }
+ };
+
+ // Internal: Recursively traverses a parsed JSON object, invoking the
+ // `callback` function for each value. This is an implementation of the
+ // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.
+ var walk = function (source, property, callback) {
+ var value = source[property], length;
+ if (typeof value == "object" && value) {
+ // `forEach` can't be used to traverse an array in Opera <= 8.54
+ // because its `Object#hasOwnProperty` implementation returns `false`
+ // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).
+ if (getClass.call(value) == arrayClass) {
+ for (length = value.length; length--;) {
+ update(value, length, callback);
+ }
+ } else {
+ forEach(value, function (property) {
+ update(value, property, callback);
+ });
+ }
+ }
+ return callback.call(source, property, value);
+ };
+
+ // Public: `JSON.parse`. See ES 5.1 section 15.12.2.
+ exports.parse = function (source, callback) {
+ var result, value;
+ Index = 0;
+ Source = "" + source;
+ result = get(lex());
+ // If a JSON string contains multiple tokens, it is invalid.
+ if (lex() != "$") {
+ abort();
+ }
+ // Reset the parser state.
+ Index = Source = null;
+ return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result;
+ };
+ }
+ }
+
+ exports["runInContext"] = runInContext;
+ return exports;
+ }
+
+ if (freeExports && !isLoader) {
+ // Export for CommonJS environments.
+ runInContext(root, freeExports);
+ } else {
+ // Export for web browsers and JavaScript engines.
+ var nativeJSON = root.JSON,
+ previousJSON = root["JSON3"],
+ isRestored = false;
+
+ var JSON3 = runInContext(root, (root["JSON3"] = {
+ // Public: Restores the original value of the global `JSON` object and
+ // returns a reference to the `JSON3` object.
+ "noConflict": function () {
+ if (!isRestored) {
+ isRestored = true;
+ root.JSON = nativeJSON;
+ root["JSON3"] = previousJSON;
+ nativeJSON = previousJSON = null;
+ }
+ return JSON3;
+ }
+ }));
+
+ root.JSON = {
+ "parse": JSON3.parse,
+ "stringify": JSON3.stringify
+ };
+ }
+
+ // Export for asynchronous module loaders.
+ if (isLoader) {
+ define(function () {
+ return JSON3;
+ });
+ }
+ }).call(this);
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {}],
+ 58: [function (require, module, exports) {
+ /**
+ * Helpers.
+ */
+
+ var s = 1000
+ var m = s * 60
+ var h = m * 60
+ var d = h * 24
+ var y = d * 365.25
+
+ /**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} options
+ * @throws {Error} throw an error if val is not a non-empty string or a number
+ * @return {String|Number}
+ * @api public
+ */
+
+ module.exports = function (val, options) {
+ options = options || {}
+ var type = typeof val
+ if (type === 'string' && val.length > 0) {
+ return parse(val)
+ } else if (type === 'number' && isNaN(val) === false) {
+ return options.long ?
+ fmtLong(val) :
+ fmtShort(val)
+ }
+ throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val))
+ }
+
+ /**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+ function parse(str) {
+ str = String(str)
+ if (str.length > 10000) {
+ return
+ }
+ var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str)
+ if (!match) {
+ return
+ }
+ var n = parseFloat(match[1])
+ var type = (match[2] || 'ms').toLowerCase()
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n
+ default:
+ return undefined
+ }
+ }
+
+ /**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+ function fmtShort(ms) {
+ if (ms >= d) {
+ return Math.round(ms / d) + 'd'
+ }
+ if (ms >= h) {
+ return Math.round(ms / h) + 'h'
+ }
+ if (ms >= m) {
+ return Math.round(ms / m) + 'm'
+ }
+ if (ms >= s) {
+ return Math.round(ms / s) + 's'
+ }
+ return ms + 'ms'
+ }
+
+ /**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+ function fmtLong(ms) {
+ return plural(ms, d, 'day') ||
+ plural(ms, h, 'hour') ||
+ plural(ms, m, 'minute') ||
+ plural(ms, s, 'second') ||
+ ms + ' ms'
+ }
+
+ /**
+ * Pluralization helper.
+ */
+
+ function plural(ms, n, name) {
+ if (ms < n) {
+ return
+ }
+ if (ms < n * 1.5) {
+ return Math.floor(ms / n) + ' ' + name
+ }
+ return Math.ceil(ms / n) + ' ' + name + 's'
+ }
+
+ }, {}],
+ 59: [function (require, module, exports) {
+ 'use strict';
+
+ var has = Object.prototype.hasOwnProperty;
+
+ /**
+ * Simple query string parser.
+ *
+ * @param {String} query The query string that needs to be parsed.
+ * @returns {Object}
+ * @api public
+ */
+ function querystring(query) {
+ var parser = /([^=?&]+)=?([^&]*)/g
+ , result = {}
+ , part;
+
+ //
+ // Little nifty parsing hack, leverage the fact that RegExp.exec increments
+ // the lastIndex property so we can continue executing this loop until we've
+ // parsed all results.
+ //
+ for (;
+ part = parser.exec(query);
+ result[decodeURIComponent(part[1])] = decodeURIComponent(part[2])
+ ) ;
+
+ return result;
+ }
+
+ /**
+ * Transform a query string to an object.
+ *
+ * @param {Object} obj Object that should be transformed.
+ * @param {String} prefix Optional prefix.
+ * @returns {String}
+ * @api public
+ */
+ function querystringify(obj, prefix) {
+ prefix = prefix || '';
+
+ var pairs = [];
+
+ //
+ // Optionally prefix with a '?' if needed
+ //
+ if ('string' !== typeof prefix) prefix = '?';
+
+ for (var key in obj) {
+ if (has.call(obj, key)) {
+ pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
+ }
+ }
+
+ return pairs.length ? prefix + pairs.join('&') : '';
+ }
+
+//
+// Expose the module.
+//
+ exports.stringify = querystringify;
+ exports.parse = querystring;
+
+ }, {}],
+ 60: [function (require, module, exports) {
+ 'use strict';
+
+ /**
+ * Check if we're required to add a port number.
+ *
+ * @see https://url.spec.whatwg.org/#default-port
+ * @param {Number|String} port Port number we need to check
+ * @param {String} protocol Protocol we need to check against.
+ * @returns {Boolean} Is it a default port for the given protocol
+ * @api private
+ */
+ module.exports = function required(port, protocol) {
+ protocol = protocol.split(':')[0];
+ port = +port;
+
+ if (!port) return false;
+
+ switch (protocol) {
+ case 'http':
+ case 'ws':
+ return port !== 80;
+
+ case 'https':
+ case 'wss':
+ return port !== 443;
+
+ case 'ftp':
+ return port !== 21;
+
+ case 'gopher':
+ return port !== 70;
+
+ case 'file':
+ return false;
+ }
+
+ return port !== 0;
+ };
+
+ }, {}],
+ 61: [function (require, module, exports) {
+ 'use strict';
+
+ var required = require('requires-port')
+ , lolcation = require('./lolcation')
+ , qs = require('querystringify')
+ , protocolre = /^([a-z][a-z0-9.+-]*:)?(\/\/)?([\S\s]*)/i;
+
+ /**
+ * These are the parse rules for the URL parser, it informs the parser
+ * about:
+ *
+ * 0. The char it Needs to parse, if it's a string it should be done using
+ * indexOf, RegExp using exec and NaN means set as current value.
+ * 1. The property we should set when parsing this value.
+ * 2. Indication if it's backwards or forward parsing, when set as number it's
+ * the value of extra chars that should be split off.
+ * 3. Inherit from location if non existing in the parser.
+ * 4. `toLowerCase` the resulting value.
+ */
+ var rules = [
+ ['#', 'hash'], // Extract from the back.
+ ['?', 'query'], // Extract from the back.
+ ['/', 'pathname'], // Extract from the back.
+ ['@', 'auth', 1], // Extract from the front.
+ [NaN, 'host', undefined, 1, 1], // Set left over value.
+ [/:(\d+)$/, 'port', undefined, 1], // RegExp the back.
+ [NaN, 'hostname', undefined, 1, 1] // Set left over.
+ ];
+
+ /**
+ * @typedef ProtocolExtract
+ * @type Object
+ * @property {String} protocol Protocol matched in the URL, in lowercase.
+ * @property {Boolean} slashes `true` if protocol is followed by "//", else `false`.
+ * @property {String} rest Rest of the URL that is not part of the protocol.
+ */
+
+ /**
+ * Extract protocol information from a URL with/without double slash ("//").
+ *
+ * @param {String} address URL we want to extract from.
+ * @return {ProtocolExtract} Extracted information.
+ * @api private
+ */
+ function extractProtocol(address) {
+ var match = protocolre.exec(address);
+
+ return {
+ protocol: match[1] ? match[1].toLowerCase() : '',
+ slashes: !!match[2],
+ rest: match[3]
+ };
+ }
+
+ /**
+ * Resolve a relative URL pathname against a base URL pathname.
+ *
+ * @param {String} relative Pathname of the relative URL.
+ * @param {String} base Pathname of the base URL.
+ * @return {String} Resolved pathname.
+ * @api private
+ */
+ function resolve(relative, base) {
+ var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))
+ , i = path.length
+ , last = path[i - 1]
+ , unshift = false
+ , up = 0;
+
+ while (i--) {
+ if (path[i] === '.') {
+ path.splice(i, 1);
+ } else if (path[i] === '..') {
+ path.splice(i, 1);
+ up++;
+ } else if (up) {
+ if (i === 0) unshift = true;
+ path.splice(i, 1);
+ up--;
+ }
+ }
+
+ if (unshift) path.unshift('');
+ if (last === '.' || last === '..') path.push('');
+
+ return path.join('/');
+ }
+
+ /**
+ * The actual URL instance. Instead of returning an object we've opted-in to
+ * create an actual constructor as it's much more memory efficient and
+ * faster and it pleases my OCD.
+ *
+ * @constructor
+ * @param {String} address URL we want to parse.
+ * @param {Object|String} location Location defaults for relative paths.
+ * @param {Boolean|Function} parser Parser for the query string.
+ * @api public
+ */
+ function URL(address, location, parser) {
+ if (!(this instanceof URL)) {
+ return new URL(address, location, parser);
+ }
+
+ var relative, extracted, parse, instruction, index, key
+ , instructions = rules.slice()
+ , type = typeof location
+ , url = this
+ , i = 0;
+
+ //
+ // The following if statements allows this module two have compatibility with
+ // 2 different API:
+ //
+ // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments
+ // where the boolean indicates that the query string should also be parsed.
+ //
+ // 2. The `URL` interface of the browser which accepts a URL, object as
+ // arguments. The supplied object will be used as default values / fall-back
+ // for relative paths.
+ //
+ if ('object' !== type && 'string' !== type) {
+ parser = location;
+ location = null;
+ }
+
+ if (parser && 'function' !== typeof parser) parser = qs.parse;
+
+ location = lolcation(location);
+
+ //
+ // Extract protocol information before running the instructions.
+ //
+ extracted = extractProtocol(address || '');
+ relative = !extracted.protocol && !extracted.slashes;
+ url.slashes = extracted.slashes || relative && location.slashes;
+ url.protocol = extracted.protocol || location.protocol || '';
+ address = extracted.rest;
+
+ //
+ // When the authority component is absent the URL starts with a path
+ // component.
+ //
+ if (!extracted.slashes) instructions[2] = [/(.*)/, 'pathname'];
+
+ for (; i < instructions.length; i++) {
+ instruction = instructions[i];
+ parse = instruction[0];
+ key = instruction[1];
+
+ if (parse !== parse) {
+ url[key] = address;
+ } else if ('string' === typeof parse) {
+ if (~(index = address.indexOf(parse))) {
+ if ('number' === typeof instruction[2]) {
+ url[key] = address.slice(0, index);
+ address = address.slice(index + instruction[2]);
+ } else {
+ url[key] = address.slice(index);
+ address = address.slice(0, index);
+ }
+ }
+ } else if (index = parse.exec(address)) {
+ url[key] = index[1];
+ address = address.slice(0, index.index);
+ }
+
+ url[key] = url[key] || (
+ relative && instruction[3] ? location[key] || '' : ''
+ );
+
+ //
+ // Hostname, host and protocol should be lowercased so they can be used to
+ // create a proper `origin`.
+ //
+ if (instruction[4]) url[key] = url[key].toLowerCase();
+ }
+
+ //
+ // Also parse the supplied query string in to an object. If we're supplied
+ // with a custom parser as function use that instead of the default build-in
+ // parser.
+ //
+ if (parser) url.query = parser(url.query);
+
+ //
+ // If the URL is relative, resolve the pathname against the base URL.
+ //
+ if (
+ relative
+ && location.slashes
+ && url.pathname.charAt(0) !== '/'
+ && (url.pathname !== '' || location.pathname !== '')
+ ) {
+ url.pathname = resolve(url.pathname, location.pathname);
+ }
+
+ //
+ // We should not add port numbers if they are already the default port number
+ // for a given protocol. As the host also contains the port number we're going
+ // override it with the hostname which contains no port number.
+ //
+ if (!required(url.port, url.protocol)) {
+ url.host = url.hostname;
+ url.port = '';
+ }
+
+ //
+ // Parse down the `auth` for the username and password.
+ //
+ url.username = url.password = '';
+ if (url.auth) {
+ instruction = url.auth.split(':');
+ url.username = instruction[0] || '';
+ url.password = instruction[1] || '';
+ }
+
+ url.origin = url.protocol && url.host && url.protocol !== 'file:'
+ ? url.protocol + '//' + url.host
+ : 'null';
+
+ //
+ // The href is just the compiled result.
+ //
+ url.href = url.toString();
+ }
+
+ /**
+ * This is convenience method for changing properties in the URL instance to
+ * insure that they all propagate correctly.
+ *
+ * @param {String} part Property we need to adjust.
+ * @param {Mixed} value The newly assigned value.
+ * @param {Boolean|Function} fn When setting the query, it will be the function
+ * used to parse the query.
+ * When setting the protocol, double slash will be
+ * removed from the final url if it is true.
+ * @returns {URL}
+ * @api public
+ */
+ URL.prototype.set = function set(part, value, fn) {
+ var url = this;
+
+ switch (part) {
+ case 'query':
+ if ('string' === typeof value && value.length) {
+ value = (fn || qs.parse)(value);
+ }
+
+ url[part] = value;
+ break;
+
+ case 'port':
+ url[part] = value;
+
+ if (!required(value, url.protocol)) {
+ url.host = url.hostname;
+ url[part] = '';
+ } else if (value) {
+ url.host = url.hostname + ':' + value;
+ }
+
+ break;
+
+ case 'hostname':
+ url[part] = value;
+
+ if (url.port) value += ':' + url.port;
+ url.host = value;
+ break;
+
+ case 'host':
+ url[part] = value;
+
+ if (/:\d+$/.test(value)) {
+ value = value.split(':');
+ url.port = value.pop();
+ url.hostname = value.join(':');
+ } else {
+ url.hostname = value;
+ url.port = '';
+ }
+
+ break;
+
+ case 'protocol':
+ url.protocol = value.toLowerCase();
+ url.slashes = !fn;
+ break;
+
+ case 'pathname':
+ url.pathname = value.length && value.charAt(0) !== '/' ? '/' + value : value;
+
+ break;
+
+ default:
+ url[part] = value;
+ }
+
+ for (var i = 0; i < rules.length; i++) {
+ var ins = rules[i];
+
+ if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();
+ }
+
+ url.origin = url.protocol && url.host && url.protocol !== 'file:'
+ ? url.protocol + '//' + url.host
+ : 'null';
+
+ url.href = url.toString();
+
+ return url;
+ };
+
+ /**
+ * Transform the properties back in to a valid and full URL string.
+ *
+ * @param {Function} stringify Optional query stringify function.
+ * @returns {String}
+ * @api public
+ */
+ URL.prototype.toString = function toString(stringify) {
+ if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;
+
+ var query
+ , url = this
+ , protocol = url.protocol;
+
+ if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';
+
+ var result = protocol + (url.slashes ? '//' : '');
+
+ if (url.username) {
+ result += url.username;
+ if (url.password) result += ':' + url.password;
+ result += '@';
+ }
+
+ result += url.host + url.pathname;
+
+ query = 'object' === typeof url.query ? stringify(url.query) : url.query;
+ if (query) result += '?' !== query.charAt(0) ? '?' + query : query;
+
+ if (url.hash) result += url.hash;
+
+ return result;
+ };
+
+//
+// Expose the URL parser and some additional properties that might be useful for
+// others or testing.
+//
+ URL.extractProtocol = extractProtocol;
+ URL.location = lolcation;
+ URL.qs = qs;
+
+ module.exports = URL;
+
+ }, {"./lolcation": 62, "querystringify": 59, "requires-port": 60}],
+ 62: [function (require, module, exports) {
+ (function (global) {
+ 'use strict';
+
+ var slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\/\//;
+
+ /**
+ * These properties should not be copied or inherited from. This is only needed
+ * for all non blob URL's as a blob URL does not include a hash, only the
+ * origin.
+ *
+ * @type {Object}
+ * @private
+ */
+ var ignore = {hash: 1, query: 1}
+ , URL;
+
+ /**
+ * The location object differs when your code is loaded through a normal page,
+ * Worker or through a worker using a blob. And with the blobble begins the
+ * trouble as the location object will contain the URL of the blob, not the
+ * location of the page where our code is loaded in. The actual origin is
+ * encoded in the `pathname` so we can thankfully generate a good "default"
+ * location from it so we can generate proper relative URL's again.
+ *
+ * @param {Object|String} loc Optional default location object.
+ * @returns {Object} lolcation object.
+ * @api public
+ */
+ module.exports = function lolcation(loc) {
+ loc = loc || global.location || {};
+ URL = URL || require('./');
+
+ var finaldestination = {}
+ , type = typeof loc
+ , key;
+
+ if ('blob:' === loc.protocol) {
+ finaldestination = new URL(unescape(loc.pathname), {});
+ } else if ('string' === type) {
+ finaldestination = new URL(loc, {});
+ for (key in ignore) delete finaldestination[key];
+ } else if ('object' === type) {
+ for (key in loc) {
+ if (key in ignore) continue;
+ finaldestination[key] = loc[key];
+ }
+
+ if (finaldestination.slashes === undefined) {
+ finaldestination.slashes = slashes.test(loc.href);
+ }
+ }
+
+ return finaldestination;
+ };
+
+ }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {"./": 61}]
+ }, {}, [1])(1)
+});
+
+
+//# sourceMappingURL=sockjs.js.map
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/stomp.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/stomp.js
new file mode 100644
index 0000000..9145b6d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/utils/stomp.js
@@ -0,0 +1,501 @@
+// Generated by CoffeeScript 1.7.1
+
+/*
+ Stomp Over WebSocket http://www.jmesnil.net/stomp-websocket/doc/ | Apache License V2.0
+
+ Copyright (C) 2010-2013 [Jeff Mesnil](http://jmesnil.net/)
+ Copyright (C) 2012 [FuseSource, Inc.](http://fusesource.com)
+ */
+
+(function () {
+ var Byte, Client, Frame, Stomp, __hasProp = {}.hasOwnProperty, __slice = [].slice;
+
+ Byte = {
+ LF: '\x0A',
+ NULL: '\x00'
+ };
+
+ Frame = (function () {
+ var unmarshallSingle;
+
+ function Frame(command, headers, body) {
+ this.command = command;
+ this.headers = headers != null ? headers : {};
+ this.body = body != null ? body : '';
+ }
+
+ Frame.prototype.toString = function () {
+ var lines, name, skipContentLength, value, _ref;
+ lines = [this.command];
+ skipContentLength = this.headers['content-length'] === false ? true : false;
+ if (skipContentLength) {
+ delete this.headers['content-length'];
+ }
+ _ref = this.headers;
+ for (name in _ref) {
+ if (!__hasProp.call(_ref, name)) continue;
+ value = _ref[name];
+ lines.push("" + name + ":" + value);
+ }
+ if (this.body && !skipContentLength) {
+ lines.push("content-length:" + (Frame.sizeOfUTF8(this.body)));
+ }
+ lines.push(Byte.LF + this.body);
+ return lines.join(Byte.LF);
+ };
+
+ Frame.sizeOfUTF8 = function (s) {
+ if (s) {
+ return encodeURI(s).match(/%..|./g).length;
+ } else {
+ return 0;
+ }
+ };
+
+ unmarshallSingle = function (data) {
+ var body, chr, command, divider, headerLines, headers, i, idx, len, line, start, trim, _i, _j, _len, _ref,
+ _ref1;
+ divider = data.search(RegExp("" + Byte.LF + Byte.LF));
+ headerLines = data.substring(0, divider).split(Byte.LF);
+ command = headerLines.shift();
+ headers = {};
+ trim = function (str) {
+ return str.replace(/^\s+|\s+$/g, '');
+ };
+ _ref = headerLines.reverse();
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ line = _ref[_i];
+ idx = line.indexOf(':');
+ headers[trim(line.substring(0, idx))] = trim(line.substring(idx + 1));
+ }
+ body = '';
+ start = divider + 2;
+ if (headers['content-length']) {
+ len = parseInt(headers['content-length']);
+ body = ('' + data).substring(start, start + len);
+ } else {
+ chr = null;
+ for (i = _j = start, _ref1 = data.length; start <= _ref1 ? _j < _ref1 : _j > _ref1; i = start <= _ref1 ? ++_j : --_j) {
+ chr = data.charAt(i);
+ if (chr === Byte.NULL) {
+ break;
+ }
+ body += chr;
+ }
+ }
+ return new Frame(command, headers, body);
+ };
+
+ Frame.unmarshall = function (datas) {
+ var frame, frames, last_frame, r;
+ frames = datas.split(RegExp("" + Byte.NULL + Byte.LF + "*"));
+ r = {
+ frames: [],
+ partial: ''
+ };
+ r.frames = (function () {
+ var _i, _len, _ref, _results;
+ _ref = frames.slice(0, -1);
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ frame = _ref[_i];
+ _results.push(unmarshallSingle(frame));
+ }
+ return _results;
+ })();
+ last_frame = frames.slice(-1)[0];
+ if (last_frame === Byte.LF || (last_frame.search(RegExp("" + Byte.NULL + Byte.LF + "*$"))) !== -1) {
+ r.frames.push(unmarshallSingle(last_frame));
+ } else {
+ r.partial = last_frame;
+ }
+ return r;
+ };
+
+ Frame.marshall = function (command, headers, body) {
+ var frame;
+ frame = new Frame(command, headers, body);
+ return frame.toString() + Byte.NULL;
+ };
+
+ return Frame;
+
+ })();
+
+ Client = (function () {
+ var now;
+
+ function Client(ws) {
+ this.ws = ws;
+ this.ws.binaryType = "arraybuffer";
+ this.counter = 0;
+ this.connected = false;
+ this.heartbeat = {
+ outgoing: 10000,
+ incoming: 10000
+ };
+ this.maxWebSocketFrameSize = 16 * 1024;
+ this.subscriptions = {};
+ this.partialData = '';
+ }
+
+ Client.prototype.debug = function (message) {
+ var _ref;
+ return typeof window !== "undefined" && window !== null ? (_ref = window.console) != null ? _ref.debug(message) : void 0 : void 0;
+ };
+
+ now = function () {
+ if (Date.now) {
+ return Date.now();
+ } else {
+ return new Date().valueOf;
+ }
+ };
+
+ Client.prototype._transmit = function (command, headers, body) {
+ var out;
+ out = Frame.marshall(command, headers, body);
+ if (typeof this.debug === "function") {
+ this.debug(">>> " + out);
+ }
+ while (true) {
+ if (out.length > this.maxWebSocketFrameSize) {
+ this.ws.send(out.substring(0, this.maxWebSocketFrameSize));
+ out = out.substring(this.maxWebSocketFrameSize);
+ if (typeof this.debug === "function") {
+ this.debug("remaining = " + out.length);
+ }
+ } else {
+ return this.ws.send(out);
+ }
+ }
+ };
+
+ Client.prototype._setupHeartbeat = function (headers) {
+ var serverIncoming, serverOutgoing, ttl, v, _ref, _ref1;
+ if ((_ref = headers.version) !== Stomp.VERSIONS.V1_1 && _ref !== Stomp.VERSIONS.V1_2) {
+ return;
+ }
+ _ref1 = (function () {
+ var _i, _len, _ref1, _results;
+ _ref1 = headers['heart-beat'].split(",");
+ _results = [];
+ for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+ v = _ref1[_i];
+ _results.push(parseInt(v));
+ }
+ return _results;
+ })(), serverOutgoing = _ref1[0], serverIncoming = _ref1[1];
+ if (!(this.heartbeat.outgoing === 0 || serverIncoming === 0)) {
+ ttl = Math.max(this.heartbeat.outgoing, serverIncoming);
+ if (typeof this.debug === "function") {
+ this.debug("send PING every " + ttl + "ms");
+ }
+ this.pinger = Stomp.setInterval(ttl, (function (_this) {
+ return function () {
+ _this.ws.send(Byte.LF);
+ return typeof _this.debug === "function" ? _this.debug(">>> PING") : void 0;
+ };
+ })(this));
+ }
+ if (!(this.heartbeat.incoming === 0 || serverOutgoing === 0)) {
+ ttl = Math.max(this.heartbeat.incoming, serverOutgoing);
+ if (typeof this.debug === "function") {
+ this.debug("check PONG every " + ttl + "ms");
+ }
+ return this.ponger = Stomp.setInterval(ttl, (function (_this) {
+ return function () {
+ var delta;
+ delta = now() - _this.serverActivity;
+ if (delta > ttl * 2) {
+ if (typeof _this.debug === "function") {
+ _this.debug("did not receive server activity for the last " + delta + "ms");
+ }
+ return _this.ws.close();
+ }
+ };
+ })(this));
+ }
+ };
+
+ Client.prototype._parseConnect = function () {
+ var args, connectCallback, errorCallback, headers;
+ args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+ headers = {};
+ switch (args.length) {
+ case 2:
+ headers = args[0], connectCallback = args[1];
+ break;
+ case 3:
+ if (args[1] instanceof Function) {
+ headers = args[0], connectCallback = args[1], errorCallback = args[2];
+ } else {
+ headers.login = args[0], headers.passcode = args[1], connectCallback = args[2];
+ }
+ break;
+ case 4:
+ headers.login = args[0], headers.passcode = args[1], connectCallback = args[2], errorCallback = args[3];
+ break;
+ default:
+ headers.login = args[0], headers.passcode = args[1], connectCallback = args[2], errorCallback = args[3], headers.host = args[4];
+ }
+ return [headers, connectCallback, errorCallback];
+ };
+
+ Client.prototype.connect = function () {
+ var args, errorCallback, headers, out;
+ args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+ out = this._parseConnect.apply(this, args);
+ headers = out[0], this.connectCallback = out[1], errorCallback = out[2];
+ if (typeof this.debug === "function") {
+ this.debug("Opening Web Socket...");
+ }
+ this.ws.onmessage = (function (_this) {
+ return function (evt) {
+ var arr, c, client, data, frame, messageID, onreceive, subscription, unmarshalledData, _i, _len,
+ _ref, _results;
+ data = typeof ArrayBuffer !== 'undefined' && evt.data instanceof ArrayBuffer ? (arr = new Uint8Array(evt.data), typeof _this.debug === "function" ? _this.debug("--- got data length: " + arr.length) : void 0, ((function () {
+ var _i, _len, _results;
+ _results = [];
+ for (_i = 0, _len = arr.length; _i < _len; _i++) {
+ c = arr[_i];
+ _results.push(String.fromCharCode(c));
+ }
+ return _results;
+ })()).join('')) : evt.data;
+ _this.serverActivity = now();
+ if (data === Byte.LF) {
+ if (typeof _this.debug === "function") {
+ _this.debug("<<< PONG");
+ }
+ return;
+ }
+ if (typeof _this.debug === "function") {
+ _this.debug("<<< " + data);
+ }
+ unmarshalledData = Frame.unmarshall(_this.partialData + data);
+ _this.partialData = unmarshalledData.partial;
+ _ref = unmarshalledData.frames;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ frame = _ref[_i];
+ switch (frame.command) {
+ case "CONNECTED":
+ if (typeof _this.debug === "function") {
+ _this.debug("connected to server " + frame.headers.server);
+ }
+ _this.connected = true;
+ _this._setupHeartbeat(frame.headers);
+ _results.push(typeof _this.connectCallback === "function" ? _this.connectCallback(frame) : void 0);
+ break;
+ case "MESSAGE":
+ subscription = frame.headers.subscription;
+ onreceive = _this.subscriptions[subscription] || _this.onreceive;
+ if (onreceive) {
+ client = _this;
+ messageID = frame.headers["message-id"];
+ frame.ack = function (headers) {
+ if (headers == null) {
+ headers = {};
+ }
+ return client.ack(messageID, subscription, headers);
+ };
+ frame.nack = function (headers) {
+ if (headers == null) {
+ headers = {};
+ }
+ return client.nack(messageID, subscription, headers);
+ };
+ _results.push(onreceive(frame));
+ } else {
+ _results.push(typeof _this.debug === "function" ? _this.debug("Unhandled received MESSAGE: " + frame) : void 0);
+ }
+ break;
+ case "RECEIPT":
+ _results.push(typeof _this.onreceipt === "function" ? _this.onreceipt(frame) : void 0);
+ break;
+ case "ERROR":
+ _results.push(typeof errorCallback === "function" ? errorCallback(frame) : void 0);
+ break;
+ default:
+ _results.push(typeof _this.debug === "function" ? _this.debug("Unhandled frame: " + frame) : void 0);
+ }
+ }
+ return _results;
+ };
+ })(this);
+ this.ws.onclose = (function (_this) {
+ return function () {
+ var msg;
+ msg = "Whoops! Lost connection to " + _this.ws.url;
+ if (typeof _this.debug === "function") {
+ _this.debug(msg);
+ }
+ _this._cleanUp();
+ return typeof errorCallback === "function" ? errorCallback(msg) : void 0;
+ };
+ })(this);
+ return this.ws.onopen = (function (_this) {
+ return function () {
+ if (typeof _this.debug === "function") {
+ _this.debug('Web Socket Opened...');
+ }
+ headers["accept-version"] = Stomp.VERSIONS.supportedVersions();
+ headers["heart-beat"] = [_this.heartbeat.outgoing, _this.heartbeat.incoming].join(',');
+ return _this._transmit("CONNECT", headers);
+ };
+ })(this);
+ };
+
+ Client.prototype.disconnect = function (disconnectCallback, headers) {
+ if (headers == null) {
+ headers = {};
+ }
+ this._transmit("DISCONNECT", headers);
+ this.ws.onclose = null;
+ this.ws.close();
+ this._cleanUp();
+ return typeof disconnectCallback === "function" ? disconnectCallback() : void 0;
+ };
+
+ Client.prototype._cleanUp = function () {
+ this.connected = false;
+ if (this.pinger) {
+ Stomp.clearInterval(this.pinger);
+ }
+ if (this.ponger) {
+ return Stomp.clearInterval(this.ponger);
+ }
+ };
+
+ Client.prototype.send = function (destination, headers, body) {
+ if (headers == null) {
+ headers = {};
+ }
+ if (body == null) {
+ body = '';
+ }
+ headers.destination = destination;
+ return this._transmit("SEND", headers, body);
+ };
+
+ Client.prototype.subscribe = function (destination, callback, headers) {
+ var client;
+ if (headers == null) {
+ headers = {};
+ }
+ if (!headers.id) {
+ headers.id = "sub-" + this.counter++;
+ }
+ headers.destination = destination;
+ this.subscriptions[headers.id] = callback;
+ this._transmit("SUBSCRIBE", headers);
+ client = this;
+ return {
+ id: headers.id,
+ unsubscribe: function () {
+ return client.unsubscribe(headers.id);
+ }
+ };
+ };
+
+ Client.prototype.unsubscribe = function (id) {
+ delete this.subscriptions[id];
+ return this._transmit("UNSUBSCRIBE", {
+ id: id
+ });
+ };
+
+ Client.prototype.begin = function (transaction) {
+ var client, txid;
+ txid = transaction || "tx-" + this.counter++;
+ this._transmit("BEGIN", {
+ transaction: txid
+ });
+ client = this;
+ return {
+ id: txid,
+ commit: function () {
+ return client.commit(txid);
+ },
+ abort: function () {
+ return client.abort(txid);
+ }
+ };
+ };
+
+ Client.prototype.commit = function (transaction) {
+ return this._transmit("COMMIT", {
+ transaction: transaction
+ });
+ };
+
+ Client.prototype.abort = function (transaction) {
+ return this._transmit("ABORT", {
+ transaction: transaction
+ });
+ };
+
+ Client.prototype.ack = function (messageID, subscription, headers) {
+ if (headers == null) {
+ headers = {};
+ }
+ headers["message-id"] = messageID;
+ headers.subscription = subscription;
+ return this._transmit("ACK", headers);
+ };
+
+ Client.prototype.nack = function (messageID, subscription, headers) {
+ if (headers == null) {
+ headers = {};
+ }
+ headers["message-id"] = messageID;
+ headers.subscription = subscription;
+ return this._transmit("NACK", headers);
+ };
+
+ return Client;
+
+ })();
+
+ Stomp = {
+ VERSIONS: {
+ V1_0: '1.0',
+ V1_1: '1.1',
+ V1_2: '1.2',
+ supportedVersions: function () {
+ return '1.1,1.0';
+ }
+ },
+ client: function (url, protocols) {
+ var klass, ws;
+ if (protocols == null) {
+ protocols = ['v10.stomp', 'v11.stomp'];
+ }
+ klass = Stomp.WebSocketClass || WebSocket;
+ ws = new klass(url, protocols);
+ return new Client(ws);
+ },
+ over: function (ws) {
+ return new Client(ws);
+ },
+ Frame: Frame
+ };
+
+ if (typeof exports !== "undefined" && exports !== null) {
+ exports.Stomp = Stomp;
+ }
+
+ if (typeof window !== "undefined" && window !== null) {
+ Stomp.setInterval = function (interval, f) {
+ return window.setInterval(f, interval);
+ };
+ Stomp.clearInterval = function (id) {
+ return window.clearInterval(id);
+ };
+ window.Stomp = Stomp;
+ } else if (!exports) {
+ self.Stomp = Stomp;
+ }
+
+}).call(this);
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/404.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/404.vue
new file mode 100644
index 0000000..0dc40fc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/404.vue
@@ -0,0 +1,51 @@
+<template>
+ <div style="width:100%;">
+
+ <div style="width:600px;height:600px;margin:calc((100vh - 600px) / 2) auto;text-align: right;">
+ <span class="return-span" @click="goIndex">返回首页</span>
+ <svg-icon name="404" width="600" height="600" color="var(--el-color-primary)" ></svg-icon>
+ </div>
+ </div>
+</template>
+
+<script>
+import { toRefs, reactive, getCurrentInstance, nextTick, defineComponent } from 'vue';
+export default defineComponent({
+ name: 'demo',
+ props: {},
+ components: {},
+ setup() {
+
+ let { proxy } = getCurrentInstance();
+ const state = reactive({
+
+ });
+
+ const goIndex = () => {
+ proxy.$router.replace("/");
+ }
+
+ return { ...toRefs(state), goIndex };
+ }
+})
+</script>
+
+<style scoped lang='scss'>
+$color: var(--el-color-primary);
+$color1: var(--el-color-primary-light-9);
+
+.return-span {
+ animation: glow 800ms ease-out infinite alternate;
+ cursor: pointer;
+}
+
+@keyframes glow {
+ 0% {
+ color: $color;
+ }
+
+ 100% {
+ color: white;
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/License.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/License.vue
new file mode 100644
index 0000000..3fe4113
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/License.vue
@@ -0,0 +1,216 @@
+<template>
+ <div style="background-color: #f5f4f4;">
+ <el-card class="content">
+ <h3 style="text-align: center;">服务条款</h3>
+ <p>
+ 本系统所有权和运营权归本公司所有。本公司同意按照《服务条款》(下称“本服务条款”)以及本公司不时发布的与本系统相关的其他条款和规则等(统称“其他规则”)提供本系统服务(下称“本服务”)。请您仔细阅读本服务条款(特别是加粗部分),未成年人应在您监护人的陪同下阅读。您使用本服务即表示您接受本服务条款(包括本公司对本服务条款随时所做的任何修改)以及届时有效的其他规则。如果其他规则与本服务条款之间存在任何冲突,除非另有说明,否则本服务条款应优先适用于本服务。
+ </p>
+ <h4> 一、本系统服务 </h4>
+ <p>
+ 1.本服务包括但不限于:本公司通过本系统的电脑或移动客户端、本系统的相关网站、微信公众号、微信小程序等平台提供的所有服务。
+ </p>
+ <p>
+ 2.如果您希望使用本系统自动续费服务,您还需要与本公司另行签订有关自动续费服务的协议(“独立协议”)。如果独立协议与本服务条款之间有任何冲突,应优先适用独立协议。
+ </p>
+ <h4> 二、本公司运用自己的操作系统通过国际互联网络为您提供本系统服务。</h4>
+ <p> 您必须:
+ </p>
+ <p>
+ 1.认真阅读并遵守本服务条款及其他规则。
+ </p>
+ <p>
+ 2.自行准备设备,包括与本服务有关的终端设备(如电脑或移动终端设备)和必要的网络接入设备等。
+ </p>
+ <p>
+ 3.承担个人上网和与本服务有关的费用。
+ </p>
+ <p>
+ 4.遵守中华人民共和国相关法律法规(如果用户是中华人民共和国境外的使用者,还应同时遵守其所在国家或地区的法律法规)。
+ </p>
+ <p>
+ 若本公司有需要,您有义务提供本系统在用户部署时的各种安装及运行环境,包括但不限于IP地址、操作系统和网络环境等。
+ </p>
+ <h4>三、服务质量监测</h4>
+ <p>
+ 1.为了监测本系统的服务质量,在法律法规允许的范围内,本系统在适当的时候会把软件运行时与服务质量有关的基本数据(包括但不仅限于查询延迟、本公司提供服务的服务器地址等)发送到本公司服务器。
+ </p>
+ <p>
+ 2.本公司会按照本服务条款及其他规则提供本服务,但是不承诺解决非因本公司引起的问题,包括且不限于您电脑或移动终端软硬件故障、您使用不兼容的浏览器、您所在网络出现故障、您的网络接入停止解析本服务相关域名或者中断和本服务所在服务器的连接等。
+ </p>
+ <h4> 四、注册与登录</h4>
+ <p>
+ 1.您可以通过本邮箱帐号或本系统认可的其他第三方平台帐号注册及登录本服务。
+ </p>
+ <p>
+ 2.您在注册、授权登录及使用本服务时应遵守中华人民共和国法律法规、社会主义制度、国家利益、公民合法权益、公共秩序、社会道德风尚和信息真实性等七条底线,不得在注册资料中出现违法和不良信息,且您保证在注册和使用本服务时,不得有以下情形:
+ </p>
+ <p>
+ (1)违反宪法或法律法规规定的;
+ </p>
+ <p>
+ (2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;
+ </p>
+ <p>
+ (3)损害国家荣誉和利益的,损害公共利益的;
+ </p>
+ <p>
+ (4)煽动民族仇恨、民族歧视,破坏民族团结的;
+ </p>
+ <p>
+ (5)破坏国家宗教政策,宣扬邪教和封建迷信的;
+ </p>
+ <p>
+ (6)散布谣言,扰乱社会秩序,破坏社会稳定的;
+ </p>
+ <p>
+ (7)散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;
+ </p>
+ <p>
+ (8)侮辱或者诽谤他人,侵害他人合法权益的;
+ </p>
+ <p>
+ (9)含有法律、行政法规禁止的其他内容的。
+ </p>
+ <p>
+ 3.根据相关法律、法规规定以及考虑到本服务的重要性,您同意:
+ </p>
+ <p>
+ (1)在注册或授权登录时,提交详尽且准确的注册资料(且应及时更新以确保相关资料信息真实有效),包括但不限于您真实有效且完整的身份信息以进行实名认证,并授权本公司采集您的身份信息对其进行核实、校验,或委托第三方向数据源提供您的身份信息进行实名认证处理。若您提供的注册资料不准确、不真实或含有违法或不良信息的,本公司有权不予注册,并保留随时终止您使用本公司各项服务的权利;
+ </p>
+ <p>
+ (2)您不得以营利、任何不正当手段或以违反诚实信用原则等为自己或他人开通或使用本服务,不得转让、售卖、转借、出租、分享本服务帐号;
+ </p>
+ <p>
+ (3)您须对您开通或使用本服务的所有行为和事件承担全部责任。如果您未保管好自己的帐号或密码,或在注册或使用本服务时违反法律法规、本服务条款或其他规则,给您、本公司或第三方造成任何损害,您应就该等损害承担全部责任;
+ </p>
+ <p>
+ (4)在任何情况下,本公司一旦合理地认为您存在任何违反法律法规、本服务条款或其他规则的行为,本公司有权在任何时候,不经事先通知中止或终止向您提供服务。
+ </p>
+ <h4> 五、服务费用</h4>
+ <p>
+ 1.您理解并同意本系统有权根据实际需要对本服务的服务内容、服务方式、是否收费、收费标准及收费方式等进行调整,在相关服务页面或以其他合理方式进行通知,并在通知后生效。您继续使用相关服务,视为您同意本系统的前述调整。
+ </p>
+ <p>
+ 2.您理解并同意本系统有权决定新增服务项目是否收费,您有权选择接受或拒绝该项目服务。
+ </p>
+ <p>
+ 3.如您使用本系统的收费项目,则您应当按本系统的收费规定支付费用;如您未支付费用或欠费,则本系统有权暂停或停止向您提供此项服务。
+ </p>
+ <p>
+ 4.您在此确认并接受,无论本服务条款是否有相反约定,您一旦为组织开通任何付费服务,则该组织无法恢复至免费版本,如您未支付费用或欠费,则本系统有权暂停或停止向该组织提供全部服务。
+ </p>
+ <h4>六、用户使用规则</h4>
+ <p>
+ 1.本系统仅供您自行使用,不得销售、转让、出租、共享、许可或以其它方式提供给任何第三方使用。如果您要销售、转让、出租、共享、许可或以其它方式提供本系统或者与本系统有关或派生的任何资料、服务或软件,则必须事先得到本公司的书面同意。
+ </p>
+ <p>
+ 2.您不得滥用本服务,您在此理解并同意,任何经由本服务上传、发布、发送或以任何其他方式传送的即时信息、资讯、资料、文字、软件、音乐、音讯、照片、图形、视讯、信息、用户的注册资料或其他资料等(以下简称“该等内容”),无论系公开还是私下,均由帐号所有人、该等内容提供者、使用者对其上传、使用行为承担连带责任。本系统无法监督控制该等内容,也无法对用户的使用行为进行全面控制,因此不能保证该等内容的合法性、正确性、完整性、真实性或品质。
+ </p>
+ <p>
+ 3.您应对您通过本系统进行的任何行为承担法律责任,如因该等行为存在权利瑕疵或侵犯了第三方的合法权益,导致本公司及其关联公司面临任何投诉、举报、质询、索赔、诉讼,或遭到国家相关部门处罚,或者使本公司及其关联公司因此遭受任何名誉、声誉或者财产上的损失,您应尽最大努力积极地采取一切可能的措施予以补救,并确保本公司及其关联公司免受上述任何索赔、诉讼、处罚等的影响。同时您应对本公司及其关联公司因此遭受的全部的直接及间接损失承担损害赔偿责任。
+ </p>
+ <p>
+ 4.本服务可能接入或链接至第三方网站或服务,因该等第三方网站或服务由相关的第三方负责运营,本系统无法对该等第三方网站或服务进行控制。您使用该等第三方网站或服务(包括您向该等第三方提供的任何信息),须受第三方的服务条款及信息保护声明约束,您需要仔细阅读其条款。如您发现这些第三方网站或服务存在风险时,建议您终止相关操作以保护您的合法权益,如您因使用或依赖上述第三方网站或服务所导致的损失或损害,本公司不承担任何责任。
+ </p>
+ <h4> 七、知识产权</h4>
+ <p>
+ 1.您理解并认可本公司拥有对本系统、本服务及其衍生物的所有权及知识产权。您同意不会修改、改编、翻译本系统软件、创作本系统的派生作品、通过反编译、反向工程、反汇编或其它方式从本系统得到源代码。您同意不会删除、掩盖或更改本公司或任何第三方的版权声明、商标、标识或其它知识产权声明。本公司提供的网络服务中包含的标识、版面设计、排版方式、文本、图片、图形等均受著作权、商标权及其它法律保护,未经相关权利人事先书面同意,您不得在任何平台直接或间接发布、使用、出于发布或使用目的进行改写或再发行上述内容,或将上述内容用于其他任何商业目的。
+ </p>
+ <p>
+ 2.您应保证对于您通过本系统保存、分享或使用的该等内容,您为所有权人或已取得合法授权,并且该等内容不会违反任何适用的法律法规、也不侵犯任何第三方的合法权益。如果第三方提出异议,本系统有权根据独立判断删除相关的内容,且有权追究您的法律责任。如因此给本公司或任何第三方造成损失的,您应承担全部的损害赔偿责任。
+ </p>
+ <p>
+ 3.对于您通过本服务公开发布的该等内容,您同意许可本公司在全球范围内享有免许可费、非独家的、可再许可及永久有效的使用权利。本公司可以自行决定以何种方式使用(包括但不限于复制、改编、修改、创建衍生作品、翻译)、传播该等内容。同时您授权本公司就任何第三方对该等内容或其衍生品的侵权以自己名义提起诉讼,并获得全部赔偿。您保证有权或已取得充分且必要的授权对本公司进行此授权。虽有前款保留权利之约定,但不代表本公司一定会进行上述使用、传播行为,且此权利保留仅针对您已公开发布的该等内容,不涉及您未公开的信息。若您与本公司就此另行签订书面协议,则该协议条款应优先于本服务条款。
+ </p>
+ <h4> 八、用户隐私制度</h4>
+ <p>
+ 1.尊重您个人隐私是本公司的一项基本政策。 请您仔细审阅 《本系统隐私政策》(下称“该隐私政策”)
+ ,一旦您使用或在本公司更新该隐私政策后继续使用本服务,即视为您同意该隐私政策并同意本公司按照该隐私政策处理您的相关个人信息。请您完整阅读该隐私政策,以帮助您更好地保护您的个人信息。
+ </p>
+ <p>
+ 2.如您是未满18周岁的未成年人,请您通知您的监护人共同阅读并确认《本系统未成年人个人信息保护规则及监护人须知》
+ ,并在您使用本服务或提交任何个人信息之前,务必寻求他们的同意和指导。
+ </p>
+ <h4>九、年龄限制</h4>
+ <p>
+ 1.您确认,您应当具备中华人民共和国法律规定的与您行为相适应的民事行为能力,确保有能力对您使用本服务的一切行为独立承担责任。若您不具备前述主体资格或您是未满十八周岁的未成年人,请在您的监护人同意本服务条款内容并同意您使用本服务之后使用本服务;本公司在依据法律规定或本服务条款约定要求您承担责任时,有权向您的监护人追偿。
+ </p>
+ <h4>十、责任限制</h4>
+ <p>
+ 1.在适用法律允许的最大范围内,本公司明确表示不提供任何其他类型的保证,不论是明示的或默示的,包括但不限于适销性、适用性、可靠性、准确性、完整性、及时性、无病毒以及无错误的任何默示保证和责任。
+ </p>
+ <p>
+ 2.在适用法律允许的最大范围内,本公司就如下事项向您做出任何声明或担保:
+ </p>
+ <p>
+ (1)本服务会满足您的所有需求;
+ </p>
+ <p>
+ (2)本服务会连续无中断、及时、安全或没有错误;
+ </p>
+ <p>
+ (3)您使用本服务而获得的任何信息一律准确可靠;
+ </p>
+ <p>
+ (4)作为本服务一部分的任何软件操作或功能瑕疵将获得修正。
+ </p>
+ <p>
+ 3.在适用法律允许的最大范围内,本公司不因您使用本服务引起的或与本服务有关的任何意外的、特殊的或间接的损害或请求(包括但不限于因人身伤害、因隐私泄漏、因未能履行包括诚信或合理谨慎在内的任何责任、因过失和因任何其他金钱上的损失或其他损失而造成的损害赔偿)承担任何责任。
+ </p>
+ <h4> 十一、不可抗力条款</h4>
+ <p>
+ 本公司对不可抗力导致的损失不承担责任。本服务条款所指不可抗力包括:自然灾害、法律法规或政府指令的变更以及因网络服务特性而特有的原因,例如境内外基础电信运营商的故障、计算机或互联网相关技术缺陷、互联网覆盖范围限制、计算机病毒、黑客攻击等因素,及其他合法范围内的不能预见、不能避免并不能克服的客观情况。
+ </p>
+ <h4>十二、通知</h4>
+ <p>
+ 所有发给您的通知都可通过电子邮件、站内通知、微信公众号通知、网站或客户端中显著位置公告的方式进行传送。本公司将通过上述方法之一将消息传递给您,告知您本服务条款的修改、本服务的变更或其它重要事项。同时,本公司保留在本系统中投放商业性广告的权利以及向您的邮箱发布商业性广告的权利,您有权在相关广告邮件中选择拒绝接收此类邮件广告等信息。
+ </p>
+ <h4>十三、保障</h4>
+ <p>
+ 您同意保障和维护本公司的利益,负责支付由您或您创建的组织或组织成员违反本服务条款和/或其他规则引起的律师费用、损害补偿费用、政府机关处罚费用和其它侵权赔偿费用等。
+ </p>
+ <h4> 十四、终止</h4>
+ <p>
+ 1.您可自行决定随时终止本服务,但除本服务条款另有约定外,您将无权要求本公司退还截至该终止日期时已支付费用或者减免您应付费用。
+ </p>
+ <p>
+ 2.鉴于网络服务的特殊性,本公司有权随时变更、中断或终止部分或全部服务,或变更、删除、转移您储存或发布在本系统的内容。本公司保留采取前述行为而不需通知您的权利。您确认并接受本公司行使前述变更、中断或终止服务的权利,本公司不需就此对您或第三方承担任何责任。
+ </p>
+ <p>
+ 3.如果您是付费用户,本系统有权通过您注册资料中的任一联系信息(如有)提前三十(30)天向您发出终止本服务的通知,并按比例退还截至终止生效日期时未消费的任何预付费用。您确认并知悉,除法律有明确规定的情况外,本公司有权不经您申请并直接为您办理退款,具体退款的条件、流程等以相关服务页面公布的规则为准。
+ </p>
+ <p>
+ 4.本服务需要定期或不定期地对提供本服务的平台或相关的设备进行检修或者维护,如因此类情况造成本服务在合理时间内的中断,本公司无需为此承担任何责任,但本公司应尽可能事先进行通告。
+ </p>
+ <p>
+ 5.如果您因本公司违约而终止使用本服务,则您获得的唯一且排他性的救济以及本公司对该等违约的全部责任不超过您根据本服务条款或其他书面协议就本服务向本公司支付的费用。
+ </p>
+ <h4>十五、法律</h4>
+ <p>
+ 1.本服务条款的成立、生效、履行、解释及纠纷解决,适用中华人民共和国大陆地区法律(不包括冲突法)。
+ </p>
+ <p>
+ 如果出现纠纷,双方协商一致解决;如果双方无法通过协商解决争端,则任何一方均有权向被告住所地人民法院提起诉讼解决。
+ </p>
+ </el-card>
+ </div>
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+.content {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ margin: auto;
+ max-width: 1000px;
+ padding: 40px 100px 100px 100px;
+ overflow: auto;
+}
+
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/LicenseSecrecy.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/LicenseSecrecy.vue
new file mode 100644
index 0000000..450f4fe
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/LicenseSecrecy.vue
@@ -0,0 +1,636 @@
+<template>
+ <div style="background-color: #f5f4f4;">
+ <el-card class="content">
+ <h3 style="text-align: center;">隐私政策</h3>
+ <p>
+ 【前言】本系统(指本系统网站及客户端程序、移动应用产品、微信公众号、小程序,以下统称“本系统”或“我们”)一向庄严承诺保护使用本系统服务之用户(以下统称“用户”或“您”)的个人信息及隐私安全。您在使用本系统服务时,我们可能会收集和使用您的相关个人信息。我们希望通过《本系统隐私政策》(以下简称“本政策”)向您说明我们在收集和使用您相关个人信息时对应的处理规则,以及我们为您提供的访问、更正、删除和保护这些个人信息的方式等相关事宜,以便更好地保障您的权益。
+ </p>
+ <p>
+ 【特别提示】请您在使用本系统服务前,仔细阅读(未成年人请在监护人陪同下阅读)并了解本政策,特别是加粗标注的内容。一旦您开始使用或在我们更新本政策后继续使用我们的产品或服务,即意味着您同意本政策(包括更新版本)并同意我们按照本政策(包括更新版本)收集、使用、存储
+ 、共享、转让和披露您的相关个人信息。如果您不同意本政策的内容,将可能导致本系统服务无法正常运行,或者无法达到我们拟达到的服务效果,您应立即停止访问/使用本系统服务。未满十八周岁的用户,同时适用《本系统未成年人个人信息保护规则及监护人须知》。
+ </p>
+ <p>
+ 在阅读完本政策后,如您对本政策或与本政策相关的事宜有任何问题,您可通过本政策“如何联系我们”章节所列的反馈渠道联系我们,我们会尽快为您作出解答。
+ </p>
+
+ <h4>
+ 一、我们如何收集和使用您的个人信息
+ </h4>
+ <p>
+ 我们收集您的个人信息主要是为了您和其他用户能够更容易和更满意地使用本系统服务。本系统的目标是向所有的互联网用户提供安全、有趣及有教益的上网经历,而这些信息有助于我们实现这一目标。
+ (一)我们将通过以下途径收集和获得您的个人信息:
+ </p>
+ <p>
+ 1、您提供的信息。例如:
+ </p>
+ <p>
+ (1)您在注册本系统服务的帐号或使用本系统服务时,向我们提供的信息;
+ </p>
+ <p>
+ (2)您通过本系统服务向第三方提供的共享信息,以及您使用本系统服务时所存储的信息。
+ </p>
+ <p>
+ 请注意,如您在本系统服务中其他用户可见的公开区域内上传或发布的信息中、您对其他人上传或发布的信息作出的回应中公开您的信息,该等信息可能会被他人收集并加以使用。当您发现他人不正当地收集或使用您的信息时,可通过本政策“如何联系我们”章节所列的反馈渠道联系我们。
+ </p>
+ <p>
+ 2、第三方共享的您的信息。亦即第三方使用本系统服务时所提供有关您的共享信息。
+ </p>
+ <p>
+ 3、我们获取的您的信息。您在使用本系统服务时,我们收集、汇总、记录的信息,例如日志信息、位置信息 、设备信息。
+ </p>
+ <p>
+ (二)我们会出于以下目的,收集和使用您以下类型的个人信息:
+ </p>
+ <p>
+ 我们希望提供给您的产品和服务是完善的,所以我们会不断改进我们的产品和服务,这意味着随着产品和服务的迭代、拓展、升级等,我们可能会经常推出新的服务或业务功能或重新划分业务功能,并可能需要收集新的个人信息或变更个人信息使用目的或方式。如果我们要将您的个人信息用于本政策中未载明的其他用途或额外收集未提及的其他个人信息,我们会依法通过页面提示、交互流程、网站公告或其他方式另行征得您的同意。一旦您同意,该等额外用途将视为本政策的一部分,该等额外个人信息也将适用本政策。在此过程中,您可通过本政策“如何联系我们”章节所列的反馈渠道联系我们,我们会尽快为您作出解答。
+ </p>
+ <p>
+ 1、帮助您完成注册及登录
+ </p>
+ <p>
+ 为便于我们为您提供持续稳定的服务并保障您使用本系统服务的安全性,我们需要您提供基本注册或登录信息,包括手机号码、电子邮箱地址,并创建您的帐号、用户名和密码。在部分单项服务中,如果您仅需使用浏览、搜索等基本功能,您不需要注册成为本系统用户及提供上述信息。
+ </p>
+ <p>
+ 您也可以在注册、登录或后续使用过程中,填写或补充您的其他额外信息(包括您的昵称、头像、性别、地区、个人简介),这将有助于我们给您提供个性化和更优的服务体验,但如果您不提供这些信息,并不会影响您使用本系统服务的基本功能。
+ </p>
+ <p>
+ 2、实现身份认证
+ </p>
+ <p>
+ 依照相关法律法规规定及监管要求,或为满足用户身份真实核验、保障系统和服务安全及其他特定服务功能(包括分享笔记功能及评论笔记功能)等需要,我们可能需要您提供真实身份信息(例如姓名、身份证件、手机号)及其他必要的身份信息以完成身份认证。如果您不提供上述信息,我们将不能向您提供相关的功能及服务。
+ 为实现身份认证的目的,您同意并授权我们可能以自行或委托第三方向有关身份认证机构(如个人征信机构、政府部门等)提供、查询、核对您的前述身份信息。
+ </p>
+ <p>
+ 请注意,您的身份信息 、生物识别信息等属于个人敏感信息 ,请您谨慎提供,如果拒绝提供,您将可能无法获得相关服务,但不影响其他功能与服务的正常使用。
+ </p>
+ <p>
+ 3、维护基础功能的正常运行
+ </p>
+ <p>
+ 在您使用我们服务过程中,为向您提供浏览、搜索等基本功能,并识别帐号异常状态、了解产品适配性、保障本系统服务的网络及运营安全,以维护前述基本功能的正常运行,我们可能会直接或者间接地收集、存储关于您使用的服务以及使用方式的信息并将这些信息进行关联,这些信息包括:
+ </p>
+ <p>
+ (1)日志信息:
+ </p>
+ <p>
+ 当您使用我们的服务时(包括后台运行状态),我们可能会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。例如:您的登录帐号、搜索查询内容、IP地址、浏览器的类型、电信运营商、网络环境、使用的语言、访问日期和时间及您访问的网页浏览记录、Push打开记录、停留时长、刷新记录、发布记录、关注、订阅、收藏及分享。
+ </p>
+ <p>
+ (2)设备信息:
+ </p>
+ <p>
+ 当您使用我们的服务时(包括后台运行状态),我们可能会接收并记录您所使用的设备相关信息。包括:设备机型、操作系统及版本、客户端版本、设备分辨率、包名、设备设置、进程及软件列表、设备标识符(IMEI/Android
+ ID/IDFA/OpenUDID/GUID/SIM 卡IMSI 信息)、软硬件特征信息、设备所在位置相关信息(例如IP
+ 地址、GPS位置以及能够提供相关信息的WLAN接入点、蓝牙和基站传感器信息)。
+ 为了收集上述基本的个人设备信息,我们将会申请访问您的设备信息的权限,我们收集这些信息是为了向您提供我们基本服务和基础功能,如您拒绝提供上述权限将可能导致您无法使用本系统服务。
+ </p>
+ <p>
+ 请注意,单独的设备信息、日志信息是无法识别特定自然人身份的信息。如果我们将这类非个人信息与其他信息结合用于识别特定自然人身份,或者将其与个人信息结合使用,则在结合使用期间,这类非个人信息将被视为个人信息,除取得您授权或法律法规另有规定外,我们会将该类个人信息做匿名化、去标识化处理。这些信息在结合使用期间,将作为您的个人信息按照本政策处理与保护。
+ </p>
+ <p>
+ 4、向您提供服务
+ </p>
+ <p>
+ (1)您在使用本系统服务时、上传和/或发布信息以及进行相关行为(例如您在本系统服务中输入和/或上传语音、文档)时,我们将收集您上传、发布或形成的信息,并使用您的昵称、头像和发布内容以作展示。请注意,您公开发布的信息中可能包含您的个人信息或个人敏感信息,请您在发布前慎重考虑。如您发布的信息涉及到他人的个人信息的,您应当在发布前征得他人同意。
+ </p>
+ <p>
+ (2)您在使用本系统“链接收藏”功能以及在本系统中复制粘贴信息时,我们将在设备本地访问您剪切板中的内容,我们不会上传您剪切板中的内容至我们的服务器。
+ </p>
+ <p>
+ (3)当您在使用部分广告交互功能时(如摇动),我们会调用您的陀螺仪传感器、加速度传感器及重力传感器;当您在本系统内使用拍照功能时,我们会调用您的加速度传感器,以优化防抖效果。请您理解,单独的设备传感器数据不涉及任何个人位置信息且无法与其他信息结合用于识别特定自然人的身份。
+ </p>
+ <p>
+ 5、帮助您完成下单、支付并向您交付商品或服务
+ </p>
+ <p>
+ (1)当您在本系统服务中订购具体商品及/或服务时,我们会通过系统为您生成购买该商品及/或服务的订单。在下单过程中,您至少需提供收货人个人身份信息、姓名、收货地址、邮政编码、收货人、联系电话、支付状态信息。如果您拒绝提供此类信息,我们将无法完成相关交付服务。如您通过本系统服务为其他人订购商品或服务,您需要提供该实际订购人的前述信息。向我们提供该实际订购人的前述信息之前,您需确保您已经取得其授权同意。在您使用本系统服务特定识别功能时,我们将会收集、存储您上传的图片、文字、语音信息,
+ 我们的相关识别程序会对这些数据进行处理分析并返回对应的文字结果。
+ </p>
+ <p>
+ (2)为向您展示帐号的交易信息并保障交易安全,我们会收集您在使用本系统服务过程中产生的信息(例如您所购买的商品或服务信息、具体订单号、订单创建时间、交易金额)用于向您展示及便于您对订单进行管理。
+ </p>
+ <p>
+ (3)为完成订单支付、交付商品或服务、确认交易状态及为您提供售后与争议解决服务,
+ 我们会通过您基于交易所选择的交易对象、支付机构、物流公司等收集与交易进度相关的您的帐号、订单、交易、支付、物流信息,或将您的交易信息共享给上述服务提供者。
+ </p>
+ <p>
+ 6、为您提供客服或其他用户响应功能
+ </p>
+ <p>
+ 当您联系我们的客服或使用其他用户响应功能时(例如提出售中售后申请、个人信息保护投诉或建议、其他客户投诉和需求),我们可能需要您提供必要的个人信息以匹配并核验您的用户身份,以便保障您的帐号与系统安全。我们可能还会保存您的联系方式(您与我们联系时使用的或您向我们主动提供的其他联系方式)、您与我们的通信/通话记录和内容、与您需求相关联的其他必要信息,以便与您联系或帮助您解决问题,或记录相关问题的处理方案及结果。
+ </p>
+ <p>
+ 7、我们通过间接方式收集到的您的个人信息
+ </p>
+ <p>
+ 基于您选择使用的本系统服务,我们可能从关联方、第三方合作伙伴获取您授权共享的相关信息。例如,当您使用第三方平台的帐号登录本系统服务时,我们将根据您的授权获取该第三方帐号下的相关信息(包括:用户名、昵称、头像,具体以您的授权内容为准),并在您同意本政策后将您的第三方帐号与您的本系统服务帐号绑定,使您可以通过第三方帐号直接登录并使用本系统服务。我们将在符合相关法律法规规定,并依据与关联方或第三方合作伙伴的约定、确信其提供的信息来源合法的前提下,收集并使用您的这些信息。
+ </p>
+ <p>
+ 8、向您提供商品或服务的信息展示和推送
+ </p>
+ <p>
+ 基于您向我们提供的信息、我们可能收集的信息及我们通过间接方式收集到的您的信息(例如 您的浏览及搜索记录
+ 、设备信息、位置信息、订单信息、手机号码、您参与本系统线上或线下活动填写问卷调查上的个人信息),我们可能会基于上述一项或几项信息的结合,进行推荐算法建模、程序化广告推荐算法建模、用户行为分析及用户画像,用于提取您的浏览、搜索偏好、行为习惯、位置信息相关特征,以便向您提供更契合您需求的页面展示和推荐个性化内容。我们也可能基于特征标签通过电子邮件、短信或其他方式向您发送营销信息、用户调研,帮助我们改善本系统服务以及提供或推广我们/第三方的如下商品和服务,包括但不限于:在线教育服务、语言翻译服务、语音识别和语音合成类开发平台服务、智能硬件服务、云应用服务、电子商务、即时通讯服务、网上媒体服务、互动娱乐服务、社交网络服务、支付服务、互联网搜索服务、位置和地图服务、应用软件和服务、数据管理软件和服务、网上广告服务、互联网金融及其他社交媒体、娱乐、网络游戏、电子商务、资讯及通讯软件和服务;及第三方商品和服务,包括但不限于:互联网服务、物流服务、银行及金融服务、娱乐、书册和其他刊物服务、广告服务、积分和奖励计划、食物和餐饮、体育、音乐、电影、电视、现场表演和其他艺术和娱乐、书册、杂志和其他刊物、服装和配饰、珠宝、化妆品、个人健康和卫生、电子、收藏品、家用器皿、电器、家居装饰和摆设、宠物、汽车、酒店、交通和旅游、银行、保险及金融服务、积分和奖励计划,以及我们认为可能与您相关的其他商品和服务。
+ </p>
+ <p>
+ 如您想管理我们的个性化服务,您可以在安卓系统中我的-设置-隐私与安全-个性化服务或iOS系统中我的-设置-个性化服务中进行设置。
+ </p>
+ <p>
+ 9、为您提供安全保障
+ </p>
+ <p>
+ 为提高您使用我们及合作伙伴提供服务的安全性,保护您或其他用户或公众的人身财产安全免遭侵害,更好地预防钓鱼网站、欺诈、网络漏洞、计算机病毒、网络攻击、网络侵入等安全风险,更准确地识别违反法律法规或本系统服务相关协议规则的情况,我们可能会收集、使用或整合您的帐号信息、交易信息、设备信息、日志信息以及我们关联公司、合作伙伴取得您授权或依据法律共享的个人信息,来综合判断您帐号及交易风险、进行身份验证、检测及防范安全事件,并依法采取必要的记录、审计、分析、处置措施。
+ </p>
+ <p>
+ 您了解并同意,在收集您的个人信息后,我们将通过技术手段对数据进行去标识化处理,去标识化处理的个人信息将无法识别您的身份,在此情况下我们有权使用已经去标识化的个人信息,对用户数据库进行分析并予以商业化的利用。
+ </p>
+ <p>
+ 10、您理解并同意,部分单项服务可能需要您在您的设备中开启特定的访问权限,以实现这些权限所涉及信息的收集和使用。例如:
+ </p>
+ <p>
+ (1)如我们访问您的位置信息 ,是为了将位置信息与蓝牙相关联,用于扫描及连接附近的云笔设备;
+ </p>
+ <p>
+ (2)如我们访问您的摄像头,是为了您可以通过摄像头使用文档扫描功能,以及拍摄图片 存储到笔记;
+ </p>
+ <p>
+ (3)如我们访问您的相册,是为了使您可以取用与上传设备中的照片、图片或视频,以便进行头像更换或添加图片到笔记;
+ </p>
+ <p>
+ (4)如我们访问您的麦克风,是为了使您可以创建语音笔记,以及使用语音笔记转写功能;
+ </p>
+ <p>
+ (5)您使用本系统服务可以上传视频文件,我们会申请访问该视频缓存文件,是为了存储和使您更为流畅的查看上传和保存的视频文件;
+ </p>
+ <p>
+ (6)在您允许我们开启存储权限后,我们可以获取到您的照片、媒体内容和文件等信息,这是为了方便您随时分享、存储您的笔记信息;
+ </p>
+ <p>
+ (7)如您允许我们开启电话权限(安卓系统),我们将读取移动网络信息,用于识别网络状态,以便支持“仅在WIFI连接时下载离线缓存”功能。同时,我们也会读取您的设备信息,用于个性化广告推送。您也可以在设置中主动关闭该权限;
+ </p>
+ <p>
+ (8)如您允许我们开启idfa广告追踪权限(iOS系统),我们将读取设备广告标识,用于个性化广告推送。您也可以在设置中主动关闭该权限。
+ </p>
+ <p>
+ 当您需要关闭任何功能权限时,大多数移动设备都会支持您的这项需求,具体方法请参考或联系您移动设备的服务商或生产商。请您注意,您开启任一权限即代表您授权我们可以收集和使用相关个人信息来为您提供对应服务,您一旦关闭任一权限即代表您取消了授权,我们将不再基于对应权限继续收集和使用相关个人信息,也无法为您提供该权限所对应的服务。但是,您关闭权限的决定不会影响此前基于您的授权所进行的个人信息收集及使用。
+ </p>
+ <p>
+ 11、征得授权同意的例外
+ </p>
+ <p>
+ 根据相关法律法规规定,以下情形中收集您的信息无需征得您的授权同意:
+ </p>
+ <p>
+ (1)与国家安全、国防安全直接相关的;
+ </p>
+ <p>
+ (2)与公共安全、公共卫生、重大公共利益直接相关的;
+ </p>
+ <p>
+ (3)与刑事侦查、起诉、审判和判决执行等直接相关的;
+ </p>
+ <p>
+ (4)出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
+ </p>
+ <p>
+ (5)所收集的个人信息是您自行向社会公众公开的;
+ </p>
+ <p>
+ (6)根据您的要求签订和履行合同所必需的;
+ </p>
+ <p>
+ (7)从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道;
+ </p>
+ <p>
+ (8)开展合法的新闻报道所必需的;
+ </p>
+ <p>
+ (9)法律法规规定的其他情形。
+ </p>
+ <p>
+ 12、有关个人敏感信息的提示
+ </p>
+ <p>
+ 个人敏感信息,是指一旦泄露、非法提供或滥用可能危害人身和财产安全,极易导致个人名誉、身心健康受到损害或歧视性待遇等的个人信息。以上由您提供或我们收集您的信息中,可能包含您的个人敏感信息,包括姓名、身份证件号码、消费记录、交易信息、网页浏览记录和位置信息。请您谨慎并留意
+ 个人敏感信息,您同意我们可以按本政策所述的目的和方式来处理您的个人敏感信息。
+ </p>
+ <h4>
+ 二、我们如何使用COOKIES或同类技术
+ </h4>
+ <p>
+ (一)COOKIES
+ </p>
+ <p>
+ 我们或我们的第三方合作伙伴可能通过COOKIES或同类技术获取和使用您的信息,并将该等信息存储为日志信息。
+ </p>
+ <p>
+ 通过使用COOKIES,我们向用户提供简单易行并富个性化的网络体验。一个COOKIES是少量的数据,它们从一个网络服务器送至您的浏览器并存在计算机硬盘上。我们使用COOKIES是为了让其用户可以受益。比如,为使得本系统虚拟社区的登录过程更快捷,您可以选择把用户名存在一个COOKIES中。这样下次当您要登录本系统的服务时能更加方便快捷。COOKIES能帮助我们确定您连接的页面和内容,您在本系统特定服务上花费的时间和您所选择的本系统服务。
+ </p>
+ <p>
+ COOKIES使得我们能更好、更快地为您服务,并且使您在本系统服务上的经历更富个性化。然而,您应该能够控制COOKIES是否以及怎样被您的浏览器接受。请查阅您的浏览器附带的文件以获得更多这方面的信息。
+ </p>
+ <p>
+ 我们和第三方合作伙伴可能通过COOKIES或同类技术收集和使用您的信息,并将该等信息存储。
+ </p>
+ <p>
+ 我们使用自己的COOKIES或同类技术,可能用于以下用途:
+ </p>
+ <p>
+ 1、记住您的身份。例如:COOKIES或同类技术有助于我们辨认您作为我们的注册用户的身份,或保存您向我们提供有关您的喜好或其他信息;
+ </p>
+ <p>
+ 2、分析您使用我们服务的情况。我们可利用COOKIES或同类技术来了解您使用本系统服务进行什么活动、或哪些服务最受欢迎;
+ </p>
+ <p>
+ 3、广告优化。COOKIES或同类技术有助于我们根据您的信息,向您提供与您相关的广告而非进行普遍的广告投放。
+ </p>
+ <p>
+ 我们为上述目的使用COOKIES或同类技术的同时,可能将通过COOKIES或同类技术收集的非个人身份信息汇总提供给广告商和其他伙伴,用于分析您和其他用户如何使用本系统服务并用于广告服务。
+ </p>
+ <p>
+ 本系统服务上可能会有广告商和其他合作方放置的COOKIES或同类技术。这些COOKIES和或同类技术可能会收集与您相关的非个人身份信息,以用于分析用户如何使用该等服务、向您发送您可能感兴趣的广告,或用于评估广告服务的效果。这些第三方COOKIES或同类技术收集和使用该等信息不受本政策约束,而是受到其自身的信息保护声明约束,我们不对第三方的COOKIES或同类技术承担责任。
+ </p>
+ <p>
+ 您可以通过浏览器或用户选择机制拒绝或管理COOKIES或同类技术。但请您注意,如果您停用COOKIES或同类技术,我们有可能无法为您提供最佳的服务体验,某些服务也可能无法正常使用。同时,您仍然将收到广告,只是这些广告与您的相关性会降低。
+ </p>
+ <p>
+ (二)网站信标和像素标签
+ </p>
+ <p>
+ 除 Cookies
+ 外,我们还会在网站上使用网站信标和像素标签等其他同类技术。我们向您发送的电子邮件可能含有链接至我们网站内容的地址链接,如果您点击该链接,我们则会跟踪此次点击,帮助我们了解您的产品或服务偏好以便于我们主动改善客户服务体验。网站信标通常是一种嵌入到网站或电子邮件中的透明图像。借助于电子邮件中的像素标签,我们能够获知电子邮件是否被打开。如果您不希望自己的活动以这种方式被追踪,则可以随时从我们的寄信名单中退订。
+ </p>
+ <h4>
+ 三、我们可能共享、转让和披露的个人信息
+ </h4>
+ <p>
+ (一)共享
+ </p>
+ <p>
+ 我们非常重视保护您的个人信息。除以下情形外,未经您同意,我们不会与我们及我们的关联方之外的任何第三方共享您的个人信息:
+ </p>
+ <p>
+ 1、向您提供我们的服务。我们可能向合作伙伴及其他第三方共享您的信息,以实现本系统服务的功能,让您正常使用您需要的服务。例如:提供支付服务的支付机构、提供数据服务(包括网络广告监测、数据统计、数据分析)的合作伙伴、第三方物流公司;
+ </p>
+ <p>
+ 2、维护和改善我们的服务。我们可能向合作伙伴及其他第三方共享您的个人信息,以帮助我们为您提供更有针对性、更完善的服务,例如:代表我们发出电子邮件或推送通知的通讯服务提供商;
+ </p>
+ <p>
+ 3、向委托我们进行推广的合作伙伴等第三方共享,目的是为了使该等委托方了解推广的覆盖面和有效性。比如我们可以告知该委托方有多少人看了他们的推广信息或在看到这些信息后购买了委托方的商品,或者向他们提供不能识别个人身份的统计信息,帮助他们了解其受众或顾客;
+ </p>
+ <p>
+ 4、与关联方的必要共享。为便于我们基于统一的帐号体系向您提供一致化服务以及便于您进行统一管理、个性化推荐、保障系统和帐号安全等,您的个人信息可能会在我们和我们的关联方之间进行必要共享。
+ </p>
+ <p>
+ 5、实现本政策第一条“我们如何收集和使用个人信息”部分所述的其他目的;
+ </p>
+ <p>
+ 6、履行我们在本政策或我们与您达成的其他协议中的义务和行使我们的权利;
+ </p>
+ <p>
+ 7、在法律法规允许的范围内,为了遵守法律、维护我们及我们的关联方或合作伙伴、您或其他本系统用户或社会公众利益、财产或安全免遭损害,比如为防止欺诈等违法活动和减少信用风险,我们可能与其他公司和组织交换信息。不过,这并不包括违反本政策中所作的承诺而为获利目的出售、出租、共享或以其它方式披露的信息;
+ </p>
+ <p>
+ 8、应您合法需求或经您的授权同意;
+ </p>
+ <p>
+ 9、应您的监护人合法要求而提供您的信息;
+ </p>
+ <p>
+ 10、根据与您签署的单项服务协议(包括在线签署的电子协议以及相应的平台规则)或其他的法律文件约定所提供;
+ </p>
+ <p>
+ 11、基于学术研究而提供;
+ </p>
+ <p>
+ 12、基于符合法律法规的社会公共利益而提供。
+ </p>
+ <p>
+ 我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息。对我们与之共享个人信息的公司、组织和个人,我们会与其签署严格的保密协定,要求他们按照我们的说明、本政策以及其他任何相关的保密和安全措施来处理信息。
+ </p>
+ <p>
+ (二)转让
+ </p>
+ <p>
+ 1、随着我们业务的持续发展,我们有可能进行合并、收购、资产转让或类似的交易,而您的信息有可能作为此类交易的一部分而被转移。我们会要求新的持有您个人信息的公司、组织继续受本政策的约束,否则,我们将要求该公司、组织重新向您征求授权同意。
+ </p>
+ <p>
+ 2、在获得您的明确同意后,我们会向第三方转让您的个人信息。
+ </p>
+ <p>
+ (三)披露
+ </p>
+ <p>
+ 我们仅会在以下情况下,且采取符合业界标准的安全防护措施的前提下,才会披露您的个人信息:
+ </p>
+ <p>
+ 1、根据您的需求,在您明确同意的披露方式下披露您所指定的信息;
+ </p>
+ <p>
+ 2、根据法律、法规的要求、强制性的行政执法或司法要求所必须提供您信息的情况下,我们可能会依据所要求的信息类型和披露方式披露您的信息。在符合法律法规的前提下,当我们收到上述披露信息的请求时,我们会要求接收方必须出具与之相应的法律文件,如传票或调查函。我们坚信,对于要求我们提供的信息,应该在法律允许的范围内尽可能保持透明。我们对所有的请求都进行了慎重的审查,以确保其具备合法依据,且仅限于执法部门因特定调查目的且有合法权利获取的数据。
+ </p>
+ <p>
+ (四)共享、转让、披露信息时事先征得授权同意的例外
+ </p>
+ <p>
+ 以下情形中,共享、转让、披露您的信息无需事先征得您的授权同意:
+ </p>
+ <p>
+ 1、与国家安全、国防安全直接相关的;
+ </p>
+ <p>
+ 2、与公共安全、公共卫生、重大公共利益直接相关的;
+ </p>
+ <p>
+ 3、与刑事侦查、起诉、审判和判决执行等司法或行政执法直接相关的;
+ </p>
+ <p>
+ 4、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
+ </p>
+ <p>
+ 5、您自行向社会公众公开的信息;
+ </p>
+ <p>
+ 6、从合法公开披露的信息中收集信息的,如合法的新闻报道、政府信息公开等渠道;
+ </p>
+ <p>
+ 7、与我们履行法律法规规定的义务相关的。
+ </p>
+ <p>
+ 根据法律规定,共享、转让、披露经去标识化处理的个人信息,且确保数据接收方无法复原并重新识别信息主体的,不属于个人信息的对外共享、转让及公开披露行为,对此类数据的保存及处理将无需另行向您通知并征得您的同意。
+ </p>
+ <h4>
+ 四、我们如何存储和保护个人信息
+ </h4>
+ <p>
+ (一)个人信息的存储
+ </p>
+ <p>
+ 除法律法规或监管部门另有规定外,我们仅在本政策所述目的所必需且最短的时限内存储您的个人信息。如我们终止服务或运营,我们将及时停止继续收集您个人信息的活动,同时会遵守相关法律法规要求提前向您通知,并在终止服务或运营后对您的个人信息进行删除或匿名化处理,但法律法规或监管部门另有规定的除外。
+ </p>
+ <p>
+ 我们在中华人民共和国境内运营中收集和产生的个人信息,存储在中国境内,以下情形除外:
+ </p>
+ <p>
+ 1、法律法规有明确规定;
+ </p>
+ <p>
+ 2、获得您的授权同意;
+ </p>
+ <p>
+ 3、您使用的本系统服务涉及跨境,本系统需要向境外提供您的个人信息。
+ </p>
+ <p>
+ 针对以上情形,我们会确保依据国家法律法规和相关监管部门的规定执行,并对您的个人信息提供足够的保护。
+ </p>
+ <p>
+ (二)个人信息的保护
+ </p>
+ <p>
+ 我们非常重视信息安全,成立了专门的安全团队,并采取一切合理可行的措施,保护您的个人信息:
+ </p>
+ <p>
+ 1、数据安全技术措施
+ </p>
+ <p>
+ 我们会采用符合业界标准的安全防护措施,包括建立合理的制度规范、安全技术来防止您的个人信息遭到未经授权的访问、使用、修改,避免数据的损坏或丢失。
+ </p>
+ <p>
+ 我们的服务采取了多种加密技术,例如在某些本系统服务中,我们将利用加密技术(例如SSL)对您的个人信息进行加密保存,并通过隔离技术进行隔离,以保护您的个人信息。
+ </p>
+ <p>
+ 在个人信息使用时,例如信息展示、信息关联计算,我们会采用多种数据脱敏技术增强信息在使用中的安全性。
+ </p>
+ <p>
+ 我们还会采用严格的数据访问权限控制和多重身份认证技术保护个人信息,避免数据被违规使用。
+ </p>
+ <p>
+ 2、我们为保护个人信息采取的其他安全措施
+ </p>
+ <p>
+ 我们有行业先进的以数据为核心,围绕数据生命周期进行的数据安全管理体系,从组织建设、制度设计、人员管理、产品技术等方面多维度提升整个系统的安全性。我们通过建立数据分类分级制度、数据安全管理规范、数据安全开发规范来管理规范个人信息的存储和使用。
+ </p>
+ <p>
+ 我们通过信息接触者保密协议、监控和审计机制来对数据进行全面安全控制。
+ </p>
+ <p>
+ 我们还会举办安全和隐私保护培训课程,加强员工的安全意识以及对于个人信息保护政策和相关规程的认识。
+ </p>
+ <p>
+ 3、我们仅允许有必要知晓这些信息的本公司公司员工、合作伙伴访问您的个人信息,并为此设置了严格的访问权限控制和监控机制。我们同时要求可能接触到您的个人信息的所有人员履行相应的保密义务。如果未能履行这些义务,可能会被追究法律责任或被中止与我们的合作关系。
+ </p>
+ <p>
+ 4、互联网并非绝对安全的环境,而且电子邮件、即时通讯、社交软件或其他服务软件等与其他用户的交流方式无法确定是否完全加密,我们建议您使用此类工具时请使用复杂密码,并注意保护您的信息安全。在通过本系统服务与第三方进行沟通或购买商品及服务时,您不可避免的要向交易对方或潜在的交易对方披露自己的信息,如联络方式或者邮政地址等。请您妥善保护自己的信息,仅在必要的情形下向他人提供。
+ </p>
+ <p>
+ 5、互联网环境并非百分之百安全,我们将尽力确保或担保您发送给我们的个人信息的安全性。如果我们的物理、技术、或管理防护设施遭到破坏,导致个人信息被非授权访问、公开披露、篡改、或毁坏,导致您的合法权益受损,我们将承担相应的法律责任。
+ </p>
+ <p>
+ 6、安全事件处置
+ </p>
+ <p>
+ 为应对个人信息泄露、损毁和丢失等可能出现的风险,我们制定了多项制度,明确安全事件、安全漏洞的分类分级标准及相应的处理流程。我们也为安全事件建立了的应急响应团队,按照安全事件处置规范要求,针对不同安全事件启动安全预案,进行止损、分析、定位、制定补救措施、联合相关部门进行溯源和打击。我们亦定期组织内部培训和应急演练,使得我们的相关工作人员掌握相应的应急处置策略和规程,在不幸发生信息安全事件后,我们将按照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。我们同时将及时将事件相关情况以邮件、信函、电话、推送通知等方式告知您,难以逐一告知信息主体时,我们会采取合理、有效的方式发布公告。同时,我们还将按照监管部门要求,主动上报信息安全事件的处置情况。
+ </p>
+ <p>
+ 请您理解,由于技术的限制以及风险防范的局限,即便我们已经尽量加强安全措施,也无法始终保证信息百分之百的安全。您需要了解,您接入本系统服务所用的系统和通讯网络,有可能因我们可控范围外的情况而发生问题。
+ </p>
+ <p>
+ 请您务必妥善保管好您的帐号、密码及其他身份要素。您在使用本系统服务时,我们会通过您的帐号、密码及其他身份要素来识别您的身份。一旦您泄露了前述信息,您可能会蒙受损失,并可能对您产生不利。如您发现帐号、密码及/或其他身份要素可能或已经泄露时,请您立即和我们取得联系,以便我们及时采取相应措施以避免或降低相关损失。
+ </p>
+ <h4>
+ 五、如何管理您的个人信息
+ </h4>
+ <p>
+ (一)访问、更新和删除
+ </p>
+ <p>
+ 我们鼓励您更新和修改您的个人信息以使其更准确有效。
+ </p>
+ <p>
+ 如您想查询、修改或删除您的部分信息,请登录本系统帐号个人中心或帐号设置页面(https://note.youdao.com/web/#/setting/account),我们为您提供了相关操作指引和操作设置。对于通过COOKIES或同类技术收集的您的信息,我们还在本政策第二条“我们如何使用COOKIES或同类技术”部分说明了向您提供的选择机制。
+ </p>
+ <p>
+ 除法律法规另有规定,当您更正、删除您的个人信息时,我们可能不会立即从备份系统中更正或删除相应的信息,但会在备份更新时更正或删除这些信息。
+ </p>
+ <p>
+ (二)公开与分享
+ </p>
+ <p>
+ 我们的多项服务可让您不仅与您的社交网络、也与使用该服务的所有用户公开分享您的相关信息,例如,您在本系统中所上传或发布的信息、您对其他人上传或发布的信息作出的回应,通过本系统中不特定用户可见的公开区域内上传或公布您的信息,以及包括与这些信息有关的位置数据和日志信息。只要您不删除您所公开或共享的信息,有关信息可能一直留存在公众领域;即使您删除共享信息,有关信息仍可能由其他用户或不受我们控制的第三方独立地缓存、复制或存储,或由其他用户或该等第三方在公众领域保存。如您将信息通过上述渠道公开或共享,由此造成您的信息泄露,我们不承担责任。因此,我们提醒并请您慎重考虑是否通过上述渠道公开或共享您的信息。
+ </p>
+ <p>
+ (三)帐号注销
+ </p>
+ <p>
+ 我们向您提供帐号注销的途径。在符合我们的服务条款约定条件及国家相关法律法规规定的情况下,您可以选择通过本政策“如何联系我们”章节所列的反馈渠道或通过在线客服联系我们,我们会尽快为您作出解答。
+ </p>
+ <p>
+ 在您的帐号注销之后,我们将停止为您提供全部或部分本系统服务,并依据您的要求,删除您的个人信息或做匿名化处理,但法律法规另有规定的除外。
+ </p>
+ <p>
+ (四)改变您授权同意的范围
+ </p>
+ <p>
+ 您总是可以选择是否向我们披露个人信息。有些个人信息是使用本系统服务所必需的,但大多数其他信息的提供是由您决定的。您可以通过删除信息、关闭设备功能、注销帐号等方式改变您授权我们继续收集信息的范围或撤回您的授权。
+ </p>
+ <p>
+ 当撤回授权后,我们无法继续为您提供撤回授权所对应的服务,也不再处理您相应的信息。但您撤回授权的决定,不会影响此前基于您的授权而开展的信息处理。
+ </p>
+ <p>
+ (五)个人信息副本获取
+ </p>
+ <p>
+ 如您需要您的个人信息的副本,您可以通过本政策“如何联系我们”章节所列的反馈渠道或通过在线客服联系我们,在核实您的身份后,我们将向您提供您在我们的服务中的个人信息副本(包括基本资料、身份信息),但法律法规另有规定的或本政策另有约定的除外。
+ </p>
+ <p>
+ (六)响应您的上述请求
+ </p>
+ <p>
+ 为保障安全,您可能需要提供书面请求,或以其他方式证明您的身份。我们可能会先要求您验证自己的身份,然后再处理您的请求。对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际(例如,涉及备份磁带上存放的信息)的请求,我们可能会予以拒绝。
+ </p>
+ <p>
+ 在以下情形中,我们将无法响应您的请求:
+ </p>
+ <p>
+ 1、与我们履行法律法规规定的义务相关的;
+ </p>
+ <p>
+ 2、与国家安全、国防安全直接相关的;
+ </p>
+ <p>
+ 3、与公共安全、公共卫生、重大公共利益直接相关的;
+ </p>
+ <p>
+ 4、与刑事侦查、起诉、审判和执行判决等直接相关的;
+ </p>
+ <p>
+ 5、我们有充分证据表明您存在主观恶意或滥用权利的;
+ </p>
+ <p>
+ 6、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
+ </p>
+ <p>
+ 7、响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的;
+ </p>
+ <p>
+ 8、涉及商业秘密的。
+ </p>
+ <h4>
+ 六、第三方服务
+ </h4>
+ <p>
+ 本系统服务可能接入或链接至第三方提供的社交媒体或其他服务(包括网站或其他服务形式)。包括:
+ </p>
+ <p>
+ (一)您可利用“分享”键将某些内容分享到第三方平台,或您可利用第三方服务登录本系统服务。这些功能可能会收集您的个人信息(包括您的日志信息),并可能在您的设备内装置COOKIES,从而正常运行上述功能;
+ </p>
+ <p>
+ (二)我们通过广告或我们服务的其他方式向您提供链接,使您可以链接至第三方的服务或网站;
+ </p>
+ <p>
+ (三)其他接入第三方服务的情形。例如,为实现本政策中声明的目的,我们可能会接入第三方服务商提供的SDK或其他类似的应用程序(如以嵌入代码、插件等形式),以便向您提供更好的客户服务和用户体验。
+ 目前,我们接入的第三方服务商主要包括以下几种类型:
+ </p>
+ <p>
+ 1、用于广告相关服务,包括广告展示、广告统计与监控、广告投放与广告监测归因、反作弊等;
+ </p>
+ <p>
+ 2、用于消息推送功能,包括手机厂商Push推送、特定事件提醒等;
+ </p>
+ <p>
+ 3、用于支付相关服务,包括订单支付、交易行为核验、收入结算、支付信息汇总统计等;
+ </p>
+ <p>
+ 4、用于在您同意的情况下获取设备位置权限、搜集设备信息和日志信息等;
+ </p>
+ <p>
+ 5、用于第三方授权服务,包括第三方帐号登录、将有关内容分享至第三方产品等;
+ </p>
+ <p>
+ 6、用于支持产品功能模块,包括语音识别、图片识别、翻译、在线客服、连接智能硬件等;
+ </p>
+ <p>
+ 7、用于优化产品性能,包括提高硬件配网能力、降低服务器成本、功能热修复等;
+ </p>
+ <p>
+ 8、用于帐号安全、产品加固相关服务,包括网络监测、域名解析、防劫持、反垃圾反作弊、加解密服务等;
+ </p>
+ <p>
+ 9、用于异常上报和统计分析功能,包括统计APP异常、统计并分析APP用户数据等。
+ </p>
+ <p>
+ 我们接入的部分第三方SDK或类似应用程序可能会收集您的个人信息(包括后台运行状态
+ ),包括但不限于IMEI、IMSI、设备MAC地址、软件列表、设备序列号、android
+ ID、WIFI的SSID、WIFI的BSSID,如您在我们的服务中使用这类由第三方提供的服务时,您同意将由其直接收集和处理您的信息。我们会评估这类第三方服务收集个人信息的合法性、正当性、必要性,要求该等第三方对您的个人信息采取保护措施,并严格遵守相关法律法规与监管要求。为了及时向您提供产品及服务的动态,我们会通过您设备的系统通知,向您推送活动通知等内容,为了实现消息推送功能,我们接入了消息推送类SDK。根据您使用的设备品牌及系统版本,APP可能会进行必要的自启动,您可以在设备设置功能中选择关闭消息推送功能。您可以点击《本系统共享个人信息清单》,了解我们主要接入的第三方SDK基本情况。您也可以选择通过本政策“如何联系我们”章节所列的反馈渠道联系我们,我们会尽快为您作出解答。
+ </p>
+ <p>
+ 第三方社交媒体或其他服务由相关的第三方负责运营。您使用该等第三方的社交媒体服务或其他服务(包括您向该等第三方提供的任何信息),须受第三方自己的服务条款及信息保护声明(而非本政策)约束,您需要仔细阅读其条款。本政策仅适用于我们所收集的个人信息,并不适用于任何第三方提供的服务或第三方的信息使用规则。如您发现这些第三方社交媒体或其他服务存在风险时,建议您终止相关操作以保护您的合法权益并及时与我们取得联系。
+ </p>
+ <h4>
+ 七、未成年人保护
+ </h4>
+ <p>
+ 我们建议:任何未成年人参加网上活动应事先取得父母或其他监护人(以下简称"监护人")的同意。我们将根据国家相关法律法规的规定保护未成年人的相关信息。
+ </p>
+ <p>
+ 我们鼓励监护人指导未成年人使用本系统服务。如果您是未满十八周岁的未成年人,请您通知您的监护人共同阅读并接受我们的《本系统未成年人个人信息保护规则及监护人须知》
+ 并在您使用本系统服务、提交个人信息之前,寻求其同意和指导。如监护人发现相关未成年人个人信息为未成年人自行填写且有必要进行修改或删除处理的,请随时与我们联系。
+ </p>
+ <h4>
+ 八、通知和修订
+ </h4>
+ <p>
+ 为了给您提供更好的服务,我们可能会根据本系统服务的更新情况及法律法规的相关要求适时修改本政策的条款,该等修改构成本政策的一部分。我们会在本页面上公布对本政策所作的任何变更。对于重大变更,我们还会提供更为显著的通知(包括网站公告、推送通知、弹窗提示或其他方式),本政策所指的重大变更包括但不限于:
+ </p>
+ <p>
+ 1、我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;
+ </p>
+ <p>
+ 2、我们在所有权结构方面发生重大变化。如业务调整、破产并购等引起的所有者变更等;
+ </p>
+ <p>
+ 3、个人信息共享、转让或公开披露的主要对象发生重大变化;
+ </p>
+ <p>
+ 4、您参与个人信息处理方面的权利及其行使方式发生重大变化;
+ </p>
+ <p>
+ 5、我们负责处理个人信息安全的责任部门、联络方式及投诉渠道发生重大变化;
+ </p>
+ <p>
+ 6、其他重要的或可能严重影响您的个人权益的情况发生。
+ </p>
+ <p>
+ 您如果不同意该等变更,可以选择停止使用本系统服务;如您仍然继续使用本系统服务的,即表示您已充分阅读、理解并同意受经修订的本政策的约束。
+ </p>
+ <p>
+ 我们的任何修改都会将您的满意度置于首位。我们鼓励您在每次使用本系统服务时都查阅我们的隐私政策。
+ </p>
+ <p>
+ 我们可能在必需时(例如当我们由于系统维护而暂停某一单项服务、变更、终止提供某一单项服务时)向您发出与服务有关的通知。
+ </p>
+ <p>
+ 如您不希望继续接收我们推送的消息,您可要求我们停止推送,例如:根据短信退订指引要求我们停止发送推广短信,或在移动端设备中进行设置,不再接收我们推送的消息;但我们依法律规定或单项服务的服务协议约定发送消息的情形除外。
+ </p>
+ </el-card>
+ </div>
+</template>
+
+<script setup>
+
+</script>
+
+<style scoped>
+.content {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ margin: auto;
+ max-width: 1000px;
+ padding: 40px 100px 100px 100px;
+ overflow: auto;
+}
+
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/AccountActivation.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/AccountActivation.vue
new file mode 100644
index 0000000..2100cb1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/AccountActivation.vue
@@ -0,0 +1,15 @@
+<template>
+ <div>
+ AccountActivation
+ </div>
+</template>
+
+<script>
+ export default {
+ name: "AccountActivation"
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Admin404.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Admin404.vue
new file mode 100644
index 0000000..8913fb8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Admin404.vue
@@ -0,0 +1,51 @@
+<template>
+ <div style="width:100%;">
+
+ <div style="width:600px;height:600px;margin:calc((100vh - 600px) / 2) auto;text-align: right;">
+ <span class="return-span" @click="goIndex">返回首页</span>
+ <svg-icon name="404" style="width: 600px; height: 600px; color: var(--el-color-primary);"></svg-icon>
+ </div>
+ </div>
+</template>
+
+<script>
+import { toRefs, reactive, getCurrentInstance, nextTick, defineComponent } from 'vue';
+export default defineComponent({
+ name: 'demo',
+ props: {},
+ components: {},
+ setup() {
+
+ let { proxy } = getCurrentInstance();
+ const state = reactive({
+
+ });
+
+ const goIndex = () => {
+ proxy.$router.replace("/admin/workbench");
+ }
+
+ return { ...toRefs(state), goIndex };
+ }
+})
+</script>
+
+<style scoped lang='scss'>
+$color: var(--el-color-primary);
+$color1: var(--el-color-primary-light-9);
+
+.return-span {
+ animation: glow 800ms ease-out infinite alternate;
+ cursor: pointer;
+}
+
+@keyframes glow {
+ 0% {
+ color: $color;
+ }
+
+ 100% {
+ color: white;
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Layout.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Layout.vue
new file mode 100644
index 0000000..a50cf4e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Layout.vue
@@ -0,0 +1,961 @@
+<template>
+ <el-container id="admin-layout">
+ <el-header style="height: 45px; padding: 0;" class="admin-layout-header">
+ <div style="display: flex; height: 45px; justify-content: space-between; align-items: center;">
+ <div>
+ <el-space wrap>
+ <el-popover width="300" style="max-height: 100%; overflow-y: scroll; " v-model:visible="menuPopVisible">
+ <template #reference>
+ <div>
+ <el-button type="primary" :icon="icon.Menu" size="default" style="height: 45px; width: 45px;"/>
+ </div>
+ </template>
+ <template #default>
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-switch v-model="collapsedmenudisplay" @change="showLeftMenu"
+ :active-text="$t('button.Open')"
+ :inactive-text="$t('button.Close')"/>
+ </div>
+ <div></div>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <div>
+ <el-scrollbar height="600px">
+ <el-menu :collapse="false" background-color="transparent" default-active="0"
+ :style="{ 'border': '0px', 'min-height': '200px', 'width': '100%' }"
+ :unique-opened="false">
+ <el-menu-item @click="showHome()" :index="'0'">
+ <template #title>
+ <svg-icon width="18" height="18" name="workbench" color=""></svg-icon>
+ <b style="font-family: FangSong bold; margin-left: 5px; overflow: hidden">
+ {{ $t('menu.Workbench') }}
+ </b>
+ </template>
+ </el-menu-item>
+ <el-sub-menu :index="i + 1 + ''" v-for="(item, i) in routes">
+ <template #title>
+ <svg-icon width="18" height="18" :name="item.meta.icon" color=""></svg-icon>
+ <b style="font-family: FangSong bold; margin-left: 5px; overflow: hidden">
+ {{ $t('menu.' + item.meta.languagekey) }}
+ </b>
+ </template>
+ <el-menu-item :index="i + 1 + (j * 100) + ''" v-for="(child, j) in item.children"
+ @click="handleMenuOpen(child.name)">
+ <template #title>
+ <svg-icon width="18" height="18" :name="child.meta.icon" color=""></svg-icon>
+ <span style="font-family: FangSong bold; margin-left: 5px; overflow: hidden">{{
+ $t('menu.' + child.meta.languagekey)
+ }}</span>
+ </template>
+ </el-menu-item>
+ </el-sub-menu>
+ </el-menu>
+ </el-scrollbar>
+ </div>
+ <el-divider :style="{ 'margin': '30px 0px' }">
+ <el-button link size="default" type="primary" :icon="icon.ArrowUpBold"
+ @click="menuPopVisible = !menuPopVisible">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-divider>
+ </div>
+ </template>
+ </el-popover>
+ <el-popover width="*" style="max-height: 600px; overflow-y: scroll; "
+ v-model:visible="applicationPopVisible">
+ <template #reference>
+ <div>
+ <p class="text-overflow">
+ <el-link type="primary" style="overflow: hidden">
+ <b style="color: white; margin-right: 5px;">{{ $t('title') }}</b>
+ <el-button :icon="icon.ArrowDown" type="primary" size="small" circle/>
+ </el-link>
+ </p>
+ </div>
+ </template>
+ <template #default>
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('label.Applications') }}</b>
+ </div>
+ <div>
+ </div>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <div>
+ <el-row v-if="applicationLinks.length > 0">
+ <el-col :span="24" style="padding: 20px;">
+ <AppMenuButton v-for="(item, i) in applicationLinks" :index="i + 1 + ''" :item="item"
+ style="margin: 5px;" height="80px" color="" width="100px"/>
+ </el-col>
+ </el-row>
+ <el-empty v-else :image-size="50" :description="$t('message.NoData')"/>
+ </div>
+ <el-divider :style="{ 'margin': '30px 0px' }">
+ <el-button link size="default" type="primary" :icon="icon.ArrowUpBold"
+ @click="applicationPopVisible = !applicationPopVisible">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-divider>
+ </div>
+ </template>
+ </el-popover>
+ </el-space>
+ </div>
+ <div>
+ <el-space wrap>
+ <el-popover :width="500" style="max-height: 600px; overflow-y: scroll; ">
+ <template #reference>
+ <div>
+ <el-badge v-if="tasks.length > 0" type="danger" :value="tasks.length" :max="99">
+ <el-button type="primary" circle :icon="icon.List"/>
+ </el-badge>
+ <el-button v-else type="primary" circle :icon="icon.List"/>
+ </div>
+ </template>
+ <template #default>
+ <div style="background-color: white;">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('label.MyTask') }}</b>
+ </div>
+ <div>
+ </div>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <div>
+ <el-row v-if="tasks.length > 0" v-for="item in tasks" :key="item.id">
+ <el-col :span="24">
+ <div style="margin: 10px;">
+ <el-alert title="Info alert" type="info" description="More text description" show-icon>
+ <template #title>
+ <div>
+ {{ item.title }}
+ </div>
+ </template>
+ <template #default>
+ <div>
+ {{ item.startdatetime }}-{{ item.enddatetime }}
+ </div>
+ </template>
+ </el-alert>
+ </div>
+ </el-col>
+ </el-row>
+ <el-empty v-else :image-size="50" :description="$t('message.NoData')"/>
+ <MenuButton style="margin: 5px;" height="80px" color="" width="100%"
+ :item="taskCenterLink"/>
+ </div>
+ </div>
+ </template>
+ </el-popover>
+ <el-popover :width="500">
+ <template #reference>
+ <div>
+ <el-badge v-if="notifications.length > 0" type="danger" :value="notifications.length" :max="99">
+ <el-button type="primary" circle :icon="icon.BellFilled"/>
+ </el-badge>
+ <el-button v-else type="primary" circle :icon="icon.BellFilled"/>
+ </div>
+ </template>
+ <template #default>
+ <div style="background-color: white; ">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('label.MyNotification') }}</b>
+ </div>
+ <div>
+ <el-button link size="default" type="primary" :icon="icon.Close">
+ {{ $t('button.Clear') }}
+ </el-button>
+ </div>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <div style="max-height: 1000px; overflow-y: auto; overflow-x: hidden; ">
+ <div class="notification-list-item" v-if="notifications.length > 0" v-for="item in notifications"
+ :key="item.id">
+ <el-card style="margin: 0px">
+ <template #header>
+ <b>{{ item.title }}</b>
+ </template>
+ <template #default>
+ <p v-html="item.context" style="height: 100px; overflow: hidden;"/>
+ </template>
+ <template #footer>
+ <el-link type="primary" @click="dismissNotification(item)">
+ {{ $t('button.Dismiss') }}
+ <el-icon>
+ <Right/>
+ </el-icon>
+ </el-link>
+ </template>
+ </el-card>
+ </div>
+ <el-empty v-else :image-size="50" :description="$t('message.NoData')"/>
+ <MenuButton style="margin: 5px;" height="80px" color="" width="100%"
+ :item="notificationCenterLink"/>
+ </div>
+ </div>
+ </template>
+ </el-popover>
+ <el-dropdown @command="commandHandler">
+ <div v-if="user">
+ <el-link style=";color: white; margin-right: 5px" :underline="false">
+ <b>{{ user.name }}</b>
+ </el-link>
+ <el-link type="primary" :underline="false">
+ <svg-icon v-if="!user.userface" width="18" height="18" name="profile" color="#fff"></svg-icon>
+ <el-avatar v-else style="width: 25px; height: 25px" :src="user.userface"></el-avatar>
+ </el-link>
+ </div>
+ <el-skeleton v-else style="--el-skeleton-circle-size: 20px">
+ <template #template>
+ <el-skeleton-item variant="circle"/>
+ </template>
+ </el-skeleton>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item command="profile" :icon="icon.User">
+ {{ $t('label.Profile') }}
+ </el-dropdown-item>
+ <el-dropdown-item command="logout" divided :icon="icon.SwitchButton">
+ {{ $t('button.SignOut') }}
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ </el-space>
+ </div>
+ </div>
+ </el-header>
+ <el-container class="admin-layout-container" v-if="routes&&routes.length>0">
+ <el-aside width="240px" v-if="collapsedmenudisplay">
+ <el-container>
+ <el-menu :collapse="false" background-color="transparent" default-active="0"
+ :style="{ 'border': '0px', 'min-height': '200px', 'width': '100%' }" :unique-opened="false">
+ <el-menu-item @click="showHome()" :index="'0'">
+ <template #title>
+ <svg-icon width="18" height="18" name="workbench" color=""></svg-icon>
+ <b style="font-family: FangSong bold; margin-left: 5px; overflow: hidden">
+ {{ $t('menu.Workbench') }}
+ </b>
+ </template>
+ </el-menu-item>
+ <el-sub-menu :index="i + 1 + ''" v-for="(item, i) in routes">
+ <template #title>
+ <svg-icon width="18" height="18" :name="item.meta.icon" color=""></svg-icon>
+ <b style="font-family: FangSong bold; margin-left: 5px; overflow: hidden">
+ {{ $t('menu.' + item.meta.languagekey) }}
+ </b>
+ </template>
+ <el-menu-item :index="i + 1 + (j * 100) + ''" v-for="(child, j) in item.children"
+ @click="handleMenuOpen(child.name)">
+ <template #title>
+ <svg-icon width="18" height="18" :name="child.meta.icon" color=""></svg-icon>
+ <span style="font-family: FangSong bold; margin-left: 5px; overflow: hidden">
+ {{ $t('menu.' + child.meta.languagekey) }}
+ </span>
+ </template>
+ </el-menu-item>
+ </el-sub-menu>
+ </el-menu>
+ </el-container>
+ </el-aside>
+ <el-container>
+ <el-header style="height: auto; padding: 0px 0px 0px 10px">
+ <el-tabs v-model="selectedTagValue" style="background-color: white; width: 100%;"
+ @tab-click="clickTab" @tab-remove="removeTab">
+ <el-tab-pane v-for="(item, index) in selectedTags" :closable="item.closable" :key="index"
+ :name="item.name" :lazy="true">
+ <template #label>
+ <div style="min-width: 100px;">
+ <p class="text-overflow">
+ <svg-icon width="18" height="18" :name="item.icon" color="" style="margin-top: -3px;"/>
+ <b style="margin-left: 5px; opacity:0.6; min-width: 80px;">
+ {{
+ item.languagekey && $t('menu.' + item.languagekey) ? $t('menu.' + item.languagekey) : item.languagekey
+ }}
+ </b>
+ </p>
+ </div>
+ </template>
+ </el-tab-pane>
+ </el-tabs>
+ </el-header>
+ <el-main class="admin-layout-container-context" style="padding: 0;overflow-y: auto;">
+ <router-view v-if="$route.meta.keepAlive === false"></router-view>
+ <router-view v-else :slot="selectedRouteComponent" class="admin-layout-container-context-routerview">
+ <keep-alive :max="10">
+ <component :is="selectedRouteComponent"></component>
+ </keep-alive>
+ </router-view>
+ </el-main>
+ </el-container>
+ </el-container>
+ <el-container class="admin-layout-container" v-else style="background-color: white;">
+ <div class="admin-layout-container-welcom">
+ <el-card v-loading="true" shadow="always" class="admin-layout-welcome">
+ <h3 class="admin-layout-title">{{ $t('message.WelcomeBack') }}</h3>
+ </el-card>
+ </div>
+ </el-container>
+ <el-footer class="admin-layout-footer" style="height: auto; bottom: 0px">
+ <div class="admin-layout-footer-context">
+ <p>{{ $t('copyright', {name: currentyear}) }}</p>
+ </div>
+ </el-footer>
+ <div v-dialogdrag>
+ <el-dialog id="detailDialog" v-model="iframe_dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" :width="iframe_dialogWidth" top="10" :before-close="closeIframeDialog">
+ <template #header>
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%">
+ <Connection/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ iframe_title }}</span>
+ </div>
+ <div>
+ <el-button @click="refreshIframeClick" :icon="icon.Refresh" size="small"
+ style="margin-right: 10px; background-color: white; color: var(--el-color-primary);margin-top: 2px;"
+ type="primary" circle/>
+ <el-button @click="fullScreenIframeClick" :icon="icon.FullScreen" size="small"
+ style="margin-right: 50px; background-color: white; color: var(--el-color-primary);margin-top: 2px;"
+ type="primary" circle/>
+ </div>
+ </div>
+ </div>
+ </template>
+ <el-card style="overflow: hidden;" v-loading="iframe_loading">
+ <iframe ref="iframeRef" allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true"
+ @load="iframeLoaded" :src="iframe_url" :style="iframe_style" scrolling="auto" frameborder="0"
+ id="iframe">
+ </iframe>
+ </el-card>
+ </el-dialog>
+ </div>
+ </el-container>
+</template>
+
+<script>
+import Workbench from './Workbench.vue'
+import UserProfile from './UserProfile.vue'
+import * as icon from '@element-plus/icons-vue'
+import {
+ onBeforeMount,
+ onMounted,
+ onBeforeUnmount,
+ getCurrentInstance,
+ reactive,
+ toRefs,
+ watch,
+ nextTick,
+ shallowRef, onActivated
+} from "vue";
+import {GetNotificationList, GetTaskList} from "@/api/admin/ifc";
+import {doLoginOut, GetUserApplications} from "@/api/admin/security";
+import Cookies from "js-cookie";
+import * as elementplus from "element-plus";
+import {routerIndex, getRouter} from "@/router/routeList"
+import {useBasicInfoStore} from "@/store/basicInfo";
+import AppMenuButton from "@/components/common/AppMenuButton.vue";
+import MenuButton from "@/components/common/MenuButton.vue";
+
+export default {
+ name: '_LayoutAdmin',
+ components: {AppMenuButton, MenuButton},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const selectedRoute = reactive({
+ target: null,
+ });
+ const store = useBasicInfoStore();
+ const state = reactive({
+ currentyear: '',
+ ifcDomain: WGURL.ifcDomain,
+ staticDomain: WGURL.staticDomain,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ routes: JSON.parse(localStorage.getItem(`${WGURL.routeKey}-routes`)),
+ user: null,
+ collapsedmenudisplay: false,
+ selectedRouteComponent: shallowRef(Workbench),
+ filter: '',
+ selectedTagValue: 'Workbench',
+ selectedTags: [],
+ applicationLinks: [],
+ notifications: [],
+ tasks: [],
+ defaultActive: "0",
+ menuList: [],
+ menuVisible: true,
+ menuPopVisible: false,
+ applicationPopVisible: false,
+ taskCenterLink: {
+ icon: 'dispatch_task',
+ name: '任务中心',
+ type: 'link',
+ text: proxy.$t('label.ViewAllTasks'),
+ link: `${WGURL.ifcDomain}/client/center/task`,
+ },
+ notificationCenterLink: {
+ icon: 'dispatch_notification',
+ name: '消息通知中心',
+ type: 'link',
+ text: proxy.$t('label.ViewAllNotifications'),
+ link: `${WGURL.ifcDomain}/client/center/notification`,
+ },
+ });
+ let timer = null;
+
+ onBeforeMount(() => {
+ //解决退出后菜单缓存问题
+ let router = localStorage.getItem(`${WGURL.routeKey}-routes`);
+ if (!router)
+ window.history.go(0);
+ });
+ onMounted(() => {
+ Init();
+ LoadData();
+ timer = setInterval(() => {
+ if (!state.routes || state.routes.length <= 0) {
+ state.routes = JSON.parse(localStorage.getItem(`${WGURL.routeKey}-routes`));
+ } else {
+ if (timer)
+ clearTimeout(timer);
+ }
+ }, 3000);
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ Init();
+ LoadData();
+ });
+
+ state.defaultActive = routerIndex(proxy.$route.path) + state.routes.length;
+
+ const Init = () => {
+ let date = new Date();
+ state.currentyear = date.getFullYear();
+
+ if (store.$state.user && store.$state.user.employee) {
+ state.user = store.$state.user.employee;
+ } else {
+ state.user = store.$state.user;
+ }
+
+ if (localStorage.getItem("left-menu-collapse") != null) {
+ let lmc = localStorage.getItem("left-menu-collapse");
+ if (lmc === 'false')
+ state.collapsedmenudisplay = false;
+ else
+ state.collapsedmenudisplay = true;
+ }
+
+ let routeArr = []
+ for (let i = 0; i < state.routes.length; i++) {
+ for (let j = 0; j < state.routes[i].children.length; j++) {
+ routeArr.push(state.routes[i].children[j].path)
+ }
+ }
+ state.menuList = routeArr;
+ }
+
+ const LoadData = () => {
+ let stags = store.$state.tags;
+ state.selectedTags = stags;
+ let p = getRouter(proxy.$route.path) ? getRouter(proxy.$route.path) : proxy.$route.path
+ let tagSel = proxy.$router.getRoutes().filter(e => e.path == p)
+ let tag = stags.filter(e => e.name == tagSel[0].name)
+ if (tag && tag.length > 0) {
+ state.selectedTagValue = tagSel[0].name
+ proxy.$router.replace(p);//tagSel[0].path
+ }
+
+ LoadApplicationLinks();
+ LoadNotifications();
+ LoadTasks();
+ }
+ const LoadApplicationLinks = () => {
+ state.loading = true
+
+ let userid = localStorage.getItem('userid');
+ GetUserApplications(userid).then(resp => {
+ state.loading = false
+ if (resp.data && resp.data.data) {
+ resp.data.data.map(e => {
+ state.applicationLinks.push({
+ id: e.id,
+ icon: e.icon ? e.icon : "application",
+ name: e.name,
+ type: "link",
+ text: e.name,
+ languagekey: e.name,
+ code: e.code,
+ link: e.url,
+ });
+ });
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ }
+ const LoadNotifications = () => {
+ state.loading = true
+
+ let userid = localStorage.getItem('userid');
+ GetNotificationList(userid).then(resp => {
+ state.loading = false
+ if (resp.data && resp.data.data) {
+ state.notifications = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ }
+
+ const LoadTasks = () => {
+ state.loading = true
+
+ let userid = localStorage.getItem('userid');
+ GetTaskList(userid).then(resp => {
+ state.loading = false
+ if (resp.data && resp.data.data) {
+ state.tasks = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ }
+
+ const handleMenuOpen = (key) => {
+ if (store.$state.tags.length > store.$state.tagUpperLimit) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.TagQuantityReachedUpperLimit')}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'warning',
+ }
+ );
+
+ return;
+ }
+
+ let routes = proxy.$router.getRoutes();
+
+ selectedRoute.target = routes.filter(r => r.name === key)[0];
+ proxy.$router.replace(selectedRoute.target.path);
+ addTag(key, selectedRoute.target);
+ }
+ const clickTab = (tag) => {
+ let routes = proxy.$router.getRoutes();
+ selectedRoute.target = routes.filter(r => r.name === tag.props.name)[0];
+ state.defaultActive = (routerIndex(selectedRoute.target.path) + state.routes.length) + ""//切换menu显示
+ state.menuVisible = false
+ nextTick(function () {
+ state.menuVisible = true
+ })
+ proxy.$router.replace(selectedRoute.target.path);
+ }
+ const addTag = (key, target) => {
+ let stags = state.selectedTags.filter(tab => tab.name === key);
+
+ if (stags === [] || stags.length <= 0) {
+ state.selectedTags.push({
+ name: key,
+ languagekey: target.meta.languagekey,
+ closable: true,
+ icon: target.meta.icon,
+ path: target.path
+ });
+ }
+ state.selectedTagValue = key;
+ store.$state.tags = state.selectedTags
+ }
+ const removeTab = (targetName) => {
+ let activeName = state.selectedTagValue;
+ if (activeName === targetName) {
+ state.selectedTags.forEach((tab, index) => {
+ if (tab.name === targetName) {
+ let nextTab = state.selectedTags[index + 1] || state.selectedTags[index - 1];
+ if (nextTab) {
+ activeName = nextTab.name;
+ }
+ }
+ });
+ }
+
+ state.selectedTagsValue = activeName;
+ state.selectedTags = state.selectedTags.filter(tab => tab.name !== targetName);
+ store.$state.tags = state.selectedTags;
+
+ handleMenuOpen(activeName);
+ }
+ const showLeftMenu = (data) => {
+ localStorage.setItem('left-menu-collapse', data);
+ }
+ const dismissNotification = (data) => {
+ state.notifications = state.notifications.filter(e => e.id != data.id);
+ }
+ const refreshPage = () => {
+ proxy.$router.go(0);
+ }
+ const showHome = () => {
+ proxy.$router.push('/admin/workbench')
+ }
+ const commandHandler = (cmd) => {
+ if (cmd === 'logout') {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSignOut')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ let userid = Cookies.get('userid', {domain: WGURL.cookieDomain});
+ doLoginOut(userid).then((resp) => {
+ store.removeSessionData();
+
+ if (WGURL.UseSSO) {
+ window.history.go(0);
+ }
+ });
+
+ setTimeout(2000);
+
+ if (!WGURL.UseSSO) {
+ proxy.$router.replace('/admin/login');
+ }
+ }).catch((error) => {
+ console.error(error)
+ })
+ } else if (cmd === 'profile') {
+ let key = 'AdminProfile';
+ state.selectedRouteComponent = UserProfile;
+ handleMenuOpen(key);
+ }
+ }
+
+ const iframeLoaded = () => {
+ store.$state.iframe_loading = false;
+ }
+ const closeIframeDialog = () => {
+ store.$state.iframe_url = null;
+ store.$state.iframe_dialogVisible = false;
+ }
+ const fullScreenIframeClick = () => {
+ store.$state.iframe_fullscreen = !store.$state.iframe_fullscreen;
+ if (store.$state.iframe_fullscreen) {
+ store.$state.iframe_style = "width: 100%; height: calc(100vh - 120px);";
+ store.$state.iframe_dialogWidth = "100%";
+ } else {
+ store.$state.iframe_style = "width: 100%; height: 60vh;";
+ store.$state.iframe_dialogWidth = "80%";
+ }
+ }
+ const refreshIframeClick = () => {
+ proxy.$refs.iframeRef.src = store.$state.iframe_url;
+ }
+
+ watch(() => proxy.$router.currentRoute, (newValue, oldValue) => {
+ let matched = proxy.$router.currentRoute.value.matched;
+ let current = proxy.$router.currentRoute;
+ let matchedRoutes = matched.filter(r => r.path === current.value.path);
+ let defaultComponent = matchedRoutes[0].components.default;
+
+ let cu = store.$state.tags.filter(e => e.path === current.value.path).shift();
+ if (cu) {
+ state.selectedTagValue = cu.name;
+ }
+
+ state.selectedRouteComponent = shallowRef(defaultComponent);
+ }, {immediate: true, deep: true});
+
+ return {
+ ...toRefs(state),
+ handleMenuOpen,
+ addTag,
+ clickTab,
+ removeTab,
+ showLeftMenu,
+ refreshPage,
+ dismissNotification,
+ showHome,
+ commandHandler,
+ iframeLoaded,
+ closeIframeDialog,
+ fullScreenIframeClick,
+ refreshIframeClick,
+ icon,
+ }
+ },
+ computed: {
+ iframe_url() {
+ const store = useBasicInfoStore();
+
+ return store.$state.iframe_url;
+ },
+ iframe_style() {
+ const store = useBasicInfoStore();
+
+ return store.$state.iframe_style;
+ },
+ iframe_title() {
+ const store = useBasicInfoStore();
+
+ return store.$state.iframe_title;
+ },
+ iframe_loading() {
+ const store = useBasicInfoStore();
+
+ return store.$state.iframe_loading;
+ },
+ iframe_dialogVisible() {
+ const store = useBasicInfoStore();
+
+ return store.$state.iframe_dialogVisible;
+ },
+ iframe_dialogWidth() {
+ const store = useBasicInfoStore();
+
+ return store.$state.iframe_dialogWidth;
+ },
+ },
+}
+</script>
+
+<style lang="scss">
+.notification-list-item {
+ border: 1px solid;
+ border-image: linear-gradient(0deg, rgba(255, 255, 255, 0) 0%, var(--el-color-primary-light-6) 0%, rgba(255, 255, 255, 0) 100%) 2 2 2 2;
+ float: left;
+ text-align: left;
+ margin: 5px 0px;
+ width: 98%;
+}
+
+.demo-tabs {
+ margin: 0px 0px 0px 1px;
+ padding: 0px;
+ background-color: #f4f5f7;
+ color: #6b778c;
+}
+
+.demo-tabs .el-tabs__header {
+ margin-bottom: 0px;
+}
+
+#admin-layout {
+ background-color: #f5f4f4;
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ color: #5e7cac;
+ top: 0px;
+ bottom: 0px;
+ height: 100%;
+}
+
+.admin-layout-header {
+ border-bottom: 1px solid #f5f4f4;
+ background-image: linear-gradient(45deg, var(--el-color-primary-light-5) 40%, var(--el-color-primary) 30%, var(--el-color-primary-light-1) 65%);;
+ background-color: var(--el-color-white);
+}
+
+.admin-layout-container {
+ width: 100%;
+ height: calc(100% - 45px);
+}
+
+.el-aside {
+ background-color: #ffffff;
+ margin-right: 1px;
+}
+
+.el-aside::-webkit-scrollbar {
+ /*滚动条整体样式*/
+ width: 0px;
+ /*高宽分别对应横竖滚动条的尺寸*/
+ height: 1px;
+}
+
+.el-aside::-webkit-scrollbar-thumb {
+ /*滚动条里面小方块*/
+ border-radius: 10px;
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ background: #C0C0C0;
+}
+
+.el-aside::-webkit-scrollbar-track {
+ /*滚动条里面轨道*/
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ border-radius: 10px;
+ background: transparent;
+}
+
+.admin-layout-container-left-menu {
+ width: 240px;
+ height: 100%;
+ overflow-x: hidden;
+ font-family: bolder;
+ background-color: transparent;
+}
+
+.admin-layout-container-context {
+ background: #f5f4f4;
+ width: 100%;
+ height: calc(100% - 45px);
+ border: 0px solid #eee;
+ //position: absolute;
+ //top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ margin: auto;
+ overflow: auto;
+}
+
+.admin-layout-container-context::-webkit-scrollbar {
+ /*滚动条整体样式*/
+ width: 5px;
+ /*高宽分别对应横竖滚动条的尺寸*/
+ height: 1px;
+}
+
+.admin-layout-container-context::-webkit-scrollbar-thumb {
+ /*滚动条里面小方块*/
+ border-radius: 10px;
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ background: #C0C0C0;
+}
+
+.admin-layout-container-context::-webkit-scrollbar-track {
+ /*滚动条里面轨道*/
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ border-radius: 10px;
+ background: transparent;
+}
+
+.admin-layout-container-context-breadcrumb {
+ width: 100%;
+}
+
+.admin-layout-container-context-routerview {
+ width: 100%;
+ background: #f5f4f4;
+ margin: 0px;
+}
+
+.admin-layout-container-left-user img {
+ width: 130px;
+ height: 80px;
+ border-radius: 100%;
+ margin-top: 20px;
+}
+
+.admin-layout-container-left-user {
+ /*display: flex;*/
+ align-items: center;
+ color: white;
+ font-size: 16px;
+ height: 80px;
+ width: 80px;
+}
+
+.admin-layout-footer {
+ /*background-image: linear-gradient(110deg, #04A8FB 1%, #871faf 100%);*/
+ background-color: white;
+ color: black;
+ display: flex;
+ align-items: center;
+ horiz-align: left;
+ justify-content: space-between;
+ padding: 0px 0px;
+ box-sizing: border-box;
+}
+
+.admin-layout-footer-context {
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ align-items: center;
+ vertical-align: bottom;
+ color: black;
+ font-size: 12px;
+}
+
+.el-button {
+ border-color: transparent;
+}
+
+.el-menu .el-menu-item {
+ color: #888
+}
+
+.el-menu .el-sub-menu__title {
+ color: #888
+}
+
+.el-drawer .el-drawer__title {
+ font-family: bolder;
+ font-size: 16px;
+}
+
+.admin-layout-container-welcom {
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #2c3e50;
+ margin: 0px 0px;
+ padding: 10px;
+ height: 100%;
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+ background-attachment: fixed;
+ background-position: center;
+}
+
+.admin-layout-container-layoutform {
+ height: auto;
+ width: 300px;
+ position: fixed;
+ top: 30%;
+ right: 0;
+ left: 0;
+ margin: auto;
+ border-radius: 15px;
+ background-clip: padding-box;
+ padding: 15px 35px 15px 35px;
+ background: rgba(255, 255, 255, 0.8);;
+ border: 1px solid #eaeaea;
+ text-align: left;
+}
+
+.admin-layout-welcome {
+ height: 50%;
+ width: 50%;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: auto;
+ border-radius: 15px;
+ background-clip: padding-box;
+ padding: 15px 35px 15px 35px;
+ background: rgba(255, 255, 255, 0.8);;
+ border: 1px solid #eaeaea;
+ text-align: center;
+}
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Login.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Login.vue
new file mode 100644
index 0000000..caca51f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Login.vue
@@ -0,0 +1,551 @@
+<template>
+ <div class="admin-login-container">
+ <div v-if="!haslogin" class="admin-login-container-welcom"
+ :style="{background: `url('${backgroundImage}') no-repeat top center`,backgroundSize: `cover`}">
+ <el-row v-if="languages&&languages.length>0"
+ style="position: fixed;top: 10px;right:10px;background-color:rgba(255, 255, 255, 0.8);border-radius: 5px;">
+ <el-col>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon style="margin-top: 2px;" width="18" height="18" name="webpage" color="var(--el-color-primary)"/>
+ </div>
+ <div>
+ <el-select size="small" style="width: 160px;" v-model="selectedLanguage"
+ @change="onLanguageChange">
+ <el-option v-for="lang in languages" :key="lang.key" :label="lang.value"
+ :value="lang.key">
+ {{ lang.value }}
+ </el-option>
+ </el-select>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col>
+ <div class="admin-login-container-loginform">
+ <el-row>
+ <el-col>
+ <h3 class="admin-login-title">{{ $t('message.WelcomeBack') }}</h3>
+ </el-col>
+ </el-row>
+ <el-row style="padding-bottom: 10px;">
+ <el-col>
+ <el-tabs>
+ <el-tab-pane>
+ <template #label>
+ <span>
+ <el-icon><Lock/></el-icon>
+ {{ $t('label.LoginByUsernamePassword') }}
+ </span>
+ </template>
+ <el-form :rules="rules" ref="loginByUPForm"
+ element-loading-text="Please wait a moment..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.7)" :model="model"
+ size="default">
+ <el-row>
+ <el-col>
+ <el-form-item prop="username">
+ <el-input size="default" link maxlength="64"
+ :prefix-icon="icon.User" v-model="model.username"
+ auto-complete="off"
+ :placeholder="$t('label.UserName')"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col>
+ <el-form-item prop="password">
+ <el-input size="default" type="password" maxlength="64"
+ :prefix-icon="icon.Key" v-model="model.password"
+ auto-complete="off"
+ :placeholder="$t('label.Password')"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col>
+ <el-form-item v-if="needverifycode" prop="verifycode">
+ <el-row>
+ <el-col :span="15">
+ <el-input size="default" link
+ v-model="model.verifycode" auto-complete="off"
+ maxlength="64"
+ :placeholder="$t('label.VerifyCode')"
+ @keydown.enter.native="submitLogin"></el-input>
+ </el-col>
+ <el-col :span="1"></el-col>
+ <el-col :span="8">
+ <el-image :src="vcUrl" fit='cover' @click="updateVerifyCode"/>
+ </el-col>
+ </el-row>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col>
+ <el-alert v-if="haserrormessage" type="error"
+ :title="errormessage ? errormessage : $t('message.UnknownSystemMessage')"
+ style="margin-bottom: 10px;" show-icon :closable="false"/>
+ </el-col>
+ </el-row>
+ <el-button size="default" type="primary" style="width: 100%;"
+ :loading="loading"
+ :icon="icon.SwitchButton" @click="submitLogin">
+ {{ $t('button.SignIn') }}
+ </el-button>
+ </el-form>
+ </el-tab-pane>
+ <el-tab-pane>
+ <template #label>
+ <span>
+ <el-icon><Cellphone/></el-icon>
+ {{ $t('label.LoginBySMSCode') }}
+ </span>
+ </template>
+ <el-form :rules="rulessms" ref="loginBySMSForm"
+ element-loading-text="Please wait a moment..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.7)" :model="modelsms"
+ size="default">
+ <el-row>
+ <el-col>
+ <el-form-item prop="cellphone">
+ <el-input size="default" link maxlength="64"
+ :prefix-icon="icon.Cellphone"
+ v-model="modelsms.cellphone"
+ auto-complete="off"
+ :placeholder="$t('label.Cellphone')"></el-input>
+ </el-form-item>
+ <el-form-item prop="randomcode">
+ <el-row>
+ <el-col :span="15">
+ <el-input size="default" link
+ v-model="modelsms.randomcode"
+ :prefix-icon="icon.Promotion"
+ auto-complete="off"
+ maxlength="64"
+ :placeholder="$t('label.RandomCode')"
+ @keydown.enter.native="submitLoginSMSCode"></el-input>
+ </el-col>
+ <el-col :span="1"></el-col>
+ <el-col :span="8">
+ <el-button size="default" type="primary"
+ v-if="!hassentsmscode" style="width: 100%;"
+ :icon="icon.Promotion" @click="sendSMSCode">
+ {{ $t('button.SendSMSCode') }}
+ </el-button>
+ <el-button size="default" type="primary" v-else
+ disabled="disabled" style="width: 100%;"
+ @click="sendSMSCode">
+ {{ countdown }}s {{ $t('button.ReSendSMSCode') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form-item>
+ <el-alert v-if="haserrormessage" type="error"
+ style="margin-bottom: 10px;" show-icon :closable="false">
+ <template #header>
+ {{ errormessage ? errormessage : $t('message.UnknownSystemMessage') }}
+ </template>
+ </el-alert>
+ </el-col>
+ </el-row>
+ <el-button size="default" type="primary" style="width: 100%;"
+ :loading="loading"
+ :icon="icon.SwitchButton" @click="submitLoginSMSCode">
+ {{ $t('button.SignIn') }}
+ </el-button>
+ </el-form>
+ </el-tab-pane>
+ </el-tabs>
+ </el-col>
+ </el-row>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row style="position: fixed;bottom: 0;left:calc(50% - 180px)">
+ <el-col :span="24">
+ <div class="portal-login-footer-context">
+ <div>
+ <p>
+ <el-row>
+ <el-col :span="24">
+ <span>{{ $t('AgreementStatement') }}</span>
+ <a href="/license" style="color: var(--el-color-primary)">
+ {{ $t('ServiceAgreement') }}
+ </a>
+ -
+ <a href="/license/secrecy" style="color: var(--el-color-primary)">
+ {{ $t('PrivacyPolicy') }}
+ </a>
+ </el-col>
+ </el-row>
+ </p>
+ </div>
+ <p>{{ $t('copyright', {name: currentyear}) }}</p>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <div v-else class="admin-login-container-welcom"
+ :style="{backgroundImage: `url(${backgroundImage})`}">
+ <el-card v-loading="true" :element-loading-text="`${$t('label.Loading')}...`" shadow="always"
+ class="admin-login-welcome">
+ <h3 class="admin-login-title">{{ $t('message.WelcomeBack') }}</h3>
+ </el-card>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onActivated, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {GetConfigs} from "@/api/admin/system";
+import Cookies from "js-cookie";
+import {
+ getVerifyCodeUrl,
+ doLogin,
+ SendSMSCode,
+ loginBySMSCode
+} from "@/api/admin/security";
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+export default {
+ name: "AdminLogin",
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ backgroundImage: WGURL.staticDomain + 'image/background-login.jpg',
+ currentyear: '',
+ languages: [],
+ selectedLanguage: Cookies.get("language"),
+ haslogin: false,
+ hassentsmscode: false,
+ countdown: 60,
+ loading: false,
+ vcUrl: "",
+ model: {
+ username: '',
+ password: '',
+ verifycode: ''
+ },
+ modelsms: {
+ cellphone: '',
+ randomcode: ''
+ },
+ sesstionverifycode: '',
+ readAndApproved: false,
+ needverifycode: false,
+ haserrormessage: false,
+ errormessage: `* ${proxy.$t('message.UnknownSystemMessage')}`,
+ rules: {
+ username: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.UserName')})}`,
+ trigger: 'blur'
+ }],
+ password: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Password')})}`,
+ trigger: 'blur'
+ }],
+ verifycode: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.VerifyCode')})}`,
+ trigger: 'blur'
+ }]
+ },
+ rulessms: {
+ cellphone: [
+ {
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Cellphone')})}`,
+ trigger: 'blur'
+ },
+ {
+ validator: function (rule, value, callback) {
+ if (/^1[34578]\d{9}$/.test(value) === false) {
+ callback(new Error(`${proxy.$t('message.DataFormatHasError', {name: proxy.$t('label.Cellphone')})}`))
+ } else {
+ callback()
+ }
+ }, trigger: 'blur'
+ }
+ ],
+ randomcode: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.VerifyCode')})}`,
+ trigger: 'blur'
+ }]
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.haslogin = false;
+ });
+
+ const Init = () => {
+ let date = new Date();
+ state.currentyear = date.getFullYear();
+
+ if (state.needverifycode) {
+ updateVerifyCode();
+ } else {
+ state.model.verifycode = '';
+ }
+
+ state.model.username = localStorage.getItem("loginform-username");
+ state.model.password = localStorage.getItem("loginform-password");
+
+ //Clear old layout page tags;
+ store.tags = [{
+ name: 'Workbench',
+ closable: false,
+ icon: 'workbench',
+ languagekey: 'Workbench'
+ }]
+ };
+ const LoadData = () => {
+ let condition = {
+ permissionLevel: store.permissionLevel,
+ }
+ GetConfigs(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.configs = resp.data.data;
+ if (state.configs) {
+ state.languages = state.configs.filter(e => e.category === 'language');
+ localStorage.setItem("languages", JSON.stringify(state.languages))
+ }
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const updateVerifyCode = () => {
+ state.vcUrl = getVerifyCodeUrl(state.model.username);
+ state.model.verifycode = '';
+ };
+ const sendSMSCode = () => {
+ if (!state.modelsms.cellphone) {
+ proxy.$refs.loginBySMSForm.validate((valid) => {
+ return false;
+ });
+ } else {
+ let sendsmscodetimer = setInterval(function () {
+ if (state.countdown > 0) {
+ state.hassentsmscode = true;
+ state.countdown -= 1;
+ } else {
+ state.hassentsmscode = false;
+ sendsmscodetimer = null;
+ }
+ }, 1000);
+ SendSMSCode(state.modelsms.cellphone)
+ .then(success => {
+ state.loading = false;
+ let resp = success.data;
+ if (resp) {
+ if (resp.code == 200) {
+
+ } else if (resp.code = 500) {
+ state.loading = false;
+ state.errormessage = `${proxy.$t('message.' + resp.message)}`;
+ state.haserrormessage = true;
+ }
+ }
+ })
+ .catch(error => {
+ state.loading = false;
+ state.errormessage = error;
+ state.haserrormessage = true;
+ });
+ }
+ }
+
+ const submitLogin = () => {
+ proxy.$refs.loginByUPForm.validate((valid) => {
+ if (valid) {
+ state.loading = true;
+ doLogin(state.model)
+ .then(resp => {
+ state.loading = false;
+ let data = resp.data;
+ if (data && data.code === 200) {
+ LoginSuccessCallBack(data);
+ } else {
+ LoginFailedCallBack(data);
+ }
+ })
+ .catch(error => {
+
+ });
+ } else {
+ state.haslogin = false;
+ }
+ });
+ }
+ const submitLoginSMSCode = () => {
+ proxy.$refs.loginBySMSForm.validate((valid) => {
+ if (valid) {
+ state.loading = true;
+ loginBySMSCode(state.modelsms)
+ .then(resp => {
+ state.loading = false;
+ let data = resp.data;
+ if (data && data.code === 200) {
+ LoginSuccessCallBack(data);
+ } else {
+ LoginFailedCallBack(data);
+ }
+ })
+ .catch(error => {
+
+ });
+ } else {
+ state.haslogin = false;
+ }
+ });
+ }
+
+ const LoginSuccessCallBack = (data) => {
+ localStorage.setItem("loginform-username", state.model.username);
+ localStorage.setItem("loginform-password", "");
+
+ store.setSessionData(data);
+
+ state.haslogin = true;
+ proxy.$router.replace("/admin/workbench");
+ }
+ const LoginFailedCallBack = (resp) => {
+ let message = `* ${proxy.$t('message.UnknownSystemMessage')}`;
+ if (resp) {
+ message = resp.message;
+ if (message) {
+ message = `* ${proxy.$t('message.' + message)}`;
+ }
+ }
+
+ state.haslogin = false;
+ state.loading = false;
+ state.errormessage = message;
+ state.haserrormessage = true;
+
+ state.needverifycode = true;
+
+ updateVerifyCode();
+ }
+
+ const onLanguageChange = (lang) => {
+ let language = lang;
+ if (language) {
+ Cookies.set("language", language, {domain: WGURL.cookieDomain});
+
+ window.history.go(0);
+ }
+ };
+
+ return {
+ ...toRefs(state),
+ updateVerifyCode,
+ submitLogin,
+ sendSMSCode,
+ submitLoginSMSCode,
+ onLanguageChange,
+ icon
+ }
+ },
+}
+</script>
+
+<style scoped lang='scss'>
+.admin-login-container {
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #2c3e50;
+ margin: 0px 0px;
+ padding: 0px;
+ height: 100%;
+}
+
+.admin-login-container-welcom {
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #2c3e50;
+ margin: 0px 0px;
+ padding: 10px;
+ height: 100%;
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+ background-attachment: fixed;
+ background-position: center;
+}
+
+.admin-login-container-loginform {
+ height: auto;
+ width: 300px;
+ position: fixed;
+ top: 30%;
+ right: 0;
+ left: 0;
+ margin: auto;
+ border-radius: 15px;
+ background-clip: padding-box;
+ padding: 15px 35px 15px 35px;
+ background: rgba(255, 255, 255, 0.8);;
+ border: 1px solid #eaeaea;
+ text-align: left;
+}
+
+.admin-login-welcome {
+ height: 50%;
+ width: 50%;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: auto;
+ border-radius: 15px;
+ background-clip: padding-box;
+ padding: 15px 35px 15px 35px;
+ background: rgba(255, 255, 255, 0.8);;
+ border: 1px solid #eaeaea;
+ text-align: center;
+}
+
+.admin-login-title {
+ margin: 10px auto 10px auto;
+ text-align: center;
+ color: #505458;
+}
+
+.admin-login-policy {
+ text-align: left;
+ margin: 0px 0px 10px 0px;
+}
+
+.el-form-item__content {
+ display: flex;
+ align-items: center;
+}
+
+.portal-login-footer-context {
+ text-align: center;
+ font-size: 12px;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Navigation.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Navigation.vue
new file mode 100644
index 0000000..1b559fe
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Navigation.vue
@@ -0,0 +1,377 @@
+<template>
+ <div style="background-color: white; margin: 10px 10px; height: auto;">
+ <div style="padding: 10px 20px;">
+ <el-row>
+ <el-col :span="10">
+ <el-row :style="{'margin':'20px 0px 10px 0px'}" v-if="user">
+ <el-col :span="4" align="center">
+ <el-avatar v-if="user.employee&&user.employee.userface" :size="70" :src="user.employee.userface"
+ style="margin-right: 5px;margin-top: -5px;"/>
+ <svg-icon v-else name="profile" width="80" height="80"
+ style="margin-right: 5px;margin-top: -5px;" color="var(--el-color-primary)"/>
+ </el-col>
+ <el-col :span="20">
+ <b>
+ {{ $t('message.HelloWords', {name: user.name}) }}
+ </b>
+ <p v-if="positiontitle||organizationStructure">{{ positiontitle }} | {{ organizationStructure }}</p>
+ <p v-else>
+ <span v-for="(item,i) in user.roles">
+ {{ $t('label.Role', {name: user.name}) }} / {{ `${item.name} (${item.code})` }}
+ </span>
+ </p>
+ </el-col>
+ </el-row>
+ <el-row v-else :style="{'margin':'20px 0px 10px 0px'}" v-if="user">
+ <el-col :span="4" align="center">
+ <el-skeleton style="--el-skeleton-circle-size: 100px">
+ <template #template>
+ <el-skeleton-item variant="circle"/>
+ </template>
+ </el-skeleton>
+ </el-col>
+ <el-col :span="20">
+ <el-skeleton/>
+ </el-col>
+ </el-row>
+ </el-col>
+ <el-col :span="14">
+ <el-row :gutter="16">
+ <el-col :span="8">
+ <div class="statistic-card">
+ <el-statistic :value="98500">
+ <template #title>
+ <div style="display: inline-flex; align-items: center">
+ Daily active users
+ <el-tooltip
+ effect="dark"
+ content="Number of users who logged into the product in one day"
+ placement="top"
+ >
+ <el-icon style="margin-left: 4px" :size="12">
+ <Warning/>
+ </el-icon>
+ </el-tooltip>
+ </div>
+ </template>
+ </el-statistic>
+ <div class="statistic-footer">
+ <div class="footer-item">
+ <span>than yesterday</span>
+ <span class="green">24%<el-icon><CaretTop/></el-icon></span>
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="statistic-card">
+ <el-statistic :value="693700">
+ <template #title>
+ <div style="display: inline-flex; align-items: center">
+ Monthly Active Users
+ <el-tooltip
+ effect="dark"
+ content="Number of users who logged into the product in one month"
+ placement="top"
+ >
+ <el-icon style="margin-left: 4px" :size="12">
+ <Warning/>
+ </el-icon>
+ </el-tooltip>
+ </div>
+ </template>
+ </el-statistic>
+ <div class="statistic-footer">
+ <div class="footer-item">
+ <span>month on month</span>
+ <span class="red">12%<el-icon><CaretBottom/></el-icon></span>
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="statistic-card">
+ <el-statistic :value="72000" title="New transactions today">
+ <template #title>
+ <div style="display: inline-flex; align-items: center">
+ New transactions today
+ </div>
+ </template>
+ </el-statistic>
+ <div class="statistic-footer">
+ <div class="footer-item">
+ <span>than yesterday</span>
+ <span class="green">16%<el-icon><CaretTop/></el-icon></span>
+ </div>
+ <div class="footer-item">
+ <el-icon :size="14">
+ <ArrowRight/>
+ </el-icon>
+ </div>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'0px 0px 10px 0px'}"></el-divider>
+ <el-row :style="{'margin':'5px 0px'}">
+ <el-col :span="24" :style="{'padding':'5px 2px'}"
+ v-for="(operation, i) in operations.filter(e=>e.children.length>10)">
+ <el-card style="min-height: 300px;">
+ <el-row>
+ <el-col :span="16" align="left">
+ <b style="margin-right: 20px">
+ <svg-icon width="20" height="20" :name="operation.group.icon" color=""/>
+ {{ operation.group.text }}
+ </b>
+ </el-col>
+ <el-col :span="8" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider style="margin: 10px 0px"/>
+ <el-row>
+ <el-col :span="24">
+ <MenuButton v-for="(item, i) in operation.children" :index="i+1+''"
+ style="margin: 2px;" :item="item"
+ height="80px" color="" width="110px"/>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-col>
+ <el-col :span="24" :style="{'padding':'5px 2px'}"
+ v-for="(operation, i) in operations.filter(e=>e.children.length>5&&e.children.length<=10)">
+ <el-card>
+ <el-row>
+ <el-col :span="16" align="left">
+ <b style="margin-right: 20px">
+ <svg-icon width="20" height="20" :name="operation.group.icon" color=""/>
+ {{ operation.group.text }}
+ </b>
+ </el-col>
+ <el-col :span="8" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider style="margin: 10px 0px"/>
+ <el-row>
+ <el-col :span="24">
+ <MenuButton v-for="(item, i) in operation.children" :index="i+1+''"
+ style="margin: 2px;" :item="item"
+ height="80px" color="" width="110px"/>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-col>
+ <el-col :span="8" :style="{'padding':'5px 2px'}"
+ v-for="(operation, i) in operations.filter(e=>e.children.length>3&&e.children.length<=5)">
+ <el-card>
+ <el-row>
+ <el-col :span="16" align="left">
+ <b style="margin-right: 20px">
+ <svg-icon width="20" height="20" :name="operation.group.icon" color=""/>
+ {{ operation.group.text }}
+ </b>
+ </el-col>
+ <el-col :span="8" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider style="margin: 10px 0px"/>
+ <el-row>
+ <el-col :span="24">
+ <MenuButton v-for="(item, i) in operation.children" :index="i+1+''"
+ style="margin: 2px;" :item="item"
+ height="80px" color="" width="110px"/>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-col>
+ <el-col :span="8" :style="{'padding':'5px 2px'}"
+ v-for="(operation, i) in operations.filter(e=>e.children.length>0&&e.children.length<=3)">
+ <el-card>
+ <el-row>
+ <el-col :span="16" align="left">
+ <b style="margin-right: 20px">
+ <svg-icon width="20" height="20" :name="operation.group.icon" color=""/>
+ {{ operation.group.text }}
+ </b>
+ </el-col>
+ <el-col :span="8" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider style="margin: 10px 0px"/>
+ <el-row>
+ <el-col :span="24">
+ <MenuButton v-for="(item, i) in operation.children" :index="i+1+''"
+ style="margin: 2px;" :item="item"
+ height="80px" color="" width="110px"/>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, watch} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import MenuButton from "@/components/common/MenuButton.vue";
+import {formatDate} from "@/utils/common";
+import {GetEmployeePositionWithOrganizationsByEmployeeId} from "@/api/admin/security";
+import {GetDashboardData} from "@/api/admin/statistics";
+
+export default {
+ name: 'Navigation',
+ components: {MenuButton},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ loading: false,
+ routes: JSON.parse(localStorage.getItem(`${WGURL.routeKey}-routes`)),
+ user: null,
+ positiontitle: "",
+ organizationStructure: "",
+ operations: [],
+ statisticsdata: {
+ monthlyapprovalrecord: NaN,
+ monthlyactivenotification: NaN,
+ monthlyactivetask: NaN,
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ LoadEmployeePositionWithOrganizationsByEmployeeId();
+ LoadDashboardData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (store.$state.user && store.$state.user.employee) {
+ state.user = store.$state.user.employee;
+ } else {
+ state.user = store.$state.user;
+ }
+ };
+ const LoadData = () => {
+ for (let i = 0; i < state.routes.length; i++) {
+ let item = state.routes[i];
+
+ let group = {
+ id: i,
+ icon: item.meta.icon,
+ name: item.name,
+ type: "menu",
+ text: proxy.$t('menu.' + item.meta.languagekey),
+ languagekey: item.meta.languagekey,
+ link: item.path,
+ }
+
+ let children = [];
+ for (let j = 0; j < item.children.length; j++) {
+ let child = item.children[j];
+ children.push({
+ id: i + j,
+ icon: child.meta.icon,
+ name: child.name,
+ type: "menu",
+ text: proxy.$t('menu.' + child.meta.languagekey),
+ languagekey: child.meta.languagekey,
+ link: child.path,
+ });
+ }
+
+ state.operations.push({group: group, children: children, sequence: children.length});
+
+ state.operations = state.operations.sort(function (a, b) {
+ return b.sequence - a.sequence
+ });
+ }
+ };
+ const LoadDashboardData = () => {
+ GetDashboardData({}).then(resp => {
+ if (resp.data) {
+ state.statisticsdata = resp.data.data;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const LoadEmployeePositionWithOrganizationsByEmployeeId = () => {
+ let emp = store.$state.user.employee;
+ if (emp) {
+ let employeeid = emp.id;
+ GetEmployeePositionWithOrganizationsByEmployeeId(employeeid).then(resp => {
+ if (resp.data) {
+ state.positiontitle = resp.data.data[0].title;
+ state.organizationStructure = resp.data.data[0].organizationStructure
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+$color: var(--el-color-primary);
+
+.el-statistic {
+ --el-statistic-content-font-size: 28px;
+}
+
+.statistic-card {
+ height: 100%;
+ padding: 20px;
+ border-radius: 4px;
+ background-color: var(--el-bg-color-overlay);
+}
+
+.statistic-footer {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ font-size: 12px;
+ color: var(--el-text-color-regular);
+ margin-top: 16px;
+}
+
+.statistic-footer .footer-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.statistic-footer .footer-item span:last-child {
+ display: inline-flex;
+ align-items: center;
+ margin-left: 4px;
+}
+
+.green {
+ color: var(--el-color-success);
+}
+
+.red {
+ color: var(--el-color-error);
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Register.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Register.vue
new file mode 100644
index 0000000..95991b5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Register.vue
@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+ export default {
+ name: "Register"
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/RetrievePassword.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/RetrievePassword.vue
new file mode 100644
index 0000000..74c2783
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/RetrievePassword.vue
@@ -0,0 +1,261 @@
+<template>
+ <el-container id="portal-layout">
+ <el-header class="portal-layout-header" style="height: 100px;">
+ <div class="portal-layout-header-title">
+ <el-row>
+ <el-col :span="8">
+ <el-image class="portal-layout-header-title-logo" fit="fill" src="/favicon.ico"></el-image>
+ </el-col>
+ <el-col :span="2">
+ </el-col>
+ <el-col :span="14">
+ <p class="portal-layout-header-title-text">
+ {{ $t('message.title') }} | {{ $t('message.retrievepassword') }}
+ </p>
+ </el-col>
+ </el-row>
+ </div>
+ <div class="portal-layout-header-controls">
+
+ </div>
+ </el-header>
+ <el-divider :style="{'background-color':'#eceef9', 'margin':'1px 0px'}"></el-divider>
+ <el-main style="padding: 0px;overflow-y: scroll;">
+ <el-row>
+ <el-col :span="2" align="left"></el-col>
+ <el-col :span="20" align="left">
+ <el-card style="margin: 100px; padding: 50px; background-color: white">
+ <el-steps :active="activestep" finish-status="success">
+ <el-step :title="$t('label.Account')" :icon="icon.User"/>
+ <el-step :title="$t('label.SecurityVerification')" :icon="icon.Lock"/>
+ <el-step :title="$t('label.NewPassword')" :icon="icon.Key"/>
+ <el-step :title="$t('label.Done')" :icon="icon.Finished"/>
+ </el-steps>
+ <div style="padding: 40px;">
+ <el-row v-if="activestep===0">
+ <el-col :span="24" align="center">
+ <el-form size="default" :rules="rules" ref="oneStepForm" v-loading="loading"
+ :model="model">
+ <el-form-item prop="username" :label="$t('label.username')" label-width="135px">
+ <el-input size="default" link maxlength="64"
+ :prefix-icon="icon.User"
+ v-model="model.username" auto-complete="off"
+ style="width: calc(100% - 150px); "
+ :placeholder="`${$t('message.pleaseinput')}${$t('label.username')}!`"></el-input>
+ </el-form-item>
+ <el-form-item prop="verifycode" :label="$t('label.verifycode')"
+ label-width="135px">
+ <el-input size="default" link v-model="model.verifycode" maxlength="64"
+ auto-complete="off"
+ style="width: calc(100% - 150px); "
+ :placeholder="`${$t('message.pleaseinput')}${$t('label.verifycode')}!`"></el-input>
+ <el-image :src="vcUrl" size="default" @click="updateVerifyCode"
+ fit="fill"
+ style="width: 120px; height: 32px;"/>
+ </el-form-item>
+ <el-button type="primary" @click="accountVerify" :icon="icon.CircleCheck"
+ size="default">
+ {{ $t('label.Verify')}}
+ </el-button>
+ </el-form>
+ </el-col>
+ </el-row>
+ <el-row v-else-if="activestep===1">
+ <el-col :span="24" align="center">
+ <el-form size="default" :rules="rules" ref="towStepForm" v-loading="loading"
+ :model="model">
+ <el-form-item prop="username" :label="$t('label.username')" label-width="135px">
+ <el-input size="default" link maxlength="64"
+ :prefix-icon="icon.User"
+ v-model="model.username" auto-complete="off"
+ style="width: calc(100% - 150px); "
+ :placeholder="`${$t('message.pleaseinput')}${$t('label.username')}!`"></el-input>
+ </el-form-item>
+ <el-form-item prop="verifycode" :label="$t('label.verifycode')"
+ label-width="135px">
+ <el-input size="default" link v-model="model.verifycode" maxlength="64"
+ auto-complete="off"
+ style="width: calc(100% - 150px); "
+ :placeholder="`${$t('message.pleaseinput')}${$t('label.verifycode')}!`"></el-input>
+ <el-image :src="vcUrl" size="default" @click="updateVerifyCode"
+ fit="fill"
+ style="width: 120px; height: 32px;"/>
+ </el-form-item>
+ <el-button type="primary" @click="securityVerify" :icon="icon.CircleCheck"
+ size="default">
+ {{ $t('label.Verify')}}
+ </el-button>
+ </el-form>
+ </el-col>
+ </el-row>
+ <el-row v-else-if="activestep===2">
+ <el-col :span="24" align="center">
+ <el-form :rules="rules" ref="threeStepForm" v-loading="loading"
+ :model="model" size="default">
+ <el-form-item prop="newpassword" :label="$t('label.newpassword')"
+ label-width="135px">
+ <el-input size="default" type="password" maxlength="64"
+ :prefix-icon="icon.Key"
+ v-model="model.newpassword" auto-complete="off"
+ style="width: calc(100% - 150px); "
+ :placeholder="`${$t('message.pleaseinput')}${$t('label.newpassword')}!`"></el-input>
+ </el-form-item>
+ <el-form-item prop="confirmpassword" :label="$t('label.confirmpassword')"
+ label-width="135px">
+ <el-input size="default" type="password" maxlength="64"
+ :prefix-icon="icon.Key"
+ v-model="model.confirmpassword" auto-complete="off"
+ style="width: calc(100% - 150px); "
+ :placeholder="`${$t('message.pleaseinput')}${$t('label.confirmpassword')}!`"></el-input>
+ </el-form-item>
+ <el-button type="primary" @click="resetPassword" :icon="icon.CircleCheck"
+ size="default">
+ {{$t('label.Verify')}}
+ </el-button>
+ </el-form>
+ </el-col>
+ </el-row>
+ <el-row v-else-if="activestep===3">
+ <el-col :span="24" align="center">
+ <svg-icon width="100" height="100" name="done"></svg-icon>
+ <br/>
+ <br/>
+ <br/>
+ <el-link type="success" @click="finishRetrievePassword"
+ :icon="icon.CircleCheck"
+ size="default" link>
+ {{$t('button.ReLogin')}}
+ </el-link>
+ </el-col>
+ </el-row>
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="2" align="left"></el-col>
+ </el-row>
+ </el-main>
+ <el-footer class="portal-layout-footer" style="height: 40px; bottom: 0px">
+ <div class="portal-layout-footer-context">
+ <p>Copyright © 2021 www.farriver.top {{ $t('message.AllRightReserved')}} | 津ICP备2021008314号-1 </p>
+ </div>
+ </el-footer>
+ </el-container>
+</template>
+
+<script>
+ import * as icon from '@element-plus/icons-vue'
+ import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+ import {getVerifyCodeUrl} from "@/api/admin/security";
+
+ export default {
+ name: "RetrievePassword",
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const state = reactive({
+ loading: false,
+ activestep: 0,
+ vcUrl: "",
+ model: {
+ username: '',
+ password: '',
+ newpassword: '',
+ confirmpassword: '',
+ verifycode: ''
+ },
+ rules: {
+ username: [{
+ required: true,
+ message: `${proxy.$t('message.isrequirded', {name: proxy.$t('label.username')})}`,
+ trigger: 'blur'
+ }],
+ newpassword: [{
+ required: true,
+ message: `${proxy.$t('message.isrequirded', {name: proxy.$t('label.newpassword')})}`,
+ trigger: 'blur'
+ }],
+ confirmpassword: [{
+ required: true,
+ message: `${proxy.$t('message.isrequirded', {name: proxy.$t('label.confirmpassword')})}`,
+ trigger: 'blur'
+ }],
+ verifycode: [{
+ required: true,
+ message: `${proxy.$t('message.isrequirded', {name: proxy.$t('label.verifycode')})}`,
+ trigger: 'blur'
+ }]
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ updateVerifyCode();
+ };
+ const LoadData = () => {
+
+ };
+ const key = () => {
+ return Math.random();
+ };
+ const updateVerifyCode = () => {
+ state.vcUrl = getVerifyCodeUrl();
+ state.model.verifycode = '';
+ };
+ const accountVerify = () => {
+ proxy.$refs.oneStepForm.validate((valid) => {
+ if (valid) {
+ state.loading = true;
+ state.activestep++;
+ state.loading = false;
+ } else {
+ return false;
+ }
+ });
+ }
+ const securityVerify = () => {
+ proxy.$refs.towStepForm.validate((valid) => {
+ if (valid) {
+ state.loading = true;
+ state.activestep++;
+ state.loading = false;
+ } else {
+ return false;
+ }
+ });
+ }
+ const resetPassword = () => {
+ proxy.$refs.threeStepForm.validate((valid) => {
+ if (valid) {
+ state.loading = true;
+ state.activestep++;
+ state.loading = false;
+ } else {
+ return false;
+ }
+ });
+ }
+ const finishRetrievePassword = () => {
+ proxy.$router.replace("/admin/login");
+ }
+
+ return {
+ ...toRefs(state), key, icon,
+ updateVerifyCode,
+ accountVerify,
+ securityVerify,
+ resetPassword,
+ finishRetrievePassword,
+ }
+ },
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/UserProfile.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/UserProfile.vue
new file mode 100644
index 0000000..edec391
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/UserProfile.vue
@@ -0,0 +1,401 @@
+<template>
+ <div v-if="user">
+ <el-card style="margin: 10px;">
+ <el-row>
+ <el-col :span="12" align="left">
+ <b style="margin-right: 20px">{{ $t('menu.Profile') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.Edit" @click="showUpdatePasswdView">
+ {{ $t('button.ChangePassword') }}
+ </el-button>
+ </el-col>
+ <el-col :span="12" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider style="margin: 10px 0px"/>
+ <el-main>
+ <el-row>
+ <el-col :span="24">
+ <el-form :model="user" size="default" :rules="rules" ref="dialogForm" label-width="150px">
+ <el-row>
+ <el-col :span="16">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.UserName')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ :disabled="!isInternalAccount"
+ v-model="user.name" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-tag v-if="user.status === 0" type="success">
+ {{ $t('label.VALID') }}
+ </el-tag>
+ <el-tag v-else-if="user.status === 1" type="info">
+ {{ $t('label.LOCKED') }}
+ </el-tag>
+ <el-tag v-else-if="user.status === 2" type="danger">
+ {{ $t('label.EXPIRED') }}
+ </el-tag>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Cellphone')" prop="cellphone">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="user.cellphone" disabled="disabled" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Telephone')" prop="telephone">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ :disabled="!isInternalAccount"
+ v-model="user.telephone" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Account')" prop="account">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="user.account" disabled="disabled" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Level')" prop="type">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="user.type" disabled="disabled" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item :label="$t('label.Email')" prop="email">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="user.email" disabled="disabled" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item :label="$t('label.Address')" prop="address">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ :disabled="!isInternalAccount"
+ v-model="user.address" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-col>
+ <el-col :span="8" align="center">
+ <el-skeleton v-if="!isInternalAccount" style="width: 240px">
+ <template #template>
+ <el-skeleton-item variant="image" style="width: 240px; height: 240px"/>
+ <div style="padding: 14px">
+ <el-skeleton-item variant="p" style="width: 50%"/>
+ <div style="display: flex; align-items: center; justify-items: center;">
+ <el-skeleton-item variant="text" style="margin-right: 16px"/>
+ <el-skeleton-item variant="text" style="width: 30%"/>
+ </div>
+ </div>
+ </template>
+ </el-skeleton>
+ <AvatarUploadExt v-else :image="user.userface" :successCallBack="(data)=>user.userface=data"/>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-col>
+ </el-row>
+ </el-main>
+ <el-divider style="margin: 10px 0px"/>
+ <el-footer>
+ <el-row>
+ <el-col :span="18" align="left">
+ <div>
+ <el-icon style="font:normal bold 16px arial,serif;vertical-align: -10%">
+ <collection-tag/>
+ </el-icon>
+ <span style="margin-left: 2px; font:normal bold 16px arial,serif;">{{ $t('label.Tags') }}:</span>
+ <el-tag type="success" style="margin-right: 5px" v-for="(r, index) in selectedroles"
+ :key="index">{{ r.name }}
+ </el-tag>
+ </div>
+ </el-col>
+ <el-col :span="6" align="right">
+ <el-button size="default" type="primary"
+ v-if="isInternalAccount"
+ :icon="icon.CircleCheck" @click="onUpdateUserProfile">
+ {{ $t('button.Save') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-footer>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :header="passwdtitle" v-model="passwdDialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="600px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span
+ style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ $t('label.NewPassword') }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="passwordmodel" size="default" status-icon :rules="passwordmodelrules"
+ ref="changePasswordForm" label-width="160px" class="demo-ruleForm">
+ <el-row style="margin-top: 20px;">
+ <el-col :span="20">
+ <el-form-item :label="$t('label.OriginalPassword')" prop="originalpassword">
+ <el-input size="default" type="password" maxlength="64" :prefix-icon="icon.Edit"
+ v-model="passwordmodel.originalpassword" autocomplete="off"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item :label="$t('label.NewPassword')" prop="newpassword">
+ <el-input size="default" type="password" maxlength="64" :prefix-icon="icon.Edit"
+ v-model="passwordmodel.newpassword" autocomplete="off"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item :label="$t('label.ConfirmPassword')" prop="confirmpassword">
+ <el-input size="default" type="password" maxlength="64" :prefix-icon="icon.Edit"
+ v-model="passwordmodel.confirmpassword" autocomplete="off"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button size="default" type="primary" :icon="icon.CircleCheck" @click="updatePassword">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" @click="passwdDialogVisible = false" type="danger"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {UpdateUserProfile, UpdateAccountPassword, doLoginOut} from "@/api/admin/security";
+import Cookies from "js-cookie";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import AvatarUploadExt from "@/components/common/AvatarUploadExt.vue";
+
+export default {
+ name: "My-Profile",
+ components: {AvatarUploadExt},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ isInternalAccount: false,
+ passwdDialogVisible: false,
+ passwdtitle: '修改密码',
+ passwordmodel: {
+ userid: '',
+ originalpassword: '',
+ newpassword: '',
+ confirmpassword: ''
+ },
+ passwordmodelrules: {
+ originalpassword: [
+ {
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.OriginalPassword')})}`,
+ trigger: 'blur'
+ }
+ ],
+ newpassword: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.NewPassword')})}`,
+ trigger: 'blur'
+ }],
+ confirmpassword: [{
+ required: true,
+ validator: (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error(`${proxy.$t('message.IsRequired', {name: proxy.$t('label.ConfirmPassword')})}`));
+ } else if (value !== proxy.passwordmodel.newpassword) {
+ callback(new Error(`${proxy.$t('message.ConfirmPasswordNotMatchNewPassword')}`));
+ } else {
+ callback();
+ }
+ },
+ trigger: 'blur'
+ }]
+ },
+
+ user: {
+ name: '',
+ telephone: '',
+ phone: '',
+ address: '',
+ userface: ''
+ },
+ userrules: {},
+ selectedroles: store.roles,
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (store.$state.user && store.$state.user.employee) {
+ state.user = store.$state.user.employee;
+ state.isInternalAccount = true;
+ } else {
+ state.user = store.$state.user;
+ }
+ };
+ const LoadData = () => {
+
+ };
+ const onUpdateUserProfile = () => {
+ if (state.user.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateUserProfile(state.user)
+ .then(resp => {
+ if (resp && resp.data) {
+ if (resp.data.code == 200) {
+ proxy.$message.success({message: `${proxy.$t('message.' + resp.data.message)}`});
+ LoadData();
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ }
+ };
+ const showUpdatePasswdView = () => {
+ state.passwdDialogVisible = true;
+ };
+ const updatePassword = () => {
+ proxy.$refs['changePasswordForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ state.passwordmodel.accountid = store.$state.user.id;
+
+ UpdateAccountPassword(state.passwordmodel).then(resp => {
+ if (resp && resp.data) {
+ if (resp.data.code == 200) {
+ proxy.$message.success({message: `${proxy.$t('message.' + resp.data.message)}`});
+ state.passwdDialogVisible = false;
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ }
+ rLoading.close();
+ }).catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ })
+ }
+ });
+ };
+ const logout = () => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSignOut')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ localStorage.removeItem('Authorization');
+ localStorage.removeItem(WGURL.routeKey);
+ localStorage.removeItem("userid");
+
+ Cookies.remove('userid', {domain: WGURL.cookieDomain});
+ Cookies.remove('Authorization', {domain: WGURL.cookieDomain});
+
+ doLoginOut().then(success => {
+ if (WGURL.UseSSO) {
+ window.history.go(0);
+ } else {
+ proxy.$router.replace('/admin/login');
+ }
+ }).catch(error => {
+ console.error(error);
+ state.loading = false;
+ proxy.$message.error({
+ message: error
+ });
+
+ if (WGURL.UseSSO) {
+ window.history.go(0);
+ } else {
+ proxy.$router.replace('/admin/login');
+ }
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+
+ return {
+ ...toRefs(state),
+ logout, icon,
+ onUpdateUserProfile,
+ showUpdatePasswdView,
+ updatePassword,
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Workbench.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Workbench.vue
new file mode 100644
index 0000000..8afe40b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/Workbench.vue
@@ -0,0 +1,354 @@
+<template>
+ <div style="background-color: white; margin: 10px 10px; height: auto;">
+ <div style="padding: 10px 20px;">
+ <el-row>
+ <el-col :span="12">
+ <div v-if="user" style="padding: 10px 20px;display: flex; align-items: center; justify-items: inherit;">
+ <div>
+ <el-avatar v-if="user.employee&&user.employee.userface" :size="70" :src="user.employee.userface"
+ style="margin-right: 5px;margin-top: 5px;"/>
+ <svg-icon v-else name="administrator" width="70" height="70"
+ style="margin-right: 5px;margin-top: 5px; border-radius: 100px;" color=""/>
+ </div>
+ <div>
+ <p class="text-overflow">
+ <el-text tag="b" size="default" type="primary">
+ {{ $t('message.HelloWords', {name: user.name}) }}
+ </el-text>
+ </p>
+ <p class="text-overflow" v-if="positiontitle||organizationStructure">
+ <el-text type="info">
+ {{ `${positiontitle}|${organizationStructure}` }}
+ </el-text>
+ </p>
+ <p class="text-overflow" v-else>
+ <el-text v-for="(item,i) in user.roles" type="info">
+ {{ $t('label.Role', {name: user.name}) }} / {{ `${item.name} (${item.code})` }}
+ </el-text>
+ </p>
+ </div>
+ </div>
+ <div v-else style="padding: 10px 20px;">
+ <el-skeleton style="--el-skeleton-circle-size: 80px">
+ <template #template>
+ <div style="display: flex; align-items: center; justify-items: inherit;">
+ <div>
+ <el-skeleton-item variant="circle"/>
+ </div>
+ <div style="margin: 0 10px;">
+ <el-skeleton-item variant="text" style="width: 150px;"/>
+ <br/>
+ <el-skeleton-item variant="text" style="width: 220px;"/>
+ <br/>
+ <el-skeleton-item variant="text" style="width: 300px;"/>
+ </div>
+ </div>
+ </template>
+ </el-skeleton>
+ </div>
+ </el-col>
+ <el-col :span="12">
+ <div style="display: flex;justify-content: space-between">
+ <div class="statistic-card">
+ <el-statistic :value="98500">
+ <template #title>
+ <div style="display: inline-flex; align-items: center">
+ {{ $t('label.MyTask') }}
+ </div>
+ </template>
+ </el-statistic>
+ </div>
+ <div class="statistic-card">
+ <el-statistic :value="693700">
+ <template #title>
+ <div style="display: inline-flex; align-items: center">
+ {{ $t('label.MyApproval') }}
+ </div>
+ </template>
+ </el-statistic>
+ </div>
+ <div class="statistic-card">
+ <el-statistic :value="72000">
+ <template #title>
+ <div style="display: inline-flex; align-items: center">
+ {{ $t('label.MyNotification') }}
+ </div>
+ </template>
+ </el-statistic>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'0px 0px 10px 0px'}"></el-divider>
+ <el-row :style="{'margin':'5px 0px'}">
+ <el-col :span="16">
+ <el-row>
+ <el-col :span="24">
+ <el-card>
+ <el-tabs style="min-height: 300px;">
+ <el-tab-pane
+ v-if="operations.filter(e=>e.children.filter(p=>p.path&&p.path.includes('ContractPurchase')).length>0)">
+ <template #label>
+ <span>
+ <svg-icon width="18" height="18" name="purchase" color=""/>
+ {{ `${$t('menu.ContractPurchase')}` }}
+ </span>
+ </template>
+ </el-tab-pane>
+ <el-tab-pane
+ v-if="operations.filter(e=>e.children.filter(p=>p.path&&p.path.includes('ContractSale')).length>0)">
+ <template #label>
+ <span>
+ <svg-icon width="18" height="18" name="sale" color=""/>
+ {{ `${$t('menu.ContractSales')}` }}
+ </span>
+ </template>
+ </el-tab-pane>
+ </el-tabs>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="24">
+ <el-card>
+ <el-tabs style="min-height: 300px;">
+ <el-tab-pane>
+ <template #label>
+ <span>
+ <svg-icon width="18" height="18" name="task" color=""/>
+ {{ $t('label.MyTask') }}
+ </span>
+ </template>
+ <LatestTask/>
+ </el-tab-pane>
+ <el-tab-pane>
+ <template #label>
+ <span>
+ <svg-icon width="18" height="18" name="approval" color=""/>
+ {{ $t('label.MyApproval') }}
+ </span>
+ </template>
+ <LatestApproval/>
+ </el-tab-pane>
+ </el-tabs>
+ </el-card>
+ </el-col>
+ </el-row>
+ </el-col>
+ <el-col :span="8" style="padding: 0 0 0 10px;">
+ <el-row>
+ <el-col :span="24">
+ <el-card>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <span style="margin-right: 20px">
+ <svg-icon width="16" height="16" name="menu" color=""/>
+ {{ `${$t('label.QuickNavigation')}` }}
+ </span>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ <el-divider style="margin: 10px 0px"/>
+ <el-scrollbar height="180px">
+ <el-col :span="24" v-for="(operation, i) in operations">
+ <MenuButton v-for="(item, i) in operation.children" :index="i+1+''"
+ style="margin: 2px;" :item="item"
+ height="75px" color="" width="105px"/>
+ </el-col>
+ </el-scrollbar>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="24">
+ <el-card>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <span style="margin-right: 20px;">
+ <svg-icon width="18" height="18" name="notification" color=""/>
+ {{ `${$t('label.Latest')}${$t('label.MyNotification')}` }}
+ </span>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ <el-divider style="margin: 10px 0px"/>
+ <LatestNotification/>
+ </el-card>
+ </el-col>
+ </el-row>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, watch} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import MenuButton from "@/components/common/MenuButton.vue";
+import {GetEmployeePositionWithOrganizationsByEmployeeId} from "@/api/admin/security";
+import {GetDashboardData} from "@/api/admin/statistics";
+import LatestNotification from "@/views/admin/components/LatestNotification.vue";
+import LatestTask from "@/views/admin/components/LatestTask.vue";
+import LatestApproval from "@/views/admin/components/LatestApproval.vue";
+import {
+ formatterDate,
+ formatterDatetime,
+ formatterNumber
+} from '@/utils/common';
+
+export default {
+ name: 'Workbench',
+ components: {LatestNotification, LatestTask, LatestApproval, MenuButton},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ routes: JSON.parse(localStorage.getItem(`${WGURL.routeKey}-routes`)),
+ user: null,
+ positiontitle: "",
+ organizationStructure: "",
+ operations: [],
+ statisticsdata: {
+ monthlyapprovalrecord: NaN,
+ monthlyactivenotification: NaN,
+ monthlyactivetask: NaN,
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ LoadEmployeePositionWithOrganizationsByEmployeeId();
+ LoadDashboardData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ if (store.$state.user && store.$state.user.employee) {
+ state.user = store.$state.user.employee;
+ } else {
+ state.user = store.$state.user;
+ }
+ };
+ const LoadData = () => {
+ for (let i = 0; i < state.routes.length; i++) {
+ let item = state.routes[i];
+
+ let group = {
+ id: i,
+ icon: item.meta.icon,
+ name: item.name,
+ type: "menu",
+ text: proxy.$t('menu.' + item.meta.languagekey),
+ languagekey: item.meta.languagekey,
+ link: item.path,
+ }
+
+ let children = [];
+ for (let j = 0; j < item.children.length; j++) {
+ let child = item.children[j];
+ children.push({
+ id: i + j,
+ icon: child.meta.icon,
+ name: child.name,
+ type: "menu",
+ text: proxy.$t('menu.' + child.meta.languagekey),
+ languagekey: child.meta.languagekey,
+ link: child.path,
+ });
+ }
+
+ state.operations.push({group: group, children: children, sequence: children.length});
+
+ state.operations = state.operations.sort(function (a, b) {
+ return b.sequence - a.sequence
+ });
+ }
+ };
+ const LoadDashboardData = () => {
+ GetDashboardData({}).then(resp => {
+ if (resp.data) {
+ state.statisticsdata = resp.data.data;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const LoadEmployeePositionWithOrganizationsByEmployeeId = () => {
+ let emp = store.$state.user.employee;
+ if (emp) {
+ let employeeid = emp.id;
+ GetEmployeePositionWithOrganizationsByEmployeeId(employeeid).then(resp => {
+ if (resp.data) {
+ state.positiontitle = resp.data.data[0].title;
+ state.organizationStructure = resp.data.data[0].organizationStructure
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ formatterDate,
+ formatterDatetime,
+ formatterNumber,
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+$color: var(--el-color-primary);
+
+.el-statistic {
+ --el-statistic-content-font-size: 28px;
+}
+
+.statistic-card {
+ height: 100%;
+ padding: 20px;
+ border-radius: 4px;
+ background-color: var(--el-bg-color-overlay);
+}
+
+.statistic-footer {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-wrap: wrap;
+ font-size: 12px;
+ color: var(--el-text-color-regular);
+ margin-top: 16px;
+}
+
+.statistic-footer .footer-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.statistic-footer .footer-item span:last-child {
+ display: inline-flex;
+ align-items: center;
+ margin-left: 4px;
+}
+
+.green {
+ color: var(--el-color-success);
+}
+
+.red {
+ color: var(--el-color-error);
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestApproval.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestApproval.vue
new file mode 100644
index 0000000..6a362f5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestApproval.vue
@@ -0,0 +1,122 @@
+<template>
+ <div v-if="!loading">
+ <el-table v-loading="loading" :data="entityList" stripe border size="default" highlight-current-row
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '45px', color: 'var(--el-color-primary)', background: 'var(--el-color-info-light)', }"
+ :header-cell-style="{ height: '45px', margin: '0px', padding: '0px', background: 'var(--el-color-info-light)' }"
+ @row-dblclick="showApprovalCenter">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="80"/>
+ <el-table-column prop="title" sortable align="left" :label="$t('label.Title')" width="300"/>
+ <el-table-column prop="startdatetime" sortable align="left" :label="$t('label.ScheduledStartTime')"
+ width="160">
+ <template #default="scope">
+ <p class="text-overflow">
+ <span>{{ `${formatterDatetime(scope.row.startdatetime)}` }}</span>
+ </p>
+ </template>
+ </el-table-column>
+ <el-table-column prop="enddatetime" sortable align="left" :label="$t('label.ScheduledFinishedTime')"
+ width="160">
+ <template #default="scope">
+ <p class="text-overflow">
+ <span>{{ `${formatterDatetime(scope.row.enddatetime)}` }}</span>
+ </p>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createtime" min-width="160" width="*" align="left"
+ :label="$t('label.CreateTime')">
+ <template #default="scope">
+ <p class="text-overflow">
+ <span>{{ `${formatterDatetime(scope.row.createtime)}` }}</span>
+ </p>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="130">
+ <template #default="scope">
+ <el-button @click="showApprovalCenter(scope.row)" :icon="icon.More"
+ :title="$t('button.Detail')"
+ size="small" type="primary" plain circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+
+ </div>
+ <div>
+ <el-link type="primary" @click="showApprovalCenter">
+ {{ `${$t('button.More')}` }}
+ <el-icon>
+ <Right/>
+ </el-icon>
+ </el-link>
+ </div>
+ </div>
+ </div>
+ <el-skeleton v-else :rows="5"/>
+</template>
+
+<script>
+
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as icon from "@element-plus/icons-vue";
+import {formatterDate, formatterDatetime, formatterNumber} from "@/utils/common";
+import {GetApprovalList} from "@/api/admin/ifc";
+
+export default {
+ name: 'LatestApproval',
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ loading: false,
+ entityList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let userid = store.user.id;
+
+ GetApprovalList(userid).then(resp => {
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ }
+ state.loading = false;
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const showApprovalCenter = () => {
+ store.launchIframe(`${WGURL.ifcDomain}/client/center/approval`, `${proxy.$t('label.ApprovalCenter')}`);
+ }
+
+ return {
+ ...toRefs(state),
+ icon,
+ formatterDate,
+ formatterDatetime,
+ formatterNumber,
+ showApprovalCenter,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestNotification.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestNotification.vue
new file mode 100644
index 0000000..13f16c1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestNotification.vue
@@ -0,0 +1,99 @@
+<template>
+ <div v-if="!loading">
+ <el-row v-if="entityList&&entityList.length>0">
+ <el-col :span="24" v-for="item in entityList" :key="item.id">
+ <el-alert :type="item.type?item.type:'info'" show-icon style="margin: 2px;">
+ <template #title>
+ <el-text size="small">{{ item.title }}</el-text>
+ </template>
+ <template #default>
+ <el-text size="small">{{ item.description }}</el-text>
+ </template>
+ </el-alert>
+ </el-col>
+ </el-row>
+ <el-empty :image-size="80" v-else/>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+
+ </div>
+ <div>
+ <el-link type="primary" @click="showNotificationCenter">
+ {{ `${$t('button.More')}` }}
+ <el-icon>
+ <Right/>
+ </el-icon>
+ </el-link>
+ </div>
+ </div>
+ </div>
+ <el-skeleton v-else :rows="5"/>
+</template>
+
+<script>
+
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as icon from "@element-plus/icons-vue";
+import {formatterDate, formatterDatetime, formatterNumber} from "@/utils/common";
+import {GetNotificationList} from "@/api/admin/ifc";
+
+export default {
+ name: 'LatestTask',
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ loading: false,
+ entityList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let userid = store.user.id;
+
+ GetNotificationList(userid).then(resp => {
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ }
+ state.loading = false;
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const showNotificationCenter = () => {
+ store.launchIframe(`${WGURL.ifcDomain}/client/center/notification`, `${proxy.$t('label.NotificationCenter')}`);
+ }
+
+ const dismissNotification = (data) => {
+ state.notifications = state.notifications.filter(e => e.id != data.id);
+ }
+
+ return {
+ ...toRefs(state),
+ icon,
+ formatterDate,
+ formatterDatetime,
+ formatterNumber,
+ showNotificationCenter,
+ dismissNotification
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestTask.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestTask.vue
new file mode 100644
index 0000000..3c08778
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/components/LatestTask.vue
@@ -0,0 +1,123 @@
+<template>
+ <div v-if="!loading">
+ <el-table v-loading="loading" :data="entityList" stripe border size="default" highlight-current-row
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '45px', color: 'var(--el-color-primary)', background: 'var(--el-color-info-light)', }"
+ :header-cell-style="{ height: '45px', margin: '0px', padding: '0px', background: 'var(--el-color-info-light)' }"
+ @row-dblclick="showTaskCenter">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="80"/>
+ <el-table-column prop="title" sortable align="left" :label="$t('label.Title')" width="300"/>
+ <el-table-column prop="startdatetime" sortable align="left" :label="$t('label.ScheduledStartTime')"
+ width="160">
+ <template #default="scope">
+ <p class="text-overflow">
+ <span>{{ `${formatterDatetime(scope.row.startdatetime)}` }}</span>
+ </p>
+ </template>
+ </el-table-column>
+ <el-table-column prop="enddatetime" sortable align="left" :label="$t('label.ScheduledFinishedTime')"
+ width="160">
+ <template #default="scope">
+ <p class="text-overflow">
+ <span>{{ `${formatterDatetime(scope.row.enddatetime)}` }}</span>
+ </p>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createtime" min-width="160" width="*" align="left"
+ :label="$t('label.CreateTime')">
+ <template #default="scope">
+ <p class="text-overflow">
+ <span>{{ `${formatterDatetime(scope.row.createtime)}` }}</span>
+ </p>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="130">
+ <template #default="scope">
+ <el-button @click="showTaskCenter(scope.row)" :icon="icon.More"
+ :title="$t('button.Detail')"
+ size="small" type="primary" plain circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+
+ </div>
+ <div>
+ <el-link type="primary" @click="showTaskCenter">
+ {{ `${$t('button.More')}` }}
+ <el-icon>
+ <Right/>
+ </el-icon>
+ </el-link>
+ </div>
+ </div>
+ </div>
+ <el-skeleton v-else :rows="5"/>
+</template>
+
+<script>
+
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as icon from "@element-plus/icons-vue";
+import {formatterDate, formatterDatetime, formatterNumber} from "@/utils/common";
+import {GetTaskList} from "@/api/admin/ifc";
+
+export default {
+ name: 'LatestNotification',
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ loading: false,
+ entityList: [],
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let userid = store.user.id;
+
+ GetTaskList(userid).then(resp => {
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ }
+ state.loading = false;
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const showTaskCenter = () => {
+ store.launchIframe(`${WGURL.ifcDomain}/client/center/task`, `${proxy.$t('label.TaskCenter')}`);
+ }
+
+ return {
+ ...toRefs(state),
+ icon,
+ formatterDate,
+ formatterDatetime,
+ formatterNumber,
+ showTaskCenter,
+ }
+ },
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrder.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrder.vue
new file mode 100644
index 0000000..4c3de57
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrder.vue
@@ -0,0 +1,588 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.ActiveOrder') }}</b>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" maxlength="64"
+ :prefix-icon="icon.Search"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData" :disabled="showAdvanceSearchView"></el-input>
+ <el-button type="primary" size="default" :icon="icon.Search" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.name"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.code"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPName')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.vipname"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPPhone')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.vipphone"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.OrderTime')" prop="ordertime">
+ <el-date-picker
+ style="width: 100%"
+ size="default"
+ v-model="ordertimeduration"
+ type="daterange"
+ range-separator="-"
+ :start-placeholder="$t('label.DateFrom')"
+ :end-placeholder="$t('label.DateTo')"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD 00:00:00"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div>
+ <el-table
+ :data="entityList" stripe border
+ v-loading="loading"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ size="default"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"></el-table-column>
+ <el-table-column prop="no" sortable align="left" :label="$t('label.Code')" width="150"/>
+ <el-table-column prop="status" sortable :label="$t('label.Status')" align="left" width="100">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="warning">{{ $t('label.Defined') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="warning">{{ $t('label.Delivered') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="warning">{{ $t('label.Received') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===3" type="danger">{{ $t('label.Rejected') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===4" type="success">{{ $t('label.Paid') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===5" type="info">{{ $t('label.Commented') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===5" type="info">{{ $t('label.Completed') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="vipname" align="left" :label="$t('label.VIPName')" width="150"/>
+ <el-table-column prop="vipphone" align="left" :label="$t('label.VIPPhone')" width="150"/>
+ <el-table-column prop="vipdiamondtype" align="left" :label="$t('label.VIPDiamondType')" width="150">
+ <template #default="scope">
+ <label v-if="scope.row.vipdiamondtype===0">
+ <svg-icon name="vip-silver" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.SilverMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.vipdiamondtype===1">
+ <svg-icon name="vip-gold" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.GoldMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.vipdiamondtype===2">
+ <svg-icon name="vip-diamond" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.DiamondMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.vipdiamondtype===3">
+ <svg-icon name="vip-exclusive" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.ExclusiveMember') }}</span>
+ </label>
+ <label v-else>--</label>
+ </template>
+ </el-table-column>
+
+ <el-table-column prop="totalmoney" align="right" :label="$t('label.Amount')" width="150"/>
+ <el-table-column prop="payedmoney" align="right" :label="$t('label.PayedMoney')" width="150"/>
+ <el-table-column prop="paymentmethod" align="left" :label="$t('label.PaymentMethod')" width="150">
+ <template #default="scope">
+ <label v-if="scope.row.paymentmethod===0">
+ <svg-icon name="account-balance" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.AccountBalancePay') }}</span>
+ </label>
+ <label v-else-if="scope.row.paymentmethod===1">
+ <svg-icon name="alipay-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.AliPay') }}</span>
+ </label>
+ <label v-else-if="scope.row.paymentmethod===2">
+ <svg-icon name="wechat-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.WeChatPay') }}</span>
+ </label>
+ <label v-else-if="scope.row.paymentmethod===3">
+ <svg-icon name="bank-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.BankPay') }}</span>
+ </label>
+ <label v-else>--</label>
+ </template>
+ </el-table-column>
+ <el-table-column prop="discountmoney" align="right" :label="$t('label.DiscountMoney')" width="150"/>
+
+ <el-table-column prop="ordertime" width="160" align="left"
+ :label="$t('label.OrderTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="paytime" width="160" align="left"
+ :label="$t('label.PayTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="completetime" width="160" align="left"
+ :label="$t('label.CompleteTime')"
+ :formatter="formatterDatetime"/>
+
+ <el-table-column prop="createtime" width="150" align="left" :label="$t('label.CreateTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="remark" min-width="500" width="*" align="left"
+ :label="$t('label.Remark')"></el-table-column>
+ <el-table-column fixed="right" width="110" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div style="margin-top:10px; display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-affix>
+ </div>
+ </el-card>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate, GetDateStr, GetDateTimeStr} from '../../../utils/common'
+import {GetActiveOrders, UpdateActiveOrder, CreateActiveOrder, DeleteActiveOrder} from "../../../api/admin/order"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+
+export default {
+ name: "ActiveOrder",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ vipname: "",
+ vipphone: "",
+ vipdiamondtype: "",
+ },
+ ordertimeduration: [],
+ entityList: [],
+ entity: {
+ id: null,
+ no: null,
+ totalmoney: null,
+ payedmoney: null,
+ paymentmethod: null,
+ discountmoney: null,
+ status: null,
+ ordertime: null,
+ paytime: null,
+ sendtime: null,
+ receivetime: null,
+ commenttime: null,
+ completetime: null,
+ isdeleted: null,
+ remark: null,
+ createtime: null,
+ updatetime: null,
+ sendername: null,
+ sendercode: null,
+ sendercontactno: null,
+ targetaddress: null,
+ deliveryaddress: null,
+ optimalcoupon: null,
+ logisticscompany: null,
+ logisticsno: null,
+ transportmode: null,
+ boxcount: null,
+ boxweight: null,
+ freight: null,
+ commentcontent: null,
+ commentlevel: null,
+ receiverid: null,
+ vipuserId: null,
+ vipname: null,
+ vipphone: null,
+ vipdiamondtype: null,
+ viptype: null,
+ vippicture: null,
+ vipcarddiscountrate: null,
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ InitOrderTimeDuration();
+ };
+
+ const InitOrderTimeDuration = () => {
+ let nowfrom = new Date();
+ let datefrom = GetDateTimeStr(nowfrom, 0, 0, 0);
+
+ let nowto = new Date();
+ let dateto = GetDateTimeStr(nowto, 0, 0, 1);
+
+ state.ordertimeduration = [datefrom, dateto];
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ InitOrderTimeDuration();
+ state.entity = {
+ id: null,
+ no: null,
+ totalmoney: null,
+ payedmoney: null,
+ paymentmethod: null,
+ discountmoney: null,
+ status: null,
+ ordertime: null,
+ paytime: null,
+ sendtime: null,
+ receivetime: null,
+ commenttime: null,
+ completetime: null,
+ isdeleted: null,
+ remark: null,
+ createtime: null,
+ updatetime: null,
+ sendername: null,
+ sendercode: null,
+ sendercontactno: null,
+ targetaddress: null,
+ deliveryaddress: null,
+ optimalcoupon: null,
+ logisticscompany: null,
+ logisticsno: null,
+ transportmode: null,
+ boxcount: null,
+ boxweight: null,
+ freight: null,
+ commentcontent: null,
+ commentlevel: null,
+ receiverid: null,
+ vipuserId: null,
+ vipname: null,
+ vipphone: null,
+ vipdiamondtype: null,
+ viptype: null,
+ vippicture: null,
+ vipcarddiscountrate: null,
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.config.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ vipname: state.searchValue.vipname,
+ vipphone: state.searchValue.vipphone,
+ vipdiamondtype: state.searchValue.vipdiamondtype,
+ }
+ if (state.ordertimeduration && state.ordertimeduration.length > 1) {
+ condition.startDateTime = state.ordertimeduration[0];
+ condition.endDateTime = state.ordertimeduration[1];
+
+ let newSDT = new Date(condition.startDateTime);
+ newSDT.setHours(0);
+ newSDT.setMinutes(0);
+ newSDT.setSeconds(0);
+
+ condition.startDateTime = formatDate(newSDT, "yyyy-MM-dd hh:mm:ss");
+
+ //add 23:59:59 to end date time.
+ let newEDT = new Date(condition.endDateTime);
+ newEDT.setHours(23);
+ newEDT.setMinutes(59);
+ newEDT.setSeconds(59);
+
+ condition.endDateTime = formatDate(newEDT, "yyyy-MM-dd hh:mm:ss");
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetActiveOrders(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ vipname: "",
+ vipphone: "",
+ vipdiamondtype: "",
+ };
+ };
+
+ const showEditView = (data) => {
+ store.$state.order = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/order/ActiveOrderDetail',
+ query: {
+ orderid: data.id
+ }
+ });
+ };
+
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteActiveOrder(data.id)
+ .then(resp => {
+ if (resp) {
+ LoadData();
+ }
+ state.loading = false;
+ })
+ .catch(error => {
+ console.error(error);
+ state.loading = false;
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "ordertime":
+ if (!row.ordertime)
+ return null;
+ date = new Date(row.ordertime);
+ break;
+ case "paytime":
+ if (!row.paytime)
+ return null;
+ date = new Date(row.paytime);
+ break;
+ case "completetime":
+ if (!row.completetime)
+ return null;
+ date = new Date(row.completetime);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ showEditView,
+ deleteItem,
+ ClearSearchData,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+.el-transfer-panel {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__body {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list.is-filterable {
+ height: 250px;
+ width: 300px;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrderDetail.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrderDetail.vue
new file mode 100644
index 0000000..b9c9680
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/ActiveOrderDetail.vue
@@ -0,0 +1,534 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <el-row>
+ <el-col :span="12" align="left">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">{{ $t('menu.ActiveOrderDetail') }}</b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="12" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="24" align="left">
+ <el-form :model="entity" size="default" :rules="rules" ref="dialogForm" label-width="120px"
+ style="margin-top: 15px;">
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.OrderNo')" prop="no">
+ {{ entity.no }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-tag v-if="entity.status===0" type="warning">
+ {{ $t('label.Defined') }}
+ </el-tag>
+ <el-tag v-else-if="entity.status===1" type="warning">
+ {{ $t('label.Delivered') }}
+ </el-tag>
+ <el-tag v-else-if="entity.status===2" type="warning">
+ {{ $t('label.Received') }}
+ </el-tag>
+ <el-tag v-else-if="entity.status===3" type="danger">
+ {{ $t('label.Rejected') }}
+ </el-tag>
+ <el-tag v-else-if="entity.status===4" type="success">
+ {{ $t('label.Paid') }}
+ </el-tag>
+ <el-tag v-else-if="entity.status===5" type="info">
+ {{ $t('label.Commented') }}
+ </el-tag>
+ <el-tag v-else-if="entity.status===5" type="info">
+ {{ $t('label.Completed') }}
+ </el-tag>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Amount')" prop="totalmoney">
+ <b style="margin-right: 20px; color: var(--el-color-primary)">{{ entity.totalmoney }}</b>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.PayedMoney')" prop="payedmoney">
+ <b style="margin-right: 20px; color: var(--el-color-primary)">{{ entity.payedmoney }}</b>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.PaymentMethod')" prop="paymentmethod">
+ <label v-if="entity.paymentmethod===0">
+ <svg-icon name="account-balance" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.AccountBalancePay') }}</span>
+ </label>
+ <label v-else-if="entity.paymentmethod===1">
+ <svg-icon name="alipay-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.AliPay') }}</span>
+ </label>
+ <label v-else-if="entity.paymentmethod===2">
+ <svg-icon name="wechat-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.WeChatPay') }}</span>
+ </label>
+ <label v-else-if="entity.paymentmethod===3">
+ <svg-icon name="bank-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.BankPay') }}</span>
+ </label>
+ <label v-else>--</label>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-col>
+ </el-row>
+ </el-card>
+ <el-row>
+ <el-col :span="8">
+ <el-card :style="{'margin':'0px 10px 10px 10px'}">
+ <el-form :model="entity" size="default" :rules="rules" ref="dialogForm" label-width="120px">
+ <el-row>
+ <el-col :span="12" align="left">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="vip-master" width="20" height="20" color=""/>
+ <b style="margin-right: 20px">{{ $t('label.VIPInfo') }}</b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="12" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item :label="$t('label.VIPName')" prop="vipname">
+ {{ entity.vipname }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :label="$t('label.VIPPhone')" prop="vipphone">
+ {{ entity.vipphone }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :label="$t('label.VIPDiamondType')" prop="vipdiamondtype">
+ <label v-if="entity.vipdiamondtype===0">
+ <svg-icon name="vip-silver" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.SilverMember') }}</span>
+ </label>
+ <label v-else-if="entity.vipdiamondtype===1">
+ <svg-icon name="vip-gold" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.GoldMember') }}</span>
+ </label>
+ <label v-else-if="entity.vipdiamondtype===2">
+ <svg-icon name="vip-diamond" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.DiamondMember') }}</span>
+ </label>
+ <label v-else-if="entity.vipdiamondtype===3">
+ <svg-icon name="vip-exclusive" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.ExclusiveMember') }}</span>
+ </label>
+ <label v-else>--</label>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-card>
+ </el-col>
+ <el-col :span="16">
+ <el-card :style="{'margin':'0px 10px 10px 0px'}">
+ <el-form :model="entity" size="default" :rules="rules" ref="dialogForm" label-width="120px">
+ <el-row>
+ <el-col :span="12" align="left">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="timesheet" width="20" height="20" color=""/>
+ <b style="margin-right: 20px">{{ $t('label.Timesheet') }}</b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="12" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.CreateTime')" prop="createtime">
+ <svg-icon name="timesheet" width="16" height="16" color=""/>
+ {{ formatterDatetime2(entity.createtime) }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.OrderTime')" prop="ordertime">
+ <svg-icon name="timesheet" width="16" height="16" color=""/>
+ {{ formatterDatetime2(entity.ordertime) }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.PayTime')" prop="paytime">
+ <svg-icon name="timesheet" width="16" height="16" color=""/>
+ {{ formatterDatetime2(entity.paytime) }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.ReceiveTime')" prop="receivetime">
+ <svg-icon name="timesheet" width="16" height="16" color=""/>
+ {{ formatterDatetime2(entity.receivetime) }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.CommentTime')" prop="commenttime">
+ <svg-icon name="timesheet" width="16" height="16" color=""/>
+ {{ formatterDatetime2(entity.commenttime) }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.CompleteTime')" prop="completetime">
+ <svg-icon name="timesheet" width="16" height="16" color=""/>
+ {{ formatterDatetime2(entity.completetime) }}
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </el-card>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="16">
+ <el-card :style="{'margin':'0px 10px 10px 10px'}">
+ <el-row>
+ <el-col :span="12" align="left">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="product-master" width="20" height="20" color=""/>
+ <b style="margin-right: 20px">{{ $t('menu.OrderProduct') }}</b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="12" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-table
+ :data="entityList" stripe border
+ v-loading="loading"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ size="default"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}">
+ <el-table-column type="selection" width="40"></el-table-column>
+ <el-table-column type="index" :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="image" align="center" :label="$t('label.ProductImage')" width="150">
+ <template #default="scope">
+ <svg-icon v-if="!scope.row.image" name="product" width="60" height="60"
+ style="margin: 10px"
+ color="var(--el-border-color-light)"/>
+ <el-image v-else
+ style="width: 60px; height: 60px; margin: 10px"
+ :src="scope.row.image"
+ :preview-src-list="[scope.row.image]"
+ :z-index="1000"
+ fit="cover"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column prop="productname" :label="$t('label.ProductName')" width="180"/>
+ <el-table-column prop="productcode" :label="$t('label.ProductCode')" width="120"/>
+ <el-table-column prop="color" :label="$t('label.ProductColor')" width="100"/>
+ <el-table-column prop="size" :label="$t('label.ProductSize')" width="100"/>
+ <el-table-column prop="price" :label="$t('label.Price')" width="100"/>
+ <el-table-column prop="status" sortable :label="$t('label.Status')" align="left"
+ width="100">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="warning">{{ $t('label.Defined') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="warning">{{ $t('label.Delivered') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="warning">{{ $t('label.Received') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===3" type="danger">{{ $t('label.Rejected') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===4" type="warning">{{ $t('label.Paid') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===5" type="info">{{ $t('label.Commented') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===5" type="info">{{ $t('label.Completed') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createtime" width="150" align="left" :label="$t('label.CreateTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="remark" min-width="500" width="*" align="left"
+ :label="$t('label.Remark')"></el-table-column>
+ </el-table>
+ </el-card>
+ </el-col>
+ <el-col :span="8">
+ <el-card :style="{'margin':'0px 10px 10px 0px'}">
+ <el-row>
+ <el-col :span="12" align="left">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="remark" width="20" height="20" color=""/>
+ <b style="margin-right: 20px">{{ $t('label.Remark') }}</b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="12" align="right">
+
+ </el-col>
+ </el-row>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="24">
+ <el-input type="textarea" :rows="6" maxlength="500" placeholder=""
+ disabled="disabled"
+ v-model="entity.remark"></el-input>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-col>
+ </el-row>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs, onActivated} from "vue";
+import {formatDate} from '@/utils/common'
+import {GetActiveOrderDetail} from "@/api/admin/order"
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+export default {
+ name: "ActiveOrder",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ order: store.$state.order,
+ orderid: proxy.$route.query.orderid,
+ //common properties
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ },
+ entityList: [],
+ entity: {
+ id: null,
+ no: null,
+ totalmoney: null,
+ payedmoney: null,
+ paymentmethod: null,
+ discountmoney: null,
+ status: null,
+ ordertime: null,
+ paytime: null,
+ sendtime: null,
+ receivetime: null,
+ commenttime: null,
+ completetime: null,
+ isdeleted: null,
+ remark: null,
+ createtime: null,
+ updatetime: null,
+ sendername: null,
+ sendercode: null,
+ sendercontactno: null,
+ targetaddress: null,
+ deliveryaddress: null,
+ optimalcoupon: null,
+ logisticscompany: null,
+ logisticsno: null,
+ transportmode: null,
+ boxcount: null,
+ boxweight: null,
+ freight: null,
+ commentcontent: null,
+ commentlevel: null,
+ receiverid: null,
+ vipuserId: null,
+ vipname: null,
+ vipphone: null,
+ vipdiamondtype: null,
+ viptype: null,
+ vippicture: null,
+ vipcarddiscountrate: null,
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.order = store.$state.order;
+
+ Init();
+ });
+
+ const Init = () => {
+ LoadData();
+ };
+ const LoadData = () => {
+ if (!state.order) {
+ return;
+ }
+
+ state.loading = true;
+
+ GetActiveOrderDetail(state.order.id).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entity = resp.data;
+ state.entityList = resp.data.products;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "ordertime":
+ if (!row.ordertime)
+ return null;
+ date = new Date(row.ordertime);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterDatetime2 = (datetime) => {
+ if (!datetime) {
+ return "-- / -- / --";
+ }
+ let date = new Date(datetime);
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize, GoBack, formatterDatetime2,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+.el-transfer-panel {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__body {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list.is-filterable {
+ height: 250px;
+ width: 300px;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/HistoryOrder.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/HistoryOrder.vue
new file mode 100644
index 0000000..7c8ec23
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/order/HistoryOrder.vue
@@ -0,0 +1,587 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.HistoryOrder') }}</b>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" maxlength="64"
+ :prefix-icon="icon.Search"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData" :disabled="showAdvanceSearchView"></el-input>
+ <el-button type="primary" size="default" :icon="icon.Search" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.name"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.code"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPName')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.vipname"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPPhone')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%"
+ v-model="searchValue.vipphone"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.OrderTime')" prop="ordertime">
+ <el-date-picker
+ style="width: 100%"
+ size="default"
+ v-model="ordertimeduration"
+ type="daterange"
+ range-separator="-"
+ :start-placeholder="$t('label.DateFrom')"
+ :end-placeholder="$t('label.DateTo')"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD 00:00:00"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div>
+ <el-table
+ :data="entityList" stripe border
+ v-loading="loading"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ size="default"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"></el-table-column>
+ <el-table-column prop="no" sortable align="left" :label="$t('label.Code')" width="150"/>
+ <el-table-column prop="status" sortable :label="$t('label.Status')" align="left" width="100">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="warning">{{ $t('label.Defined') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="warning">{{ $t('label.Delivered') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="warning">{{ $t('label.Received') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===3" type="danger">{{ $t('label.Rejected') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===4" type="success">{{ $t('label.Paid') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===5" type="info">{{ $t('label.Commented') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===5" type="info">{{ $t('label.Completed') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="vipname" align="left" :label="$t('label.VIPName')" width="150"/>
+ <el-table-column prop="vipphone" align="left" :label="$t('label.VIPPhone')" width="150"/>
+ <el-table-column prop="vipdiamondtype" align="left" :label="$t('label.VIPDiamondType')" width="150">
+ <template #default="scope">
+ <label v-if="scope.row.vipdiamondtype===0">
+ <svg-icon name="vip-silver" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.SilverMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.vipdiamondtype===1">
+ <svg-icon name="vip-gold" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.GoldMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.vipdiamondtype===2">
+ <svg-icon name="vip-diamond" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.DiamondMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.vipdiamondtype===3">
+ <svg-icon name="vip-exclusive" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.ExclusiveMember') }}</span>
+ </label>
+ <label v-else>--</label>
+ </template>
+ </el-table-column>
+
+ <el-table-column prop="totalmoney" align="right" :label="$t('label.Amount')" width="150"/>
+ <el-table-column prop="payedmoney" align="right" :label="$t('label.PayedMoney')" width="150"/>
+ <el-table-column prop="paymentmethod" align="left" :label="$t('label.PaymentMethod')" width="150">
+ <template #default="scope">
+ <label v-if="scope.row.paymentmethod===0">
+ <svg-icon name="account-balance" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.AccountBalancePay') }}</span>
+ </label>
+ <label v-else-if="scope.row.paymentmethod===1">
+ <svg-icon name="alipay-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.AliPay') }}</span>
+ </label>
+ <label v-else-if="scope.row.paymentmethod===2">
+ <svg-icon name="wechat-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.WeChatPay') }}</span>
+ </label>
+ <label v-else-if="scope.row.paymentmethod===3">
+ <svg-icon name="bank-pay" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.BankPay') }}</span>
+ </label>
+ <label v-else>--</label>
+ </template>
+ </el-table-column>
+ <el-table-column prop="discountmoney" align="right" :label="$t('label.DiscountMoney')" width="150"/>
+
+ <el-table-column prop="ordertime" width="160" align="left"
+ :label="$t('label.OrderTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="paytime" width="160" align="left"
+ :label="$t('label.PayTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="completetime" width="160" align="left"
+ :label="$t('label.CompleteTime')"
+ :formatter="formatterDatetime"/>
+
+ <el-table-column prop="createtime" width="150" align="left" :label="$t('label.CreateTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="remark" min-width="500" width="*" align="left"
+ :label="$t('label.Remark')"></el-table-column>
+ <el-table-column fixed="right" width="110" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div style="margin-top:10px; display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-affix>
+ </div>
+ </el-card>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate, GetDateStr, GetDateTimeStr} from '../../../utils/common'
+import {GetOrderHistories, DeleteOrderHistory} from "../../../api/admin/order"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+
+export default {
+ name: "HistoryOrder",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ vipname: "",
+ vipphone: "",
+ vipdiamondtype: "",
+ },
+ ordertimeduration: [],
+ entityList: [],
+ entity: {
+ id: null,
+ no: null,
+ totalmoney: null,
+ payedmoney: null,
+ paymentmethod: null,
+ discountmoney: null,
+ status: null,
+ ordertime: null,
+ paytime: null,
+ sendtime: null,
+ receivetime: null,
+ commenttime: null,
+ completetime: null,
+ isdeleted: null,
+ remark: null,
+ createtime: null,
+ updatetime: null,
+ sendername: null,
+ sendercode: null,
+ sendercontactno: null,
+ targetaddress: null,
+ deliveryaddress: null,
+ optimalcoupon: null,
+ logisticscompany: null,
+ logisticsno: null,
+ transportmode: null,
+ boxcount: null,
+ boxweight: null,
+ freight: null,
+ commentcontent: null,
+ commentlevel: null,
+ receiverid: null,
+ vipuserId: null,
+ vipname: null,
+ vipphone: null,
+ vipdiamondtype: null,
+ viptype: null,
+ vippicture: null,
+ vipcarddiscountrate: null,
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ InitOrderTimeDuration();
+ };
+
+ const InitOrderTimeDuration = () => {
+ let nowfrom = new Date();
+ let datefrom = GetDateTimeStr(nowfrom, 0, 0, 0);
+
+ let nowto = new Date();
+ let dateto = GetDateTimeStr(nowto, 0, 0, 1);
+
+ state.ordertimeduration = [datefrom, dateto];
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ InitOrderTimeDuration();
+ state.entity = {
+ id: null,
+ no: null,
+ totalmoney: null,
+ payedmoney: null,
+ paymentmethod: null,
+ discountmoney: null,
+ status: null,
+ ordertime: null,
+ paytime: null,
+ sendtime: null,
+ receivetime: null,
+ commenttime: null,
+ completetime: null,
+ isdeleted: null,
+ remark: null,
+ createtime: null,
+ updatetime: null,
+ sendername: null,
+ sendercode: null,
+ sendercontactno: null,
+ targetaddress: null,
+ deliveryaddress: null,
+ optimalcoupon: null,
+ logisticscompany: null,
+ logisticsno: null,
+ transportmode: null,
+ boxcount: null,
+ boxweight: null,
+ freight: null,
+ commentcontent: null,
+ commentlevel: null,
+ receiverid: null,
+ vipuserId: null,
+ vipname: null,
+ vipphone: null,
+ vipdiamondtype: null,
+ viptype: null,
+ vippicture: null,
+ vipcarddiscountrate: null,
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.config.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ vipname: state.searchValue.vipname,
+ vipphone: state.searchValue.vipphone,
+ vipdiamondtype: state.searchValue.vipdiamondtype,
+ }
+ if (state.ordertimeduration && state.ordertimeduration.length > 1) {
+ condition.startDateTime = state.ordertimeduration[0];
+ condition.endDateTime = state.ordertimeduration[1];
+
+ let newSDT = new Date(condition.startDateTime);
+ newSDT.setHours(0);
+ newSDT.setMinutes(0);
+ newSDT.setSeconds(0);
+
+ condition.startDateTime = formatDate(newSDT, "yyyy-MM-dd hh:mm:ss");
+
+ //add 23:59:59 to end date time.
+ let newEDT = new Date(condition.endDateTime);
+ newEDT.setHours(23);
+ newEDT.setMinutes(59);
+ newEDT.setSeconds(59);
+
+ condition.endDateTime = formatDate(newEDT, "yyyy-MM-dd hh:mm:ss");
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetOrderHistories(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ vipname: "",
+ vipphone: "",
+ vipdiamondtype: "",
+ };
+ };
+
+ const showEditView = (data) => {
+ proxy.$router.push(
+ {
+ path: '../../admin/order/HistoryOrderDetail',
+ query: {
+ orderid: data.id
+ }
+ });
+ };
+
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteOrderHistory(data.id)
+ .then(resp => {
+ if (resp) {
+ LoadData();
+ }
+ state.loading = false;
+ })
+ .catch(error => {
+ console.error(error);
+ state.loading = false;
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "ordertime":
+ if (!row.ordertime)
+ return null;
+ date = new Date(row.ordertime);
+ break;
+ case "paytime":
+ if (!row.paytime)
+ return null;
+ date = new Date(row.paytime);
+ break;
+ case "completetime":
+ if (!row.completetime)
+ return null;
+ date = new Date(row.completetime);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ showEditView,
+ deleteItem,
+ ClearSearchData,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+.el-transfer-panel {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__body {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list.is-filterable {
+ height: 250px;
+ width: 300px;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationClass.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationClass.vue
new file mode 100644
index 0000000..13be066
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationClass.vue
@@ -0,0 +1,517 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.OrganizationClass') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }" @row-dblclick="showEditView">
+ <!-- <el-table-column type="selection" width="40"/>-->
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ :placeholder="$t('label.Name')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ :placeholder="$t('label.Code')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetOrganizationClasses,
+ CreateOrganizationClass,
+ UpdateOrganizationClass,
+ DeleteOrganizationClass
+} from "../../../api/admin/organization"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "OrganizationClass",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ remark: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetOrganizationClasses(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ remark: "",
+ }
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateOrganizationClass(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateOrganizationClass(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteOrganizationClass(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ onSubmit,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationDepartment.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationDepartment.vue
new file mode 100644
index 0000000..4a5ad1a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationDepartment.vue
@@ -0,0 +1,697 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">{{ $t('menu.OrganizationDepartment') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.University')}:` }}
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px" @change="organizationmasterChange"
+ v-model="organizationname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="organizationmasters" :props="defaultProps"
+ accordion
+ @node-click="handleOrganizationMasterSelectClick"></el-tree>
+ </el-popover>
+ </template>
+ </el-alert>
+ </el-space>
+ </el-col>
+ </el-row>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }" @row-dblclick="showEditView">
+ <!-- <el-table-column type="selection" width="40"/>-->
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column align="center" :label="$t('label.Major')" width="160">
+ <template #default="scope">
+ <el-button @click="showOrganizationMajorView(scope.row)" :icon="icon.Pointer" size="small"
+ type="primary">
+ {{ $t('label.Major') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="organizationname" align="left" :label="$t('label.University')" width="250"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ :placeholder="$t('label.Name')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ :placeholder="$t('label.Code')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.University')" prop="organizationname">
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px" @change="organizationmasterChangeForAdd"
+ v-model="entity.organizationname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="organizationmasters" :props="defaultProps"
+ accordion
+ @node-click="handleOrganizationMasterSelectClickForAdd"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, onActivated, reactive, toRefs, shallowRef, ref} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetOrganizationMasters,
+ GetOrganizationDepartments,
+ CreateOrganizationDepartment,
+ UpdateOrganizationDepartment,
+ DeleteOrganizationDepartment
+} from "../../../api/admin/organization"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "OrganizationDepartment",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ organization: store.$state.organization,
+ organizationncode: "",
+ organizationname: "",
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ organizationid: "",
+ organizationname: "",
+ organizationcode: "",
+ status: 0,
+ remark: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ organizationname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.University')})}`,
+ trigger: 'blur'
+ }],
+ },
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ organizationmasters: [],
+ masterrules: {
+ organizationname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.University')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.organization = store.$state.organization;
+
+ Init();
+ });
+
+ const Init = () => {
+ if (store.$state.organization) {
+ state.organizationncode = store.$state.organization.code;
+ state.organizationname = store.$state.organization.name;
+ }
+
+ LoadData();
+ LoadOrganizationMaster();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ organizationid: state.organization.id
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ organizationid: state.organization.id
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ if (!state.organization) {
+ return;
+ }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetOrganizationDepartments(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const LoadOrganizationMaster = () => {
+ let condition = {};
+
+ GetOrganizationMasters(condition).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.organizationmasters = resp.data.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleOrganizationMasterSelectClick = (data) => {
+ state.organization = data;
+ store.$state.organization = state.organization;
+ state.organizationncode = store.$state.organization.code;
+ state.organizationname = store.$state.organization.name;
+
+ SearchData();
+ };
+ const organizationmasterChange = (data) => {
+ if (!data) {
+ state.organization = null;
+ state.organizationncode = "";
+ state.organizationname = "";
+ }
+ };
+ const handleOrganizationMasterSelectClickForAdd = (data) => {
+ state.entity.organizationid = data.id;
+ state.entity.organizationcode = data.code;
+ state.entity.organizationname = data.name;
+ };
+ const organizationmasterChangeForAdd = (data) => {
+ if (!data) {
+ state.entity.organizationid = "";
+ state.entity.organizationcode = "";
+ state.entity.organizationname = "";
+ }
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ organizationid: "",
+ organizationname: "",
+ organizationcode: "",
+ status: 0,
+ remark: "",
+ }
+ };
+ const SearchData = () => {
+ if (state.organization) {
+ state.page = 1;
+
+ LoadData();
+ }
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ organizationname: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+ };
+ const showOrganizationMajorView = (data) => {
+ store.$state.department = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/organization/OrganizationMajor',
+ query: {
+ departmentid: data.id,
+ }
+ });
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateOrganizationDepartment(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateOrganizationDepartment(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteOrganizationDepartment(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ onSubmit,
+ GoBack,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ showOrganizationMajorView,
+ handleOrganizationMasterSelectClick,
+ organizationmasterChange,
+ handleOrganizationMasterSelectClickForAdd,
+ organizationmasterChangeForAdd
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationGrade.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationGrade.vue
new file mode 100644
index 0000000..f6a4837
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationGrade.vue
@@ -0,0 +1,675 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">
+ {{ $t('menu.OrganizationGrade') }}
+ </b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.University')}: ${organizationname}` }}
+ </template>
+ </el-alert>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.College')}: ${departmentname}` }}
+ </template>
+ </el-alert>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.Major')}: ${majorname}` }}
+ </template>
+ </el-alert>
+ </el-space>
+ </el-col>
+ </el-row>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }" @row-dblclick="showEditView">
+ <!-- <el-table-column type="selection" width="40"/>-->
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column align="center" :label="$t('label.Subject')" width="160">
+ <template #default="scope">
+ <el-button @click="showGradeSubjectRelationView(scope.row)" :icon="icon.Pointer" size="small"
+ type="primary">
+ {{ $t('label.Subject') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="organizationname" align="left" :label="$t('label.University')" width="250"/>
+ <el-table-column prop="departmentname" align="left" :label="$t('label.College')" width="250"/>
+ <el-table-column prop="majorname" align="left" :label="$t('label.Major')" width="250"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300"
+ width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ :placeholder="$t('label.Name')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ :placeholder="$t('label.Code')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.University')" prop="organizationname">
+ {{ `${organizationname}` }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.College')" prop="departmentname">
+ {{ `${departmentname}` }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Major')" prop="majorname">
+ {{ `${majorname}` }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref, onActivated} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetOrganizationGrades,
+ CreateOrganizationGrade,
+ UpdateOrganizationGrade,
+ DeleteOrganizationGrade, GetOrganizationMasters, GetOrganizationDepartments, GetOrganizationMajors
+} from "../../../api/admin/organization"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "OrganizationGrade",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ department: store.$state.department,
+ organization: store.$state.organization,
+ major: store.$state.major,
+ organizationname: "",
+ departmentname: "",
+ majorname: "",
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ organizationname: "",
+ departmentname: "",
+ majorname: "",
+ status: null,
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ organizationid: "",
+ organizationname: "",
+ organizationcode: "",
+ departmentid: "",
+ departmentname: "",
+ departmentcode: "",
+ majorid: "",
+ majorname: "",
+ majorcode: "",
+ status: 0,
+ remark: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.organization = store.$state.organization;
+ state.department = store.$state.department;
+ state.major = store.$state.major;
+
+ Init();
+ });
+
+ const Init = () => {
+ if (store.$state.organization) {
+ state.organizationname = store.$state.organization.name;
+ }
+ if (store.$state.department) {
+ state.departmentname = store.$state.department.name;
+ }
+ if (store.$state.major) {
+ state.majorname = store.$state.major.name;
+ }
+
+ LoadData();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ majorid: state.major.id,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ majorid: state.major.id,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ if (!state.major) {
+ return;
+ }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetOrganizationGrades(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ organizationid: "",
+ organizationname: "",
+ organizationcode: "",
+ departmentid: "",
+ departmentname: "",
+ departmentcode: "",
+ majorid: "",
+ majorname: "",
+ majorcode: "",
+ status: 0,
+ remark: "",
+ }
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ organizationname: "",
+ departmentname: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+
+ state.departments = [];
+ state.majors = [];
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+
+ state.departments = [];
+ state.majors = [];
+ };
+ const showGradeSubjectRelationView = (data) => {
+ store.$state.grade = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/organization/OrganizationGradeSubjectRelation',
+ query: {
+ gradeid: data.id,
+ }
+ });
+ };
+
+ const onSubmit = () => {
+ state.entity.organizationid = state.organization.id;
+ state.entity.organizationname = state.organization.name;
+ state.entity.organizationcode = state.organization.code;
+ state.entity.departmentid = state.department.id;
+ state.entity.departmentname = state.department.name;
+ state.entity.departmentcode = state.department.code;
+ state.entity.majorid = state.major.id;
+ state.entity.majorname = state.major.name;
+ state.entity.majorcode = state.major.code;
+
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateOrganizationGrade(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateOrganizationGrade(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteOrganizationGrade(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ showGradeSubjectRelationView,
+ deleteItem,
+ onSubmit,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize, GoBack
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMajor.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMajor.vue
new file mode 100644
index 0000000..157c6cc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMajor.vue
@@ -0,0 +1,823 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">{{ $t('menu.OrganizationMajor') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.University')}:` }}
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px;" @change="organizationmasterChange"
+ v-model="organizationname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="organizationmasters" :props="defaultProps"
+ accordion
+ @node-click="handleOrganizationMasterSelectClick"></el-tree>
+ </el-popover>
+ </template>
+ </el-alert>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.College')}:` }}
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px;" @change="departmentChange"
+ v-model="departmentname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="departments" :props="defaultProps"
+ accordion
+ @node-click="handleDepartmentSelectClick"></el-tree>
+ </el-popover>
+ </template>
+ </el-alert>
+ </el-space>
+ </el-col>
+ </el-row>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }" @row-dblclick="showEditView">
+ <!-- <el-table-column type="selection" width="40"/>-->
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column align="center" :label="$t('label.Grade')" width="160">
+ <template #default="scope">
+ <el-button @click="showOrganizationGradeView(scope.row)" :icon="icon.Pointer" size="small"
+ type="primary">
+ {{ $t('label.Grade') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="organizationname" align="left" :label="$t('label.University')" width="250"/>
+ <el-table-column prop="departmentname" align="left" :label="$t('label.College')" width="250"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ :placeholder="$t('label.Name')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ :placeholder="$t('label.Code')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.University')" prop="organizationname">
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px;" @change="organizationmasterChangeForAdd"
+ v-model="entity.organizationname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="organizationmasters" :props="defaultProps"
+ accordion
+ @node-click="handleOrganizationMasterSelectClickForAdd"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.College')" prop="departmentname">
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px;" @change="departmentChangeForAdd"
+ v-model="entity.departmentname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="departments" :props="defaultProps"
+ accordion
+ @node-click="handleDepartmentSelectClickForAdd"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref, onActivated} from "vue";
+import {formatDate, DownloadBlobFileStream} from '@/utils/common'
+import {
+ GetOrganizationMajors,
+ CreateOrganizationMajor,
+ UpdateOrganizationMajor,
+ DeleteOrganizationMajor, GetOrganizationMasters, GetOrganizationDepartments
+} from "@/api/admin/organization"
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "OrganizationMajor",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ department: store.$state.department,
+ organization: store.$state.organization,
+ organizationname: "",
+ departmentname: "",
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ organizationname: "",
+ departmentname: "",
+ status: null,
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ organizationid: "",
+ organizationname: "",
+ organizationcode: "",
+ departmentid: "",
+ departmentname: "",
+ departmentcode: "",
+ status: 0,
+ remark: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ organizationname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.University')})}`,
+ trigger: 'blur'
+ }],
+ departmentname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.College')})}`,
+ trigger: 'blur'
+ }],
+ },
+ organizationmasters: [],
+ departments: [],
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ masterrules: {
+ organizationname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.University')})}`,
+ trigger: 'blur'
+ }],
+ departmentname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.College')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.organization = store.$state.organization;
+ state.department = store.$state.department;
+
+ Init();
+ });
+
+ const Init = () => {
+ if (store.$state.organization) {
+ state.organizationname = store.$state.organization.name;
+ }
+ if (store.$state.department) {
+ state.departmentname = store.$state.department.name;
+ }
+
+ LoadData();
+
+ LoadOrganizationMaster();
+
+ if (state.organization) {
+ LoadDepartment(state.organization.id);
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ departmentid: state.department.id
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ departmentid: state.department.id
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ if (!state.department) {
+ return;
+ }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetOrganizationMajors(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const LoadOrganizationMaster = () => {
+ let condition = {};
+
+ GetOrganizationMasters(condition).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.organizationmasters = resp.data.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleOrganizationMasterSelectClick = (data) => {
+ state.organization = data;
+ store.$state.organization = state.organization;
+ state.organizationname = state.organization.name;
+
+ state.department = null;
+ store.$state.department = state.department;
+ state.departmentname = "";
+
+ LoadDepartment(data.id);
+ };
+ const organizationmasterChange = (data) => {
+ if (!data) {
+ state.organization = null;
+ store.$state.organization = state.organization;
+ state.organizationname = store.$state.organization.name;
+
+ state.departments = [];
+ }
+ };
+ const handleOrganizationMasterSelectClickForAdd = (data) => {
+ state.organization = data;
+
+ state.entity.organizationid = data.id;
+ state.entity.organizationcode = data.code;
+ state.entity.organizationname = data.name;
+
+ state.entity.departmentid = "";
+ state.entity.departmentcode = "";
+ state.entity.departmentname = "";
+
+ LoadDepartment(data.id);
+ };
+ const organizationmasterChangeForAdd = (data) => {
+ if (!data) {
+ state.entity.organizationid = "";
+ state.entity.organizationcode = "";
+ state.entity.organizationname = "";
+
+ state.departments = [];
+ }
+ };
+
+ const LoadDepartment = (organizationid) => {
+ let condition = {organizationid: organizationid};
+
+ GetOrganizationDepartments(condition).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.departments = resp.data.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleDepartmentSelectClick = (data) => {
+ state.department = data;
+ state.departmentname = state.department.name;
+
+ SearchData();
+ };
+ const departmentChange = (data) => {
+ if (!data) {
+ state.department = null;
+ state.departmentname = "";
+ }
+ };
+ const handleDepartmentSelectClickForAdd = (data) => {
+ state.department = data;
+
+ state.entity.departmentid = data.id;
+ state.entity.departmentcode = data.code;
+ state.entity.departmentname = data.name;
+ };
+ const departmentChangeForAdd = (data) => {
+ if (!data) {
+ state.entity.departmentid = "";
+ state.entity.departmentcode = "";
+ state.entity.departmentname = "";
+ }
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ organizationid: "",
+ organizationname: "",
+ organizationcode: "",
+ departmentid: "",
+ departmentname: "",
+ departmentcode: "",
+ status: 0,
+ remark: "",
+ }
+ };
+ const SearchData = () => {
+ if (state.department) {
+ state.page = 1;
+
+ LoadData();
+ }
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ organizationname: "",
+ departmentname: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+ };
+ const showOrganizationGradeView = (data) => {
+ store.$state.major = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/organization/OrganizationGrade',
+ query: {
+ majorid: data.id,
+ }
+ });
+ };
+
+ const onSubmit = () => {
+ if (state.organization) {
+ state.organizationname = state.organization.name;
+ }
+ if (state.department) {
+ state.departmentname = state.department.name;
+ }
+
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateOrganizationMajor(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateOrganizationMajor(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteOrganizationMajor(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ showOrganizationGradeView,
+ deleteItem,
+ onSubmit,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize, GoBack,
+ handleOrganizationMasterSelectClick,
+ organizationmasterChange,
+ handleOrganizationMasterSelectClickForAdd,
+ organizationmasterChangeForAdd,
+ handleDepartmentSelectClick,
+ departmentChange,
+ handleDepartmentSelectClickForAdd,
+ departmentChangeForAdd
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMaster.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMaster.vue
new file mode 100644
index 0000000..065578a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/organization/OrganizationMaster.vue
@@ -0,0 +1,555 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px"> {{ $t('menu.OrganizationMaster') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }" @row-dblclick="showEditView">
+ <!-- <el-table-column type="selection" width="40"/>-->
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column align="center" :label="$t('label.College')" width="160">
+ <template #default="scope">
+ <el-button @click="showOrganizationDepartmentView(scope.row)" :icon="icon.Pointer" size="small"
+ type="primary">
+ {{ $t('label.College') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ :placeholder="$t('label.Name')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ :placeholder="$t('label.Code')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetOrganizationMasters,
+ CreateOrganizationMaster,
+ UpdateOrganizationMaster,
+ DeleteOrganizationMaster
+} from "../../../api/admin/organization"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import wangEditorExt from '../../../components/common/wangEditorExt.vue'
+import * as elementplus from "element-plus";
+
+export default {
+ name: "OrganizationMaster",
+ components: {wangEditorExt},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ status: 0,
+ remark: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetOrganizationMasters(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ outerphone: "",
+ innerphone: "",
+ supervisor: "",
+ supervisorassistant: "",
+ fax: "",
+ zipcode: "",
+ address: "",
+ parentid: "",
+ deplevel: "",
+ status: 0,
+ remark: "",
+ }
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+ };
+ const showOrganizationDepartmentView = (data) => {
+ store.$state.organization = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/organization/OrganizationDepartment',
+ query: {
+ organizationid: data.id,
+ }
+ });
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateOrganizationMaster(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateOrganizationMaster(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteOrganizationMaster(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ onSubmit,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ showOrganizationDepartmentView
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/OrganizationGradeSubjectRelation.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/OrganizationGradeSubjectRelation.vue
new file mode 100644
index 0000000..b3a6e1b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/OrganizationGradeSubjectRelation.vue
@@ -0,0 +1,527 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">{{ $t('menu.OrganizationGradeSubjectRelation') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.Connection" @click="showAddView">
+ {{ `${$t('button.Pick')}${$t('label.Subject')}` }}
+ </el-button>
+ <el-button link size="default" type="danger" :icon="icon.RemoveFilled" @click="batchDeleteItem"
+ v-if="batchDeleteEnalbe">
+ {{ `${$t('button.Delete')}${$t('label.Subject')}` }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.subjectname" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.subjectcode" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.University')}: ${organization.name}(${organization.code})` }}
+ </template>
+ </el-alert>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.College')}: ${department.name}(${department.code})` }}
+ </template>
+ </el-alert>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.Major')}: ${major.name}(${major.code})` }}
+ </template>
+ </el-alert>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.Grade')}: ${grade.name}(${grade.code})` }}
+ </template>
+ </el-alert>
+ </el-space>
+ </el-col>
+ </el-row>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="40"/>
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="subjectname" sortable align="left"
+ :label="$t('label.Subject')+$t('label.Name')" width="200"/>
+ <el-table-column prop="subjectcode" align="left" :label="$t('label.Subject')+$t('label.Code')"
+ width="150"/>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300"
+ width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="80%" top="10px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <QuestionSubject ref="questionSubjectPicker"/>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, onActivated, reactive, toRefs, shallowRef, ref} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetQuestionSubjectGradeRelations,
+ BatchCreateQuestionSubjectGradeRelation,
+ BatchDeleteQuestionSubjectGradeRelation,
+ DeleteQuestionSubjectGradeRelation,
+} from "../../../api/admin/question"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+import QuestionSubject from "./QuestionSubject.vue";
+
+export default {
+ name: "OrganizationGradeSubjectRelation",
+ components: {QuestionSubject},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ department: store.$state.department,
+ organization: store.$state.organization,
+ major: store.$state.major,
+ grade: store.$state.grade,
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ status: null,
+ subjectcode: "",
+ subjectname: "",
+ },
+ entityList: [],
+ multipleSelection: [],
+ batchDeleteEnalbe: false,
+ entity: {
+ id: "",
+ remark: "",
+ gradeid: "",
+ gradename: "",
+ gradecode: "",
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ },
+ rules: {},
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.organization = store.$state.organization;
+ state.department = store.$state.department;
+ state.major = store.$state.major;
+ state.grade = store.$state.grade;
+
+ Init();
+ });
+
+ const Init = () => {
+ LoadData();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ gradeid: state.grade.id
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ status: state.searchValue.status,
+ subjectname: state.searchValue.subjectname,
+ subjectcode: state.searchValue.subjectcode,
+ gradeid: state.grade.id
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ if (!state.grade) {
+ return;
+ }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionSubjectGradeRelations(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+
+ const SearchData = () => {
+ if (state.grade) {
+ state.page = 1;
+
+ LoadData();
+ }
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+
+ const handleSelectionChange = (val) => {
+ state.multipleSelection = val;
+ if (state.multipleSelection && state.multipleSelection.length > 0) {
+ state.batchDeleteEnalbe = true;
+ } else {
+ state.batchDeleteEnalbe = false;
+ }
+ };
+ const onSubmit = () => {
+ let subjects = proxy.$refs.questionSubjectPicker.exportSelectionvalue();
+ if (subjects && subjects.length > 0) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ let grade = {
+ id: state.gradeid,
+ code: state.gradename,
+ name: state.gradecode
+ }
+
+ BatchCreateQuestionSubjectGradeRelation({
+ grade: grade,
+ subjects: subjects
+ }).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionSubjectGradeRelation(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const batchDeleteItem = () => {
+ if (state.multipleSelection && state.multipleSelection.length > 0) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ BatchDeleteQuestionSubjectGradeRelation(state.multipleSelection).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ }
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ showAddView,
+ SearchData,
+ ClearSearchData,
+ deleteItem,
+ onSubmit,
+ GoBack,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize, handleSelectionChange, batchDeleteItem
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionCategory.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionCategory.vue
new file mode 100644
index 0000000..0f42be5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionCategory.vue
@@ -0,0 +1,699 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.QuestionCategory') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')"
+ :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name"
+ :placeholder="$t('message.PleaseInput')"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{marginBottom: '0px'}">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-table :data="entityList" stripe border size="default"
+ v-loading="loading"
+ row-key="id"
+ default-expand-all
+ style="width: 100%"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="100"/>
+ <el-table-column prop="name" sortable align="left" :label="$t('label.Name')" width="300"/>
+ <el-table-column prop="parent" sortable align="left" :label="$t('label.Parent')" width="200">
+ <template #default="scope">
+ <el-tag v-if="scope.row.parent" type="success">
+ {{ scope.row.parent.name }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="icon" align="center" :label="$t('label.Icon')" width="80">
+ <template #default="scope">
+ <svg-icon v-if="!scope.row.icon" name="question-category" width="30" height="30"
+ style="margin: 5px"
+ color=""/>
+ <el-image v-else
+ style="width: 30px; height: 30px; margin: 5px"
+ :src="scope.row.icon"
+ fit="cover"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="200">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="130">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title"
+ id="detailDialog"
+ v-model="dialogVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='check'">
+ <View/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="6" :style="{textAlign: 'center'}">
+ <svg-icon v-if="!entity.icon" name="question-category" width="100" height="100"
+ style="margin: 5px"
+ color=""/>
+ <el-image v-else
+ style="width: 100px; height: 100px; margin: 5px"
+ :src="entity.icon"
+ :preview-src-list="[entity.icon]"
+ :z-index="1000"
+ fit="cover"
+ />
+ <el-upload class="avatar-uploader"
+ :action="uploadurl"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :on-error="handleAvatarError"
+ :before-upload="beforeAvatarUpload">
+ <el-button size="small" :icon="icon.Upload">
+ {{ $t('button.Upload') }}
+ </el-button>
+ </el-upload>
+ </el-col>
+ <el-col :span="15">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </el-form-item>
+ <el-form-item :label="$t('label.Parent')" prop="parent">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%" @change="parentChange"
+ v-model="entityParent.name"
+ :placeholder="$t('label.Parent')">
+ </el-input>
+ </template>
+ <el-tree :data="categoryTree" :props="defaultProps"
+ accordion
+ @node-click="handleParentTreeNodeClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500"
+ v-model="entity.remark"
+ :placeholder="$t('message.PleaseInput')"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetQuestionCategoryTree,
+ GetQuestionCategoryListwithchildren,
+ GetQuestionCategories,
+ CreateQuestionCategory,
+ UpdateQuestionCategory,
+ DeleteQuestionCategory
+} from "../../../api/admin/question"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+import {getFileUploadUrl} from "@/api/common";
+
+export default {
+ name: "QuestionCategory",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ uploadurl: '',
+ dialogVisible: false,
+ dialogMode: 'new',
+ displayMode: "card",
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ name: "",
+ parent: "",
+ status: null,
+ },
+ //ParentTree
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ entityParent: {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ icon: "",
+ },
+ categoryTree: [],
+ entityList: [],
+ entity: {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ icon: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ status: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Status')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ LoadCategoryTree();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ state.uploadurl = getFileUploadUrl();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ parent: state.searchValue.parent,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionCategoryListwithchildren(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ icon: "",
+ }
+
+ state.categoryTree = [];
+ state.entityParent = {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ icon: "",
+ };
+ };
+ const LoadCategoryTree = () => {
+ GetQuestionCategoryTree().then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.categoryTree = resp.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ name: "",
+ parent: "",
+ status: null,
+ };
+ };
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ LoadCategoryTree();
+ };
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateQuestionCategory(state.entity).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateQuestionCategory(state.entity).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ if (state.entity.parent) {
+ state.entityParent = state.entity.parent
+ }
+ state.dialogVisible = true;
+ LoadCategoryTree();
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionCategory(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const changeDisplayMode = () => {
+ if (state.displayMode === "card")
+ state.displayMode = "list";
+ else
+ state.displayMode = "card"
+ }
+ const handleParentTreeNodeClick = (data) => {
+ if (state.entity.id !== data.id) {
+ state.entityParent.name = data.name;
+ state.entity.parentid = data.id;
+ }
+ };
+ const parentChange = (data) => {
+ if (!data) {
+ state.entityParent = {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ };
+ state.entity.parentid = "";
+ state.entity.parent = null;
+ }
+ };
+
+ const handleAvatarSuccess = (res, file) => {
+ state.entity.icon = res;
+ };
+ const beforeAvatarUpload = (file) => {
+ const isJPG = file.type === 'image/jpeg';
+ const isPNG = file.type === 'image/png';
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isJPG && !isPNG) {
+ proxy.$message.error('Avatar picture must be JPG or PNG format!')
+ }
+ if (!isLt2M) {
+ proxy.$message.error('Avatar picture size can not exceed 2MB!')
+ }
+
+ return true;
+ };
+ const handleAvatarError = (res, file) => {
+ proxy.$message.error(res);
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ handleParentTreeNodeClick,
+ onSubmit,
+ formatterDatetime,
+ formatterStatusBoolean,
+ handleAvatarSuccess, beforeAvatarUpload, handleAvatarError,
+ capitalize,
+ changeDisplayMode,
+ parentChange
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionMaster.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionMaster.vue
new file mode 100644
index 0000000..51c7945
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionMaster.vue
@@ -0,0 +1,1067 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">
+ {{ $t('menu.QuestionMaster') }}
+ </b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px; margin-right: 10px;" @change="subjectChange"
+ v-model="searchValue.subjectname"
+ :placeholder="$t('label.Subject')">
+ </el-input>
+ </template>
+ <el-tree :data="subjects" :props="defaultProps"
+ accordion
+ @node-click="handleSubjectSelectClick"></el-tree>
+ </el-popover>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Subject')" :style="{ marginBottom: '0px' }">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%;" @change="subjectChange"
+ v-model="searchValue.subjectname"
+ :placeholder="$t('label.Subject')">
+ </el-input>
+ </template>
+ <el-tree :data="subjects" :props="defaultProps"
+ accordion
+ @node-click="handleSubjectSelectClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.KnowledgePoint')" :style="{ marginBottom: '0px' }">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%;" @change="subjectKnowledgePointChange"
+ v-model="searchValue.knowledgepointname">
+ </el-input>
+ </template>
+ <el-tree :data="knowledgepoints" :props="defaultProps"
+ accordion
+ @node-click="handleSubjectKnowledgePointSelectClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Category')" :style="{ marginBottom: '0px' }">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%;" @change="categoryChange"
+ v-model="searchValue.categoryname">
+ </el-input>
+ </template>
+ <el-tree :data="categories" :props="defaultProps"
+ accordion
+ @node-click="handleCategorySelectClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ @row-dblclick="showEditView"
+ @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="40"/>
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column prop="subjectname" sortable align="left" :label="$t('label.Subject')" width="250">
+ <template #default="scope">
+ {{ scope.row.subjectcode ? `(${scope.row.subjectcode})${scope.row.subjectname}` : "" }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="knowledgepointname" sortable align="left" :label="$t('label.KnowledgePoint')"
+ width="250"/>
+ <el-table-column prop="categoryname" align="left" :label="$t('label.Category')" width="250"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="score" sortable align="center" :label="$t('label.Score')" width="100"/>
+ <el-table-column prop="level" sortable align="center" :label="$t('label.Level')" width="130">
+ <template #default="scope">
+ <el-rate disabled v-model="scope.row.level"/>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300"
+ width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Subject')" prop="subjectname">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px;" @change="subjectChange"
+ v-model="entity.subjectname"
+ :placeholder="$t('label.Subject')">
+ </el-input>
+ </template>
+ <el-tree :data="subjects" :props="defaultProps"
+ accordion
+ @node-click="handleSubjectSelectClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.KnowledgePoint')" prop="knowledgepointname">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%" @change="subjectKnowledgePointChange"
+ v-model="entity.knowledgepointname">
+ </el-input>
+ </template>
+ <el-tree :data="knowledgepoints" :props="defaultProps"
+ accordion
+ @node-click="handleSubjectKnowledgePointSelectClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Category')" prop="categoryname">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%" @change="categoryChange"
+ v-model="entity.categoryname">
+ </el-input>
+ </template>
+ <el-tree :data="categories" :props="defaultProps"
+ accordion
+ @node-click="handleCategorySelectClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Score')" prop="score">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :precision="1" :step="0.1"
+ v-model="entity.score"></el-input-number>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Level')" prop="level">
+ <el-rate v-model="entity.level"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ <el-tab-pane :label="$t('label.Stem')">
+ <div style="border: 1px solid #ccc">
+ <wangEditorExt v-if="entity.stem" :content="entity.stem" height="300px"
+ ref="stemEditor"/>
+ <wangEditorExt v-else :content="entity.stem" height="300px"
+ ref="stemEditor"/>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane :label="$t('label.Option')">
+ <div style="border: 1px solid #ccc">
+ <div>
+ <div>
+ <el-tabs v-if="entity.options&&entity.options.length>0" style="background-color: white;"
+ class="demo-tabs" type="border-card" closable @tab-remove="deleteOptionItem"
+ v-model="optionActiveTab" :label="$t('label.BasicInformation')">
+ <el-tab-pane v-for="(option, index) in entity.options"
+ :key="index"
+ :name="option.sequenceno">
+ <template #label>
+ <div>
+ <el-icon>
+ <Menu/>
+ </el-icon>
+ <b style="margin-left: 5px;">
+ {{ `${$t('label.Option')}-${option.sequenceno}` }}
+ </b>
+ </div>
+ </template>
+ <div>
+ <div>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-form-item :label="$t('label.Key')">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="option.qkey"/>
+ </el-form-item>
+ <el-form-item :label="$t('label.SequenceNo')">
+ <el-input-number size="default" :prefix-icon="icon.Edit" maxlength="64"
+ :precision="0" :step="1" v-model="option.sequenceno"/>
+ </el-form-item>
+ </el-space>
+ </el-col>
+ </el-row>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <div>
+ <wangEditorExt v-if="option.qvalue" :content="option.qvalue" height="100px"
+ :ref="`optionEditor-${option.qkey}`"/>
+ <wangEditorExt v-else :content="option.qvalue" height="100px"
+ :ref="`optionEditor-${option.qkey}`"/>
+ </div>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ <el-empty v-else :image-size="100" :description="$t('message.NoData')"/>
+ </div>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlusFilled"
+ style="margin-top: 5px;"
+ @click="addOptionItem">
+ {{ $t('button.Add') }}
+ </el-button>
+ </div>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane :label="$t('label.Answer')">
+ <div style="border: 1px solid #ccc">
+ <div>
+ <el-tabs v-if="entity.answers&&entity.answers.length>0" style="background-color: white;"
+ class="demo-tabs" type="border-card" closable @tab-remove="deleteAnswerItem"
+ v-model="answerActiveTab" :label="$t('label.BasicInformation')" ref="answersTabs">
+ <el-tab-pane v-for="(answer, index) in entity.answers"
+ :key="index"
+ :name="answer.sequenceno">
+ <template #label>
+ <div>
+ <el-icon>
+ <Menu/>
+ </el-icon>
+ <b style="margin-left: 5px;">
+ {{ `${$t('label.Option')}-${answer.sequenceno}` }}
+ </b>
+ </div>
+ </template>
+ <div>
+ <div>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-form-item :label="$t('label.Key')">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="answer.qkey"/>
+ </el-form-item>
+ <el-form-item :label="$t('label.SequenceNo')">
+ <el-input-number size="default" :prefix-icon="icon.Edit" maxlength="64"
+ :precision="0" :step="1" v-model="answer.sequenceno"/>
+ </el-form-item>
+ </el-space>
+ </el-col>
+ </el-row>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <div>
+ <wangEditorExt v-if="answer.qvalue" :content="answer.qvalue" height="100px"
+ :ref="`answerEditor-${answer.qkey}`"/>
+ <wangEditorExt v-else :content="answer.qvalue" height="100px"
+ :ref="`answerEditor-${answer.qkey}`"/>
+ </div>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ <el-empty v-else :image-size="100" :description="$t('message.NoData')"/>
+ </div>
+ <div>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlusFilled"
+ style="margin-top: 5px;"
+ @click="addAnswerItem">
+ {{ $t('button.Add') }}
+ </el-button>
+ </div>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane :label="$t('label.Answer')">
+ <div style="border: 1px solid #ccc">
+ <wangEditorExt v-if="entity.answer" :content="entity.answer" height="300px"
+ ref="answerEditor"/>
+ <wangEditorExt v-else :content="entity.answer" height="300px"
+ ref="answerEditor"/>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane :label="$t('label.Analysis')">
+ <div style="border: 1px solid #ccc">
+ <wangEditorExt v-if="entity.analysis" :content="entity.analysis" height="300px"
+ ref="analysisEditor"/>
+ <wangEditorExt v-else :content="entity.analysis" height="300px"
+ ref="analysisEditor"/>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref, onActivated} from "vue";
+import {formatDate, NewGuid, DownloadBlobFileStream} from '@/utils/common'
+import {
+ GetQuestionMastersWithBLOBsExtend,
+ GetQuestionMasters,
+ CreateQuestionMaster,
+ UpdateQuestionMaster,
+ DeleteQuestionMaster,
+ GetQuestionCategoryTree,
+ GetQuestionSubjects,
+ GetQuestionMasterDetail,
+ GetQuestionKnowledgePointTree
+} from "@/api/admin/question"
+
+import {useBasicInfoStore} from "@/store/basicInfo";
+import wangEditorExt from '../../../components/common/wangEditorExt.vue'
+import * as elementplus from "element-plus";
+import MenuButton from "../../../components/common/MenuButton.vue";
+
+export default {
+ name: "QuestionMaster",
+ components: {wangEditorExt, MenuButton},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ categoryid: "",
+ categoryname: "",
+ knowledgepointid: "",
+ knowledgepointname: "",
+ knowledgepointcode: "",
+ status: null,
+ },
+ entityList: [],
+ multipleSelection: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ level: null,
+ score: null,
+ remark: "",
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ categoryid: "",
+ categoryname: "",
+ knowledgepointid: "",
+ knowledgepointname: "",
+ knowledgepointcode: "",
+ stem: null,
+ answer: null,
+ analysis: null,
+ answers: [],
+ options: [],
+ },
+ optionActiveTab: '',
+ answerActiveTab: '',
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ subjects: [],
+ categories: [],
+ knowledgepoints: [],
+ rules: {
+ subjectname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Subject')})}`,
+ trigger: 'blur'
+ }],
+ categoryname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Category')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ LoadCategory();
+ LoadSubject();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ //Init();
+ });
+
+ const Init = () => {
+
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ subjectid: state.searchValue.subjectid,
+ subjectname: state.searchValue.subjectname,
+ subjectcode: state.searchValue.subjectcode,
+ categoryid: state.searchValue.categoryid,
+ categoryname: state.searchValue.categoryname,
+ knowledgepointid: state.searchValue.knowledgepointid,
+ knowledgepointname: state.searchValue.knowledgepointname,
+ knowledgepointcode: state.searchValue.knowledgepointcode,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ subjectid: state.searchValue.subjectid,
+ subjectname: state.searchValue.subjectname,
+ subjectcode: state.searchValue.subjectcode,
+ categoryid: state.searchValue.categoryid,
+ categoryname: state.searchValue.categoryname,
+ knowledgepointid: state.searchValue.knowledgepointid,
+ knowledgepointname: state.searchValue.knowledgepointname,
+ knowledgepointcode: state.searchValue.knowledgepointcode,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ // if (!state.searchValue.subjectcode) {
+ // return;
+ // }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionMastersWithBLOBsExtend(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const LoadSubject = () => {
+ GetQuestionSubjects({}).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.subjects = resp.data.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleSubjectSelectClick = (data) => {
+ state.searchValue.subjectname = data.name;
+ state.searchValue.subjectcode = data.code;
+
+ state.entity.subjectid = data.id;
+ state.entity.subjectname = data.name;
+ state.entity.subjectcode = data.code;
+
+ LoadSubjectKnowledgePoint();
+ SearchData();
+ };
+ const subjectChange = (data) => {
+ if (!data) {
+ state.entity.subjectid = "";
+ state.entity.subjectname = "";
+ state.entity.subjectcode = "";
+ }
+ };
+
+ const LoadSubjectKnowledgePoint = () => {
+ state.knowledgepoints = [];
+
+ if (!state.searchValue.subjectcode) {
+ return;
+ }
+
+ GetQuestionKnowledgePointTree({subjectcode: state.searchValue.subjectcode}).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.knowledgepoints = resp.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleSubjectKnowledgePointSelectClick = (data) => {
+ state.searchValue.knowledgepointname = data.name;
+ state.searchValue.knowledgepointcode = data.code;
+
+ state.entity.knowledgepointid = data.id;
+ state.entity.knowledgepointname = data.name;
+ state.entity.knowledgepointcode = data.code;
+
+ // SearchData();
+ };
+ const subjectKnowledgePointChange = (data) => {
+ if (!data) {
+ state.entity.knowledgepointid = "";
+ state.entity.knowledgepointname = "";
+ state.entity.subjectknowledgepointcode = "";
+ }
+ };
+
+ const LoadCategory = () => {
+ GetQuestionCategoryTree().then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.categories = resp.data;
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleCategorySelectClick = (data) => {
+ state.searchValue.categoryname = data.name;
+
+ state.entity.categoryid = data.id;
+ state.entity.categoryname = data.name;
+
+ // SearchData();
+ };
+ const categoryChange = (data) => {
+ if (!data) {
+ state.entity.categoryid = "";
+ state.entity.categoryname = "";
+ }
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ level: null,
+ score: null,
+ remark: "",
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ categoryid: "",
+ categoryname: "",
+ stem: null,
+ answer: null,
+ analysis: null,
+ answers: [],
+ options: [],
+ }
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ LoadCategory();
+
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+ LoadCategory();
+
+ state.optionActiveTab = "";
+ if (state.entity.options) {
+ state.optionActiveTab = state.entity.options[0].sequenceno;
+ }
+
+ state.answerActiveTab = "";
+ if (state.entity.answers) {
+ state.answerActiveTab = state.entity.answers[0].sequenceno;
+ }
+ };
+
+ const handleSelectionChange = (val) => {
+ state.multipleSelection = val
+ };
+ const exportSelectionvalue = () => {
+ return state.multipleSelection;
+ }
+
+ const addOptionItem = () => {
+ if (!state.entity.options || state.entity.options.length <= 0) {
+ state.entity.options = [];
+ } else if (state.entity.options.length > 7) {
+ return;
+ }
+
+ let newoption = {
+ id: NewGuid(),
+ sequenceno: state.entity.options.length + 1,
+ qkey: "",
+ qvalue: "",
+ };
+ state.entity.options.push(newoption);
+ state.optionActiveTab = newoption.sequenceno;
+ };
+ const deleteOptionItem = (data) => {
+ if (!state.entity.options || state.entity.options.length <= 0) {
+ state.entity.options = [];
+ }
+
+ state.entity.options = state.entity.options.filter(e => e.sequenceno !== data);
+ if (state.entity.options && state.entity.options.length > 0) {
+ state.optionActiveTab = state.entity.options[0].sequenceno;
+ }
+ };
+ const addAnswerItem = () => {
+ if (!state.entity.answers || state.entity.answers.length <= 0) {
+ state.entity.answers = [];
+ } else if (state.entity.answers.length > 7) {
+ return;
+ }
+
+ let newanswer = {
+ id: NewGuid(),
+ sequenceno: state.entity.answers.length + 1,
+ qkey: "",
+ qvalue: "",
+ };
+ state.entity.answers.push(newanswer);
+ state.answerActiveTab = newanswer.sequenceno;
+ };
+ const deleteAnswerItem = (data) => {
+ if (!state.entity.answers || state.entity.answers.length <= 0) {
+ state.entity.answers = [];
+ }
+
+ state.entity.answers = state.entity.answers.filter(e => e.sequenceno !== data);
+ if (state.entity.answers && state.entity.answers.length > 0) {
+ state.answerActiveTab = state.entity.answers[0].sequenceno;
+ }
+ };
+
+ const onSubmit = () => {
+ if (state.entity.options && state.entity.options.length > 0) {
+ state.entity.options.map(e => {
+ let editors = proxy.$refs[`optionEditor-${e.qkey}`];
+ if (editors && editors.length > 0) {
+ return e.qvalue = editors[0].exportvalue();
+ }
+ })
+ }
+ if (state.entity.answers && state.entity.answers.length > 0) {
+ state.entity.answers.map(e => {
+ let editors = proxy.$refs[`answerEditor-${e.qkey}`];
+ if (editors && editors.length > 0) {
+ return e.qvalue = editors[0].exportvalue();
+ }
+ })
+ }
+
+ state.entity.stem = proxy.$refs.stemEditor.exportvalue();
+ state.entity.answer = proxy.$refs.answerEditor.exportvalue();
+ state.entity.analysis = proxy.$refs.analysisEditor.exportvalue();
+
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateQuestionMaster(state.entity).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateQuestionMaster(state.entity).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionMaster(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ onSubmit,
+ handleSelectionChange,
+ exportSelectionvalue,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ handleCategorySelectClick,
+ categoryChange,
+ handleSubjectSelectClick,
+ subjectChange,
+ handleSubjectKnowledgePointSelectClick,
+ subjectKnowledgePointChange, addOptionItem, addAnswerItem, deleteAnswerItem, deleteOptionItem,
+ GoBack
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaper.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaper.vue
new file mode 100644
index 0000000..91bfd96
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaper.vue
@@ -0,0 +1,886 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">
+ {{ $t('menu.QuestionPaper') }}
+ </b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.Subject')}:` }}
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px" @change="subjectChange"
+ v-model="subjectname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="subjects" :props="defaultProps"
+ accordion
+ @node-click="handleSubjectSelectClick"></el-tree>
+ </el-popover>
+ </template>
+ </el-alert>
+ </el-space>
+ </el-col>
+ </el-row>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }" @row-dblclick="showEditView">
+ <!-- <el-table-column type="selection" width="40"/>-->
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column prop="coverimage" align="center" :label="$t('label.CoverImage')" width="130">
+ <template #default="scope">
+ <div>
+ <svg-icon v-if="!scope.row.coverimage" name="question-paper" width="80" height="80"
+ style="margin: 5px"
+ color=""/>
+ <el-image v-else style="width: 100px; height: 100px; margin: 5px"
+ :src="scope.row.coverimage"
+ fit="cover"
+ />
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column align="center" :label="$t('label.QuestionList')" width="160">
+ <template #default="scope">
+ <el-button @click="showQuestionView(scope.row)" :icon="icon.Pointer" size="small"
+ type="primary">
+ {{ $t('label.QuestionList') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="subjectname" sortable align="left" :label="$t('label.Subject')" width="200"/>
+ <el-table-column prop="categoryname" sortable align="left" :label="$t('label.Category')" width="200"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="type" sortable align="left" :label="$t('label.Type')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.type === 0" type="success">
+ {{ $t('label.FREE') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.type === 1" type="warning">
+ {{ $t('label.VIP_FREE') }}
+ </el-tag>
+ <el-tag v-else type="danger">
+ {{ $t('label.CHARGE') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="price" sortable align="left" :label="$t('label.Price')" width="150">
+ <template #default="scope">
+ {{ `¥${scope.row.price}` }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="6" :style="{textAlign: 'center'}">
+ <svg-icon v-if="!entity.coverimage" name="question-paper" width="100" height="100"
+ style="margin: 5px"
+ color=""/>
+ <el-image v-else
+ style="width: 100px; height: 100px; margin: 5px"
+ :src="entity.coverimage"
+ :preview-src-list="[entity.coverimage]"
+ :z-index="1000"
+ fit="cover"
+ />
+ <el-upload class="avatar-uploader"
+ :action="uploadurl"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :on-error="handleAvatarError"
+ :before-upload="beforeAvatarUpload">
+ <el-button size="small" :icon="icon.Upload">
+ {{ $t('button.Upload') }}
+ </el-button>
+ </el-upload>
+ </el-col>
+ <el-col :span="15">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width:100%"
+ v-model="entity.name"
+ :placeholder="$t('label.Name')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width:100%"
+ v-model="entity.code" disabled="disabled"
+ :placeholder="$t('label.Code')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Subject')" prop="subjectname">
+ <el-popover placement="bottom" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 230px" @change="subjectChangeForAdd"
+ v-model="entity.subjectname"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </template>
+ <el-tree :data="subjects" :props="defaultProps"
+ accordion
+ @node-click="handleSubjectSelectClickForAdd"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Price')" prop="price">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ style="width:100%"
+ maxlength="64"
+ :precision="2" :step="0.1"
+ v-model="entity.price"
+ :placeholder="$t('message.PleaseInput')"></el-input-number>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Type')" prop="type">
+ <el-select size="default" style="width: 100%" v-model="entity.type"
+ filterable>
+ <el-option v-for="item in entitytypes" :key="item.id" :label="item.name"
+ :value="item.id" :disabled="item.disabled">
+ {{ item.name }}
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Category')" prop="categoryname">
+ <el-popover placement="right" trigger="click" width="auto"
+ style="width:100%">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%" @change="categoryChange"
+ v-model="entity.categoryname"
+ :placeholder="$t('label.Category')">
+ </el-input>
+ </template>
+ <el-tree :data="categories" :props="defaultProps"
+ accordion
+ @node-click="handleCategorySelectClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref, onActivated} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetQuestionSubjects,
+ GetQuestionPapers,
+ CreateQuestionPaper,
+ UpdateQuestionPaper,
+ DeleteQuestionPaper,
+ GetQuestionPaperCategoryTree
+} from "../../../api/admin/question"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+import {getFileUploadUrl} from "@/api/common";
+
+export default {
+ name: "QuestionPaper",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ subject: store.$state.subject,
+ subjectcode: "",
+ subjectname: "",
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ uploadurl: '',
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ },
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ categories: [],
+ entityList: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ price: 0,
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ categoryid: "",
+ categoryname: "",
+ type: 0,
+ remark: "",
+ coverimage: "",
+ },
+ entitytypes: [
+ {
+ id: 0,
+ name: `${proxy.$t('label.FREE')}`,
+ },
+ {
+ id: 1,
+ name: `${proxy.$t('label.VIP_FREE')}`,
+ },
+ {
+ id: 2,
+ name: `${proxy.$t('label.CHARGE')}`,
+ }
+ ],
+ category: {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ remark: "",
+ icon: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ subjectname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Subject')})}`,
+ trigger: 'blur'
+ }],
+ categoryname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Category')})}`,
+ trigger: 'blur'
+ }],
+ },
+ subjects: [],
+ masterrules: {
+ subjectname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Subject')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.subject = store.$state.subject;
+
+ Init();
+ });
+
+ const Init = () => {
+ if (store.$state.subject) {
+ state.subjectname = store.$state.subject.name;
+ state.subjectcode = store.$state.subject.code;
+ }
+
+ state.uploadurl = getFileUploadUrl();
+
+ LoadData();
+ LoadSubject();
+ LoadCategory();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ subjectid: state.subject.id
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ subjectid: state.subject.id
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ if (!state.subject) {
+ return;
+ }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionPapers(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const LoadSubject = () => {
+ GetQuestionSubjects({}).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.subjects = resp.data.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleSubjectSelectClick = (data) => {
+ state.subject = data;
+ store.$state.subject = state.subject;
+ state.subjectcode = store.$state.subject.code;
+ state.subjectname = store.$state.subject.name;
+
+ SearchData();
+ };
+ const subjectChange = (data) => {
+ if (!data) {
+ state.subject = null;
+ state.subjectcode = "";
+ state.subjectname = "";
+ }
+ };
+ const handleSubjectSelectClickForAdd = (data) => {
+ state.entity.subjectid = data.id;
+ state.entity.subjectcode = data.code;
+ state.entity.subjectname = data.name;
+ };
+ const subjectChangeForAdd = (data) => {
+ if (!data) {
+ state.entity.subjectid = "";
+ state.entity.subjectcode = "";
+ state.entity.subjectname = "";
+ }
+ };
+
+ const LoadCategory = () => {
+ GetQuestionPaperCategoryTree().then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.categories = resp.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleCategorySelectClick = (data) => {
+ state.entity.categoryid = data.id;
+ state.entity.categoryname = data.name;
+
+ SearchData();
+ };
+ const categoryChange = (data) => {
+ if (!data) {
+ state.category = {
+ id: "",
+ code: "",
+ name: "",
+ status: 0
+ };
+ state.entity.categoryid = "";
+ state.entity.categoryname = "";
+ }
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ let subjectid = state.subject.id;
+ let subjectname = state.subject.name;
+ let subjectcode = state.subject.code;
+
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ price: 0,
+ subjectid: subjectid,
+ subjectname: subjectname,
+ subjectcode: subjectcode,
+ categoryid: "",
+ categoryname: "",
+ type: 0,
+ remark: "",
+ coverimage: "",
+ }
+ state.subjects = [];
+ };
+ const SearchData = () => {
+ if (state.subject) {
+ state.page = 1;
+
+ LoadData();
+ }
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ LoadSubject();
+ LoadCategory();
+
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ LoadSubject();
+ LoadCategory();
+
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateQuestionPaper(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateQuestionPaper(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionPaper(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const showQuestionView = (data) => {
+ store.$state.paper = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/question/QuestionPaperQuestionList',
+ query: {
+ paperid: data.id,
+ }
+ });
+ };
+
+ const handleAvatarSuccess = (res, file) => {
+ state.entity.coverimage = res;
+ };
+ const beforeAvatarUpload = (file) => {
+ const isJPG = file.type === 'image/jpeg';
+ const isPNG = file.type === 'image/png';
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isJPG && !isPNG) {
+ proxy.$message.error('Avatar picture must be JPG or PNG format!')
+ }
+ if (!isLt2M) {
+ proxy.$message.error('Avatar picture size can not exceed 2MB!')
+ }
+
+ return true;
+ };
+ const handleAvatarError = (res, file) => {
+ proxy.$message.error(res);
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ onSubmit,
+ handleAvatarSuccess,
+ beforeAvatarUpload,
+ handleAvatarError,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ handleCategorySelectClick,
+ categoryChange,
+ handleSubjectSelectClick,
+ subjectChange,
+ handleSubjectSelectClickForAdd,
+ subjectChangeForAdd,
+ GoBack,
+ showQuestionView
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperCategory.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperCategory.vue
new file mode 100644
index 0000000..0ecb3c4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperCategory.vue
@@ -0,0 +1,697 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.QuestionPaperCategory') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')"
+ :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name"
+ :placeholder="$t('message.PleaseInput')"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{marginBottom: '0px'}">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-table :data="entityList" stripe border size="default"
+ v-loading="loading"
+ row-key="id"
+ default-expand-all
+ style="width: 100%"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="100"/>
+ <el-table-column prop="name" sortable align="left" :label="$t('label.Name')" width="300"/>
+ <el-table-column prop="parent" sortable align="left" :label="$t('label.Parent')" width="200">
+ <template #default="scope">
+ <el-tag v-if="scope.row.parent" type="success">
+ {{ scope.row.parent.name }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="icon" align="center" :label="$t('label.Icon')" width="80">
+ <template #default="scope">
+ <svg-icon v-if="!scope.row.icon" name="question-paper-category" width="30" height="30"
+ style="margin: 5px"
+ color=""/>
+ <el-image v-else
+ style="width: 30px; height: 30px; margin: 5px"
+ :src="scope.row.icon"
+ fit="cover"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="200">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="130">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title"
+ id="detailDialog"
+ v-model="dialogVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='check'">
+ <View/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="6" :style="{textAlign: 'center'}">
+ <svg-icon v-if="!entity.icon" name="question-paper-category" width="100" height="100"
+ style="margin: 5px"
+ color=""/>
+ <el-image v-else
+ style="width: 100px; height: 100px; margin: 5px"
+ :src="entity.icon"
+ :preview-src-list="[entity.icon]"
+ :z-index="1000"
+ fit="cover"
+ />
+ <el-upload class="avatar-uploader"
+ :action="uploadurl"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :on-error="handleAvatarError"
+ :before-upload="beforeAvatarUpload">
+ <el-button size="small" :icon="icon.Upload">
+ {{ $t('button.Upload') }}
+ </el-button>
+ </el-upload>
+ </el-col>
+ <el-col :span="15">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ :placeholder="$t('message.PleaseInput')">
+ </el-input>
+ </el-form-item>
+ <el-form-item :label="$t('label.Parent')" prop="parent">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%" @change="parentChange"
+ v-model="entityParent.name"
+ :placeholder="$t('label.Parent')">
+ </el-input>
+ </template>
+ <el-tree :data="categoryTree" :props="defaultProps"
+ accordion
+ @node-click="handleParentTreeNodeClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500"
+ v-model="entity.remark"
+ :placeholder="$t('message.PleaseInput')"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetQuestionPaperCategoryTree,
+ GetQuestionPaperCategoryListwithchildren,
+ GetQuestionPaperCategories,
+ CreateQuestionPaperCategory,
+ UpdateQuestionPaperCategory,
+ DeleteQuestionPaperCategory
+} from "../../../api/admin/question"
+import * as elementplus from "element-plus";
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import {getFileUploadUrl} from "@/api/common";
+
+export default {
+ name: "QuestionPaperCategory",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ uploadurl: '',
+ dialogVisible: false,
+ dialogMode: 'new',
+ displayMode: "card",
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ name: "",
+ parent: "",
+ status: null,
+ },
+ //ParentTree
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ entityParent: {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ },
+ categoryTree: [],
+ entityList: [],
+ entity: {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ status: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Status')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ LoadCategoryTree();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ state.uploadurl = getFileUploadUrl();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ parent: state.searchValue.parent,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionPaperCategoryListwithchildren(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ }
+
+ state.categoryTree = [];
+ state.entityParent = {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ };
+ };
+ const LoadCategoryTree = () => {
+ GetQuestionPaperCategoryTree().then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.categoryTree = resp.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ name: "",
+ parent: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ LoadCategoryTree();
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ if (state.entity.parent) {
+ state.entityParent = state.entity.parent
+ }
+ state.dialogVisible = true;
+ LoadCategoryTree();
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateQuestionPaperCategory(state.entity).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateQuestionPaperCategory(state.entity).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionPaperCategory(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const changeDisplayMode = () => {
+ if (state.displayMode === "card")
+ state.displayMode = "list";
+ else
+ state.displayMode = "card"
+ }
+ const handleParentTreeNodeClick = (data) => {
+ if (state.entity.id !== data.id) {
+ state.entityParent.name = data.name;
+ state.entity.parentid = data.id;
+ }
+ };
+ const parentChange = (data) => {
+ if (!data) {
+ state.entityParent = {
+ id: "",
+ name: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ };
+ state.entity.parentid = "";
+ state.entity.parent = null;
+ }
+ };
+
+ const handleAvatarSuccess = (res, file) => {
+ state.entity.icon = res;
+ };
+ const beforeAvatarUpload = (file) => {
+ const isJPG = file.type === 'image/jpeg';
+ const isPNG = file.type === 'image/png';
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isJPG && !isPNG) {
+ proxy.$message.error('Avatar picture must be JPG or PNG format!')
+ }
+ if (!isLt2M) {
+ proxy.$message.error('Avatar picture size can not exceed 2MB!')
+ }
+
+ return true;
+ };
+ const handleAvatarError = (res, file) => {
+ proxy.$message.error(res);
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ handleParentTreeNodeClick,
+ onSubmit,
+ handleAvatarSuccess, beforeAvatarUpload, handleAvatarError,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ changeDisplayMode,
+ parentChange
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperQuestionList.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperQuestionList.vue
new file mode 100644
index 0000000..70d78b1
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionPaperQuestionList.vue
@@ -0,0 +1,574 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">
+ {{ papername ? `${papername} - ` : `${$t('message.PleaseSelect')} - ` }}
+ {{ $t('menu.QuestionPaperQuestionList') }}
+ </b>
+ <el-button link size="default" type="primary" :icon="icon.Connection" @click="showAddView">
+ {{ `${$t('button.Pick')}${$t('label.Question')}` }}
+ </el-button>
+ <el-button link size="default" type="danger" :icon="icon.RemoveFilled" @click="batchDeleteItem"
+ v-if="batchDeleteEnalbe">
+ {{ `${$t('button.Delete')}${$t('label.Question')}` }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.Subject')}: ${subjectname}` }}
+ </template>
+ </el-alert>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.Paper')}: ${papername}` }}
+ </template>
+ </el-alert>
+ </el-space>
+ </el-col>
+ </el-row>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="40"/>
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="questioncode" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="questionname" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column prop="subject" sortable align="left" :label="$t('label.Subject')" width="250"/>
+ <el-table-column prop="quetioncategory" align="left" :label="$t('label.Category')" width="250"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="score" sortable align="center" :label="$t('label.Score')" width="100"/>
+ <el-table-column prop="level" sortable align="center" :label="$t('label.Level')" width="130">
+ <template #default="scope">
+ <el-rate v-model="scope.row.level"/>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300"
+ width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="80%" top="10">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <QuestionMaster ref="questionMasterPicker"/>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref, onActivated} from "vue";
+import {formatDate, DownloadBlobFileStream} from '@/utils/common'
+import {
+ DeleteQuestionMasterPaperRelation,
+ BatchCreateQuestionMasterPaperRelation,
+ BatchDeleteQuestionMasterPaperRelation,
+ GetQuestionMasterPaperRelations
+} from "@/api/admin/question"
+
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as elementplus from "element-plus";
+import QuestionMaster from "@/views/admin/question/QuestionMaster.vue";
+
+export default {
+ name: "QuestionPaperQuestionList",
+ components: {QuestionMaster},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ subject: store.$state.subject,
+ subjectname: "",
+ paper: store.$state.paper,
+ papername: "",
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ subjectname: "",
+ categoryname: "",
+ status: null,
+ },
+ entity: {
+ id: "",
+ status: 0,
+ remark: "",
+ },
+ entityList: [],
+ multipleSelection: [],
+ batchDeleteEnalbe: false,
+ rules: {
+ subjectname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Subject')})}`,
+ trigger: 'blur'
+ }],
+ categoryname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Category')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.subject = store.$state.subject;
+ state.paper = store.$state.paper;
+
+ Init();
+ });
+
+ const Init = () => {
+ if (store.$state.subject) {
+ state.subjectname = store.$state.subject.name;
+ }
+ if (store.$state.paper) {
+ state.papername = store.$state.paper.name;
+ }
+
+ LoadData();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ subjectid: state.subject.id,
+ paperid: state.paper.id
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ categoryname: state.searchValue.categoryname,
+ status: state.searchValue.status,
+ subjectid: state.subject.id,
+ paperid: state.paper.id
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ if (!state.subject) {
+ return;
+ }
+
+ if (!state.paper) {
+ return;
+ }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionMasterPaperRelations(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ status: 0,
+ remark: "",
+ }
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+
+ const handleSelectionChange = (val) => {
+ state.multipleSelection = val;
+ if (state.multipleSelection && state.multipleSelection.length > 0) {
+ state.batchDeleteEnalbe = true;
+ } else {
+ state.batchDeleteEnalbe = false;
+ }
+ };
+
+ const onSubmit = () => {
+ let questions = proxy.$refs.questionMasterPicker.exportSelectionvalue();
+ if (questions && questions.length > 0) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ let paper = {
+ id: state.paper.id,
+ code: state.paper.name,
+ name: state.paper.code
+ }
+
+ let subject = {
+ id: state.subject.id,
+ code: state.subject.name,
+ name: state.subject.code
+ }
+
+ BatchCreateQuestionMasterPaperRelation({
+ paper: paper,
+ subject: subject,
+ questions: questions
+ }).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionMasterPaperRelation(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const batchDeleteItem = () => {
+ if (state.multipleSelection && state.multipleSelection.length > 0) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ BatchDeleteQuestionMasterPaperRelation(state.multipleSelection).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ }
+ };
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ deleteItem,
+ onSubmit,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize, handleSelectionChange, batchDeleteItem,
+ GoBack
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubject.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubject.vue
new file mode 100644
index 0000000..f8aca0d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubject.vue
@@ -0,0 +1,569 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.QuestionSubject') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ @row-dblclick="showEditView"
+ @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="40"/>
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="100"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column align="center" :label="$t('label.QuestionPaperList')" width="160">
+ <template #default="scope">
+ <el-button @click="showQuestionPaperView(scope.row)" :icon="icon.Pointer" size="small"
+ type="primary">
+ {{ $t('label.QuestionPaperList') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="point" align="center" :label="$t('label.KnowledgePoint')" width="160">
+ <template #default="scope">
+ <el-button @click="showKnowledgePointView(scope.row)" :icon="icon.Pointer" size="small"
+ type="primary">
+ {{ $t('menu.QuestionSubjectKnowledgePoint') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300"
+ width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ disabled="disabled"
+ v-model="entity.code">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500"
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetQuestionSubjects,
+ CreateQuestionSubject,
+ UpdateQuestionSubject,
+ DeleteQuestionSubject
+} from "../../../api/admin/question"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import wangEditorExt from '../../../components/common/wangEditorExt.vue'
+import * as elementplus from "element-plus";
+
+export default {
+ name: "QuestionSubject",
+ components: {wangEditorExt},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ },
+ entityList: [],
+ multipleSelection: [],
+ entity: {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ remark: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionSubjects(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ status: 0,
+ remark: "",
+ }
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+ };
+
+ const handleSelectionChange = (val) => {
+ state.multipleSelection = val
+ };
+ const exportSelectionvalue = () => {
+ return state.multipleSelection;
+ }
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateQuestionSubject(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateQuestionSubject(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionSubject(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+
+ const showKnowledgePointView = (data) => {
+ store.$state.subject = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/question/QuestionSubjectKnowledgePoint',
+ query: {
+ subjectid: data.id,
+ }
+ });
+ };
+ const showQuestionPaperView = (data) => {
+ store.$state.subject = data;
+ proxy.$router.push(
+ {
+ path: '../../admin/question/QuestionPaper',
+ query: {
+ subjectid: data.id,
+ }
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ onSubmit,
+ handleSelectionChange,
+ exportSelectionvalue,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ showKnowledgePointView,
+ showQuestionPaperView
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubjectKnowledgePoint.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubjectKnowledgePoint.vue
new file mode 100644
index 0000000..43a5e57
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/question/QuestionSubjectKnowledgePoint.vue
@@ -0,0 +1,696 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <el-button link type="primary" @click="GoBack" :icon="icon.Back" size="default"
+ style="margin-right: 15px">
+ {{ $t('button.Back') }}
+ </el-button>
+ <b style="margin-right: 20px">
+ {{ $t('menu.QuestionSubjectKnowledgePoint') }}
+ </b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form label-width="120px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" :style="{ marginBottom: '0px' }">
+ <el-radio-group size="default" v-model="searchValue.status">
+ <el-radio :label="null">{{ $t('label.All') }}</el-radio>
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row :style="{ 'margin': '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-space wrap>
+ <el-alert type="info" :closable="false">
+ <template #title>
+ {{ `${$t('label.Subject')}: ${subjectname}` }}
+ </template>
+ </el-alert>
+ </el-space>
+ </el-col>
+ </el-row>
+ <el-table :data="entityList" stripe border size="default" v-loading="loading"
+ row-key="id"
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '40px', color: 'var(--el-color-primary)', background: '#f5f4f4', }"
+ :header-cell-style="{ height: '40px', margin: '0px', padding: '0px', background: 'transparent' }"
+ :row-style="{ height: '30px', margin: '0px', padding: '0px', }"
+ :cell-style="{ height: '30px', margin: '0px', padding: '0px', }" @row-dblclick="showEditView">
+ <!-- <el-table-column type="selection" width="40"/>-->
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="300"/>
+ <el-table-column prop="subjectname" align="left" :label="$t('label.Subject')" width="300">
+ <template #default="scope">
+ {{ `${scope.row.subjectname}(${scope.row.subjectcode})` }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="parent" sortable align="left" :label="$t('label.Parent')" width="300">
+ <template #default="scope">
+ <el-tag v-if="scope.row.parent" type="success">
+ {{ scope.row.parent.name }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">
+ {{ $t('label.Enabled') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="danger">
+ {{ $t('label.Disabled') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ $t('label.Undefined') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="remark" sortable align="left" :label="$t('label.Remark')" min-width="300" width="*"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="110">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary"
+ circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" :rules="rules" ref="dialogForm" label-width="120px" size="default">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Subject')" prop="subjectname">
+ {{ `${subjectname} (${subjectcode})` }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Parent')" prop="parent">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%" clearable
+ @change="parentChange"
+ v-model="entityParent.name"
+ :placeholder="$t('label.Parent')">
+ </el-input>
+ </template>
+ <el-tree :data="knowledgePointTree" :props="defaultProps"
+ accordion
+ @node-click="handleParentTreeNodeClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500"
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref, onActivated} from "vue";
+import {formatDate, DownloadBlobFileStream} from '../../../utils/common'
+import {
+ GetQuestionSubjectKnowledgePoints,
+ GetQuestionSubjectKnowledgePointListwithchildren,
+ CreateQuestionSubjectKnowledgePoint,
+ UpdateQuestionSubjectKnowledgePoint,
+ DeleteQuestionSubjectKnowledgePoint,
+ GetQuestionSubjects,
+ GetQuestionKnowledgePointTree
+} from "../../../api/admin/question"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import wangEditorExt from '../../../components/common/wangEditorExt.vue'
+import * as elementplus from "element-plus";
+
+export default {
+ name: "QuestionSubjectKnowledgePoint",
+ components: {wangEditorExt},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ subject: null,
+ subjectname: "",
+ subjectcode: "",
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ name: "",
+ parentid: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ },
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ entityParent: {
+ id: "",
+ name: "",
+ parentid: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ },
+ knowledgePointTree: [],
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+ state.subject = store.$state.subject;
+
+ Init();
+ });
+
+ const Init = () => {
+ if (store.$state.subject) {
+ state.subject = store.$state.subject;
+ state.subjectname = store.$state.subject.name;
+ state.subjectcode = store.$state.subject.code;
+ }
+
+ LoadData();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ subjectid: state.subject.id
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ code: state.searchValue.code,
+ name: state.searchValue.name,
+ status: state.searchValue.status,
+ subjectid: state.subject.id
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.entityList = [];
+ state.total = 0;
+
+ if (!state.subject) {
+ return;
+ }
+
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetQuestionSubjectKnowledgePointListwithchildren(condition).then(resp => {
+ state.loading = false;
+ console.info(resp.data);
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const LoadKnowledgePointTree = () => {
+ GetQuestionKnowledgePointTree({subjectid: state.subjectid}).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.knowledgePointTree = resp.data
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const handleParentTreeNodeClick = (data) => {
+ if (state.entity.id !== data.id) {
+ state.entityParent.name = data.name;
+ state.entity.parentid = data.id;
+ }
+ }
+ const parentChange = (data) => {
+ if (!data) {
+ state.entityParent = {
+ id: "",
+ name: "",
+ parentid: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ };
+ state.entity.parentid = "";
+ state.entity.parent = null;
+ }
+ };
+
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ let parentid = state.entity.parentid;
+ let subjectid = state.subject.id;
+ let subjectname = state.subject.name;
+ let subjectcode = state.subject.code;
+
+ state.entity = {
+ id: "",
+ name: "",
+ parentid: parentid,
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ subjectid: subjectid,
+ subjectname: subjectname,
+ subjectcode: subjectcode,
+ }
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ code: "",
+ name: "",
+ status: null,
+ };
+ };
+ const clearParentItem = () => {
+ state.entityParent = {
+ id: "",
+ name: "",
+ parentid: "",
+ status: 0,
+ isdeleted: "",
+ createtime: "",
+ updatetime: "",
+ remark: "",
+ parent: null,
+ subjectid: "",
+ subjectname: "",
+ subjectcode: "",
+ };
+ state.entity.parentid = "";
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ LoadKnowledgePointTree();
+
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+ state.dialogVisible = true;
+
+ if (state.entity.parent) {
+ state.entityParent.name = state.entity.parent.name;
+ }
+
+ LoadKnowledgePointTree();
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateQuestionSubjectKnowledgePoint(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateQuestionSubjectKnowledgePoint(state.entity).then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ LoadKnowledgePointTree();
+
+ clearAddOrEditModel();
+ }
+ rLoading.close();
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteQuestionSubjectKnowledgePoint(data.id).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ }
+ const GoBack = () => {
+ proxy.$router.back();
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ onSubmit,
+ GoBack,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ handleParentTreeNodeClick,
+ parentChange,
+ clearParentItem
+ }
+ },
+}
+</script>
+
+<style></style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/AuditTrail.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/AuditTrail.vue
new file mode 100644
index 0000000..77eca06
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/AuditTrail.vue
@@ -0,0 +1,658 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.AuditTrail') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.Download" @click="exportData">
+ {{ $t('button.Export') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData" :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="135px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Module')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.module"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActionBy')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.actionby"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Type')" :style="{marginBottom: '0px'}">
+ <el-select size="default" v-model="searchValue.actiontype" filterable>
+ <el-option
+ v-for="item in actiontypes"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Message')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.message"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.ActionTime')" :style="{marginBottom: '0px'}">
+ <el-date-picker
+ size="default"
+ v-model="searchValue.datearray"
+ type="datetimerange"
+ :start-placeholder="$t('label.DateFrom')"
+ :end-placeholder="$t('label.DateTo')"
+ format="YYYY-MM-DD HH:mm:ss"
+ value-format="YYYY-MM-DD HH:mm:ss"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-table v-loading="loading" :data="audittrails" stripe border size="default" highlight-current-row
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '45px', color: 'var(--el-color-primary)', background: 'var(--el-color-info-light)', }"
+ :header-cell-style="{ height: '45px', margin: '0px', padding: '0px', background: 'var(--el-color-info-light)' }"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="100"></el-table-column>
+ <el-table-column prop="module" fixed sortable align="left" :label="$t('label.Module')"
+ width="140"/>
+ <el-table-column prop="actiontype" :label="$t('label.ActionType')" width="160">
+ <template #default="scope">
+ <el-tag v-if="scope.row.actiontype==='CREATE'" type="success">
+ {{ $t('button.Create') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.actiontype==='UPDATE'" type="warning">
+ {{ $t('button.Edit') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.actiontype==='QUERY'" type="info">
+ {{ $t('button.View') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.actiontype==='DELETE'" type="danger">
+ {{ $t('button.Delete') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ scope.row.actiontype }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="actionby" align="left" :label="$t('label.ActionBy')"
+ width="200"/>
+ <el-table-column prop="actionip" align="left" :label="$t('label.ActionIP')"
+ width="140"/>
+ <el-table-column prop="actiontime" width="150" align="left" :label="$t('label.ActionTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="message" min-width="300" width="*" align="left"
+ :label="$t('label.Message')"></el-table-column>
+ <el-table-column fixed="right" width="110" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :header="title"
+ id="detailDialog"
+ v-model="dialogVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="audittrail" size="default" :rules="rules" ref="dialogForm" label-width="135px">
+ <el-tabs>
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Module')" prop="module">
+ {{ audittrail.module }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActionType')" prop="actiontype">
+ <el-tag v-if="audittrail.actiontype==='CREATE'" type="success">
+ {{ $t('button.Create') }}
+ </el-tag>
+ <el-tag v-else-if="audittrail.actiontype==='UPDATE'" type="warning">
+ {{ $t('button.Edit') }}
+ </el-tag>
+ <el-tag v-else-if="audittrail.actiontype==='QUERY'" type="info">
+ {{ $t('button.View') }}
+ </el-tag>
+ <el-tag v-else-if="audittrail.actiontype==='DELETE'" type="danger">
+ {{ $t('button.Delete') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ audittrail.actiontype }}
+ </el-tag>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActionBy')" prop="actionby">
+ {{ audittrail.actionby }}
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActionIP')" prop="actionip">
+ {{ audittrail.actionip }}
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActionTime')" prop="actiontime">
+ {{ formatterDatetime2(audittrail.actiontime) }}
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Message')" prop="message">
+ {{ audittrail.message }}
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ <el-tab-pane :label="$t('button.Detail')">
+ <el-row>
+ <el-col :span="21">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.BeforeTarget')" prop="beforetarget">
+ <JsonViewer v-if="audittrail.beforetarget"
+ :value="audittrail.beforetarget?JSON.parse(audittrail.beforetarget):null"
+ copyable boxed sort
+ theme="jv-light"/>
+ <el-empty v-else ::imageSize="100"
+ :description="$t('message.NoData')"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.AfterTarget')" prop="aftertarget">
+ <JsonViewer v-if="audittrail.aftertarget"
+ :value="audittrail.aftertarget?JSON.parse(audittrail.aftertarget):null"
+ copyable boxed
+ sort
+ theme="jv-light"/>
+ <el-empty v-else ::imageSize="100"
+ :description="$t('message.NoData')"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate, DownloadBlobFileStream} from '@/utils/common'
+import {
+ GetAuditTrails,
+ UpdateAuditTrail,
+ CreateAuditTrail,
+ DeleteAuditTrail,
+ ExportAuditTrails
+} from "@/api/admin/system"
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+
+export default {
+ name: "audit-trail-list",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ message: null,
+ actionby: "",
+ actiontype: null,
+ module: null,
+ datearray: '',
+ },
+ audittrails: [],
+ audittrail: {
+ id: "",
+ message: "",
+ actionby: "",
+ actiontype: "",
+ actionip: "",
+ actiontime: "",
+ module: "",
+ beforetarget: "",
+ aftertarget: "",
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ },
+ actiontypes: [
+ {
+ id: 'CREATE',
+ name: `${proxy.$t('button.Create')}`,
+ },
+ {
+ id: 'UPDATE',
+ name: `${proxy.$t('button.Edit')}`,
+ },
+ {
+ id: 'QUERY',
+ name: `${proxy.$t('button.View')}`,
+ },
+ {
+ id: 'DELETE',
+ name: `${proxy.$t('button.Delete')}`,
+ }],
+ rules: {}
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.audittrail = {
+ id: "",
+ message: "",
+ actionby: "",
+ actiontype: "",
+ actionip: "",
+ actiontime: "",
+ module: "",
+ beforetarget: "",
+ aftertarget: "",
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ message: state.searchValue.message,
+ actionby: state.searchValue.actionby,
+ actiontype: state.searchValue.actiontype,
+ module: state.searchValue.module,
+ datearray: state.searchValue.datearray,
+ startDateTime: state.searchValue.datearray ? state.searchValue.datearray[0] : null,
+ endDateTime: state.searchValue.datearray ? state.searchValue.datearray[1] : null,
+ permissionLevel: store.permissionLevel,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetAuditTrails(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.audittrails = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ message: null,
+ actionby: "",
+ actiontype: null,
+ module: null,
+ datearray: '',
+ };
+ };
+ const showAddView = () => {
+ clearAddOrEditModel();
+
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const onSubmit = () => {
+ if (state.audittrail.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateAuditTrail(state.audittrail)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ state.dialogVisible = false
+ LoadData()
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateAuditTrail(state.audittrail)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ state.dialogVisible = false
+ LoadData()
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ }
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Detail')}`;
+ state.dialogMode = 'edit';
+ state.audittrail = data;
+
+ state.dialogVisible = true;
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteAuditTrail(data.id)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ LoadData()
+ } else {
+ state.loading = false;
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ })
+ .catch(error => {
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ };
+ const handleChange = (value, direction, movedKeys) => {
+
+ };
+ const exportData = () => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToExport')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ let condition = getSearchCondition();
+ ExportAuditTrails(condition).then(resp => {
+ if (resp && resp.data) {
+ DownloadBlobFileStream(resp, '系统审计数据.xls');
+ }
+ state.loading = false;
+ });
+ }).catch((error) => {
+ console.error(error)
+ state.loading = false;
+ });
+ };
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterDatetime2 = (datetime) => {
+ let date = new Date(datetime);
+ return formatDate(date, 'yyyy-MM-dd hh:mm:ss');
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ showAddView,
+ onSubmit,
+ showEditView,
+ deleteItem,
+ ClearSearchData,
+ handleChange,
+ exportData,
+ formatterDatetime,
+ formatterDatetime2,
+ capitalize,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Config.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Config.vue
new file mode 100644
index 0000000..e10affd
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Config.vue
@@ -0,0 +1,952 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container" v-loading="loading">
+ <div>
+ <el-form size="default" label-width="170px">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">
+ <el-icon style="color: var(--el-color-primary)">
+ <Setting/>
+ </el-icon>
+ {{ $t('menu.Config') }}
+ </b>
+ </div>
+ <div>
+ </div>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <!-- purchase -->
+ <el-card style="margin-top: 10px ">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="contract_purchase" width="23" height="23" style="margin-right: 5px;margin-top: -5px;"
+ color=""/>
+ <b style="margin-right: 20px">
+ {{ $t('label.purchase_config') }}
+ </b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ <p style="color:var(--el-color-info); font-size: 12px;">
+ {{ $t('note.purchase_config_note') }}
+ </p>
+
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_purchase_contract_remaining_day_value"
+ @change="onSubmit_S_PCRDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_purchase_contract_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.purchase_contract_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_PCRDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="purchase_contract_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_purchase_shipment_remaining_day_value"
+ @change="onSubmit_S_PSRDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_purchase_shipment_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.purchase_shipment_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_PSRDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="purchase_shipment_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_purchase_order_remaining_day_value"
+ @change="onSubmit_S_PORDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_purchase_order_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.purchase_order_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_PORDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="purchase_order_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <!-- sale -->
+ <el-card style="margin-top: 10px ">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="contract_sale" width="23" height="23" style="margin-right: 5px;margin-top: -5px;"
+ color=""/>
+ <b style="margin-right: 20px">
+ {{ $t('label.sale_config') }}
+ </b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ <p style="color:var(--el-color-info); font-size: 12px;">
+ {{ $t('note.sale_config_note') }}
+ </p>
+
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_sale_contract_remaining_day_value"
+ @change="onSubmit_S_SCRDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_sale_contract_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.sale_contract_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_SCRDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="sale_contract_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_sale_shipment_remaining_day_value"
+ @change="onSubmit_S_SSRDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_sale_shipment_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.sale_shipment_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_SSRDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="sale_shipment_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_sale_order_remaining_day_value"
+ @change="onSubmit_S_SORDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_sale_order_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.sale_order_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_SORDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="sale_order_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <!-- warehouse -->
+ <el-card style="margin-top: 10px ">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="warehouse" width="23" height="23" style="margin-right: 5px;margin-top: -5px;"
+ color=""/>
+ <b style="margin-right: 20px">
+ {{ $t('label.warehouse_config') }}
+ </b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ <p style="color:var(--el-color-info); font-size: 12px;">
+ {{ $t('note.warehouse_config_note') }}
+ </p>
+
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_warehouse_inventory_level_value"
+ @change="onSubmit_S_WILDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_warehouse_inventory_level')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.warehouse_inventory_min_level')">
+ <el-input size="default" :prefix-icon="icon.Grid" maxlength="6" style="width: 100%"
+ @change="onSubmit_WIMINLV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="warehouse_inventory_min_level.value">
+ <template #append>{{ $t('unit.t') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.warehouse_inventory_max_level')">
+ <el-input size="default" :prefix-icon="icon.Grid" maxlength="6" style="width: 100%"
+ @change="onSubmit_WIMAXLV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="warehouse_inventory_max_level.value">
+ <template #append>{{ $t('unit.t') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_warehouse_inventory_overstock_day_value"
+ @change="onSubmit_S_WIODV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_warehouse_inventory_overstock_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.warehouse_inventory_overstock_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_WIODV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="warehouse_inventory_overstock_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <!-- financial -->
+ <el-card style="margin-top: 10px ">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="financial" width="23" height="23" style="margin-right: 5px;margin-top: -5px;"
+ color=""/>
+ <b style="margin-right: 20px">
+ {{ $t('label.financial_config') }}
+ </b>
+ </div>
+ <div>
+
+ </div>
+ </div>
+ <p style="color:var(--el-color-info); font-size: 12px;">
+ {{ $t('note.financial_config_note') }}
+ </p>
+
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_financial_payment_remaining_day_value"
+ @change="onSubmit_S_FPRDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_financial_payment_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.financial_payment_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_FPRDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="financial_payment_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="8">
+ <el-switch v-model="switch_financial_collection_remaining_day_value"
+ @change="onSubmit_S_FCRDV"
+ style="--el-switch-on-color: var(--el-color-primary); --el-switch-off-color: #e9e9eb"
+ :active-text="$t('label.switch_financial_collection_remaining_day')"
+ size="default"/>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item :label="$t('label.financial_collection_remaining_day')">
+ <el-input size="default" :prefix-icon="icon.Timer" maxlength="6" style="width: 100%"
+ @change="onSubmit_FCRDV"
+ :formatter="(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
+ :parser="(value) => value.replace(/[^\d]/g, '')"
+ v-model="financial_collection_remaining_day.value">
+ <template #append>{{ $t('unit.Days') }}</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-card>
+ <!-- lanuage -->
+ <el-card style="margin-top: 10px ">
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <svg-icon name="language" width="23" height="23" style="margin-right: 5px;margin-top: -5px;"
+ color=""/>
+ <b style="margin-right: 20px">{{ $t('label.PreferredLanguages') }}</b>
+ </div>
+ <div>
+ <el-button size="default" :icon="icon.CirclePlus"
+ @click="newLanguageVisible = true">
+ {{ $t('button.AddLanguage') }}
+ </el-button>
+ </div>
+ </div>
+ <p style="color:var(--el-color-info); font-size: 12px;">
+ {{ $t('message.PreferredLanguagesNote') }}
+ </p>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row v-for="language in languages" style="margin-top: 10px;">
+ <el-col>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ language.value }}</b>
+ <p v-if="displayedLanguage===language.key"
+ style="color:var(--el-color-info); font-size: 12px;">
+ {{ $t('message.DefaultLanguagesNote') }}
+ </p>
+ </div>
+ <div>
+ <el-dropdown
+ size="default"
+ style="margin-left: 10px;margin-right: 10px;vertical-align: 1%">
+ <el-link type="primary" style="color: white; overflow: hidden">
+ <el-button @click="showAddLanguageView"><b>...</b></el-button>
+ </el-link>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item>
+ <el-link :underline="false" style="margin: 5px"
+ type="primary" @click="displayLanguage(language)">
+ {{ $t('button.DisplayLanguage') }}
+ </el-link>
+ </el-dropdown-item>
+ <el-dropdown-item>
+ <el-link :underline="false" style="margin: 5px"
+ type="primary" @click="deleteLanguage(language)">
+ {{ $t('button.DeleteLanguage') }}
+ </el-link>
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ </div>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-form>
+ </div>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog id="newLanguageDialog"
+ v-model="newLanguageVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="500px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%">
+ <plus/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ $t('button.New') }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card>
+ <el-form :model="language" size="default" :rules="languagerules" ref="newLanguageDialog"
+ label-width="100px">
+ <el-tabs>
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row style="margin-top: 20px; padding-left: 100px;">
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Code')" prop="key">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="language.key"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Name')" prop="value">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="language.value"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 10px 0px'}">
+ <el-col :span="24">
+ <el-alert
+ type="warning"
+ :description="$t('message.AddLanguagesNote')"
+ :closable="false"
+ show-icon
+ ></el-alert>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="addLanguage" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="newLanguageVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs, onActivated} from "vue";
+import {
+ GetConfigs,
+ UpdateConfig,
+ CreateConfig,
+ DeleteConfig,
+} from "@/api/admin/system"
+import Cookies from "js-cookie";
+import {useBasicInfoStore} from "@/store/basicInfo";
+import * as elementplus from "element-plus";
+import {parseToBoolean} from "@/utils/common";
+
+export default {
+ name: "Config",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ //common properties
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ newLanguageVisible: false,
+ configs: [],
+ language: {
+ key: null,
+ value: null,
+ level: 0,
+ category: 'language',
+ },
+ selectedlanguage: null,
+ displayedLanguage: null,
+ languages: [],
+ languagerules: {
+ key: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Code')})}`,
+ }],
+ value: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ trigger: 'blur'
+ }]
+ },
+ purchase_contract_remaining_day: {
+ key: "purchase_contract_remaining_day",
+ value: null,
+ level: 0,
+ category: 'purchase'
+ },
+ purchase_shipment_remaining_day: {
+ key: "purchase_shipment_remaining_day",
+ value: null,
+ level: 0,
+ category: 'purchase'
+ },
+ purchase_order_remaining_day: {key: "purchase_order_remaining_day", value: null, level: 0, category: 'purchase'},
+ sale_contract_remaining_day: {key: "sale_contract_remaining_day", value: null, level: 0, category: 'sale'},
+ sale_shipment_remaining_day: {key: "sale_shipment_remaining_day", value: null, level: 0, category: 'sale'},
+ sale_order_remaining_day: {key: "sale_order_remaining_day", value: null, level: 0, category: 'sale'},
+ warehouse_inventory_max_level: {
+ key: "warehouse_inventory_max_level",
+ value: null,
+ level: 0,
+ category: 'warehouse'
+ },
+ warehouse_inventory_min_level: {
+ key: "warehouse_inventory_min_level",
+ value: null,
+ level: 0,
+ category: 'warehouse'
+ },
+ warehouse_inventory_overstock_day: {
+ key: "warehouse_inventory_overstock_day",
+ value: null,
+ level: 0,
+ category: 'warehouse'
+ },
+ financial_payment_remaining_day: {
+ key: "financial_payment_remaining_day",
+ value: null,
+ level: 0,
+ category: 'financial'
+ },
+ financial_collection_remaining_day: {
+ key: "financial_collection_remaining_day",
+ value: null,
+ level: 0,
+ category: 'financial'
+ },
+ switch_purchase_contract_remaining_day: {
+ key: "switch_purchase_contract_remaining_day",
+ value: null,
+ level: 0,
+ category: 'purchase'
+ },
+ switch_purchase_shipment_remaining_day: {
+ key: "switch_purchase_shipment_remaining_day",
+ value: null,
+ level: 0,
+ category: 'purchase'
+ },
+ switch_purchase_order_remaining_day: {
+ key: "switch_purchase_order_remaining_day",
+ value: null,
+ level: 0,
+ category: 'purchase'
+ },
+ switch_sale_contract_remaining_day: {
+ key: "switch_sale_contract_remaining_day",
+ value: null,
+ level: 0,
+ category: 'sale'
+ },
+ switch_sale_shipment_remaining_day: {
+ key: "switch_sale_shipment_remaining_day",
+ value: null,
+ level: 0,
+ category: 'sale'
+ },
+ switch_sale_order_remaining_day: {
+ key: "switch_sale_order_remaining_day",
+ value: null,
+ level: 0,
+ category: 'sale'
+ },
+ switch_warehouse_inventory_level: {
+ key: "switch_warehouse_inventory_level",
+ value: null,
+ level: 0,
+ category: 'warehouse'
+ },
+ switch_warehouse_inventory_overstock_day: {
+ key: "switch_warehouse_inventory_overstock_day",
+ value: null,
+ level: 0,
+ category: 'warehouse'
+ },
+ switch_financial_payment_remaining_day: {
+ key: "switch_financial_payment_remaining_day",
+ value: null,
+ level: 0,
+ category: 'financial'
+ },
+ switch_financial_collection_remaining_day: {
+ key: "switch_financial_collection_remaining_day",
+ value: null,
+ level: 0,
+ category: 'financial'
+ },
+ switch_purchase_contract_remaining_day_value: false,
+ switch_purchase_shipment_remaining_day_value: false,
+ switch_purchase_order_remaining_day_value: false,
+ switch_sale_contract_remaining_day_value: false,
+ switch_sale_shipment_remaining_day_value: false,
+ switch_sale_order_remaining_day_value: false,
+ switch_warehouse_inventory_level_value: false,
+ switch_warehouse_inventory_overstock_day_value: false,
+ switch_financial_payment_remaining_day_value: false,
+ switch_financial_collection_remaining_day_value: false,
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+ onActivated(() => {
+
+ });
+
+ const Init = () => {
+ state.displayedLanguage = Cookies.get("language", {domain: WGURL.cookieDomain});
+
+ LoadData();
+ };
+
+ const getSearchCondition = () => {
+ let condition = {
+ permissionLevel: store.permissionLevel,
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetConfigs(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.configs = resp.data.data;
+ if (state.configs && state.configs.length > 0) {
+ let c_01 = state.configs.filter(e => e.key === 'purchase_contract_remaining_day').shift();
+ c_01 ? state.purchase_contract_remaining_day = c_01 : CreateConfig(state.purchase_contract_remaining_day);
+
+ let c_02 = state.configs.filter(e => e.key === 'purchase_shipment_remaining_day').shift();
+ c_02 ? state.purchase_shipment_remaining_day = c_02 : CreateConfig(state.purchase_shipment_remaining_day);
+
+ let c_03 = state.configs.filter(e => e.key === 'purchase_order_remaining_day').shift();
+ c_03 ? state.purchase_order_remaining_day = c_03 : CreateConfig(state.purchase_order_remaining_day);
+
+ let c_04 = state.configs.filter(e => e.key === 'sale_contract_remaining_day').shift();
+ c_04 ? state.sale_contract_remaining_day = c_04 : CreateConfig(state.sale_contract_remaining_day);
+
+ let c_05 = state.configs.filter(e => e.key === 'sale_shipment_remaining_day').shift();
+ c_05 ? state.sale_shipment_remaining_day = c_05 : CreateConfig(state.sale_shipment_remaining_day);
+
+ let c_06 = state.configs.filter(e => e.key === 'sale_order_remaining_day').shift();
+ c_06 ? state.sale_order_remaining_day = c_06 : CreateConfig(state.sale_order_remaining_day);
+
+ let c_07 = state.configs.filter(e => e.key === 'warehouse_inventory_max_level').shift();
+ c_07 ? state.warehouse_inventory_max_level = c_07 : CreateConfig(state.warehouse_inventory_max_level);
+
+ let c_08 = state.configs.filter(e => e.key === 'warehouse_inventory_min_level').shift();
+ c_08 ? state.warehouse_inventory_min_level = c_08 : CreateConfig(state.warehouse_inventory_min_level);
+
+ let c_09 = state.configs.filter(e => e.key === 'warehouse_inventory_overstock_day').shift();
+ c_09 ? state.warehouse_inventory_overstock_day = c_09 : CreateConfig(state.warehouse_inventory_overstock_day);
+
+ let c_10 = state.configs.filter(e => e.key === 'financial_payment_remaining_day').shift();
+ c_10 ? state.financial_payment_remaining_day = c_10 : CreateConfig(state.financial_payment_remaining_day);
+
+ let c_11 = state.configs.filter(e => e.key === 'financial_collection_remaining_day').shift();
+ c_11 ? state.financial_collection_remaining_day = c_11 : CreateConfig(state.financial_collection_remaining_day);
+
+ let c_12 = state.configs.filter(e => e.key === 'switch_purchase_contract_remaining_day').shift();
+ c_12 ? state.switch_purchase_contract_remaining_day = c_12 : CreateConfig(state.switch_purchase_contract_remaining_day);
+
+ let c_13 = state.configs.filter(e => e.key === 'switch_purchase_shipment_remaining_day').shift();
+ c_13 ? state.switch_purchase_shipment_remaining_day = c_13 : CreateConfig(state.switch_purchase_shipment_remaining_day);
+
+ let c_14 = state.configs.filter(e => e.key === 'switch_purchase_order_remaining_day').shift();
+ c_14 ? state.switch_purchase_order_remaining_day = c_14 : CreateConfig(state.switch_purchase_order_remaining_day);
+
+ let c_15 = state.configs.filter(e => e.key === 'switch_sale_contract_remaining_day').shift();
+ c_15 ? state.switch_sale_contract_remaining_day = c_15 : CreateConfig(state.switch_sale_contract_remaining_day);
+
+ let c_16 = state.configs.filter(e => e.key === 'switch_sale_shipment_remaining_day').shift();
+ c_16 ? state.switch_sale_shipment_remaining_day = c_16 : CreateConfig(state.switch_sale_shipment_remaining_day);
+
+ let c_17 = state.configs.filter(e => e.key === 'switch_sale_order_remaining_day').shift();
+ c_17 ? state.switch_sale_order_remaining_day = c_17 : CreateConfig(state.switch_sale_order_remaining_day);
+
+ let c_18 = state.configs.filter(e => e.key === 'switch_warehouse_inventory_level').shift();
+ c_18 ? state.switch_warehouse_inventory_level = c_18 : CreateConfig(state.switch_warehouse_inventory_level);
+
+ let c_20 = state.configs.filter(e => e.key === 'switch_warehouse_inventory_overstock_day').shift();
+ c_20 ? state.switch_warehouse_inventory_overstock_day = c_20 : CreateConfig(state.switch_warehouse_inventory_overstock_day);
+
+ let c_21 = state.configs.filter(e => e.key === 'switch_financial_payment_remaining_day').shift();
+ c_21 ? state.switch_financial_payment_remaining_day = c_21 : CreateConfig(state.switch_financial_payment_remaining_day);
+
+ let c_22 = state.configs.filter(e => e.key === 'switch_financial_collection_remaining_day').shift();
+ c_22 ? state.switch_financial_collection_remaining_day = c_22 : CreateConfig(state.switch_financial_collection_remaining_day);
+
+
+ state.switch_purchase_contract_remaining_day_value = parseToBoolean(state.switch_purchase_contract_remaining_day.value);
+ state.switch_purchase_shipment_remaining_day_value = parseToBoolean(state.switch_purchase_shipment_remaining_day.value);
+ state.switch_purchase_order_remaining_day_value = parseToBoolean(state.switch_purchase_order_remaining_day.value);
+ state.switch_sale_contract_remaining_day_value = parseToBoolean(state.switch_sale_contract_remaining_day.value);
+ state.switch_sale_shipment_remaining_day_value = parseToBoolean(state.switch_sale_shipment_remaining_day.value);
+ state.switch_sale_order_remaining_day_value = parseToBoolean(state.switch_sale_order_remaining_day.value);
+ state.switch_warehouse_inventory_level_value = parseToBoolean(state.switch_warehouse_inventory_level.value);
+ state.switch_warehouse_inventory_overstock_day_value = parseToBoolean(state.switch_warehouse_inventory_overstock_day.value);
+ state.switch_financial_payment_remaining_day_value = parseToBoolean(state.switch_financial_payment_remaining_day.value);
+ state.switch_financial_collection_remaining_day_value = parseToBoolean(state.switch_financial_collection_remaining_day.value);
+
+ state.languages = state.configs.filter(e => e.category === 'language');
+ localStorage.setItem("languages", JSON.stringify(state.languages));
+ }
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const addLanguage = () => {
+ proxy.$refs['newLanguageDialog'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#newLanguageDialog");
+ CreateConfig(state.language)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ state.dialogVisible = false
+ LoadData()
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ };
+ const displayLanguage = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ let targetLang = state.languages.find(e => e.key === data.key);
+ let language = targetLang.key;
+ if (language) {
+ Cookies.set("language", language, {domain: WGURL.cookieDomain});
+
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToReload')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ window.history.go(0);
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ }).catch((error) => {
+ console.error(error)
+ state.loading = false;
+ });
+ };
+ const deleteLanguage = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteConfig(data.id)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ LoadData()
+ } else {
+ state.loading = false;
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ })
+ .catch(error => {
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ state.loading = false;
+ });
+ };
+ const showAddLanguageView = () => {
+ }
+ const doUpdateConfig = (config) => {
+ state.loading = true;
+ UpdateConfig(config).then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`, '',
+ {confirmButtonText: 'OK', type: 'error',});
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ }).catch(err => {
+ console.error(err);
+ state.loading = false;
+ });
+ }
+
+ const onSubmit_PCRDV = (data) => {
+ state.purchase_contract_remaining_day.value = data;
+ doUpdateConfig(state.purchase_contract_remaining_day);
+ }
+ const onSubmit_PSRDV = (data) => {
+ state.purchase_shipment_remaining_day.value = data;
+ doUpdateConfig(state.purchase_shipment_remaining_day);
+ }
+ const onSubmit_PORDV = (data) => {
+ state.purchase_order_remaining_day.value = data;
+ doUpdateConfig(state.purchase_order_remaining_day);
+ }
+ const onSubmit_SCRDV = (data) => {
+ state.sale_contract_remaining_day.value = data;
+ doUpdateConfig(state.sale_contract_remaining_day);
+ }
+ const onSubmit_SSRDV = (data) => {
+ state.sale_shipment_remaining_day.value = data;
+ doUpdateConfig(state.sale_shipment_remaining_day);
+ }
+ const onSubmit_SORDV = (data) => {
+ state.sale_order_remaining_day.value = data;
+ doUpdateConfig(state.sale_order_remaining_day);
+ }
+ const onSubmit_WIMAXLV = (data) => {
+ state.warehouse_inventory_max_level.value = data;
+ doUpdateConfig(state.warehouse_inventory_max_level);
+ }
+ const onSubmit_WIMINLV = (data) => {
+ state.warehouse_inventory_min_level.value = data;
+ doUpdateConfig(state.warehouse_inventory_min_level);
+ }
+ const onSubmit_WIODV = (data) => {
+ state.warehouse_inventory_overstock_day.value = data;
+ doUpdateConfig(state.warehouse_inventory_overstock_day);
+ }
+ const onSubmit_FPRDV = (data) => {
+ state.financial_payment_remaining_day.value = data;
+ doUpdateConfig(state.financial_payment_remaining_day);
+ }
+ const onSubmit_FCRDV = (data) => {
+ state.financial_collection_remaining_day.value = data;
+ doUpdateConfig(state.financial_collection_remaining_day);
+ }
+ const onSubmit_S_PCRDV = (data) => {
+ state.switch_purchase_contract_remaining_day.value = data;
+ doUpdateConfig(state.switch_purchase_contract_remaining_day);
+ }
+ const onSubmit_S_PSRDV = (data) => {
+ state.switch_purchase_shipment_remaining_day.value = data;
+ doUpdateConfig(state.switch_purchase_shipment_remaining_day);
+ }
+ const onSubmit_S_PORDV = (data) => {
+ state.switch_purchase_order_remaining_day.value = data;
+ doUpdateConfig(state.switch_purchase_order_remaining_day);
+ }
+ const onSubmit_S_SCRDV = (data) => {
+ state.switch_sale_contract_remaining_day.value = data;
+ doUpdateConfig(state.switch_sale_contract_remaining_day);
+ }
+ const onSubmit_S_SSRDV = (data) => {
+ state.switch_sale_shipment_remaining_day.value = data;
+ doUpdateConfig(state.switch_sale_shipment_remaining_day);
+ }
+ const onSubmit_S_SORDV = (data) => {
+ state.switch_sale_order_remaining_day.value = data;
+ doUpdateConfig(state.switch_sale_order_remaining_day);
+ }
+ const onSubmit_S_WILDV = (data) => {
+ state.switch_warehouse_inventory_level.value = data;
+ doUpdateConfig(state.switch_warehouse_inventory_level);
+ }
+ const onSubmit_S_WIODV = (data) => {
+ state.switch_warehouse_inventory_overstock_day.value = data;
+ doUpdateConfig(state.switch_warehouse_inventory_overstock_day);
+ }
+ const onSubmit_S_FPRDV = (data) => {
+ state.switch_financial_payment_remaining_day.value = data;
+ doUpdateConfig(state.switch_financial_payment_remaining_day);
+ }
+ const onSubmit_S_FCRDV = (data) => {
+ state.switch_financial_collection_remaining_day.value = data;
+ doUpdateConfig(state.switch_financial_collection_remaining_day);
+ };
+
+ return {
+ ...toRefs(state),
+ addLanguage,
+ displayLanguage,
+ deleteLanguage,
+ icon, parseToBoolean,
+ showAddLanguageView,
+ onSubmit_PCRDV,
+ onSubmit_PSRDV,
+ onSubmit_PORDV,
+ onSubmit_SCRDV,
+ onSubmit_SSRDV,
+ onSubmit_SORDV,
+ onSubmit_WIMAXLV,
+ onSubmit_WIMINLV,
+ onSubmit_WIODV,
+ onSubmit_FPRDV,
+ onSubmit_FCRDV,
+ onSubmit_S_PCRDV,
+ onSubmit_S_PSRDV,
+ onSubmit_S_PORDV,
+ onSubmit_S_SCRDV,
+ onSubmit_S_SSRDV,
+ onSubmit_S_SORDV,
+ onSubmit_S_WILDV,
+ onSubmit_S_WIODV,
+ onSubmit_S_FPRDV,
+ onSubmit_S_FCRDV
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Log.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Log.vue
new file mode 100644
index 0000000..09e7007
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Log.vue
@@ -0,0 +1,201 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <el-row style="display: flex;justify-content: space-between">
+ <el-col :span="6">
+ <b style="margin-right: 20px">{{ $t('menu.Log') }}</b>
+ </el-col>
+ <el-col :span="18" align="right">
+ <el-date-picker
+ style="margin-right: 5px"
+ size="default"
+ v-model="searchValue.datearray"
+ type="datetimerange"
+ :start-placeholder="$t('label.DateFrom')"
+ :end-placeholder="$t('label.DateTo')"
+ format="YYYY-MM-DD HH:mm:ss"
+ value-format="YYYY-MM-DD HH:mm:ss"
+ >
+ </el-date-picker>
+
+ <el-button :icon="icon.Search" type="primary" style="margin-top: -6px;" size="default"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-table v-loading="loading" :data="logs" stripe border size="default" highlight-current-row
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '45px', color: 'var(--el-color-primary)', background: 'var(--el-color-info-light)', }"
+ :header-cell-style="{ height: '45px', margin: '0px', padding: '0px', background: 'var(--el-color-info-light)' }">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="100"></el-table-column>
+ <el-table-column prop="actiontime" width="150" align="left" :label="$t('label.ActionTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="module" align="left" :label="$t('label.Module')" width="200"/>
+ <el-table-column prop="source" align="left" :label="$t('label.LinkUrl')" min-width="800" width="*">
+ <template #default="scope">
+ <el-link type="primary" :underline="false" @click="downloadFile(scope.row.source)">
+ {{ scope.row.source }}
+ </el-link>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate} from '@/utils/common'
+import {getLogs} from "@/api/admin/system"
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+export default {
+ name: "log-list",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ logs: [],
+ searchValue: {
+ filter: "",
+ datearray: '',
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ datearray: state.searchValue.datearray,
+ startDateTime: state.searchValue.datearray ? state.searchValue.datearray[0] : null,
+ endDateTime: state.searchValue.datearray ? state.searchValue.datearray[1] : null,
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ getLogs(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.logs = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const downloadFile = (filename) => {
+ window.open(filename, "_target")
+ };
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+
+ return {
+ ...toRefs(state), LoadData, sizeChange, currentChange, SearchData,
+ downloadFile,
+ formatterDatetime, icon
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/MailSendLog.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/MailSendLog.vue
new file mode 100644
index 0000000..f5db9d8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/MailSendLog.vue
@@ -0,0 +1,211 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;">
+ <el-row style="display: flex;justify-content: space-between">
+ <el-col :span="6">
+ <b style="margin-right: 20px">{{ $t('menu.MailSendLog') }}</b>
+ </el-col>
+ <el-col :span="18" align="right">
+ <el-date-picker
+ style="margin-right: 5px"
+ size="default"
+ v-model="searchValue.datearray"
+ type="datetimerange"
+ :start-placeholder="$t('label.DateFrom')"
+ :end-placeholder="$t('label.DateTo')"
+ format="YYYY-MM-DD HH:mm:ss"
+ value-format="YYYY-MM-DD HH:mm:ss"
+ >
+ </el-date-picker>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ style="margin-top: -6px;">
+ {{ $t('button.Search') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <el-table v-loading="loading" :data="mailsendlogs" stripe border size="default" highlight-current-row
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '45px', color: 'var(--el-color-primary)', background: 'var(--el-color-info-light)', }"
+ :header-cell-style="{ height: '45px', margin: '0px', padding: '0px', background: 'var(--el-color-info-light)' }">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="80"/>
+ <el-table-column prop="createtime" width="150" align="left" :label="$t('label.CreateTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="username" align="left" :label="$t('label.Name')" width="300"/>
+ <el-table-column prop="account" align="left" :label="$t('label.Account')" width="230"/>
+ <el-table-column prop="status" :label="$t('label.Status')" width="160">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="success">
+ {{ $t('label.PENDING') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="warning">
+ {{ $t('label.QUEUING') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="info">
+ {{ $t('label.SUCCESSFUL') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status===3" type="danger">
+ {{ $t('label.FAILED') }}
+ </el-tag>
+ <el-tag v-else type="info">
+ {{ scope.row.status }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="count" align="left" :label="$t('label.TryCount')" width="240"/>
+ <el-table-column prop="trytime" width="150" align="left" :label="$t('label.TryTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="routekey" align="left" :label="$t('label.routekey')" width="350"/>
+ <el-table-column prop="exchange" align="left" :label="$t('label.exchange')" min-width="1800" width="*"/>
+ </el-table>
+ <el-affix position="bottom" :offset="10">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div style="margin-top:10px; display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-affix>
+ </el-card>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate} from '@/utils/common'
+import {GetMailSendLogs} from "@/api/admin/system"
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+export default {
+ name: "MailSendLog",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ mailsendlogs: [],
+ searchValue: {
+ filter: "",
+ datearray: '',
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ datearray: state.searchValue.datearray,
+ startDateTime: state.searchValue.datearray ? state.searchValue.datearray[0] : null,
+ endDateTime: state.searchValue.datearray ? state.searchValue.datearray[1] : null,
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetMailSendLogs(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.mailsendlogs = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const downloadFile = (filename) => {
+ window.open(filename, "_target")
+ };
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "trytime":
+ if (!row.trytime)
+ return null;
+ date = new Date(row.trytime);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+
+ return {
+ ...toRefs(state), LoadData, sizeChange, currentChange, SearchData,
+ downloadFile,
+ formatterDatetime, icon
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Menu.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Menu.vue
new file mode 100644
index 0000000..7e821f3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Menu.vue
@@ -0,0 +1,650 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.MenuList') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search" maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="135px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Component')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.component"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Type')" :style="{ marginBottom: '0px' }">
+ <el-select size="default" v-model="searchValue.type" filterable>
+ <el-option v-for="item in menutypes" :key="item.id" :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.LinkUrl')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.url"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ComponentPath')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.path"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-table v-loading="loading" :data="menus" stripe border size="default" highlight-current-row
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '45px', color: 'var(--el-color-primary)', background: 'var(--el-color-info-light)', }"
+ :header-cell-style="{ height: '45px', margin: '0px', padding: '0px', background: 'var(--el-color-info-light)' }"
+ @row-dblclick="showEditView">
+ <el-table-column prop="name" sortable :label="$t('label.Name')" width="200"></el-table-column>
+ <el-table-column prop="level" sortable :label="$t('label.Level')" width="150"></el-table-column>
+ <el-table-column prop="languagekey" align="left" :label="$t('label.LanguageKey')" width="200">
+ <template #default="scope">
+ <div>
+ {{ scope.row.languagekey }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="icon" align="left" :label="$t('label.Icon')" width="230">
+ <template #default="scope">
+ <div>
+ <svg-icon width="18" height="18" color="" :name="scope.row.icon"></svg-icon>
+ {{ scope.row.icon }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="component" align="left" :label="$t('label.Component')" width="200"></el-table-column>
+ <el-table-column prop="url" align="left" :label="$t('label.LinkUrl')" min-width="600"
+ width="*"></el-table-column>
+ <el-table-column fixed="right" width="110" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit" size="small" type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :header="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1200px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="menu" size="default" :rules="rules" ref="dialogForm" label-width="150px">
+ <el-tabs style="min-height: 300px">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="menu.name"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.LanguageKey')" prop="languagekey">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="menu.languagekey"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Type')" prop="type">
+ <el-select size="default" style="width: 100%" v-model="menu.type" filterable>
+ <el-option v-for="item in menutypes" :key="item.id" :label="item.name"
+ :value="item.id" :disabled="item.disabled">
+ {{ item.name }}
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Component')" prop="component">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="menu.component"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Level')" prop="level">
+ <el-input-number size="default" v-model="menu.level" maxlength="64"
+ :prefix-icon="icon.Edit"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Icon')" prop="icon">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="menu.icon">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.LinkUrl')" prop="url">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="menu.url"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Parent')" prop="parent">
+ <el-popover placement="right" trigger="click" width="auto">
+ <template #reference>
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ style="width: 100%" @change="parentChange"
+ v-model="menu.parentname">
+ </el-input>
+ </template>
+ <el-tree :data="menutree" :props="defaultProps" accordion
+ @node-click="handleParentTreeNodeClick"></el-tree>
+ </el-popover>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.ComponentPath')" prop="path">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="menu.path"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="3" maxlength="500"
+ v-model="menu.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 10px 0px' }">
+ <el-col :span="24">
+ <el-alert :title="usernotetitle" type="warning" :description="usernotedescription"
+ :closable="false" show-icon/>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default" plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate} from '@/utils/common'
+import {GetMenus, GetMenuTree, UpdateMenu, CreateMenu, DeleteMenu} from "@/api/admin/system"
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+export default {
+ name: 'Menu-List',
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ //common properties
+ title: '',
+ total: 0,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ //ParentTree
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ menutree: [],
+ //other
+ searchValue: {
+ filter: "",
+ name: '',
+ url: '',
+ path: '',
+ component: '',
+ type: null,
+ },
+ menus: [],
+ menutypes: [
+ {
+ id: 0,
+ name: `${proxy.$t('label.Undefined')}`,
+ },
+ {
+ id: 1,
+ name: `${proxy.$t('label.LinkUrl')}`,
+ },
+ {
+ id: 2,
+ name: `${proxy.$t('label.Menu')}`,
+ }],
+ menu: {
+ name: '',
+ languagekey: '',
+ parentid: '',
+ parentcode: '',
+ parentname: '',
+ url: '/admin',
+ path: '/admin',
+ level: 0,
+ component: 'LayoutAdmin',
+ type: 0,
+ icon: '',
+ keepalive: true,
+ isdeleted: false,
+ remark: '',
+ createtime: '',
+ updatetime: '',
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ languagekey: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.LanguageKey')})}`,
+ trigger: 'blur'
+ }],
+ type: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Type')})}`,
+ trigger: 'blur'
+ }],
+ component: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Component')})}`,
+ trigger: 'blur'
+ }],
+ icon: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Icon')})}`,
+ trigger: 'blur'
+ }],
+ },
+ usernotetitle: `${proxy.$t('message.UserNoteTitle')}`,
+ usernotedescription: `${proxy.$t('message.UserNoteDescription')}`,
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ LoadMenuTree();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const clearAddOrEditModel = () => {
+ state.menu = {
+ name: '',
+ languagekey: '',
+ parentid: '',
+ parentcode: '',
+ parentname: '',
+ url: '/admin',
+ path: '/admin',
+ level: 0,
+ component: 'LayoutAdmin',
+ type: 0,
+ icon: '',
+ keepalive: true,
+ isdeleted: false,
+ remark: '',
+ createtime: '',
+ updatetime: '',
+ }
+ state.menutree = [];
+
+ LoadMenuTree();
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ name: state.searchValue.name,
+ url: state.searchValue.url,
+ path: state.searchValue.path,
+ component: state.searchValue.component,
+ type: state.searchValue.type,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true
+ let condition = getSearchCondition();
+
+ GetMenus(condition).then(resp => {
+ state.loading = false
+ if (resp.data) {
+ state.menus = resp.data.data
+ state.total = resp.data.total
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const LoadMenuTree = () => {
+ GetMenuTree().then(resp => {
+ state.loading = false
+ if (resp.data.code === 200) {
+ state.menutree = resp.data.data;
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ name: '',
+ url: '',
+ path: '',
+ component: '',
+ type: null,
+ };
+ };
+ const SearchData = () => {
+ LoadData()
+ };
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const onSubmit = () => {
+ console.log(state.menu)
+ if (state.menu.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateMenu(state.menu)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ state.dialogVisible = false
+ LoadData()
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateMenu(state.menu)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ state.dialogVisible = false
+ LoadData()
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ }
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.menu = data;
+ state.dialogVisible = true;
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteMenu(data.id)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ LoadData()
+ } else {
+ state.loading = false;
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ })
+ .catch(error => {
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ state.loading = false;
+ });
+ };
+ //Pick parent for auth atom
+ const handleParentTreeNodeClick = (data) => {
+ console.log(data)
+ if (state.menu.id !== data.id) {
+ state.menu.parentid = data.id;
+ state.menu.parentcode = data.code;
+ state.menu.parentname = data.name;
+
+ if (state.menu.component === 'LayoutAdmin') {
+ state.menu.component = '';
+ }
+ }
+ };
+ const parentChange = (data) => {
+ if (!data) {
+ state.menu.parentid = "";
+ state.menu.parentcode = "";
+ state.menu.parentname = "";
+ }
+ };
+
+ //formatter
+ const formatMenuType = (row, column) => {
+ switch (row.type) {
+ case 0:
+ return `${proxy.$t('label.Undefined')}`
+ case 1:
+ return `${proxy.$t('label.Page')}`
+ case 2:
+ return `${proxy.$t('label.Menu')}`
+ case 3:
+ return `${proxy.$t('label.Button')}`
+ }
+ };
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ clearAddOrEditModel,
+ ClearSearchData,
+ SearchData,
+ showAddView,
+ onSubmit,
+ showEditView,
+ deleteItem,
+ handleParentTreeNodeClick,
+ formatMenuType,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ icon,
+ parentChange
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Notification.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Notification.vue
new file mode 100644
index 0000000..1191fcc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/system/Notification.vue
@@ -0,0 +1,723 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.Notification') }}</b>
+ <el-button link size="default" type="primary" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" :prefix-icon="icon.Search"
+ maxlength="64"
+ clearable size="default" @clear="SearchData" style="width: 200px;margin-right: 10px"
+ v-model="searchValue.filter" @keydown.enter.native="SearchData"
+ :disabled="showAdvanceSearchView"></el-input>
+ <el-button :icon="icon.Search" type="primary" size="default" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView ? icon.CaretTop : icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="135px">
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Title')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.title"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Keywords')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.keywords"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{ margin: '10px 0px 0px 0px' }">
+ <el-col :span="21" :style="{ textAlign: 'right' }" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary" @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-table v-loading="loading" :data="notifications" stripe border size="default" highlight-current-row
+ element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :header-row-style="{ height: '45px', color: 'var(--el-color-primary)', background: 'var(--el-color-info-light)', }"
+ :header-cell-style="{ height: '45px', margin: '0px', padding: '0px', background: 'var(--el-color-info-light)' }"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="100"/>
+ <el-table-column prop="title" sortable align="left" :label="$t('label.Title')" width="200"/>
+ <el-table-column prop="status" sortable align="left" :label="$t('label.Status')" width="200">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status === 0" type="success">{{ $t('label.Defined') }}</el-tag>
+ <el-tag v-else-if="scope.row.status === 1" type="warning">{{ $t('label.Unpublished') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.status === 2" type="danger">{{ $t('label.Published') }}</el-tag>
+ <el-tag v-else-if="scope.row.status === 3" type="info">{{ $t('label.Expired') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="publisher" sortable align="left" :label="$t('label.Publisher')" width="200"/>
+ <el-table-column prop="publishdatetime" sortable align="left" :label="$t('label.PublishDateTime')"
+ width="150"/>
+ <el-table-column prop="department" align="left" :label="$t('label.Department')" width="150"/>
+ <el-table-column prop="category" sortable align="left" :label="$t('label.Category')" width="150"/>
+ <el-table-column prop="nlevel" sortable align="left" :label="$t('label.Level')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.nlevel === 0" type="danger">{{ $t('label.Info') }}</el-tag>
+ <el-tag v-else-if="scope.row.nlevel === 1" type="warning">{{ $t('label.Warning') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.nlevel === 2" type="success">{{ $t('label.Danger') }}</el-tag>
+ <el-tag v-else-if="scope.row.nlevel === 3" type="info">{{ $t('label.Fatal') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="keywords" sortable align="left" :label="$t('label.Keywords')" width="200"/>
+ <el-table-column prop="actionby" sortable align="left" :label="$t('label.ActionBy')" width="200"/>
+ <el-table-column prop="createtime" min-width="150" width="*" align="left"
+ :label="$t('label.CreateTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column fixed="right" :label="$t('label.Operation')" width="130">
+ <template #default="scope">
+ <el-button v-if="scope.row.status != 3" @click="showEditView(scope.row)" :icon="icon.Edit"
+ :title="$t('button.Edit')" size="small" type="primary" circle>
+ </el-button>
+ <el-button v-if="scope.row.status == 0 || scope.row.status == 1" @click="publishItem(scope.row)"
+ :icon="icon.Promotion" :title="$t('button.Publish')" size="small" type="warning"
+ circle>
+ </el-button>
+ <el-button v-if="scope.row.status == 2" @click="removeItem(scope.row)" :icon="icon.Close"
+ :title="$t('button.Remove')" size="small" type="info" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete" :title="$t('button.Delete')"
+ size="small" type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{ 'margin': '10px 0px' }"></el-divider>
+ <el-row>
+ <el-col :span="12" align="left">
+
+ </el-col>
+ <el-col :span="12" align="right">
+ <div style="display: flex;justify-content: flex-end">
+ <el-pagination :currentPage="pageIndex" :page-size="pageSize" background
+ @current-change="currentChange" @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </el-affix>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :header="title" id="detailDialog" v-model="dialogVisible" :close-on-click-modal="false"
+ class="el-dialog-customer" width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode === 'new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form size="default" :model="notification" :rules="rules" ref="dialogForm" label-width="135px">
+ <el-tabs style="min-height: 300px" v-if="dialogVisible">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Title')" prop="title">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="notification.title" :placeholder="$t('label.Title')">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Department')" prop="department">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="notification.department">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-tag v-if="notification.status === 0" type="success">
+ {{ $t('label.Defined') }}
+ </el-tag>
+ <el-tag v-else-if="notification.status === 1" type="warning">
+ {{ $t('label.Unpublished') }}
+ </el-tag>
+ <el-tag v-else-if="notification.status === 2" type="danger">
+ {{ $t('label.Published') }}
+ </el-tag>
+ <el-tag v-else-if="notification.status === 3" type="info">
+ {{ $t('label.Expired') }}
+ </el-tag>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Keywords')" prop="keywords">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="notification.keywords">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Level')" prop="nlevel">
+ <el-select size="default" v-model="notification.nlevel" filterable>
+ <el-option v-for="item in notificationnlevels" :key="item.id"
+ :label="item.name" :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Category')" prop="category">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="notification.category">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActionBy')" prop="actionby">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ disabled="disabled" v-model="notification.actionby">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Publisher')" prop="publisher">
+ <el-input size="default" :prefix-icon="icon.Edit" disabled="disabled"
+ maxlength="64" v-model="notification.publisher">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.PublishDateTime')">
+ <el-date-picker v-model="notification.publishdatetime" size="default"
+ type="date" style="width: 200px;" disabled="disabled">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.CreateTime')">
+ <el-date-picker v-model="notification.createtime" size="default" type="date"
+ style="width: 200px;" disabled="disabled">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 10px;">
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="5" maxlength="500"
+ v-model="notification.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ <el-tab-pane :label="$t('button.Detail')">
+ <div style="border: 1px solid #ccc">
+ <wangEditorExt v-if="notification.context" :content="notification.context" height="300px"
+ ref="contextEditor"/>
+ <wangEditorExt v-else :content="notification.context" height="300px"
+ ref="contextEditor"/>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs} from "vue";
+import {formatDate} from '@/utils/common'
+import {
+ GetNotifications,
+ CreateNotification,
+ UpdateNotification,
+ DeleteNotification
+} from "@/api/admin/system"
+import wangEditorExt from '../../../components/common/wangEditorExt.vue'
+import {useBasicInfoStore} from "@/store/basicInfo";
+
+export default {
+ name: "NotificationList",
+ components: {wangEditorExt},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore()
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ displayMode: "card",
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ title: "",
+ department: "",
+ category: "",
+ nlevel: "",
+ keywords: "",
+ actionby: "",
+ status: "",
+ publisher: "",
+ },
+ notifications: [],
+ notification: {
+ id: "",
+ title: "",
+ department: "",
+ category: "",
+ nlevel: "",
+ keywords: "",
+ actionby: "",
+ status: "",
+ publisher: "",
+ remark: "",
+ context: "",
+ },
+ notificationstatuss: [
+ {
+ id: 0,
+ name: `${proxy.$t('label.Defined')}`,
+ },
+ {
+ id: 1,
+ name: `${proxy.$t('label.Unpublished')}`,
+ },
+ {
+ id: 2,
+ name: `${proxy.$t('label.Published')}`,
+ },
+ {
+ id: 3,
+ name: `${proxy.$t('label.Expired')}`,
+ },
+ ],
+ notificationnlevels: [
+ {
+ id: 0,
+ name: `${proxy.$t('label.Info')}`,
+ },
+ {
+ id: 1,
+ name: `${proxy.$t('label.Warning')}`,
+ },
+ {
+ id: 2,
+ name: `${proxy.$t('label.Danger')}`,
+ },
+ {
+ id: 3,
+ name: `${proxy.$t('label.Fatal')}`,
+ },
+ ],
+ rules: {
+ title: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Title')})}`,
+ trigger: 'blur'
+ }],
+ keywords: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Keywords')})}`,
+ trigger: 'blur'
+ }],
+ },
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ title: state.searchValue.title,
+ category: state.searchValue.category,
+ nlevel: state.searchValue.nlevel,
+ keywords: state.searchValue.keywords,
+ actionby: state.searchValue.actionby,
+ status: state.searchValue.status,
+ publisher: state.searchValue.publisher,
+ department: state.searchValue.department,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetNotifications(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.notifications = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.notification = {
+ id: "",
+ title: "",
+ department: "",
+ category: "",
+ nlevel: "",
+ keywords: "",
+ actionby: "",
+ status: "",
+ publisher: "",
+ remark: "",
+ context: "",
+ }
+ };
+ const SearchData = () => {
+ state.page = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ title: "",
+ department: "",
+ category: "",
+ nlevel: "",
+ keywords: "",
+ actionby: "",
+ status: "",
+ publisher: "",
+ remark: "",
+ context: "",
+ };
+ };
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const onSubmit = () => {
+ state.notification.context = proxy.$refs.contextEditor.exportvalue();
+ if (state.notification.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateNotification(state.notification)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ state.dialogVisible = false
+ LoadData()
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateNotification(state.notification)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ state.dialogVisible = false
+ LoadData()
+ } else {
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ })
+ }
+ });
+ }
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.title}]`;
+ state.dialogMode = 'edit';
+ state.notification = data;
+ state.dialogVisible = true;
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ DeleteNotification(data.id)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ LoadData()
+ } else {
+ state.loading = false;
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ })
+ .catch(error => {
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const publishItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ data.status = 2;
+ UpdateNotification(data)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ LoadData()
+ } else {
+ state.loading = false;
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ })
+ .catch(error => {
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+ const removeItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true,
+ }).then(() => {
+ state.loading = true;
+ data.status = 3;
+ UpdateNotification(data)
+ .then(resp => {
+ if (resp.data && resp.data.code === 200) {
+ LoadData()
+ } else {
+ state.loading = false;
+ proxy.$message.error({message: `${proxy.$t('message.' + resp.data.message)}`});
+ }
+ })
+ .catch(error => {
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error);
+ state.loading = false;
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "publishdatetime":
+ if (!row.publishdatetime)
+ return null;
+ date = new Date(row.publishdatetime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ icon,
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ ClearSearchData,
+ showAddView,
+ showEditView,
+ deleteItem,
+ removeItem,
+ publishItem,
+ onSubmit,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponActive.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponActive.vue
new file mode 100644
index 0000000..159635c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponActive.vue
@@ -0,0 +1,745 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.VIPCouponActive') }}</b>
+ <el-button link type="primary" size="default" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" maxlength="64"
+ :prefix-icon="icon.Search"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData" :disabled="showAdvanceSearchView"></el-input>
+ <el-button type="primary" size="default" :icon="icon.Search" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActivityName')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.activityname"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPName')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.mastername"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div>
+ <el-table
+ :data="entityList" stripe border
+ v-loading="loading"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ size="default"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="200"/>
+ <el-table-column prop="activityname" sortable align="left" :label="$t('label.ActivityName')"
+ width="200"/>
+ <el-table-column prop="status" sortable :label="$t('label.Status')" align="left" width="100">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="success">{{ $t('label.VALID') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="info">{{ $t('label.LOCKED') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="danger">{{ $t('label.EXPIRED') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="type" sortable align="left" :label="$t('label.Type')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.type === 0" type="success">
+ {{ $t('label.ByDiscountRate') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.type === 1" type="warning">
+ {{ $t('label.ByFullDiscount') }}
+ </el-tag>
+ <el-tag v-else type="danger">
+ {{ $t('label.ByVoucher') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="amount" sortable align="left" :label="$t('label.Amount')" width="150"/>
+ <el-table-column prop="discount" sortable align="right" :label="$t('label.Discount')" width="150"/>
+ <el-table-column prop="discountrate" sortable align="right" :label="$t('label.DiscountRate')"
+ width="170"/>
+ <el-table-column prop="validdatefrom" width="150" align="left" :label="$t('label.ValidDateFrom')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="validdateto" width="150" align="left" :label="$t('label.ValidDateTo')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="issuingtime" width="150" align="left" :label="$t('label.IssuingTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="usagetime" width="150" align="left" :label="$t('label.UsageTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="mastername" align="left" :label="$t('label.VIPName')" width="200"/>
+ <el-table-column prop="createtime" width="150" align="left" :label="$t('label.CreateTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="remark" min-width="500" width="*" align="left"
+ :label="$t('label.Remark')"/>
+ <el-table-column fixed="right" width="130" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div style="margin-top:10px; display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-affix>
+ </div>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title"
+ id="detailDialog"
+ v-model="dialogVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" size="default" :rules="rules" ref="dialogForm" label-width="120px">
+ <el-tabs>
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.ActivityName')" prop="activityname">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.activityname"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Amount')" prop="amount">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :precision="0" :step="10"
+ v-model="entity.amount"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Discount')" prop="discount">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :precision="2" :step="0.1"
+ v-model="entity.discount"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.DiscountRate')" prop="discountrate">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :min="0.1" :max="1"
+ :precision="2" :step="0.05"
+ v-model="entity.discountrate"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Type')" prop="type">
+ <el-select size="default" style="width: 100%" v-model="entity.type"
+ filterable>
+ <el-option v-for="item in entitytypes" :key="item.id" :label="item.name"
+ :value="item.id" :disabled="item.disabled">
+ {{ item.name }}
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.ValidDate')" prop="validdatefrom">
+ <el-date-picker
+ size="default"
+ v-model="validtimeduration"
+ type="daterange"
+ range-separator="-"
+ :start-placeholder="$t('label.ValidDateFrom')"
+ :end-placeholder="$t('label.ValidDateTo')"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.DistributionCondition')"
+ prop="distributioncondition">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.distributioncondition"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.IssuingTime')" prop="issuingtime">
+ <el-date-picker
+ v-model="entity.issuingtime"
+ disabled="disabled"
+ size="default"
+ type="date"
+ placeholder="">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPName')" prop="mastername">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.mastername" disabled="disabled"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.UsageTime')" prop="usagetime">
+ <el-date-picker
+ v-model="entity.createtime"
+ disabled="disabled"
+ size="default"
+ type="date"
+ placeholder="">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.CreateTime')" prop="createtime">
+ <el-date-picker
+ v-model="entity.createtime"
+ disabled="disabled"
+ size="default"
+ type="date"
+ placeholder="">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="3" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate, GetDateStr} from '../../../utils/common'
+import {
+ GetVIPCouponActives,
+ UpdateVIPCouponActive,
+ CreateVIPCouponActive,
+ DeleteVIPCouponActive
+} from "../../../api/admin/vip"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "VIPCouponActive",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ shoppingCartTitle: '',
+ shoppingCartDialogVisible: false,
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ activityname: "",
+ code: "",
+ mastername: "",
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ type: "",
+ activityname: "",
+ code: "",
+ distributioncondition: "",
+ amount: null,
+ discount: null,
+ discountrate: null,
+ validdatefrom: null,
+ validdateto: null,
+ issuingtime: null,
+ usagetime: null,
+ orderno: null,
+ masterid: null,
+ mastercode: null,
+ mastername: null,
+ status: 0,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ },
+ entitytypes: [
+ {
+ id: 0,
+ name: `${proxy.$t('label.ByDiscountRate')}`,
+ },
+ {
+ id: 1,
+ name: `${proxy.$t('label.ByFullDiscount')}`,
+ },
+ {
+ id: 2,
+ name: `${proxy.$t('label.ByVoucher')}`,
+ }
+ ],
+ validtimeduration: [],
+ rules: {
+ activityname: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ type: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Type')})}`,
+ }],
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ let nowfrom = new Date();
+ let validdatefrom = GetDateStr(nowfrom, 0, 0, 0);
+
+ let nowto = new Date();
+ let validdateto = GetDateStr(nowto, 1, 0, 0);
+
+ state.validtimeduration = [validdatefrom, validdateto];
+
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ type: "",
+ activityname: "",
+ code: "",
+ distributioncondition: "",
+ amount: null,
+ discount: null,
+ discountrate: null,
+ validdatefrom: null,
+ validdateto: null,
+ issuingtime: null,
+ usagetime: null,
+ orderno: null,
+ masterid: null,
+ mastercode: null,
+ mastername: null,
+ status: 0,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.config.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ activityname: state.searchValue.activityname,
+ code: state.searchValue.code,
+ mastername: state.searchValue.mastername,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetVIPCouponActives(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ activityname: "",
+ code: "",
+ mastername: "",
+ };
+ };
+ const showAddView = () => {
+ clearAddOrEditModel();
+
+ state.entity.validdatefrom = state.validtimeduration[0];
+ state.entity.validdateto = state.validtimeduration[1];
+
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.validtimeduration = [data.validdatefrom, data.validdateto];
+ state.dialogMode = 'edit';
+ state.entity = data;
+
+ state.dialogVisible = true;
+ };
+
+ const onSubmit = () => {
+ state.entity.validdatefrom = state.validtimeduration[0];
+ state.entity.validdateto = state.validtimeduration[1];
+
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+
+ UpdateVIPCouponActive(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateVIPCouponActive(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteVIPCouponActive(data.id)
+ .then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ })
+ .catch(error => {
+ console.error(error);
+ state.loading = false;
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ case "issuingtime":
+ if (!row.issuingtime)
+ return null;
+ date = new Date(row.issuingtime);
+ break;
+ case "usagetime":
+ if (!row.usagetime)
+ return null;
+ date = new Date(row.usagetime);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ showAddView,
+ onSubmit,
+ showEditView,
+ deleteItem,
+ ClearSearchData,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponHistory.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponHistory.vue
new file mode 100644
index 0000000..b96be5f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPCouponHistory.vue
@@ -0,0 +1,700 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.VIPCouponHistory') }}</b>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" maxlength="64"
+ :prefix-icon="icon.Search"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData" :disabled="showAdvanceSearchView"></el-input>
+ <el-button type="primary" size="default" :icon="icon.Search" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.ActivityName')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.activityname"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPName')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.mastername"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div>
+ <el-table
+ :data="entityList" stripe border
+ v-loading="loading"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ size="default"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="200"/>
+ <el-table-column prop="activityname" sortable align="left" :label="$t('label.ActivityName')"
+ width="200"/>
+ <el-table-column prop="status" sortable :label="$t('label.Status')" align="left" width="100">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="success">{{ $t('label.VALID') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="info">{{ $t('label.LOCKED') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="danger">{{ $t('label.EXPIRED') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="type" sortable align="left" :label="$t('label.Type')" width="150">
+ <template #default="scope">
+ <el-tag v-if="scope.row.type === 0" type="success">
+ {{ $t('label.ByDiscountRate') }}
+ </el-tag>
+ <el-tag v-else-if="scope.row.type === 1" type="warning">
+ {{ $t('label.ByFullDiscount') }}
+ </el-tag>
+ <el-tag v-else type="danger">
+ {{ $t('label.ByVoucher') }}
+ </el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="amount" sortable align="left" :label="$t('label.Amount')" width="150"/>
+ <el-table-column prop="discount" sortable align="right" :label="$t('label.Discount')" width="150"/>
+ <el-table-column prop="discountrate" sortable align="right" :label="$t('label.DiscountRate')"
+ width="170"/>
+ <el-table-column prop="validdatefrom" width="150" align="left" :label="$t('label.ValidDateFrom')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="validdateto" width="150" align="left" :label="$t('label.ValidDateTo')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="issuingtime" width="150" align="left" :label="$t('label.IssuingTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="usagetime" width="150" align="left" :label="$t('label.UsageTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="mastername" align="left" :label="$t('label.VIPName')" width="200"/>
+ <el-table-column prop="createtime" width="150" align="left" :label="$t('label.CreateTime')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="remark" min-width="500" width="*" align="left"
+ :label="$t('label.Remark')"/>
+ <el-table-column fixed="right" width="130" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div style="margin-top:10px; display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-affix>
+ </div>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title"
+ id="detailDialog"
+ v-model="dialogVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" size="default" :rules="rules" ref="dialogForm" label-width="120px">
+ <el-tabs>
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.ActivityName')" prop="activityname">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.activityname" disabled="disabled"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.VIPName')" prop="mastername">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.mastername" disabled="disabled"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Amount')" prop="amount">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64" disabled="disabled"
+ :precision="0" :step="10"
+ v-model="entity.amount"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Discount')" prop="discount">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64" disabled="disabled"
+ :precision="2" :step="0.1"
+ v-model="entity.discount"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.DiscountRate')" prop="discountrate">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64" disabled="disabled"
+ :min="0.1" :max="1"
+ :precision="2" :step="0.05"
+ v-model="entity.discountrate"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.ValidDate')" prop="validdatefrom">
+ <el-date-picker disabled="disabled"
+ size="default"
+ v-model="validtimeduration"
+ type="daterange"
+ range-separator="-"
+ :start-placeholder="$t('label.ValidDateFrom')"
+ :end-placeholder="$t('label.ValidDateTo')"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.IssuingTime')" prop="issuingtime">
+ <el-date-picker
+ v-model="entity.issuingtime"
+ disabled="disabled"
+ size="default"
+ type="date"
+ placeholder="">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.UsageTime')" prop="usagetime">
+ <el-date-picker
+ v-model="entity.createtime"
+ disabled="disabled"
+ size="default"
+ type="date"
+ placeholder="">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.CreateTime')" prop="createtime">
+ <el-date-picker
+ v-model="entity.createtime"
+ disabled="disabled"
+ size="default"
+ type="date"
+ placeholder="">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="3" maxlength="500" placeholder=""
+ disabled="disabled"
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate, GetDateStr} from '../../../utils/common'
+import {
+ GetVIPCouponHistories,
+ DeleteVIPCouponHistory
+} from "../../../api/admin/vip"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "VIPCouponHistory",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ shoppingCartTitle: '',
+ shoppingCartDialogVisible: false,
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ activityname: "",
+ code: "",
+ mastername: "",
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ type: "",
+ activityname: "",
+ code: "",
+ distributioncondition: "",
+ amount: null,
+ discount: null,
+ discountrate: null,
+ validdatefrom: null,
+ validdateto: null,
+ issuingtime: null,
+ usagetime: null,
+ orderno: null,
+ masterid: null,
+ mastercode: null,
+ mastername: null,
+ status: 0,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ },
+ validtimeduration: [],
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ let nowfrom = new Date();
+ let validdatefrom = GetDateStr(nowfrom, 0, 0, 0);
+
+ let nowto = new Date();
+ let validdateto = GetDateStr(nowto, 1, 0, 0);
+
+ state.validtimeduration = [validdatefrom, validdateto];
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ type: "",
+ activityname: "",
+ code: "",
+ distributioncondition: "",
+ amount: null,
+ discount: null,
+ discountrate: null,
+ validdatefrom: null,
+ validdateto: null,
+ issuingtime: null,
+ usagetime: null,
+ orderno: null,
+ masterid: null,
+ mastercode: null,
+ mastername: null,
+ status: 0,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.config.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ activityname: state.searchValue.activityname,
+ code: state.searchValue.code,
+ mastername: state.searchValue.mastername,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetVIPCouponHistories(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ activityname: "",
+ code: "",
+ mastername: "",
+ };
+ };
+ const showAddView = () => {
+ clearAddOrEditModel();
+
+ state.entity.validdatefrom = state.validtimeduration[0];
+ state.entity.validdateto = state.validtimeduration[1];
+
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.validtimeduration = [data.validdatefrom, data.validdateto];
+ state.dialogMode = 'edit';
+ state.entity = data;
+
+ state.dialogVisible = true;
+ };
+
+ const onSubmit = () => {
+ state.entity.validdatefrom = state.validtimeduration[0];
+ state.entity.validdateto = state.validtimeduration[1];
+
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+
+ UpdateVIPCouponHistory(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateVIPCouponHistory(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteVIPCouponHistory(data.id)
+ .then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ })
+ .catch(error => {
+ console.error(error);
+ state.loading = false;
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ case "issuingtime":
+ if (!row.issuingtime)
+ return null;
+ date = new Date(row.issuingtime);
+ break;
+ case "usagetime":
+ if (!row.usagetime)
+ return null;
+ date = new Date(row.usagetime);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ showAddView,
+ onSubmit,
+ showEditView,
+ deleteItem,
+ ClearSearchData,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPDepositActivity.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPDepositActivity.vue
new file mode 100644
index 0000000..3bdf707
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPDepositActivity.vue
@@ -0,0 +1,611 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.VIPDepositActivity') }}</b>
+ <el-button link type="primary" size="default" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" maxlength="64"
+ :prefix-icon="icon.Search"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData" :disabled="showAdvanceSearchView"></el-input>
+ <el-button type="primary" size="default" :icon="icon.Search" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" :style="{ marginBottom: '0px' }">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.code" placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div>
+ <el-table
+ :data="entityList" stripe border
+ v-loading="loading"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ size="default"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"/>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="120"/>
+ <el-table-column prop="name" sortable align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column prop="status" sortable :label="$t('label.Status')" align="left" width="100">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="success">{{ $t('label.VALID') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="info">{{ $t('label.LOCKED') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="danger">{{ $t('label.EXPIRED') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="description" :label="$t('label.Description')"
+ width="300"/>
+ <el-table-column prop="amount" sortable align="left" :label="$t('label.Amount')" width="150"/>
+ <el-table-column prop="discount" sortable align="right" :label="$t('label.Discount')" width="150"/>
+ <el-table-column prop="discountrate" sortable align="right" :label="$t('label.DiscountRate')"
+ width="170"/>
+ <el-table-column prop="present" sortable align="right" :label="$t('label.Present')" width="150"/>
+ <el-table-column prop="remark" min-width="500" width="*" align="left"
+ :label="$t('label.Remark')"/>
+ <el-table-column fixed="right" width="130" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div style="margin-top:10px; display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-affix>
+ </div>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog id="detailDialog"
+ v-model="dialogVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" size="default" :rules="rules" ref="dialogForm" label-width="120px">
+ <el-tabs>
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Code')" prop="code">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.code" disabled="disabled"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Amount')" prop="amount">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :precision="0" :step="10"
+ v-model="entity.amount"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Discount')" prop="discount">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :precision="2" :step="0.1"
+ v-model="entity.discount"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.DiscountRate')" prop="discountrate">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :min="0.1" :max="1"
+ :precision="2" :step="0.05"
+ v-model="entity.discountrate"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Present')" prop="present">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :precision="2" :step="0.1"
+ v-model="entity.present"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Status')" prop="status">
+ <el-radio-group v-model="entity.status">
+ <el-radio :label="0">{{ $t('label.Enabled') }}</el-radio>
+ <el-radio :label="1">{{ $t('label.Disabled') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="14">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="3" maxlength="500" placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate} from '../../../utils/common'
+import {
+ GetVIPDepositActivities,
+ UpdateVIPDepositActivity,
+ CreateVIPDepositActivity,
+ DeleteVIPDepositActivity
+} from "../../../api/admin/vip"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+
+export default {
+ name: "VIPDepositActivity",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ name: "",
+ code: "",
+ description: "",
+ status: null,
+ },
+ entityList: [],
+ entity: {
+ id: "",
+ name: "",
+ code: "",
+ description: "",
+ amount: 0,
+ discount: 0,
+ discountrate: 0,
+ present: 0,
+ status: 0,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ },
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ amount: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Amount')})}`,
+ }],
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ name: "",
+ code: "",
+ description: "",
+ amount: 0,
+ discount: 0,
+ discountrate: 0,
+ present: 0,
+ status: 0,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.config.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ name: state.searchValue.name,
+ code: state.searchValue.code,
+ status: state.searchValue.status,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetVIPDepositActivities(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ name: "",
+ diamondtype: "",
+ nickname: "",
+ city: "",
+ province: "",
+ country: "",
+ idcard: "",
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+
+ state.dialogVisible = true;
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateVIPDepositActivity(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateVIPDepositActivity(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteVIPDepositActivity(data.id)
+ .then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ })
+ .catch(error => {
+ console.error(error);
+ state.loading = false;
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ showAddView,
+ onSubmit,
+ showEditView,
+ deleteItem,
+ ClearSearchData,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+.el-transfer-panel {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__body {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list.is-filterable {
+ height: 250px;
+ width: 300px;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMaster.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMaster.vue
new file mode 100644
index 0000000..f301fc6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMaster.vue
@@ -0,0 +1,837 @@
+<template>
+ <div>
+ <el-card style="margin: 10px;" class="affix-container">
+ <div>
+ <div style="display: flex;justify-content: space-between">
+ <div>
+ <b style="margin-right: 20px">{{ $t('menu.VIPMaster') }}</b>
+ <el-button link type="primary" size="default" :icon="icon.CirclePlus" @click="showAddView">
+ {{ $t('button.New') }}
+ </el-button>
+ </div>
+ <div>
+ <el-input :placeholder="$t('message.PleaseInputKeyWords')" maxlength="64"
+ :prefix-icon="icon.Search"
+ clearable
+ size="default"
+ @clear="SearchData"
+ style="width: 200px;margin-right: 10px" v-model="searchValue.filter"
+ @keydown.enter.native="SearchData" :disabled="showAdvanceSearchView"></el-input>
+ <el-button type="primary" size="default" :icon="icon.Search" @click="SearchData"
+ :disabled="showAdvanceSearchView">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button type="warning" size="default"
+ :icon="showAdvanceSearchView?icon.CaretTop:icon.CaretBottom"
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.AdvancedSearch') }}
+ </el-button>
+ </div>
+ </div>
+ <transition name="slide-fade">
+ <div v-show="showAdvanceSearchView" class="advanced-search-box">
+ <el-form size="default" label-width="120px">
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Name')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.name"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Nickname')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.nickname"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.DiamondType')" :style="{marginBottom: '0px'}">
+ <el-select size="default" style="width: 100%"
+ v-model="searchValue.diamondtype"
+ filterable>
+ <el-option v-for="item in diamondtypes" :key="item.id"
+ :label="item.name"
+ :value="item.id" :disabled="item.disabled">
+ {{ item.name }}
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Country')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.country"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Province')" :style="{marginBottom: '0px'}">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="searchValue.province"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :style="{margin: '10px 0px 0px 0px'}">
+ <el-col :span="21" :style="{ textAlign: 'right'}" :offset="0">
+ <el-button size="default" :icon="icon.Search" type="primary"
+ @click="SearchData">
+ {{ $t('button.Search') }}
+ </el-button>
+ <el-button size="default" :icon="icon.Delete" type="info" plain
+ @click="ClearSearchData">
+ {{ $t('button.Clear') }}
+ </el-button>
+ <el-button size="default" :icon="icon.CircleClose" type="danger" plain
+ @click="showAdvanceSearchView = !showAdvanceSearchView">
+ {{ $t('button.Close') }}
+ </el-button>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ </transition>
+ </div>
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div>
+ <el-table
+ :data="entityList" stripe border
+ v-loading="loading"
+ element-loading-text="Loading..."
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ size="default"
+ :header-row-style="{height: '40px',color: 'var(--el-color-primary)',background: '#f5f4f4', }"
+ :header-cell-style="{height: '40px', margin: '0px', padding: '0px', background: 'transparent'}"
+ :row-style="{height: '30px', margin: '0px', padding: '0px',}"
+ :cell-style="{height: '30px',margin: '0px', padding: '0px',}"
+ @row-dblclick="showEditView">
+ <el-table-column type="index" fixed :label="$t('label.Index')" width="65"></el-table-column>
+ <el-table-column prop="code" sortable align="left" :label="$t('label.Code')" width="150"/>
+ <el-table-column prop="diamondtype" sortable align="left" :label="$t('label.DiamondType')"
+ width="150">
+ <template #default="scope">
+ <label v-if="scope.row.diamondtype===0">
+ <svg-icon name="vip-silver" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.SilverMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.diamondtype===1">
+ <svg-icon name="vip-gold" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.GoldMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.diamondtype===2">
+ <svg-icon name="vip-diamond" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.DiamondMember') }}</span>
+ </label>
+ <label v-else-if="scope.row.diamondtype===3">
+ <svg-icon name="vip-exclusive" color="" width="20" height="20"></svg-icon>
+ <span> {{ $t('label.ExclusiveMember') }}</span>
+ </label>
+ <label v-else>--</label>
+ </template>
+ </el-table-column>
+ <el-table-column prop="avatarurl" align="center" :label="$t('label.Avatar')" width="150">
+ <template #default="scope">
+ <el-avatar shape="square"
+ :src="scope.row.avatarurl"
+ :style="{'width': '40px','height': '40px','border-radius': '100%','margin-top':'5px'}">
+ </el-avatar>
+ </template>
+ </el-table-column>
+ <el-table-column prop="cellphone" align="left" :label="$t('label.Cellphone')" width="200"/>
+ <el-table-column prop="nickname" align="left" :label="$t('label.Nickname')" width="200"/>
+ <el-table-column prop="gender" :label="$t('label.Gender')" align="left" width="100">
+ <template #default="scope">
+ <label v-if="scope.row.gender===true">
+ <svg-icon name="man" color="#409eff" width="16" height="16"></svg-icon>
+ <span> {{ $t('label.Man') }}</span>
+ </label>
+ <label v-else-if="scope.row.gender===false">
+ <svg-icon name="woman" color="#ff8080" width="16" height="16"></svg-icon>
+ <span> {{ $t('label.Woman') }}</span>
+ </label>
+ <label v-else>
+ <span> {{ $t('label.Undefined') }}</span>
+ </label>
+ </template>
+ </el-table-column>
+ <el-table-column prop="city" sortable align="left" :label="$t('label.City')" width="200"/>
+ <el-table-column prop="province" sortable align="left" :label="$t('label.Province')" width="200"/>
+ <el-table-column prop="country" sortable align="left" :label="$t('label.Country')" width="200"/>
+ <el-table-column prop="name" align="left" :label="$t('label.Name')" width="150"/>
+ <el-table-column prop="discountrate" sortable align="left" :label="$t('label.DiscountRate')"
+ width="150"/>
+ <el-table-column prop="status" sortable :label="$t('label.Status')" align="left" width="100">
+ <template #default="scope">
+ <el-tag v-if="scope.row.status===0" type="success">{{ $t('label.VALID') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===1" type="info">{{ $t('label.LOCKED') }}</el-tag>
+ <el-tag v-else-if="scope.row.status===2" type="danger">{{ $t('label.EXPIRED') }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="birthday" width="160" align="left"
+ :label="$t('label.Birthday')"
+ :formatter="formatterDatetime"/>
+ <el-table-column prop="remark" min-width="500" width="*" align="left"
+ :label="$t('label.Remark')"></el-table-column>
+ <el-table-column fixed="right" width="130" :label="$t('label.Operation')">
+ <template #default="scope">
+ <el-button @click="showEditView(scope.row)" :icon="icon.Edit"
+ size="small"
+ type="primary" circle>
+ </el-button>
+ <el-button @click="deleteItem(scope.row)" :icon="icon.Delete"
+ size="small"
+ type="danger" circle>
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-affix position="bottom" :offset="10" target=".affix-container">
+ <div style="background: white;padding-bottom:10px;">
+ <el-divider :style="{'margin':'10px 0px'}"></el-divider>
+ <div style="margin-top:10px; display: flex;justify-content: flex-end">
+ <el-pagination
+ :currentPage="pageIndex"
+ :page-size="pageSize"
+ background
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ :page-sizes="[10, 20, 50, 100, 200]"
+ layout="sizes, prev, pager, next, jumper, ->, total, slot"
+ :total="total">
+ </el-pagination>
+ </div>
+ </div>
+ </el-affix>
+ </div>
+ </el-card>
+ <div v-dialogdrag>
+ <el-dialog :title="title"
+ id="detailDialog"
+ v-model="dialogVisible"
+ :close-on-click-modal="false"
+ class="el-dialog-customer"
+ width="1000px">
+ <template #header>
+ <el-row>
+ <el-col :span="12">
+ <el-icon style="font:normal bold 20px arial,sans-serif;vertical-align: -10%"
+ v-if="dialogMode==='new'">
+ <plus/>
+ </el-icon>
+ <el-icon v-else style="font:normal bold 20px arial,serif;vertical-align: -10%">
+ <edit/>
+ </el-icon>
+ <span style="margin-left: 10px; font:normal bold 20px arial,serif;">{{ title }}</span>
+ </el-col>
+ </el-row>
+ </template>
+ <el-card style="margin-top: 0px;">
+ <el-form :model="entity" size="default" :rules="rules" ref="dialogForm" label-width="120px">
+ <el-tabs style="min-height: 300px">
+ <el-tab-pane :label="$t('label.BasicInformation')">
+ <el-row style="margin-top: 10px;">
+ <el-col :span="6" :style="{textAlign: 'center'}">
+ <svg-icon v-if="!entity.avatarurl" name="profile" width="100" height="100"
+ color="var(--el-border-color-light)"/>
+ <el-image v-else
+ style="width: 100px; height: 100px; margin: 5px"
+ :src="entity.avatarurl"
+ :preview-src-list="[entity.avatarurl]"
+ :z-index="1000"
+ fit="cover"
+ />
+ <el-upload class="avatar-uploader"
+ :action="uploadurl"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :on-error="handleAvatarError"
+ :before-upload="beforeAvatarUpload">
+ <el-button size="small" :icon="icon.Upload">
+ {{ $t('button.Upload') }}
+ </el-button>
+ </el-upload>
+ </el-col>
+ <el-col :span="15">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Name')" prop="name">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.name"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.DiamondType')" prop="diamondtype">
+ <el-select size="default" style="width: 100%"
+ v-model="entity.diamondtype"
+ filterable>
+ <el-option v-for="item in diamondtypes" :key="item.id"
+ :label="item.name"
+ :value="item.id" :disabled="item.disabled">
+ {{ item.name }}
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Nickname')" prop="nickname">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.nickname"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Birthday')" prop="birthday">
+ <el-date-picker v-model="entity.birthday" size="default"
+ type="date"
+ style="width: 200px;">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.DiscountRate')" prop="discountrate">
+ <el-input-number size="default" :prefix-icon="icon.Edit"
+ maxlength="64"
+ :precision="1" :step="0.1"
+ v-model="entity.discountrate"></el-input-number>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item :label="$t('label.Cellphone')" prop="cellphone">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.cellphone"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item :label="$t('label.Gender')" prop="gender">
+ <el-radio-group size="default" v-model="entity.gender">
+ <el-radio :label="null">{{ $t('label.Undefined') }}</el-radio>
+ <el-radio :label="true">{{ $t('label.Man') }}</el-radio>
+ <el-radio :label="false">{{ $t('label.Woman') }}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.City')" prop="city">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.city"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Province')" prop="province">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.province"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="7">
+ <el-form-item :label="$t('label.Country')" prop="country">
+ <el-input size="default" :prefix-icon="icon.Edit" maxlength="64"
+ v-model="entity.country"
+ placeholder=""></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="21">
+ <el-form-item :label="$t('label.Remark')" prop="remark">
+ <el-input type="textarea" :rows="3" maxlength="500"
+ placeholder=""
+ v-model="entity.remark"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-tab-pane>
+ </el-tabs>
+ </el-form>
+ </el-card>
+ <template #footer>
+ <el-button type="primary" @click="onSubmit" :icon="icon.CircleCheck" size="default">
+ {{ $t('button.Submit') }}
+ </el-button>
+ <el-button type="danger" @click="dialogVisible = false" :icon="icon.CircleClose" size="default"
+ plain>
+ {{ $t('button.Close') }}
+ </el-button>
+ </template>
+ </el-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {onMounted, onBeforeUnmount, getCurrentInstance, reactive, toRefs} from "vue";
+import {formatDate} from '../../../utils/common'
+import {
+ GetVIPMasters,
+ UpdateVIPMaster,
+ CreateVIPMaster,
+ DeleteVIPMaster,
+} from "../../../api/admin/vip"
+import {useBasicInfoStore} from "../../../store/basicInfo";
+import * as elementplus from "element-plus";
+import {getFileUploadUrl} from "../../../api/common"
+
+export default {
+ name: "VIPMaster",
+ components: {},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ //common properties
+ title: '',
+ total: 0,
+ pageIndex: 1,
+ pageSize: store.config.ListSize,
+ loading: false,
+ windowWidth: document.documentElement.clientWidth,
+ windowHeight: document.documentElement.clientHeight,
+ dialogVisible: false,
+ dialogMode: 'new',
+ showAdvanceSearchView: false,
+ searchValue: {
+ filter: "",
+ name: "",
+ diamondtype: "",
+ nickname: "",
+ city: "",
+ province: "",
+ country: "",
+ idcard: "",
+ },
+ uploadurl: '',
+ entityList: [],
+ entity: {
+ id: "",
+ name: "",
+ diamondtype: "",
+ type: "",
+ discountrate: "",
+ idcard: "",
+ gender: "",
+ birthday: "",
+ openid: "",
+ nickname: "",
+ language: "",
+ city: "",
+ province: "",
+ country: "",
+ avatarurl: "",
+ cellphone: "",
+ token: "",
+ status: true,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ },
+ shoppingCardLoading: false,
+ diamondtypes: [
+ {
+ id: 0,
+ name: `${proxy.$t('label.SilverMember')}`,
+ },
+ {
+ id: 1,
+ name: `${proxy.$t('label.GoldMember')}`,
+ },
+ {
+ id: 2,
+ name: `${proxy.$t('label.DiamondMember')}`,
+ },
+ {
+ id: 3,
+ name: `${proxy.$t('label.ExclusiveMember')}`,
+ }
+ ],
+ entitytypes: [
+ {
+ id: 0,
+ name: `${proxy.$t('label.SilverMember')}`,
+ },
+ {
+ id: 1,
+ name: `${proxy.$t('label.GoldMember')}`,
+ },
+ {
+ id: 2,
+ name: `${proxy.$t('label.DiamondMember')}`,
+ },
+ {
+ id: 3,
+ name: `${proxy.$t('label.ExclusiveMember')}`,
+ }
+ ],
+ rules: {
+ name: [{
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Name')})}`,
+ }],
+ cellphone: [
+ {
+ required: true,
+ message: `${proxy.$t('message.IsRequired', {name: proxy.$t('label.Cellphone')})}`,
+ trigger: 'blur'
+ },
+ {
+ validator: function (rule, value, callback) {
+ if (/^1[34578]\d{9}$/.test(value) == false) {
+ callback(new Error('请输入正确的手机号码?'))
+ } else {
+ callback()
+ }
+ }, trigger: 'blur'
+ }
+ ],
+ }
+ });
+
+ onMounted(() => {
+ Init();
+ LoadData();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ state.uploadurl = getFileUploadUrl();
+ };
+ const sizeChange = (currentSize) => {
+ state.pageSize = currentSize;
+ store.config.ListSize = state.pageSize;
+ LoadData();
+ };
+ const currentChange = (currentPage) => {
+ state.pageIndex = currentPage;
+ LoadData();
+ };
+ const clearAddOrEditModel = () => {
+ state.entity = {
+ id: "",
+ code: "",
+ name: "",
+ cellphone: "",
+ organization: "",
+ job: "",
+ joblevel: "",
+ level: "",
+ status: true,
+ createtime: "",
+ updatetime: "",
+ isdeleted: null,
+ remark: "",
+ }
+ };
+ const getSearchCondition = () => {
+ let condition;
+ if (!state.showAdvanceSearchView) {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ filter: state.searchValue.filter,
+ permissionLevel: store.config.permissionLevel,
+ }
+ } else {
+ condition = {
+ pageIndex: state.pageIndex,
+ pageSize: state.pageSize,
+ diamondtype: state.searchValue.diamondtype,
+ name: state.searchValue.name,
+ idcard: state.searchValue.idcard,
+ nickname: state.searchValue.nickname,
+ city: state.searchValue.city,
+ province: state.searchValue.province,
+ country: state.searchValue.country,
+ }
+ }
+
+ return condition;
+ };
+ const LoadData = () => {
+ state.loading = true;
+ let condition = getSearchCondition();
+
+ GetVIPMasters(condition).then(resp => {
+ state.loading = false;
+ if (resp.data) {
+ state.entityList = resp.data.data;
+ state.total = resp.data.total;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ };
+ const SearchData = () => {
+ state.pageIndex = 1;
+ LoadData();
+ };
+ const ClearSearchData = () => {
+ state.searchValue = {
+ filter: "",
+ name: "",
+ diamondtype: "",
+ nickname: "",
+ city: "",
+ province: "",
+ country: "",
+ idcard: "",
+ };
+ };
+
+ const showAddView = () => {
+ clearAddOrEditModel();
+ state.title = proxy.$t('button.New');
+ state.dialogMode = 'new';
+ state.dialogVisible = true;
+ };
+ const showEditView = (data) => {
+ state.title = `${proxy.$t('button.Edit')} [${data.name}]`;
+ state.dialogMode = 'edit';
+ state.entity = data;
+
+ state.dialogVisible = true;
+ };
+
+ const onSubmit = () => {
+ if (state.entity.id) {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ UpdateVIPMaster(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ } else {
+ proxy.$refs['dialogForm'].validate(valid => {
+ if (valid) {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToSubmit')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ type: 'warning',
+ center: true
+ }).then(() => {
+ const rLoading = proxy.openLoading("#detailDialog");
+ CreateVIPMaster(state.entity)
+ .then(resp => {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ state.dialogVisible = false;
+ LoadData();
+ }
+ rLoading.close();
+ })
+ .catch(error => {
+ console.error(error);
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ }
+ });
+ }
+ };
+ const deleteItem = (data) => {
+ proxy.$confirm(`${proxy.$t('message.AreYouSureToRemove')}`, `${proxy.$t('label.SystemConfirm')}`, {
+ confirmButtonText: `${proxy.$t('button.Yes')}`,
+ cancelButtonText: `${proxy.$t('button.No')}`,
+ confirmButtonClass: 'confirmButtonClass',
+ cancelButtonClass: 'cancelButtonClass',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ state.loading = true;
+ DeleteVIPMaster(data.id)
+ .then(resp => {
+ if (resp) {
+ if (resp.data && resp.data.code !== 200) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.' + resp.data.message)}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'error',
+ }
+ );
+ } else {
+ LoadData();
+ }
+ }
+ state.loading = false;
+ })
+ .catch(error => {
+ console.error(error);
+ state.loading = false;
+ proxy.$message.error({message: error});
+ });
+ }).catch((error) => {
+ console.error(error)
+ });
+ };
+ const handleChange = (value, direction, movedKeys) => {
+ console.log(value, direction, movedKeys);
+ };
+
+ const handleAvatarSuccess = (res, file) => {
+ state.entity.avatarurl = res;
+ };
+ const beforeAvatarUpload = (file) => {
+ const isJPG = file.type === 'image/jpeg';
+ const isPNG = file.type === 'image/png';
+ const isLt2M = file.size / 1024 / 1024 < 2;
+
+ if (!isJPG && !isPNG) {
+ proxy.$message.error('Avatar picture must be JPG or PNG format!')
+ }
+ if (!isLt2M) {
+ proxy.$message.error('Avatar picture size can not exceed 2MB!')
+ }
+
+ return true;
+ };
+ const handleAvatarError = (res, file) => {
+ proxy.$message.error(res);
+ };
+
+ //formatter
+ const formatterDatetime = (row, column) => {
+ let date = null;
+ switch (column.property) {
+ case "createtime":
+ if (!row.createtime)
+ return null;
+ date = new Date(row.createtime);
+ break;
+ case "birthday":
+ if (!row.birthday)
+ return null;
+ date = new Date(row.birthday);
+ break;
+ case "actiontime":
+ if (!row.actiontime)
+ return null;
+ date = new Date(row.actiontime);
+ break;
+ case "validdateto":
+ if (!row.validdateto)
+ return null;
+ date = new Date(row.validdateto);
+ break;
+ case "validdatefrom":
+ if (!row.validdatefrom)
+ return null;
+ date = new Date(row.validdatefrom);
+ break;
+ }
+
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
+ };
+ const formatterStatusBoolean = (row, column) => {
+ var ret = ''
+ if (row.status) {
+ ret = "Valid";
+ } else {
+ ret = "Invalid";
+ }
+ return ret;
+ };
+ const capitalize = (value) => {
+ if (!value) return ''
+ value = value.toString()
+ return value.charAt(0).toUpperCase() + value.slice(1)
+ };
+
+ return {
+ ...toRefs(state),
+ LoadData,
+ sizeChange,
+ currentChange,
+ clearAddOrEditModel,
+ SearchData,
+ showAddView,
+ onSubmit,
+ showEditView,
+ deleteItem,
+ ClearSearchData,
+ handleChange,
+ formatterDatetime,
+ formatterStatusBoolean,
+ capitalize,
+ handleAvatarSuccess, beforeAvatarUpload, handleAvatarError,
+ icon
+ }
+ },
+}
+</script>
+
+<style>
+.el-transfer-panel {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__body {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list {
+ height: 350px;
+ width: 300px;
+}
+
+.el-transfer-panel__list.is-filterable {
+ height: 250px;
+ width: 300px;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterBenefit.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterBenefit.vue
new file mode 100644
index 0000000..a26d1c3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterBenefit.vue
@@ -0,0 +1,15 @@
+<template>
+ <div>
+ 会员权益
+ </div>
+</template>
+
+<script>
+export default {
+ name: "GeneralVIPBenefit"
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterCategory.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterCategory.vue
new file mode 100644
index 0000000..bb1bbd4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/admin/vip/VIPMasterCategory.vue
@@ -0,0 +1,15 @@
+<template>
+ <div>
+ 会员类型
+ </div>
+</template>
+
+<script>
+export default {
+ name: "GeneralVIPCategory"
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/mobile/question/question.vue b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/mobile/question/question.vue
new file mode 100644
index 0000000..583cf52
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/src/views/mobile/question/question.vue
@@ -0,0 +1,279 @@
+<template>
+ <div class="question">
+ <el-affix target=".question" :offset="0">
+ <ControlBar v-if="mobilequestion.paper" :refresh="refresh"/>
+ </el-affix>
+ <Stem v-if="mobilequestion.paper && contentShow"/>
+ <Option v-if="mobilequestion.paper && optionShow" style="margin-top: 4vw;"/>
+ <Answer v-if="mobilequestion.paper && answerShow" style="margin-top: 4vw;" @refresh="refresh"/>
+ <div class="control">
+ <button class="sheet" @click="sheetClick">答题卡</button>
+ <button class="analysis" @click="analysisClick">解析</button>
+ </div>
+ <el-drawer v-model="drawer" direction="btt" size="50%" :show-close="false">
+ <template #default>
+ <div v-if="drawerType == 1 && drawerShow" class="analysis-content">
+ <div class="title">
+ <text>答案</text>
+ </div>
+ <div class="answer">
+ <WangEditorShow :content="mobilequestion.paper[mobilequestion.questionIndex].answer"/>
+ </div>
+ <div class="title">
+ <text>解析</text>
+ </div>
+ <div class="info">
+ <WangEditorShow :content="mobilequestion.paper[mobilequestion.questionIndex].analysis"/>
+ </div>
+ <div class="title">
+ <text>知识点</text>
+ </div>
+ <div class="knowledge" style="padding: 15px 10px;">
+ <text>{{ mobilequestion.paper[mobilequestion.questionIndex].knowledgepointname }}</text>
+ </div>
+ </div>
+ <div v-if="drawerType == 0" class="sheet-content">
+ <div class="title">
+ <text>答题卡</text>
+ </div>
+ <div class="list">
+ <div class="que-item" :style="'background-color:' + getColor(item.userStatus) + ';'"
+ v-for="(item, index) in mobilequestion.paper" :key="index" @click="jumpIndex(item, index)">
+ {{
+ index + 1
+ }}
+ </div>
+ </div>
+ </div>
+ </template>
+ </el-drawer>
+ </div>
+</template>
+
+<script>
+import * as icon from '@element-plus/icons-vue'
+import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, nextTick} from "vue";
+import {useBasicInfoStore} from "../../../store/basicInfo"
+import {useMobileQurstionStore} from "../../../store/mobilequestion"
+import ControlBar from '../../../components/mobile/question/controlbar.vue'
+import Stem from '../../../components/mobile/question/stem.vue'
+import Option from '../../../components/mobile/question/option.vue'
+import Answer from '../../../components/mobile/question/answer.vue'
+import {GetQuestionMasters, GetQuestionMasterDetail, GetQuestionMastersByPaperid} from "../../../api/mobile/question"
+import WangEditorShow from '../../../components/mobile/question/wangeditorshow.vue';
+
+export default {
+ name: "question",
+ components: {ControlBar, Option, Stem, Answer, WangEditorShow},
+ setup() {
+ let {proxy} = getCurrentInstance();
+ const useStore = useBasicInfoStore()
+ const mobilequestion = useMobileQurstionStore()
+ const state = reactive({
+ token: '',
+ paperId: '',
+ drawer: false,
+ drawerType: 0,
+ contentShow: true,
+ optionShow: true,
+ drawerShow: true,
+ answerShow: true
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+
+ const Init = () => {
+ document.title = ''
+ useStore.setToken(proxy.$route.query.token)
+ state.paperId = proxy.$route.query.paperid
+ mobilequestion.type = proxy.$route.query.type
+ getQuestionPaper()
+ };
+
+ const getQuestionPaper = () => {
+
+ GetQuestionMastersByPaperid(state.paperId).then(res => {
+ if (res.data) {
+ mobilequestion.paper = res.data.data.filter(e => e.categoryname == mobilequestion.type)
+ mobilequestion.questionIndex = 0
+ }
+ }).catch(err => {
+ console.error(err)
+ })
+ }
+
+ const sheetClick = () => {
+ state.drawerType = 0
+ state.drawer = true
+ }
+
+ const analysisClick = () => {
+ state.drawerType = 1
+ state.drawer = true
+ }
+
+ const getColor = (val) => {
+ if (!val) {
+ return "#d3d4d8"
+ } else if (val == 'true') {
+ return "#17b978"
+ } else if (val == "false") {
+ return "#f33535"
+ }
+ }
+
+ const refresh = () => {
+ state.contentShow = false;
+ state.optionShow = false
+ state.drawerShow = false
+ state.answerShow = false
+ nextTick(() => {
+ state.contentShow = true;
+ state.optionShow = true
+ state.drawerShow = true
+ state.answerShow = true
+ });
+ }
+
+ const jumpIndex = (item, index) => {
+ mobilequestion.questionIndex = index
+ refresh()
+ }
+
+
+ return {
+ ...toRefs(state),
+ icon,
+ sheetClick,
+ analysisClick,
+ getColor,
+ refresh,
+ jumpIndex,
+ mobilequestion
+ }
+ },
+}
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.question {
+ @extend .center;
+ width: 100vw;
+ min-height: 100vh;
+ background-color: #f5f5f5;
+
+ ::v-deep .el-drawer {
+ background-color: #fff;
+ }
+
+ ::v-deep .el-drawer__header {
+ height: 0px;
+ padding: 0px;
+ margin: 0px;
+ background-color: #f5f5f5;
+ color: #000;
+ font-weight: 550;
+ text-indent: 2vw;
+ }
+
+ ::v-deep .el-drawer__body {
+ padding: 0px;
+ }
+}
+
+.control {
+ width: 100vw;
+ height: 12vw;
+
+ .analysis {
+ border-radius: 20px 0px 0px 20px;
+ width: 18vw;
+ height: 8vw;
+ float: right;
+ background-color: #11999e;
+ margin-top: 2vw;
+ color: #fff;
+ border: 0px;
+ }
+
+ .sheet {
+ border-radius: 0px 20px 20px 0px;
+ width: 18vw;
+ height: 8vw;
+ margin-right: 4vw;
+ float: right;
+ background-color: #f38181;
+ margin-top: 2vw;
+ color: #fff;
+ border: 0px;
+ }
+}
+
+.analysis-content {
+ width: 100%;
+ height: 40vh;
+
+ .title {
+ width: 100%;
+ height: 10vw;
+ line-height: 10vw;
+ background-color: #f5f5f5;
+ font-weight: 550;
+ text-indent: 2vw;
+ }
+
+ .answer .info .knowledge {
+ width: calc(100% - 4vw);
+ padding: 2vw;
+ overflow: auto;
+ // border-bottom: 1px solid #f5f5f5;
+ color: gray;
+ }
+}
+
+.sheet-content {
+ width: 100%;
+ height: 40vh;
+
+ .title {
+ width: 100%;
+ height: 10vw;
+ line-height: 10vw;
+ background-color: #f5f5f5;
+ font-weight: 550;
+ text-indent: 2vw;
+ }
+
+ .list {
+ width: calc(100% - 4vw);
+ padding: 2vw;
+ overflow: auto;
+ border-bottom: 1px solid #f5f5f5;
+ color: green;
+
+ .que-item {
+ width: 6vw;
+ height: 6vw;
+ float: left;
+ margin: 2vw;
+ //background-color: #11999e;
+ text-align: center;
+ line-height: 6vw;
+ color: #fff;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.webui/vite.config.js b/04-Development/02-Code/bwf/com.farriver.bwf.webui/vite.config.js
new file mode 100644
index 0000000..33d98b6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.webui/vite.config.js
@@ -0,0 +1,156 @@
+import { defineConfig } from 'vite' // 帮手函数,这样不用 jsdoc 注解也可以获取类型提示
+import vue from '@vitejs/plugin-vue'
+// import { styleImport } from 'vite-plugin-style-import';
+import {
+ createStyleImportPlugin,
+ ElementPlusResolve
+} from 'vite-plugin-style-import'
+
+import { svgBuilder } from './src/plugins/svgBuilder';
+
+const path = require('path')
+
+module.exports = defineConfig({
+ define: {
+ 'process.env': {
+ 'VUE_ENV': "development"
+ },
+ },
+ //本地运行配置,以及反向代理配置
+ server: {
+ host: "localhost",
+ https: false, //是否启用 http 2
+ cors: true, //为开发服务器配置 CORS , 默认启用并允许任何源
+ open: true, //服务启动时自动在浏览器中打开应用
+ port: "9005",
+ strictPort: false, //设为true时端口被占用则直接退出,不会尝试下一个可用端口
+ force: true, //是否强制依赖预构建
+ hmr: false, //禁用或配置 HMR 连接
+ // 传递给 chockidar 的文件系统监视器选项
+ watch: {
+ ignored: ["!**/node_modules/your-package-name/**"]
+ },
+ proxy: {
+ '/api': {
+ target: 'localhost', //代理接口
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api/, '')
+ }
+ }
+ },
+ plugins: [ //配置需要使用的插件列表
+ vue(),
+ // styleImport({
+ // libs: [{
+ // libraryName: 'element-plus',
+ // esModule: true,
+ // resolveStyle: (name) => {
+ // return `element-plus/lib/theme-chalk/index.css`;
+ // },
+ // }]
+ // }),
+ createStyleImportPlugin({
+ resolves: [ElementPlusResolve()],
+ libs: [{
+ libraryName: 'element-plus',
+ esModule: true,
+ resolveStyle: (name) => {
+ return `element-plus/theme-chalk/${name}.css`
+ }
+ }]
+ }),
+ svgBuilder('./src/icons/svg/'),
+ ],
+ base: '/',
+ resolve: {
+ alias: [{
+ find: '@',
+ replacement: path.resolve(__dirname, 'src'),
+ }],
+ // 情景导出 package.json 配置中的exports字段
+ conditions: [],
+ // 导入时想要省略的扩展名列表
+ // 不建议使用 .vue 影响IDE和类型支持
+ extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json']
+ },
+ optimizeDeps: {
+ include: ['axios', "jquery"],
+ force: true // 强制进行依赖预构建
+ },
+ //静态资源服务的文件夹
+ publicDir: "public",
+ //静态资源处理
+ assetsInclude: "",
+ //控制台输出的级别 info 、warn、error、silent
+ logLevel: "info",
+ // 设为false 可以避免 vite 清屏而错过在终端中打印某些关键信息
+ clearScreen: true,
+ // css
+ css: {
+ // 配置 css modules 的行为
+ modules: {},
+ // postCss 配置
+ postcss: {},
+ //指定传递给 css 预处理器的选项
+ preprocessorOptions: {
+ scss: {
+ additionalData: `$injectedColor:orange;`
+ }
+ }
+ },
+ json: {
+ //是否支持从 .json 文件中进行按名导入
+ namedExports: true,
+ //若设置为 true 导入的json会被转为 export default JSON.parse("..") 会比转译成对象字面量性能更好
+ stringify: false
+ },
+ //继承自 esbuild 转换选项,最常见的用例是自定义 JSX
+ esbuild: {
+ jsxFactory: "h",
+ jsxFragment: "Fragment",
+ jsxInject: `import Vue from 'vue'`
+ },
+ //打包配置
+ build: {
+ //浏览器兼容性 "esnext"|"modules"
+ target: "modules",
+ //指定输出路径
+ outDir: "dist",
+ //生成静态资源的存放路径
+ assetsDir: "./assets",
+ //小于此阈值的导入或引用资源将内联为 base64 编码,以避免额外的 http 请求。设置为 0 可以完全禁用此项
+ assetsInlineLimit: 4096,
+ //启用/禁用 CSS 代码拆分
+ cssCodeSplit: true,
+ //构建后是否生成 source map 文件
+ sourcemap: false,
+ //自定义底层的 Rollup 打包配置
+ rollupOptions: {},
+ //@rollup/plugin-commonjs 插件的选项
+ commonjsOptions: {},
+ //构建的库
+ // lib: {},
+ //当设置为 true,构建后将会生成 manifest.json 文件
+ manifest: false,
+ // 设置为 false 可以禁用最小化混淆,
+ // 或是用来指定使用哪种混淆器
+ // boolean | 'terser' | 'esbuild'
+ minify: "terser", //terser 构建后文件体积更小
+ //传递给 Terser 的更多 minify 选项。
+ terserOptions: {},
+ //设置为 false 来禁用将构建后的文件写入磁盘
+ write: true,
+ //默认情况下,若 outDir 在 root 目录下,则 Vite 会在构建时清空该目录。
+ emptyOutDir: true,
+ //启用/禁用 brotli 压缩大小报告
+ brotliSize: true,
+ //chunk 大小警告的限制
+ chunkSizeWarningLimit: 500
+ },
+ ssr: {
+ // 列出的是要为 SSR 强制外部化的依赖
+ external: [],
+ //列出的是防止被 SSR 外部化依赖项
+ noExternal: []
+ }
+})
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/.gitignore b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/.gitignore
new file mode 100644
index 0000000..7ce6e50
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/.gitignore
@@ -0,0 +1,21 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+*.local
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/index.html b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/index.html
new file mode 100644
index 0000000..fb81ddc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/index.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <script>
+ var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+ CSS.supports('top: constant(a)'))
+ document.write(
+ '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+ (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+ </script>
+ <title></title>
+ <!--preload-links-->
+ <!--app-context-->
+ </head>
+ <body>
+ <div id="app"><!--app-html--></div>
+ <script type="module" src="/src/main.js"></script>
+ </body>
+</html>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/package.json b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/package.json
new file mode 100644
index 0000000..0ad5dd8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "scripts": {
+ "dev:app": "uni -p app",
+ "dev:app-android": "uni -p app-android",
+ "dev:app-ios": "uni -p app-ios",
+ "dev:custom": "uni -p",
+ "dev:h5": "uni",
+ "dev:h5:ssr": "uni --ssr",
+ "dev:mp-alipay": "uni -p mp-alipay",
+ "dev:mp-baidu": "uni -p mp-baidu",
+ "dev:mp-jd": "uni -p mp-jd",
+ "dev:mp-kuaishou": "uni -p mp-kuaishou",
+ "dev:mp-lark": "uni -p mp-lark",
+ "dev:mp-qq": "uni -p mp-qq",
+ "dev:mp-toutiao": "uni -p mp-toutiao",
+ "dev:mp-weixin": "uni -p mp-weixin",
+ "dev:mp-xhs": "uni -p mp-xhs",
+ "dev:quickapp-webview": "uni -p quickapp-webview",
+ "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
+ "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
+ "build:app": "uni build -p app",
+ "build:app-android": "uni build -p app-android",
+ "build:app-ios": "uni build -p app-ios",
+ "build:custom": "uni build -p",
+ "build:h5": "uni build",
+ "build:h5:ssr": "uni build --ssr",
+ "build:mp-alipay": "uni build -p mp-alipay",
+ "build:mp-baidu": "uni build -p mp-baidu",
+ "build:mp-jd": "uni build -p mp-jd",
+ "build:mp-kuaishou": "uni build -p mp-kuaishou",
+ "build:mp-lark": "uni build -p mp-lark",
+ "build:mp-qq": "uni build -p mp-qq",
+ "build:mp-toutiao": "uni build -p mp-toutiao",
+ "build:mp-weixin": "uni build -p mp-weixin",
+ "build:mp-xhs": "uni build -p mp-xhs",
+ "build:quickapp-webview": "uni build -p quickapp-webview",
+ "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
+ "build:quickapp-webview-union": "uni build -p quickapp-webview-union"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-plus": "3.0.0-3090920231225001",
+ "@dcloudio/uni-components": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-jd": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-lark": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-qq": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
+ "clipboard": "^2.0.11",
+ "dayjs": "^1.11.10",
+ "pinia": "2.0",
+ "pinia-plugin-persistedstate": "^3.2.1",
+ "uview-plus": "^3.1.41",
+ "vue": "^3.2.45",
+ "vue-i18n": "^9.1.9"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3090920231225001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3090920231225001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3090920231225001",
+ "@vue/runtime-core": "^3.2.45",
+ "sass": "^1.69.7",
+ "sass-loader": "^10.5.2",
+ "vite": "4.0.3"
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/shims-uni.d.ts b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/shims-uni.d.ts
new file mode 100644
index 0000000..ed4adcf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/shims-uni.d.ts
@@ -0,0 +1,10 @@
+/// <reference types='@dcloudio/types' />
+import 'vue'
+
+declare module '@vue/runtime-core' {
+ type Hooks = App.AppInstance & Page.PageInstance;
+
+ interface ComponentCustomOptions extends Hooks {
+
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/App.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/App.vue
new file mode 100644
index 0000000..f65dee3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/App.vue
@@ -0,0 +1,18 @@
+<script>
+ export default {
+ onLaunch: function () {
+ console.log('App Launch')
+ },
+ onShow: function () {
+ console.log('App Show')
+ },
+ onHide: function () {
+ console.log('App Hide')
+ },
+ }
+</script>
+
+<style lang="scss">
+ /*每个页面公共css */
+ @import "uview-plus/index.scss";
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/api.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/api.js
new file mode 100644
index 0000000..af1c546
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/api.js
@@ -0,0 +1,55 @@
+import {get, post} from './network';
+import $config from '../config';
+
+let host = $config.serverhost;
+
+export const UpdateVIPMaster = (params) => {
+ return post(`${host}/wechat/vip/master/update`, params)
+}
+
+//产品
+export const GetProductCategoryList = (params) => {
+ return post(`${host}/wechat/product/category/list`, params)
+}
+export const GetProductCategoryWithProductList = (params) => {
+ return post(`${host}/wechat/product/category/listwithproducts`, params)
+}
+export const GetProductCategoryListByParentName = (parentname) => {
+ return get(`${host}/wechat/product/category/listbyparent?parentname=${parentname}`)
+}
+export const GetProductListByCategoryId = (categoryid) => {
+ return get(`${host}/wechat/product/listbycategoryid?categoryid=${categoryid}`)
+}
+export const GetProductDetailByMasterId = (masterid) => {
+ return get(`${host}/wechat/product/detailbymasterid?masterid=${masterid}`)
+}
+
+//订单
+export const CreateActiveOrder = (params) => {
+ return post(`${host}/wechat/order/active/makeorder`, params)
+}
+export const PayUseWXViaMiniProgram = (params) => {
+ return post(`${host}/wechat/pay/PayUseWXViaMiniProgram`, params)
+}
+export const PaySuccess = (params) => {
+ return post(`${host}/wechat/order/active/pay`, params)
+}
+
+//钱包
+export const getWalletDetail = (id) => {
+ return get(`${host}/wechat/vip/master/wallet/detail?masterid=${id}`)
+}
+export const depositActivityList = (params) => {
+ return post(`${host}/wechat/vip/deposit/activity/list`, params)
+}
+export const walletRecharge = (params) => {
+ return post(`${host}/wechat/vip/master/wallet/recharge`, params)
+}
+export const walletCharge = (params) => {
+ return post(`${host}/wechat/vip/master/wallet/charge`, params)
+}
+
+//我的
+export const getMyPaperList = (id) => {
+ return get(`${host}/wechat/vip/paper/relation/list?masterid=${id}`)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/authapi.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/authapi.js
new file mode 100644
index 0000000..6178197
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/authapi.js
@@ -0,0 +1,56 @@
+import { get, post } from './network';
+import $config from '../config';
+
+let host = $config.serverhost;
+
+export const GetWXCode2Session = (code) => {
+ return get(`${host}/wechat/oauth/GetWXCode2SessionForMiniProgram?code=` + code)
+}
+
+export const GetAccessToken = (params) => {
+ return get(`${host}/wechat/oauth/GetAccessTokenForMiniProgram`)
+}
+
+export const GetUserPhoneNumber = (params) => {
+ return post(`${host}/wechat/oauth/GetUserPhoneNumberForMiniProgram`, params)
+}
+
+export const GetWeChatConfig = () => {
+ return get(`${host}/wechat/pay/GetWeChatConfig`)
+}
+
+export const GetSMSCode = (params) => {
+ return get(`${host}/wechat/oauth/GetSMSCode?cellphone=` + params)
+}
+
+export const LoginBySMSCode = (params) => {
+ return post(`${host}/wechat/oauth/loginBySMSCode`, params)
+}
+
+export const LoginByWXOpenID = (params) => {
+ return post(`${host}/wechat/oauth/LoginByWXOpenID`, params)
+}
+
+export const LoginByPassword = (params) => {
+ return post(`${host}/wechat/oauth/loginByPassword`, params)
+}
+
+export const GetAppConfig = (params) => {
+ return post(`${host}/wechat/oauth/GetAppConfig`, params);
+}
+
+export const RegisterUser = (params) => {
+ return post(`${host}/wechat/oauth/RegisterUser`, params)
+}
+
+export const RegisterUserByCellphone = (params) => {
+ return post(`${host}/wechat/oauth/RegisterUserByCellphone`, params)
+}
+
+export const ResetPasswordCellphone = (params) => {
+ return post(`${host}/wechat/oauth/ResetPasswordCellphone`, params)
+}
+
+export const UpdateUserPhoneNumber = (params) => {
+ return post(`${host}/wechat/oauth/UpdateUserPhoneNumber`, params)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/common.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/common.js
new file mode 100644
index 0000000..7421213
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/common.js
@@ -0,0 +1,9 @@
+import { get, post } from './network';
+import $config from '../config';
+
+let host = $config.serverhost;
+
+export const getFileUploadUrl = () => {
+ return `${host}/file/upload?time=${new Date()}`
+}
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/network.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/network.js
new file mode 100644
index 0000000..c2ffbf7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/network.js
@@ -0,0 +1,115 @@
+import validator from '../common/validator';
+
+const request = (url, options) => {
+ uni.showNavigationBarLoading()
+ return new Promise((resolve, reject) => {
+ uni.request({
+ url: `${url}`,
+ method: options.method,
+ data: options.method === 'GET' || options.header ===
+ 'application/x-www-form-urlencoded' ? options.data : JSON.stringify(options.data),
+ header: {
+ 'Content-Type': options.header,
+ 'Authorization': uni.getStorageSync('token'),
+ 'Referer': 'https://drptest.koreano.cn'
+ },
+ //https://servicewechat.com/wx1e7526eb4d9cf91c/devtools/page-frame.html
+ success(request) {
+ uni.stopPullDownRefresh()
+ if (request.data.status == 10 || request.data.status == 11) {
+ uni.setStorageSync('token', '')
+ let token = uni.getStorageSync('token')
+ if (validator.checkEmpty(token)) {
+ refLogin(url, options).then(res => {
+ if (res) {
+ resolve(res)
+ } else {
+ resolve({
+ tokenStatus: false,
+ status: 1
+ })
+ }
+ })
+ }
+ } else {
+ if (request.statusCode === 200 || request.data.status) {
+ resolve(request.data)
+ } else {
+ reject(request.data)
+ }
+ }
+ uni.hideNavigationBarLoading()
+ },
+ fail(error) {
+ console.log('---------网络连接错误------------')
+ uni.showToast({
+ icon: 'none',
+ title: '网络连接错误'
+ })
+ uni.hideNavigationBarLoading()
+ reject({
+ status: 1,
+ data: error.data
+ })
+ },
+ })
+ }).catch(function (reason) {
+ console.log('---------网络调用错误------------' + reason)
+ uni.showToast({
+ icon: 'none',
+ title: '网络调用错误'
+ })
+ uni.redirectTo({
+ url: '/pages/common/code_error/index?code=10002',
+ })
+ uni.hideNavigationBarLoading()
+ });
+}
+
+export const get = (url, options = {}) => {
+ return request(url, {
+ method: 'GET',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
+
+export const post = (url, options) => {
+ return request(url, {
+ method: 'POST',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
+
+export const put = (url, options) => {
+ return request(url, {
+ method: 'PUT',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
+
+export const postF = (url, options) => {
+ return request(url, {
+ method: 'POST',
+ data: options,
+ header: 'application/x-www-form-urlencoded'
+ })
+}
+
+export const putF = (url, options) => {
+ return request(url, {
+ method: 'PUT',
+ data: options,
+ header: 'application/x-www-form-urlencoded'
+ })
+}
+
+export const remove = (url, options) => {
+ return request(url, {
+ method: 'DELETE',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/ordernumber.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/ordernumber.js
new file mode 100644
index 0000000..c3acc9e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/apis/ordernumber.js
@@ -0,0 +1,14 @@
+export const getDateNums = (date) => {
+ const year = date.getFullYear()
+ const month = date.getMonth() + 1
+ const day = date.getDate()
+ const hour = date.getHours()
+ const minute = date.getMinutes()
+ const second = date.getSeconds()
+
+ return [year, month, day].map(formatNumber).join('') + [hour, minute, second].map(formatNumber).join('')
+}
+const formatNumber = n => {
+ n = n.toString()
+ return n[1] ? n : '0' + n
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/common.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/common.js
new file mode 100644
index 0000000..4413139
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/common.js
@@ -0,0 +1,7 @@
+export const guid = () => {
+ return (__s4() + __s4() + "-" + __s4() + "-" + __s4() + "-" + __s4() + "-" + __s4() +
+ __s4() + __s4());
+}
+const __s4 = () => {
+ return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/validator.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/validator.js
new file mode 100644
index 0000000..88af332
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/common/validator.js
@@ -0,0 +1,46 @@
+'use strict';
+
+class Validator {
+ constructor(arg) {
+
+ }
+
+ checkEmpty(val) {
+ if (typeof val === 'boolean') {
+ return false
+ }
+ if (typeof val === 'number') {
+ return false
+ }
+ if (val instanceof Array) {
+ if (val.length === 0) return true
+ } else if (val instanceof Object) {
+ if (JSON.stringify(val) === '{}') return true
+ } else {
+ if (val === 'null' || val == null || val === 'undefined' || val === undefined || val === '') return true
+ return false
+ }
+ return false
+ }
+
+ checkEmail(email) {
+ return RegExp(
+ /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/)
+ .test(
+ email);
+ }
+
+ checkMobile(mobile) {
+ return RegExp(/^1[34578]\d{9}$/).test(mobile);
+ }
+
+ checkMobile2(mobile) {
+ if (!/(^1[0-9][0-9]{9}$)/.test(mobile)) {
+ return false;
+ }
+
+ return true;
+ }
+}
+
+export default new Validator()
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/AppMenuButton.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/AppMenuButton.vue
new file mode 100644
index 0000000..87dc764
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/AppMenuButton.vue
@@ -0,0 +1,104 @@
+<template>
+ <div class="appmenubutton" :style="{ width: props.width, height: props.height }" :onclick="onClick">
+ <div style="margin-top: 20px;">
+ <svg-icon width="30" height="30" :color="props.color" :name="props.item.icon"/>
+ </div>
+ <div style="margin-top: 10px;">
+ <span style="font-family: FangSong bold; font-size: 14px; margin-left: 5px; overflow: hidden">{{ props.item.text }}</span>
+ </div>
+ </div>
+</template>
+
+<script>
+ import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref} from "vue";
+ import {useBasicInfoStore} from "../../store/basicInfo";
+ import * as elementplus from "element-plus";
+
+ export default {
+ name: "AppMenuButton",
+ components: {},
+ props: {
+ item: null,
+ height: "100px",
+ width: "100px",
+ color: ""
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+
+ const onClick = () => {
+ switch (props.item.type) {
+ case "menu":
+ if (store.tags.length > store.tagUpperLimit) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.TagQuantityReachedUpperLimit')}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'warning',
+ }
+ );
+
+ return;
+ }
+
+ addTag(props.item);
+ proxy.$router.replace(props.item.link);
+ break;
+ case "link":
+ window.open(props.item.link);
+ break;
+ }
+ };
+ const addTag = (target) => {
+ let stags = store.tags.filter(tab => tab.name === target.name);
+
+ if (stags === [] || stags.length <= 0) {
+ store.tags.push({
+ name: target.name,
+ languagekey: target.languagekey,
+ closable: true,
+ icon: target.icon
+ });
+ }
+ };
+ return {
+ ...toRefs(state), props, onClick
+ }
+ },
+ }
+</script>
+
+<style scoped>
+ .appmenubutton {
+ border: 1px solid #ccc;
+ float: left;
+ text-align: center;
+ padding: 5px;
+ }
+
+ .appmenubutton:hover {
+ background-color: var(--el-color-primary-light-6);
+ color: white;
+ }
+
+ .appmenubutton:active {
+ background-color: var(--el-color-primary-light-6);
+ color: white;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/MenuButton.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/MenuButton.vue
new file mode 100644
index 0000000..3b73d90
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/MenuButton.vue
@@ -0,0 +1,114 @@
+<template>
+ <div class="menubutton" :style="{ width: props.width, height: props.height }" :onclick="onClick">
+ <div style="margin-top: 20px;">
+ <svg-icon width="30" height="30" :color="props.color" :name="props.item.icon"/>
+ </div>
+ <div style="margin-top: 10px;">
+ <span style="font-family: FangSong bold; font-size: 14px; margin-left: 5px; overflow: hidden">{{ props.item.text }}</span>
+ </div>
+ </div>
+</template>
+
+<script>
+ import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, shallowRef, ref} from "vue";
+ import {useBasicInfoStore} from "../../store/basicInfo";
+ import * as elementplus from "element-plus";
+
+ export default {
+ name: "MenuButton",
+ components: {},
+ props: {
+ item: null,
+ height: "100px",
+ width: "100px",
+ color: "",
+ click: null
+ },
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+ const store = useBasicInfoStore();
+ const state = reactive({
+ staticDomain: WGURL.staticDomain,
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+
+ };
+
+ const onClick = () => {
+ if (!props.click) {
+ switch (props.item.type) {
+ case "menu":
+ if (store.tags.length > store.tagUpperLimit) {
+ elementplus.ElMessageBox.alert(
+ `${proxy.$t('message.TagQuantityReachedUpperLimit')}`,
+ '',
+ {
+ confirmButtonText: 'OK',
+ type: 'warning',
+ }
+ );
+
+ return;
+ }
+
+ addTag(props.item);
+ proxy.$router.replace(props.item.link);
+ break;
+ case "link":
+ store.iframe_url = props.item.link;
+ store.iframe_dialogVisible = true;
+ store.iframe_title = props.item.text;
+ store.iframe_loading = true;
+ // window.open(props.item.link);
+ break;
+ }
+ } else {
+ props.click(props.item);
+ }
+ };
+ const addTag = (target) => {
+ let stags = store.tags.filter(tab => tab.name === target.name);
+
+ if (stags === [] || stags.length <= 0) {
+ store.tags.push({
+ name: target.name,
+ languagekey: target.languagekey,
+ closable: true,
+ icon: target.icon,
+ path: target.link
+ });
+ }
+ };
+ return {
+ ...toRefs(state), props, onClick
+ }
+ },
+ }
+</script>
+
+<style scoped>
+ .menubutton {
+ border: 1px solid #ccc;
+ float: left;
+ text-align: center;
+ padding: 5px;
+ }
+
+ .menubutton:hover {
+ background-color: var(--el-color-primary-light-6);
+ color: white;
+ }
+
+ .menubutton:active {
+ background-color: var(--el-color-primary-light-6);
+ color: white;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/svgIcon.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/svgIcon.vue
new file mode 100644
index 0000000..bf87e98
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/common/svgIcon.vue
@@ -0,0 +1,73 @@
+<template>
+ <div :style="svgBodyStyle">
+ <up-image :style="svgStyle" :show-loading="true" :src="svgSrc" width="80px" height="80px"></up-image>
+ </div>
+</template>
+
+<script>
+ import {getCurrentInstance, onBeforeUnmount, onMounted, reactive, toRefs, nextTick} from "vue";
+ import $config from '../../config';
+
+ export default {
+ name: "svgicon",
+ props: {
+ width: {
+ type: String,
+ required: true,
+ },
+ height: {
+ type: String,
+ required: true,
+ },
+ color: {
+ type: String,
+ required: true,
+ },
+ name: {
+ type: String,
+ required: true,
+ }
+ },
+
+ components: {},
+ setup(props) {
+ let {proxy} = getCurrentInstance();
+
+ const state = reactive({
+ staticDomain: $config.staticDomain,
+ svgStyle: '',
+ svgSrc: '',
+ svgBodyStyle: ''
+ });
+
+ onMounted(() => {
+ Init();
+ });
+ onBeforeUnmount(() => {
+
+ });
+
+ const Init = () => {
+ state.svgSrc = `${state.staticDomain}icon/svg/${props.name}.svg`;
+ state.svgBodyStyle = "width:" + props.width + "px;"
+ + "height:" + props.height + "px;"
+ + "overflow:hidden;"
+ + "display: inline-block;line-height:0px;vertical-align:middle;"
+ state.svgStyle = "width:" + props.width + "px;"
+ + "height:" + props.height + "px;"
+ if (props.color) {
+ state.svgStyle = state.svgStyle + "transform: translateX(-" + props.width + "px);"
+ + "filter:drop-shadow(" + props.color + " " + props.width + "px 0);"
+ }
+ };
+
+ return {
+ ...toRefs(state)
+ }
+ },
+ }
+</script>
+
+<style scoped lang="scss"></style>
+
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/iconfont/iconfont.css b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/iconfont/iconfont.css
new file mode 100644
index 0000000..c6ed487
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/iconfont/iconfont.css
@@ -0,0 +1,375 @@
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 36rpx;
+ font-style: normal;
+ font-weight: 580;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+@font-face {
+ font-family: "iconfont"; /* Project id 1731457 */
+ src: url('//at.alicdn.com/t/font_1731457_sjkajh9fwk.eot?t=1652447277778'); /* IE9 */
+ src: url('//at.alicdn.com/t/font_1731457_sjkajh9fwk.eot?t=1652447277778#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAC14AAsAAAAAX/AAAC0lAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACNRAqBnQyBgW8BNgIkA4JgC4EyAAQgBYRnB4g1G9xQF1SvGdxBdwCXqpprWkTFKhZFKeFKs///Pycdh220Cvx+kIUsa8yCWCrcENvGTohjeiBi6LUbBS8cSJgK03jEbv+v37tkidp0iqao+FK3a6Hmn8nkpyxZROJRgohKWAKxPFkeUv77VKPaj1227WOyYKrwshpqFvsdzk2GLS4qN0MpE6oatt6dSx+zIyaPRaO+sEicys7gDBJjd4jcrLFEYVc7aAcBpdmQpiIqVbDSraBJVLBVzMUac8aS5mmKmlZMrZJiyrWPqUViLnfJJ3eg6VcSNWEtSxYKyULLytSoaiZ1tQ80sRP7QKz0dQOAgHZ+V0QJdXGGkWRxN5hMZLIRjCfjEWRjOQ8ERVSKUKjKxgNJVyFR6Vsju9hmFNlWllBNEZ3bqT0vAsr8HHFw7ws0Mk51zsaxbcyAel2UxPPCeFwec1aX0U+ht2hwQ3ntpz72ow4wHjCKzCp+IELG9JIqV14JV+QBGyFfb3BeCm3kIQzlVKV1r9PGAttq2eYUKWXYSedAITxkf6Tv6UuGhG0Ogu0ynSQe/jl//AY2wZ1zcW6zt39lYVgcYOADTbTw75lllok2/1NNKjnJjel0bec6ByC3WQkvgP9/2Y6+vpVYdpasLOeWZd+w7KS1YpJsx1nOdY2BJKdDvmklt4bTmbSbHW03bgEtoOVroHtFfSWwAJa1ANJCtSHmnADlA4+36jYxhuaQy/47yh6nrmpWKyUlJCIl3CVs9/3zEwx03Ulg257S1MClvzZUAT/27KXhdGz9zbAAIB7XUkRp2lBobyY2U8NHJwC8o+/bBz0zgMuR/c7zvbgIjL/yui3X8R0RPbgLDFx3kIHAlWQb36N3tlJ6+yt2uqRtFR7w3xzEXv/1V/VV79Xg1QESqmiJrPn3yX/h15uKcDEGxxL//wP8A8q4UX3vi7kXJnyxn8Y+b67QdlFTNWqzDryO9/H1krAD6Umqcv8iz20hZXtZgr9/Pj5f386X6+3+OBxPy8V+t1pvtvNZoUwno/Fw0O91251Ws/FUrxVLUq7bsGnFkmULFs0dnV5cT4yNDA309XR1FI2MNQ30kSl6Rq0O8uve4VYCDmYkG1SRbFFDckQeCU7BzhlQRsIjg0RCFomKKSkaFaREFNpHAP4ENnJ1CPAtGD9C8CEUn8LwKhxvInAWiYsoXEXjJgZ3sXiIw0E8jhJwkoilJFhIir1k2EmOlRRYS4mNVNhKjbk0mEmLgnR4lh5TGTCRESOZMJYFQ9kwkB19OdCTE1250ZYHHXnRkg9N+dEQTOewQwBsEzbYImyxSthhjbDHOjEPG4QDNglHrBAILBFILBMQFggYiwQac8ILR8Ibp8IHF8IX10KRtp0eEl1ngJS+K4HEtyuDJK6rAPSJSvSIKnSJanSI+lTkbjGghWhGm2hBE9GKBqKtGfbRYbq79XxmPibbavXsw7J/YpF2pLoICp0hJEkmkTQhkDTVIQw9hJKNASJ5Qg65kQ6xRVq0WyVFpccNSI4iTldjsjD0iLjahZP8hnBSU67sarrB2MM4FlYTGVVlPM5XIK9NWiLaG1GdqjUttap5S+Mi5jkh5iw5CAU3q36qsoXPokwxBNl3RlEtAaY2Y7nJSZZdSzd1L3M9G4ZtxPfDwkmpVGyfob5GURO2CjGSssSwNUZKQP6fl5iO8z9jmY3ggEEaGqNOjHP5QQvFQCN23VUFgQIINtWFG8vhN0PkIEwzWVnKeoYIMbd0m4R0tJ4DwooB4xt5ihqqWPAK9S6aZuV22lg8yeGHwqkrEaW0XwLjzNZlB4R1QXWcuzrcQmq76/BBUcU2SZwWASmsO4Bf7x37usXX9+kQwENgLwl21gKadBkCesD4mwcu06ZtUwXILoPC3ZdA+VZ5p31Q34Mrz7SmvYapjQ3wI3/jMuv+4o32yqvdYaEeXwYNF0epLY5ZqBbjGpZmUAId3CEkaVUk26oh16rKjudf7HIqzmnRiJwS/VVuWZZfL2c9gxL1bC7UoQqWkEmYAOO3YFGPKJJG2373hCAdWQfKXSf6AReVkmappoR1xWC8oKxlVDPMce4vqPlmEXbLbtktaJlsxUEzyEO0vGWcDtdl0rbXmABekIJXb9t+eRbQcULHmkLDaEJ7NkVVmHwKOj6fpvWxsCpmXjCjjkWq+BN7sHchUpPuHcvE3DOeiWOrogy1GrXwtPq4TuuLOz9w3QHFtjXXVR2naZRgZ4uZKeS40ivtTcw6gykEXq+ViZFV7F0NWA4nKDGeFVqf0ErwMFmAYsJVFeXyj7hlYhbKJWPlJLjOkiYgydAqKi8jS0041Byh4Wzg3HTRdMTfEuyUAO3q2QrpBptPMmaeTbwFnGQUrDQvM7k0RglGF0F5P37XpTUcJ1dLbyiEtCAxX8zEGc30c2Drj5JZXjZVAVm5FAsV7R+R7w5o9lhaSWE7uwyl2HNb1TKGIkmXxGdKZESXjhaZZGISvbgiGRbfrs+Oq5WEJlr0i8VRSkxDzCChQke9eR9VpCzuQNoUcii/BJQRI8S7QX7s0DHTSNABfElBkpKoP2OVqp7VmL5ziNqwbv1xh2k5+zsp5L7X0zAraTWliuvqnTbc0oja6pi6Q3UBrV7/z9jV2t6geSuFkObmEpCwSQ8tDvCink9nhCZ5WXuDobMdIBrSHtTUuSh14ma6DGy4Xjd1Dr2FgEVPa7KkBk/l/+4z3CdvXLdrkgA6O9p20ZStuTtbN34cN2DPgd0JPnilT8aqZhbjeUdEFhINTlItBAUlMDTrtVkdGE1eTkNR1QN1PYIqUGPaXm/tAFqU1ykxQWCS0AVmRCCJfPp0zCOUg40d7ippsZ47ruq04Wh3vXGvOmxowp1GrjzUWbyJyVs6HGlrotBTAfw+5cbCRRwtOx2qOOJeWHFpdQdg7+eMNEWBTfqz/tmTD4G0/6VPpP/eEt9fXZ+keDQ2uJKtubFPThqeHaPoo3oaiv5DDSa0dty1UDeIfoCpZz0HPtxR/HSyDRvmtqZi5Rds8tOJorfp2XxamCmksN/ucWWs3obzoVdHvfUTltUK00Jqsfkk/6OVOKqPC7UxVasmX4KOr6fpgU/xhvGoLJCVzlGJs/D6oFDI6sm4nICsTDnfPn7F9hplHqA4O8voxuplt2XaWyzXpmaU7JPEdspmPqsnU1xi7I6IaznOMMo7gw4e5nlTFSyr0KEZ8sk6aJh/kAvMcZgn4ywlSJW4HJOhglARMhVfhYx3yvI4HqCwll0TKBmKLk2Fl843D9T7rwE2bva7KYW8JR2WyVtCSXHM8lAx664LkW+ikEcSmb8aMawU5f1igZMsoRCrxAyu+Na/oOeIvcG0EGX5GLrq9U00FBE5z2HDsHqYiaHFyznOYwYR9BKus7yAwMUcgJ+9JshHdo08HkRp8UNLFQ2XvFi3PL2umOPSjde/UYfyYfS4U1LKg9mMD/HhSCuWeZGzPd1vPsiHmXyop2Jin1k0281PO+6Z7ydzHt4ZKzQcCtIjQVnC5DZrygHbPmHhKYhdDrCDSVy3S4j6B9OTbP/UE3iPFR/WQrB6wfDXkOgNhL1Bv4hCYiTkubIN+2AgRq3Knqg/9p0YCvrCQW84hEphVPR/GgLQF/NHPf4ItSnPMTS4Qkzhiv6kxwQvBD0oGoLJhxtj/CHe4CRWNqh1LtNfhLgjKtv8Ee4QFzt8kedZbivHiTwqZeZTPBxuLDvKjEn7zGgjgmjCDkfDXhTm9zVSZmay9VufsU6XcYfps0YVqP6O9QM2/NgKW2OCDZpjGKefHBM9fE+ID1C60BOM2ASDsuMkyWAJrosES+Poa1sy+luaawJh9vuPYF+SeDj0xqXLwZEJaSoWenB0G68OclNQUxX9f0FF1961phvhNu4QvXWKMCnjqlLT7qj1xPDx8UZLzPjSUTq2GTGBhJKvnqQ3xVUb7q5HGqnChDh0LBsu9t7pAzkmDy7ErAJX2r3U/zXFTH+0HHywKTWWy6CXUI/fdwAhIQrAqHgrJEjym50P2oc/ZPKMF0oWZS0wIXIwu2Y4dk+CKDDHvFmonw4XuXLcAF4eWIHDo674dBOrYvr9c9Dx6dvJIgq2bcGK3zkwyOQiAXScdQOxiYMvpEe7c+cCMzs/UVdzuOUpsF5cDL0xnJN+xAfKvrSY1wyhApPnHklvSeLztG1uAiGMBcdR2y1cl7l1LL7E/V+vxULhhSwcZ8+P8GNQd+qgb96C9JoktZkD3TxB1NpGwzm4i5JsSmfolQ1Er63Cc3GEYAeU0M9i5SZCSXL4tiR4DUDNPlEILK1JDU6Giw+D5bXTOwdiVluBy3lLL5k8yXByMZivD4uZiZh1O5b5zQbXtzoZLoKP0fLatDiwtfLTQiDnTXlfdUdng/lo3te/Tl2XqQTh9kJcd+1wjoyrrRlq6N23ePrxnscndb//4en8sk8ZJgbEiYOWcGRlq1h5EYKUka1wM57kkLe02xCYcl2eRnIBRo04jCnQtvZEYN6tv1nE0SFkQijxhc76pZlNSzVvp7EnrveVGC+89KwM8B260cqXd5V7rwb7kq4WHOFpCSiDimpeyTDabdERxrpPNuFRdRYmq+DWw6HOFrHdSGbzfMtKHOaz8BLSnKawk9ciP3yy/KKKyB++/bLj+y8Tyw9vBf3rEen6RRns9Z7E5lN4ovPzs4vPj8VenA6jQzfADqwqrjjYmxWvJIByj/6RNzKEarSRoVSPOcaAZpbQYXFthvFc8/fHD6H6ZA9r/7QxnN4y+179oL1T3srrvfusqOUmHCgeUpjrTAXNC1+qylttH8xYt3kZj8Es9VYI9J4RChJSIL7J99RLpw+uhjDZ7kLKnnGtLjFRSalAfH2BZvnvYNWBWhsldDMttNPan4moRblclPPBvJkWn+rd+mU1hizmODmppIT1bRdc3MFKv1MqL7depOLOKivRauuk4k/YaVRM04FmjsyuMt1xaX1c4GxbmqLkx9YbwJa9synASXKWfF9tmKSwfcq2mVzsmnIa717UsWkKA3TsmHbOD5JDxcGh0MxYcYai/4RNerIh3XICek/oTv6g0ko4KqW8qc1j3r71yW30X09vJPVsN5PoA2N5QKRfrM3VhtoBxpa0lQk66rjaBqaypbgqgQacgotehxrz3I96dPcQ0uYj3cogXYFWcsMBgelqAMgC5xiWFjCmTzj5DdEZX8ktnRam7lPHQNHrTbPHf/2pSRt2Lm99peIWS3aBgrLuZ1/a59AMzclYNtOZAvcKaVesXCrJkh8xXy32odALURDD6tjBoAyz88v9IpLz/QMrIYQyK9qSV5JyS329LCzrGvVnZcmo+GRk9Qdl+R6IG+oNGzDRyZKQcBxUbySOnMd+QuTFBpvApOK1bTi237WlnBZyXWllq+OijHp7sCHJLp7UMf+40eTrG8taMXLEElbOPKof7c95xzYYyUSmrjGTzEpFxk1uwqxbmPtn+UlLFuRqXAfDe23rm7Lvvoxj2Tn/nI5Y5cLVjWbWn1UCud1ztubuXQgV1GB+j0Ke6VmkROHsU0g0KfrT/J/2ZWvkGNCfRn1mRHS2iTZHxc7+yOBsCc6W2v4ccK6Hwpa915RejBbIu+PV/z77OG8s3f4hplyakaay3ehgXSPtJFcuO26sonlykT2u6Z87H4Y624zDxcGhiIQq6nsSZnXM8+XEICHYcTZ2gWrHtOq6F15ok/mjTSmEnH16864H+e/2I5mgk43omL0oEBo6yPnnaT07ZyzPuWeWsG3Sun5Qj7tXR/ksTRBycUl9Rbowx15vmn0HsKrl86IbrSYSQoOS88U+G7LfVlG19KjOPZ5TJ0CppK1Uxr1B/oXV5IcHw+OqdK3YtfHDTN+k+2V96yIO9L/0i6Hnqga7mbTx+h0sWimqJMXn5fEB0brDptQiXQaX6vsh2WNFz45kO1k9xfjissU87kMITGZ4k+82W5em3yJOv47/uBif59Fq4vFLfHEIh0f8eeKMpMT50PSKZYiQJoRwXnDViaq0TagqXjCRQeITQ/ikp6ExvB2OCJzvEvxtAhDvluExvvjjhBGoYaLoXobtJtbe8sNk+rAwOux+weO5E9ITc4HDmKcBF54EMALeXggYdetCmDxMiJpqpMndhPxekFmAPc5bpOcWxcYWcfXvuIbYwiKOnvsuwHLCzTVwkj62qCjWyHEwtULLymEyc9i6x2ytAzlMLfuxGIPS5ulyxNIeMndl3H32n7cTOF3oSOUgtgDwb8p6EORJqFsQkx8dnR+z4HdABQvsyX9/zqK2VpVEEZNIIopkNyWJJBaTqN8toYhgxQACEpJIROL9oqytS2qJyyzD9gR2qSpbEnptWmOufpcj5qTuVZ+3OyT7biDidMi5+nWjWfNtgZziwvPlBcz5z/22D/nc3Yx0nvWYza52nvE7QnJf+ZPqxyycXDxcbn4rySflEVesIOaR8m8KGKz7zyPmk24SxuXnDk/BpS6anOyVdLOpJzImIa+MxYspoopSN08h2Ll0pobhvXhKofR7/9QnOi+cKdMxMmLEbGZeBDsjgljEA4ylAON0C0PG3HLCVHsN/t4+X59zVsWr9ujx0LVXG8q1n98lSI+a79lLc9erzzZcG/LorpJh92HsnE9vHZljGzAEZhUpLdLk1jXJLS3Ja1qTpS1rpK2t0oymZbLwAnm4UcL0Y0r9twq3+ksNg5lb3sUfA0SlpaKApMCNAgYL7DEvjT4ewx4Vnh17oV1ItrXLDU8PTUkJSw/LzUqhSMl5q+apiz16PSPYyjDyBEF2yraKxBJufGlC+TcBu0u4e/Kvz9qOL3XlWlY2g5nDyntYHzszJ5uhZT0ARTJvOHB4qQ2Mmd+TOudaSnWOO4i9ExZakiXWiMrRVeiHApk8LR1bElQeZpZqxOoiSknolJcuITeeUcAqrM3buqhnkLt9gFtXxx3Yzh2sqx141A9ya2s/gJwP0KTDuYIit83uRYMVRnTjYGWRxya34qLkHQH/XQiMDrjwXwDynIcJSRYQiQJyNHmoBCQQ9JK+yNAfMKeHsO+hOG6OAaBAISeuKO4HAIwLDUNFaFhocjI1FJr0nISw8b+HIfZlAvZElWKU2je6rWmdz7qhM9pHHS2U7g1NDgUN8DzRdfji5qGAIcKHMXT/4d3dmcWwPx3ktB88OEncR5y8ceMZ6RnwBJwtiKaNnlgbrMxr5BTFzF8QU8j5szB2QexfLafobWDCjGIe6vfM4fDt09TvDbNTM5Ffo/6iab035PPLA5wVzmF/TUoSr6cGEG9QmfIUulxZMF+TnCsTx9Sogre4hFsUd31uw0cBphTH9fwQmPiiuBIudt132oPk5RIX77wOGo9K5Chd9J5jEmF0wgKFcktws8glMFUXcRLPTnXOd1vjZxQCltB3F2YMs8tlHwZpYX81BD3BrMI8DTLc47kvO30l7OxkuGhwcjHCAd0ksT2xi2KbwGxCnhIvwzU342R41amxAidvXizDqQinFAR50OJmnJygPKXnD5I1N8txSnw/8XnH0yvyhqVjtI/YedV5rEcD1XGsvEesk1jlMma2O7s0rNmMUpZxUQyZyVSS+HVclUHkG2fUtsDPeMgp8d0g8i/Ini8pr00QpP/TxdjKaEyja+PKKWpZlD4W+bwfDE++jOeWlHC/E6hhi7kGA7cZwF9bgsQ/34acIFe/eLDMvR6Zvgio8fnhBovWODe4G4FfvE2vx18e3/nZuYelk+jistIyhjiNBO6srpdLk+pSD8fUkYixihxOZW68MIZMqgO/hURkhIelawEO06aHh6drgaDG4ao/Cz5X89tNVTtudDXChHjimGn3mx/jJHTcgzAj9njDwpga3zbCqG5CVrQZuhnYE9jmeNYBFkrn+5lj+R3OOrYDfrLNuBqeRJvrpB0dkIVmhds74rut/Y8gbKVZ4BBADIjGn6PnEfVaShc5i7yAJClEW4wmQ8AnRDP4fAZRW1ziwKybP10gYIQHJElaYjEhgtCFSd8Wx89SgH9yj5yC6cUkKzAp1/gCkQtTILh2GCgwyb0pGEUyZoIejZ/wOsCHc56EXr4OzqBk0uMGhaqmQg65j2OEZudHS6npLu5VtS6Jf4Y5GCRbfv6Zs/APOubD7tXUVOzExHk6iopNnWhav5PvLZXhTi5FHRXDzi+IxpkLHHoce9gi5x4HuXyBqgFmDQ/jYhcujG2sgNJGL/L43QpWHiO7ybAPK2og48LKqwA2o4NkkkBAkgtJRIGcKBQS5QIiSbihswpzO4AbcJt7O5AbeHsksDLwcnhc+OW4HUz3pS2ImEvh34Rr5OIGsLGztQtdgviFFC3XlEU0lUfK1dEUMrGTDOLlKu5CbJmMD6m5+AWUzs4owNoReChwCNOnDwcaY4auSnVuTTijm85djzO42W2FRlzTLhhwevDzV7diFzuF92V3f5/fcJ9rcEuDaj7jvNc9SOGWadPoaidwM7AL3Ddu6Nk3ddZjzGV/Zta+mb1jYyZXw7vWpwo3ozv3Htctc0ZFyRyMgG97YUhOcFZXV1ZwTshPAoAF9usPyfmJsDsrNb0BQwmkYSj4yHCIR+/KTHuUiRelAUF2HbOAaStXWm6BiqD3W9sxuNkMkcSGahR7vncndKtdG+0Z42B1EGQ4T8Or4Tmnd7ArAv3lGOA7fXNKh12hrS73j79koXHeOSb8oqmHY8MkKphLzFMRZGPDETKCSg5SEk4pt85xRFDigJahEcOmZecwGOxDsQxum6FlPwzEPl4F64uLDSjDUOjRVlSTyo5oQlsu/PJPX4mF/sFv8xP7bcM/plpRsQSen8dhiR/P/XvgANPUXszzY7vt/d0nGHVW6xxuYkKpnCssFAiAZuJccee+8LP2/cwjv/GlC3j2w9cQBfoQXMj2JW7M3J12aZPT1ukIEc7qrnHVzFhnTHpOCEW07vjQfgZeYn/npfjehwkjXzB5zn3fZIL2TwwmzdbeyV73RTnIJtB0HvTMDAVrYlE+LssGRE0Aj9/L2FIy7zbOjn9FoZRvH9EDG9Qe0AOQVXP4abuhJgfoePBCbuMcHexLkQi9OpUDPLRIsTZ+WB+/fN6QTzIlhExyMPo1xpZlaso4599c8o0hzTP6NnDKMjPLOA2+xnl1Aws7k32G5i2Pr6rkrnAY8pFSVvTRIA9inkSiJblBdtCUOljAD9a4vHO165/SBPNPMpKGtCVFZsgjBdkcdxsbGdkXtG/t2j3ytmP/mjVjmOOlCNHatSJX8ciI2nXzDeDi5E/X/3ufVfXscOKdzzcS9J/++vOjPnE76ckg7oc3q6gzlJKigmsXI4s/P4M/fLn79KM+48KNfP3vpO2bKTPUVW9+wA3WzP8zNHT3kGzvIzjt9c+2p445HcPOMDuO3aKWThqtve4mLiW/wCqROCNPXLbdUE9JA6Y5E8PK6JkzXnYfm7sePuY+M3FDq+GgKPSie+oRPJ3AmFAD8Vg+RHtBs7+3Ej9XXJxUNNc7Owt6Z7waTdPXrHPXwNboklfRZxJ0WBN22HEgRfNXeBIeBl4HMn8hZIFnZFXzY+oEMIiFLehJmEnMT04uIJUAHE7MZ8KTXy52HegiZEZboQuwZXG0o4k2dBsRinqoTBqqHMzkQdf7cx33JInjQLGnHog5awfzEB3XIT5QqwaloYfK/NQnQyVJrT8eKlW5qA6X/lhiJKHZ0HaxiJVg7tyVTbC+u1uPnkQbGxufPjOiLGi91aqHAW2KFygzfus4kJJwJQOyQm+BD4TdXtluA1nRFsgGnkRbe4qD8v/g/V7Ak33kfcrAng7Qx+yyBTHzn8fAegoJOKrL6XZqggjP/y51jYAniiBS29HL1Y6ARNHDMXb4kDujd8ZeTT9A2xZsOzEyQU2a8RdqajKF/jNJ1ImRE9sKbNEPpl+NUWQVggc8G3vxgd4+sUwlJghx8sYVAWJHxXiV1473X36Yz/TN6nvBXlXkovEvdvbs8u864qzx11wfgLVQ1w8fnRUuktL6jfzshSqyghwpipJokvNTxTRCRVtikZfNcR93sIuYoVgqDpEQqxageyg9VF9HxP9z0D5kXypmBLhBT0z4LeAfPBX/D9gyD9DIiIyMiEgqRRpM45XYfigtpiWk/ZZEzonXhUemp7PDm640qR2///PB4Jm3kfn4g4l3iXdz7DwbHbIML4gvEk97F0Vp4GUUyMhNenGhm0Uff19+Dp9wZLMY51IrAvCOxuWR8ogIOa2PFiGTR0Yup8kiI2S05cNALougkY9blkcpIiMVUQZcUxEZhSmUkaHH30TqWPUZEcsjQ5ERHtkXmWEcErk8Qn+qDxy7VQzPS3TjLIDcbFgxC6LWOfpI7XzXO9LWI0qltmVHzlBPf4KcqliZmGv4TCouMmqZoJsuoOFzgpo46hnnDSmN92P9pXY0XZ+CcZvCzDZB18TWyu1iazbs5yTL7DgpsqwNa///n8kfmWN/R2p35x5MG0TwMmX2tGWO+p5lDsDXM2SwyuHUJqec+qCoxDe7EJIjJx9Drvi/yz/kqcjGFsc/zna8+OVAQupz5ezevSdWMlFt2Nj1zcKfQqYafl1WEpva4K+PsTcfevqjj4dS+vq/uks1spIaQLg1VPm3R5DGzvLz/sghw7GnHhk47Qu3+542k227+oMLf73S8dP76NY+J/evIyt/HlZEjv7hHXZFvEzBgTqNNsJm6ZKXKY7vZhYGBap/QAY5K7onojfFQdcRy2IGw5VyOhIRdiQl5zDKLaPDazAcxNTznGAzygw7TZE7VrL9t6iXz/wvss6illafqF6KOsu6Ceaa6GpalLpIVnVUEUu7APDMVELI1bTk9CvJd+OTufdk999gTViEsyXLkU99nFKSB/w/+Q/EOqcgniL7iDtK66yALDACskJvYDOEgCfhPv8BjnOKz/+Qn5BPEGejlM4A8C1+bWFZfNhJvHJnlPhcIOogV6Uq9Cti66LJZExKVc0PXEU5yNMIrMwcFrOO2A1GHrsiYxWnqgyTFMsmFcaMKBeUS1qDk/jIzu6deTcPBy3cDGZHL/I6piUxhv0S8wQ1iX7cWdSXvU5au2coU1w1bEZPwtXziFSkkw+tIWVVx1713D4FzB1RmKWdbm+5tnMpZzXMFZSevK5E5VynIQ94pq6QHEXIz+MfFmpSXgOr4iZYkX5Sl0TyKKRYpavew7QZbZVSe5CyHAwsC7wUEOd0CXnbKS5gHKPEhNscF8K8u7IC9BqeLGg/tsKxQpl7cNeu7IOF5Z+XBWtaNqpDWiE5ZIV0idsuH4GsKENrSxPKita3tupTUUHuSbuzuOGNLqIA35UuQoC1QYlvcmUGMAOdswIWDzuKNRFNPUDXD43CFkOahOVVMgo51vT+V8gC1/MiG3JzGyJ5P2ltX+N+Sm6WSpuT62HL10HIePCAHm1GGw7uN6Ktp45CFnTT/oN6tAWtP3BI33AqTwIdM0V5Kgyw1rSKtnM5rIfN6VvJM7Z8xTexsL5e2Cfg6l5hgxfVAGLqroXPX8VwyOpy1q3XAp0LSItFUESC8jnjPLLFducU1oR1LnFWCFmhqX4hLl4/WLnrcSpsmWaBr9SPQvNmDihEMDAFZm2wmtpaTYLm82c9HAdg/adPPo2aWs2x89ZpI9p4NejR+tr9XWWdHjxPR130bhhZKkSOjBhRxk2b9AdW7w+UBtgmxJTixnN5wYbYeCVeurQXV4AfCauMd3IuuCrxL6/ylcYkIG965RatvyNarZD68Q8tXPiW709ge6Sak1ggT5NXH8VTJpFF5K9XJkmZEFG9L224yPXnfK/5eJZbSLLGL4FRd14EOAqDBLbaT0LSoSQKxEEWWKI/gXmtyaHt5KpfNoD21g+S+PvQSSXTnZ4V9a+6MuKBHbvC947nfAeZRPodrRAn9lc+brdJiXIUrE7X1UnS0YJgSrAAjZ1InEDY8v01rF2maRbbay5sOswaNnt1Acv7oB8+G2YFLBp2F9aE3ekQ5QRAKXcB2glboF39VlgOT6ItsBxralgCWdHGrmUq0zYs6zKAwnjIgjYODCZn7HeBnTubUE0jrQFw6vpSYYu9GUobLKMvj07i/sLVd2y53snVyexAbArKeiHcs8rnkBVyVsJOkPk4bDanmdF+67yQ50IFMxxpjLaAt5EyKUYcUFERKMZItwg4srwiKUCK2UKYp5wWa8qe6TIi0sPC0iJkZwMEWGBPPvYc7cXgwPpLl3POHOBw/ezS7rCRhyGLSLx+y/zsQB7dvwJ8AW2FGpfa9ePw670hmvy8zp701EhvaX4f5p7MFjO6COP0rr4kkLK8K2qcYJSwbdZARnEYkXswhkxcQglvaw0e8FX9MLCfTgO/h6IQFwrPF8ZeTvk7JPje8FqXDU8ClPcwBeODWeFZg/njK6AMe7J/9jUnhHssRGDG1133q/++iiNbDoxObPOw4soetQe3lz6y4paclSVqXgDjiLv6BcRdOiOiUPUeqYj+VA99KEV4PGaQIjJQ0z3bv3imh5UmUTksspQaWoaS3a+Wo0vDqJJO9vaRw5LQDM/21x7pVIOISo6F6Mov419XE7eit7L6v15EqJBekArx/GtbyFF05qbdafyLwg8BCAyPssfTuMJt/nMH95Ct7Ib9nAc192tSNjSwyNM/WbjC2wqn8WWP1qzaDGbMs4voXTopXxe1qCt++vS4mis6fcmKibNvFt5dyxn/83z+/M+AN28+7oJW7qp2dZaF+mfe+DRAVnUOVFSH+4RXV5gb3ZbGbpsrCuJ94gsqBpeoyAOfbmT6hxY4q1zlroC1NfgY1oR1pkyNnd9lf7inF2SFj86Aji2B9yLzGyTjSsi5/PHUkj8yAERaFV6Ba2nBKfDKM3gVTt7aek8TnyHQeIu8So2XL4CmiqAFnlmVOnYui6V67ROWztCaynpiDxSydcygjlXZE9WXpI52dpdX82B9T7cRzInvjzBiWDnCGQJAjh68CoC5VqBU+Sp4f8R6N7NSkctk5bJ1TGE2VqaWDQP5TAjxTB17tRLW7917uwwOrffxNd6yfVSqUSXRR4P2BR3F7ldL7FGsKdwODZshaAuxqEb81n4mXCmjy2ALdCYIPTXWBFj9IUenTKmYFC1BgidhRwGZYfJXGfD9KUUz1E/KKJuenxTYyxnmDHF6wJxAW4g6XGur8sTmFkWB+DOFP0RBUAqKFgJWTaXJMssUFtP1tOAiSwd+q2OUrMGuWA/rxy9d80xPrWtiPVcjEmm4+n1nJr1mfNzYXzJEmcTfvYs/bCufqfepwMTc4G8wdx3QXuy7kVZcF/t9fay1b7jY8BpoWVmL+jqj6ktV954lDyqzYCSGl57ckixtXiMQpYOenkehL/QMCoImoDbHHwQ988TQvV5oQMM0+DYkAm9/1elWHOo7tFGr++Vt39vHWu3Gjf4mnfbXt2JjOhASecSvTMJNRAGRzwsRkjYJSPyQ30V3SrCJJAzh8YkCkudgBmSB8ZAZ3gObITxsQRn12DHM3o6xoAkYUUecJdl1M3zcetXzgrLquA0GWvxGJPvICKwbdbqLLWp84ESZz9L0e5aq4/DWeVsrA7l1veQAdmxqyFZAz2EzvL/OMTcZ9icSRpfCjADEpL2OVIujxtOp6kjyjHxPtMV6tg2hd+Z3O38Pp4dzvNmBdQW/Wf09f5qe/t6ctsG0AavbF/HLANY9V6brPO/ed78GsmUKZjPLcpgGzj5oqkkCEpEvIwoERFkAomVEvoC0Xr0CgHRUTn42nb0g8nVj6lFMcU5KCMzlFgC99gDnJITQDl0agN3AymEysssYVmtp291iNitLdiWz3Lh8NuCKXr+F8AOh5FWm5x1OHTICpgHqpPPQweQjLHVm1lx2LLKyRKwj5GAi2iYda/K4q4GaMjOZzf9z9e63QHrIDGMgK0o72e/n+mS5h01WZhNShyaD8YveBeav08zzz0X7kvOrbP+3XzlAXPF/hQLxi9N4gHhkt2AgOsx6BYAONkjv7BtAHHZHyo3tpEtKs50xIYY0zj6tr5N3mqi45TAaKW/c9sJmftIlF3EnOvSlHbbHzgui52gHm9W5fsavaeiAQ29YHnpuOy6vmm0wMtGztmGvZQh1rE3uQ2ThRYn8ZdFOBMhrPvRXDbZxueKHXdBDHE02L1AG23mXJbR1+8dj6IE+VNq8rQBpXIG8LNuagG7fg5CBp2hojHSRBlpteX7RSSKtdM1HnqRelDMNvqSCRB7CL0gJASCAasiHqBq9BDzISF1KFyUgwhWBp1SeF0AIqpBeuFQHh99x1a6S0B1XFF5kO47vIcIGUskDP2sDOBikMT/K6ET807aCn0TRBHyOJxHTSl1CispvUXHeFnwdLShRemqnyvEzSCTg9JHk0eCzgZP2Z9l6V9Bz/0Etz17+t9MPGhU/1w6CNM6QDP8JkH8vDwLWZv/+dwJe8gCcP5CYk6WbgVH2nJeMCl/ZQXeXAv/dUd2UuU74GTVyccPsD6e4aneKNAd0Krg4Jet5OKVoHk/puiTeeM9MDTuWKuDE0s0pZmzvKW7oF4tU8DNOUPDwlGzpNS5Q8O2Urn3GObuek8x3WcKEkHFoutJQz9GoJKPH+h2teEhhgd+YFmJ5c2qP56u/YcTEIsNyseecTWMSh+artXXoPTdT4hH73Lqcp8fDwZBMtz2Hq08JIePQdMW9KPUcTfKMf/q+oxUPiZL+HUoLwWNvTu2Rgv5GIlWbkqiXiz1nQzSNg5OBg8d/fRfR70LcTOThRuxz61LI0+PBSGZoSSueD4PBHYCuvX5F47bYIShQGBzxL+fQ/yNiqqHjVNpYcun/J/LvpCirumm70Xgync0Xy9V6s93tD8fT+XK93d0/PD49v7y+vX/wBUKROEkiTU5JTUvPkMkVSpVak5mVnYPClb1Ai2Nxwg8dG4i2Ggl2oBNtRdoontQBdcDVExrRg1QrEDv68EtHwLujXThwB1GTGQhiAtnq8SinjE6o9mgypMTr2+V4Q1MRV4yZ+Ij3h5SIgcjRJoHnYp2JMwAeld2yrDILEvWY+NyHj7kwck303o2YQqh2IB6kfJO319aAsXAUIvFXdkudUOHiDMwZKNpB0HD0baTyQQ1CvcVi8udS5eA9tfJSsGShp3cdVcgKz1SXjDgyI+8CBahKEgq5h7iNRrqZ5wd1qh/A0wRF5eQ6BHzfAQ2iyhGJ51VBHFnCPVerC9LVHKd5vMopp65MspuQIGryYgLaJIbwrIjxAGdMan54TuB5KBVdRtUV+6L9KI2zaIyg+7EZ6N05rtg28oTHqd+8Ul7kfcKA8U4cvt0Ld3vWQt09M3XBVznge2R6GClzu1AxFpZFeMtbk4J1uYSlhwhUoDW7Ix1Bnw70xLWKr+iklhKy4TbTWWiF2JeFoIPkMfDAVY+T+mFieidqey+pRRZMrywmjM0uSfdHU3pIuW5ukGOlrt7GKJ4uqAxGj6QdKSiOA0rdhKWgdvBxAwAA') format('woff2'),
+ url('//at.alicdn.com/t/font_1731457_sjkajh9fwk.woff?t=1652447277778') format('woff'),
+ url('//at.alicdn.com/t/font_1731457_sjkajh9fwk.ttf?t=1652447277778') format('truetype'),
+ url('//at.alicdn.com/t/font_1731457_sjkajh9fwk.svg?t=1652447277778#iconfont') format('svg');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icondaishouhuo:before {
+ content: "\e622";
+}
+
+.iconbofang:before {
+ content: "\e627";
+}
+
+.iconjiazai11:before {
+ content: "\e6e9";
+}
+
+.iconweixin1:before {
+ content: "\e607";
+}
+
+.iconhaibao:before {
+ content: "\e63f";
+}
+
+.iconkefu-011:before {
+ content: "\e773";
+}
+
+.iconguanbi:before {
+ content: "\e60b";
+}
+
+.icontubiaozhizuomoban-11:before {
+ content: "\e60d";
+}
+
+.iconmianxing-05:before {
+ content: "\e637";
+}
+
+.iconfanhui:before {
+ content: "\e601";
+}
+
+.iconleftarrow:before {
+ content: "\e602";
+}
+
+.iconchangjianwenti-01:before {
+ content: "\e77e";
+}
+
+.iconfenxiaozhongxin-01:before {
+ content: "\e77d";
+}
+
+.iconqianbao-01:before {
+ content: "\e77c";
+}
+
+.icongouwuquan-02-01:before {
+ content: "\e77a";
+}
+
+.icongouwuquan-01:before {
+ content: "\e77b";
+}
+
+.iconshangpin-01:before {
+ content: "\e76f";
+}
+
+.iconxiangji-01:before {
+ content: "\e76e";
+}
+
+.iconaixin-01:before {
+ content: "\e76d";
+}
+
+.iconaixin:before {
+ content: "\e76c";
+}
+
+.icondaishenyongjin-01:before {
+ content: "\e76a";
+}
+
+.iconfenxiaohuiyuan-01:before {
+ content: "\e768";
+}
+
+.iconfenxiaodingdan-01:before {
+ content: "\e767";
+}
+
+.iconmingxi:before {
+ content: "\e766";
+}
+
+.iconqiandao:before {
+ content: "\e751";
+}
+
+.iconxuanzhong:before {
+ content: "\e62a";
+}
+
+.iconhaibao1:before {
+ content: "\e600";
+}
+
+.iconshouhoutuikuan:before {
+ content: "\e715";
+}
+
+.iconyiguoqi:before {
+ content: "\e70a";
+}
+
+.iconyishiyong:before {
+ content: "\e70b";
+}
+
+.iconmima:before {
+ content: "\e708";
+}
+
+.iconyanzheng:before {
+ content: "\e709";
+}
+
+.iconshouji:before {
+ content: "\e707";
+}
+
+.iconqq:before {
+ content: "\e702";
+}
+
+.iconweixin:before {
+ content: "\e703";
+}
+
+.iconalipay:before {
+ content: "\e704";
+}
+
+.icontoutiao:before {
+ content: "\e705";
+}
+
+.iconbaidu:before {
+ content: "\e706";
+}
+
+.iconzhiding:before {
+ content: "\e701";
+}
+
+.iconxiangji:before {
+ content: "\e700";
+}
+
+.iconxuanzhuan:before {
+ content: "\e6ff";
+}
+
+.iconjiantou02:before {
+ content: "\e6fb";
+}
+
+.iconjiantou:before {
+ content: "\e6fa";
+}
+
+.icondingdan:before {
+ content: "\e6f9";
+}
+
+.iconshengxu:before {
+ content: "\e6f7";
+}
+
+.iconjiangxu:before {
+ content: "\e6f8";
+}
+
+.iconpaixujiantou:before {
+ content: "\e6f5";
+}
+
+.iconyixiaoshou:before {
+ content: "\e6f4";
+}
+
+.iconxiangqing:before {
+ content: "\e6f3";
+}
+
+.iconyouhui:before {
+ content: "\e6f2";
+}
+
+.iconfenxiang:before {
+ content: "\e6f0";
+}
+
+.iconweixuanzhongzhuangtai:before {
+ content: "\e6ed";
+}
+
+.iconxuanzhongzhuangtai:before {
+ content: "\e6ee";
+}
+
+.iconpailie02:before {
+ content: "\e6ec";
+}
+
+.iconpailie:before {
+ content: "\e6eb";
+}
+
+.iconhuiyuan:before {
+ content: "\e6ea";
+}
+
+.iconremen:before {
+ content: "\e6e8";
+}
+
+.iconjian:before {
+ content: "\e6e7";
+}
+
+.iconjia:before {
+ content: "\e6e0";
+}
+
+.iconzuji:before {
+ content: "\e6df";
+}
+
+.iconbianji-01:before {
+ content: "\e6e3";
+}
+
+.iconjiantou-01:before {
+ content: "\e6e4";
+}
+
+.iconlajitong-01:before {
+ content: "\e6e5";
+}
+
+.iconsousuo-01:before {
+ content: "\e6e6";
+}
+
+.iconkefu-01:before {
+ content: "\e6e2";
+}
+
+.iconshoucang-01:before {
+ content: "\e6e1";
+}
+
+.iconshezhi-:before {
+ content: "\e6dc";
+}
+
+.iconshoucang-:before {
+ content: "\e6dd";
+}
+
+.icondizhi-:before {
+ content: "\e6de";
+}
+
+.iconquanbudingdan-:before {
+ content: "\e6d6";
+}
+
+.icondaishouhuo-:before {
+ content: "\e6d7";
+}
+
+.iconyiwancheng-:before {
+ content: "\e6d8";
+}
+
+.icondaifahuo-:before {
+ content: "\e6d9";
+}
+
+.icondaifukuan-:before {
+ content: "\e6da";
+}
+
+.icondaipingjia-:before {
+ content: "\e6db";
+}
+
+.iconuser:before {
+ content: "\e716";
+}
+
+.icongerenzhongxin-:before {
+ content: "\e6d4";
+}
+
+.icongerenzhongxin-1:before {
+ content: "\e6d5";
+}
+
+.iconcart:before {
+ content: "\e717";
+}
+
+.icongouwuche-:before {
+ content: "\e6d2";
+}
+
+.icongouwuche-1:before {
+ content: "\e6d3";
+}
+
+.iconlive:before {
+ content: "\e718";
+}
+
+.iconfenlei-:before {
+ content: "\e6d0";
+}
+
+.iconfenlei-1:before {
+ content: "\e6d1";
+}
+
+.iconhome:before {
+ content: "\e719";
+}
+
+.iconshouye-:before {
+ content: "\e6ce";
+}
+
+.iconshouye-1:before {
+ content: "\e6cf";
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-copyright/use-copyright.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-copyright/use-copyright.vue
new file mode 100644
index 0000000..5654e94
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-copyright/use-copyright.vue
@@ -0,0 +1,54 @@
+<template>
+ <view>
+ <!-- #ifndef MP-TOUTIAO -->
+ <view class="use-copyright dflex-c padding-lr w-full" @click="to">
+ <image class="headimg dflex-c margin-right-sm" src="/static/image/favicon.png"></image>
+ <view class="dflex fs-xs">
+ <text>{{ appslogan }}</text>
+ </view>
+ </view>
+ <!-- #endif -->
+ </view>
+</template>
+
+<script>
+export default {
+ props: {
+
+ },
+ computed: {
+ appslogan() {
+ return this.$config.appslogan;
+ }
+ },
+ data() {
+ return {
+
+ };
+ },
+ methods: {
+ to() {
+ this.$emit('to', {
+ type: 'to'
+ });
+ }
+ }
+};
+</script>
+
+<style lang="scss">
+.use-copyright {
+ height: 160rpx;
+}
+
+.use-copyright {
+ .headimg {
+ width: 34rpx;
+ height: 34rpx;
+ }
+
+ text {
+ color: #c0c0c0;
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-empty/use-empty.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-empty/use-empty.vue
new file mode 100644
index 0000000..df667ae
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-empty/use-empty.vue
@@ -0,0 +1,109 @@
+<template>
+ <view v-if="dtype" class="use-empty-container tac" :class="eStyle == 'round' ? 'padding-sm' : ''" :style="{ height: height }">
+ <view class="use-empty h-full dflex-c dflex-flow-c" :class="eStyle == 'round' ? 'round border-radius bg-main' : ''">
+ <image v-if="imgurl" :src="imgurl"></image>
+ <view v-if="tip" class="title padding-sm">{{tip}}</view>
+ <view v-if="btnTip" class="no-border use-btn" @click="to">{{btnTip}}</view>
+ </view>
+ </view>
+</template>
+
+<script>
+export default {
+ props: {
+ eStyle: {
+ type: String,
+ default: 'square'
+ },
+ eType: {
+ type: String,
+ default: 'other'
+ },
+ tip: {
+ type: String,
+ default: '暂无数据'
+ },
+ btnTip: {
+ type: [String, Boolean],
+ default: '去逛逛'
+ },
+ btnGoto: {
+ type: String,
+ default: '/pages/tabbar/home'
+ },
+ auto: {
+ type: Boolean,
+ default: !0
+ },
+ height: {
+ type: String,
+ default: '100vh'
+ }
+ },
+ computed: {
+ dtype: {
+ get(){
+ console.log('get dtype', arguments);
+ let imgobj = this.imgs.find(x => x.type == this.eType);
+ this.imgurl = imgobj ? imgobj.url : this.imgurl_dft;
+ return this.eType
+ },
+ set(val){
+ console.log('set dtype', arguments);
+ }
+ }
+ },
+ data() {
+ return {
+ imgurl_dft: '/static/images/empty/empty.jpg',
+ imgurl: '',
+ imgs: [
+ { type: 'cart', url: '/static/images/empty/empty.jpg' },
+ { type: 'search', url: '/static/images/empty/search.jpg' },
+ { type: 'other', url: '/static/images/empty/empty.jpg' }
+ ]
+ };
+ },
+ methods: {
+ to() {
+ this.$emit('goto', {
+ type: 'goto'
+ });
+
+ if (this.auto) {
+ // 跳转指定页
+ uni.switchTab({
+ url: this.btnGoto
+ })
+ }
+ }
+ }
+};
+</script>
+
+<style lang="scss">
+.use-empty-container{
+ .use-empty {
+ .round {
+ padding: 25% 50rpx;
+
+ button {
+ width: 220rpx;
+ }
+ }
+ image {
+ width: 160rpx;
+ height: 160rpx;
+ }
+
+ .title {
+ color: #c0c0c0;
+ }
+
+ .use-btn {
+ font-size: $font-base + 2upx;
+ display: inline-block;
+ }
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-header/use-header.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-header/use-header.vue
new file mode 100644
index 0000000..68e1534
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-header/use-header.vue
@@ -0,0 +1,80 @@
+<template>
+ <view>
+ <view class="use-header dflex padding-lr-sm w-full" :class="{ 'fixed': fixed, 'bg-main': type == 'white', 'bg-drak': type == 'gray' }">
+ <!-- 头部组件 -->
+ <view class="use-search dflex-b border-radius-lg padding-lr w-full use-hover" :class="{ 'bg-drak': type == 'white', 'bg-main': type == 'gray' }" @click="search">
+ <text>{{ searchTip }}</text>
+ <view class="iconfont iconsousuo-01"></view>
+ </view>
+ </view>
+
+ <!-- 头部组件占位符 -->
+ <view v-if="fixed && placeholder" class="use-header-placeholder"></view>
+ </view>
+</template>
+
+<script>
+export default {
+ props: {
+ fixed: {
+ type: [Number, Boolean],
+ default: false
+ },
+ placeholder: {
+ type: [Number, Boolean],
+ default: !0
+ },
+ searchAuto: {
+ type: [Number, Boolean],
+ default: !0
+ },
+ searchTip: {
+ type: String,
+ default: '搜索关键字'
+ },
+ type: {
+ type: String,
+ default: 'white'
+ }
+ },
+ data() {
+ return {};
+ },
+ methods: {
+ search() {
+ this.$emit('search', {
+ type: 'search'
+ });
+
+ if (this.searchAuto) {
+ // 跳转搜索页
+ this.$navigator.tosearch();
+ }
+ }
+ }
+};
+</script>
+
+<style lang="scss">
+.use-header-placeholder {
+ height: 100rpx;
+}
+
+.use-header {
+ height: 100rpx;
+}
+
+.use-search {
+ height: 70rpx;
+ line-height: 70rpx;
+
+ text {
+ color: #c0c0c0;
+ }
+
+ .iconfont {
+ font-size: $font-base + 6upx;
+ color: #c0c0c0;
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-hot-goods/use-hot-goods.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-hot-goods/use-hot-goods.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-hot-goods/use-hot-goods.vue
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-list-title/use-list-title.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-list-title/use-list-title.vue
new file mode 100644
index 0000000..dd1dc33
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-list-title/use-list-title.vue
@@ -0,0 +1,90 @@
+<template>
+ <view>
+ <!-- 列表标题 -->
+ <view class="use-list-title dflex-b padding-lr w-full bg-main" :class="type == 'round' ? 'border-radius' : ''" @click="goto">
+ <view class="dflex">
+ <view v-if="iconfont && iconfont != ' '" class="iconfont __left margin-right-sm" :class="iconfont" :style="{ color: color }"></view>
+ <text :style="{fontSize: size + 'rpx', fontWeight: fwt }">{{ title }}</text>
+ </view>
+ <view class="dflex">
+ <text v-if="tip" class="tip margin-right-xs">{{tip}}</text>
+ <view class="iconfont fs-sm" :class="rightIcon" :style="{ color: rightColor }"></view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+export default {
+ props: {
+ type: {
+ type: String,
+ default: 'square'
+ },
+ title: {
+ type: String,
+ default: '列表标题'
+ },
+ size: {
+ type: String,
+ default: '28'
+ },
+ fwt: {
+ type: String,
+ default: 'normal'
+ },
+ tip: {
+ type: [String, Number],
+ default: ''
+ },
+ iconfont: {
+ type: String,
+ default: 'icondaifahuo-'
+ },
+ color: {
+ type: String,
+ default: '#C0C4CC'
+ },
+ rightIcon: {
+ type: String,
+ default: 'iconjiantou-01'
+ },
+ rightColor: {
+ type: String,
+ default: '#c0c0c0'
+ }
+ },
+ data() {
+ return {};
+ },
+ methods: {
+ goto() {
+ console.log('goto');
+ this.$emit('goto', {
+ type: 'goto'
+ });
+ }
+ }
+};
+</script>
+
+<style lang="scss">
+.use-list-title {
+ height: 100rpx;
+ line-height: 100rpx;
+}
+.use-list-title {
+ .__left{
+ font-size: $font-lg + 8upx;
+ }
+
+ .iconfont {
+ color: #c0c0c0;
+ }
+
+ .tip {
+ font-size: $font-sm;
+ color: #c0c0c0;
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-mask/use-mask.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-mask/use-mask.vue
new file mode 100644
index 0000000..dad5c3f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-mask/use-mask.vue
@@ -0,0 +1,76 @@
+<template>
+ <view class="use-mask pos-f pos-full overflow-hidden" :class="[show ? 'use-mask-show' : '']" :style="[maskStyle]" @touchmove.stop.prevent @tap="click" @contextmenu.prevent>
+ <slot />
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ // 是否显示遮罩
+ show: {
+ type: Boolean,
+ default: false
+ },
+ // 层级z-index
+ zIndex: {
+ type: [Number, String],
+ default: '10000'
+ },
+ // 遮罩的动画样式, 是否使用使用zoom进行scale进行缩放
+ zoom: {
+ type: Boolean,
+ default: true
+ },
+ // 遮罩的过渡时间,单位为ms
+ duration: {
+ type: [Number, String],
+ default: 300
+ },
+ // 是否可以通过点击遮罩进行关闭
+ maskClickAble: {
+ type: Boolean,
+ default: true
+ }
+ },
+ computed: {
+ maskStyle() {
+ let style = {
+ transition: `all ${this.duration / 1000}s ease-in-out`,
+ zIndex: this.zIndex,
+ };
+ if (this.show) {
+ style.zIndex = this.zIndex;
+ } else {
+ style.zIndex = -1;
+ }
+ // 缩放
+ if (this.zoom) {
+ style.transform = 'scale(1.2, 1.2)';
+ }
+
+ return style;
+ }
+ },
+ methods: {
+ click() {
+ if (this.maskClickAble) {
+ this.$emit('click');
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ .use-mask {
+ opacity: 0;
+ background-color: rgba(0, 0, 0, 0.6);
+ }
+
+ .use-mask-show {
+ opacity: 1;
+ visibility: visible;
+ transform: scale(1);
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-navbar/use-navbar.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-navbar/use-navbar.vue
new file mode 100644
index 0000000..b215306
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-navbar/use-navbar.vue
@@ -0,0 +1,175 @@
+<template>
+ <!-- 默认使用系统头部,如需开启自定义头部配置
+ 1. pages.json -> globalStyle -> navigationStyle: custom
+ 2. common -> config -> navbar: custom
+ -->
+ <view v-if="iShow">
+ <view class="use-navbar w-full pos-t-full" style="padding-bottom: 6px;" :style="{ 'background': bgColor, 'opacity': bgOpacity }" :class="{ 'fixed': fixed, 'bg-main': type == 'white', 'bg-drak': type == 'gray' }">
+ <view class="w-full" :style="{ height: menuButtonInfo.top + 'px' }"></view>
+
+ <!-- 头部导航 -->
+ <view class="dflex-b border-radius-lg padding-lr w-full use-hover" :style="{ height: navbarTitleHeight + 'px' }">
+ <view class="wpre-30 dflex">
+ <view v-if="back" class="iconfont fwbd" :class="leftIconfont" @click="toback"></view>
+ <block v-else>
+ <slot name="left" />
+ </block>
+ </view>
+ <view>
+ <block v-if="type == 'custom'">
+ <slot />
+ </block>
+ <block v-else>
+ <text class="fwbd fs">{{ apptitle }}</text>
+ </block>
+ </view>
+ <view class="wpre-30">
+ <slot name="right" />
+ </view>
+ </view>
+ </view>
+
+ <!-- 头部组件占位符 -->
+ <view v-if="fixed && placeholder" :style="{ height: navbarHeight + 'px' }"></view>
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ fixed: {
+ type: [Number, Boolean],
+ default: !0
+ },
+ placeholder: {
+ type: [Number, Boolean],
+ default: !0
+ },
+ back: {
+ type: Boolean,
+ default: !0
+ },
+ title: {
+ type: String,
+ default: ''
+ },
+ type: {
+ type: String,
+ default: 'gray'
+ },
+ leftIcon: {
+ type: String,
+ default: 'iconfanhui'
+ },
+ bgColor: {
+ type: String,
+ default: '#f5f5f5'
+ },
+ bgOpacity: {
+ type: Number,
+ default: .97
+ },
+ show: {
+ type: Boolean,
+ default: null
+ }
+ },
+ data() {
+ return {
+ apptitle: ''
+ };
+ },
+ watch: {
+ title (nv, ov) {
+ this.apptitle = nv;
+ }
+ },
+ computed: {
+ menuButtonInfo() {
+ let menuButtonInfo = { top: 6 };
+ // #ifdef MP-WEIXIN
+ menuButtonInfo = uni.getMenuButtonBoundingClientRect();
+ console.log('menuButtonInfo', menuButtonInfo);
+ // #endif
+
+ // #ifdef H5-WEIXIN
+ menuButtonInfo.top = 6;
+ // #endif
+
+ return menuButtonInfo;
+ },
+ navbarTitleHeight() {
+
+ return 32;
+ },
+ navbarHeight() {
+ if (this.iShow) {
+ return this.menuButtonInfo.top + this.navbarTitleHeight + 6;
+ }
+
+ return 0;
+ },
+ leftIconfont() {
+ const pageArrs = getCurrentPages();
+
+ if (!pageArrs.length) return '';
+
+ if (pageArrs[pageArrs.length - 1].route.indexOf('/tabbar/') !== -1) {
+ return '';
+ }
+
+ if (pageArrs.length < 2) {
+ return 'iconshouye- fs-xl';
+ }
+
+ return this.leftIcon
+ },
+ config() {
+ return this.$config;
+ },
+ iShow() {
+ return this.show !== null ? this.show : this.config.navbar == 'custom';
+ }
+ },
+ methods: {
+ toback() {
+ if (getCurrentPages().length < 2) {
+ this.$navigator.tohome();
+ return;
+ }
+
+ uni.navigateBack({
+ delta: 1
+ });
+ },
+ },
+ created() {
+ this.apptitle = "aa";
+ }
+ };
+</script>
+
+<style lang="scss">
+ .use-navbar-placeholder {
+ min-height: 44px;
+ }
+
+ .use-navbar {
+ min-height: 44px;
+ z-index: 99999;
+ }
+
+ .use-search {
+ height: 70rpx;
+ line-height: 70rpx;
+
+ text {
+ color: #c0c0c0;
+ }
+
+ .iconfont {
+ font-size: $font-base + 6upx;
+ color: #c0c0c0;
+ }
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-number-box/use-number-box.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-number-box/use-number-box.vue
new file mode 100644
index 0000000..a99c179
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-number-box/use-number-box.vue
@@ -0,0 +1,210 @@
+<template>
+ <view class="use-numbox pos-a dflex-c border-radius-big" :class="direction">
+ <view class="use-numbox-minus pos-r tac h-full"
+ @tap.stop="_calcValue('subtract')"
+ >
+ <text class="iconfont iconjian fs-sm" :class="minDisabled?'use-numbox-disabled': ''" ></text>
+ </view>
+ <input
+ class="use-numbox-value pos-r tac"
+ type="number"
+ :disabled="disabled"
+ :value="inputValue"
+
+ @blur="_onBlur"
+ >
+ <view
+ class="use-numbox-plus pos-r tac h-full"
+ @tap.stop="_calcValue('add')"
+ >
+ <text class="iconfont iconjia fs-sm" :class="maxDisabled?'use-numbox-disabled': ''" ></text>
+ </view>
+ </view>
+</template>
+<script>
+ export default {
+ props: {
+ isMax: {
+ type: Boolean,
+ default: false
+ },
+ isMin: {
+ type: Boolean,
+ default: false
+ },
+ index: {
+ type: Number,
+ default: 0
+ },
+ value: {
+ type: Number,
+ default: 0
+ },
+ min: {
+ type: Number,
+ default: -Infinity
+ },
+ max: {
+ type: Number,
+ default: Infinity
+ },
+ step: {
+ type: Number,
+ default: 1
+ },
+ disabled: {
+ type: Boolean,
+ default: false
+ },
+ direction: {
+ type: String,
+ default: 'left'
+ }
+ },
+ data() {
+ return {
+ inputValue: 0,
+ minDisabled: false,
+ maxDisabled: false
+ }
+ },
+ created(){
+ this.inputValue = this.value;
+ this.maxDisabled = this.isMax;
+ this.minDisabled = this.isMin;
+ },
+ computed: {
+
+ },
+ watch: {
+ value(nVal, oVal) {
+ this.inputValue = nVal;
+ },
+ inputValue(nVal, oVal) {
+ }
+ },
+ methods: {
+ _calcValue(type) {
+ const scale = this._getDecimalScale();
+ let value = this.inputValue * scale;
+ let newValue = 0;
+ let step = this.step * scale;
+
+ if(type === 'subtract'){
+ newValue = value - step;
+ if (newValue <= this.min){
+ this.minDisabled = true;
+ }
+ if(newValue < this.min){
+ newValue = this.min
+ }
+ if(newValue < this.max && this.maxDisabled === true){
+ this.maxDisabled = false;
+ }
+ } else if(type === 'add'){
+ newValue = value + step;
+ if (newValue >= this.max){
+ this.maxDisabled = true;
+ }
+ if(newValue > this.max){
+ newValue = this.max
+ }
+ if(newValue > this.min && this.minDisabled === true){
+ this.minDisabled = false;
+ }
+ }
+ if(newValue === value){
+ return;
+ }
+ this.inputValue = newValue / scale;
+ this.onChange();
+ },
+ _getDecimalScale() {
+ let scale = 1;
+ // 浮点型
+ if (~~this.step !== this.step) {
+ scale = Math.pow(10, (this.step + '').split('.')[1].length);
+ }
+ return scale;
+ },
+ _onBlur(event) {
+ console.log('_onBlur', event);
+ let value = event.detail.value;
+ if (!value) {
+ this.inputValue = 0;
+ this.onChange();
+ return
+ }
+ value = +value;
+ if (value > this.max) {
+ value = this.max;
+ } else if (value < this.min) {
+ value = this.min
+ }
+
+ this.inputValue = 0;
+ this.$nextTick(() => {
+ this.inputValue = value;
+ this.onChange();
+ })
+ },
+ onChange() {
+ const data = {
+ number: this.inputValue,
+ index: this.index
+ }
+ this.$emit('eventChange', data);
+ }
+ }
+ }
+</script>
+<style>
+ .use-numbox {
+ position:absolute;
+ background:#f5f5f5;
+ }
+
+ .use-numbox.left{
+ left: 30rpx;
+ bottom: 0;
+ }
+ .use-numbox.right{
+ right: 0;
+ bottom: 0;
+ }
+
+ .use-numbox-minus,
+ .use-numbox-plus {
+ margin: 0;
+ background-color: #f5f5f5;
+ padding: 12rpx 20rpx;
+ }
+ .use-numbox-minus .iconfont,
+ .use-numbox-plus .iconfont {
+ color: #555;
+ font-weight: 700;
+ }
+
+ .use-numbox-minus {
+ border-right: none;
+ border-top-left-radius: 6upx;
+ border-bottom-left-radius: 6upx;
+ }
+
+ .use-numbox-plus {
+ border-left: none;
+ border-top-right-radius: 6upx;
+ border-bottom-right-radius: 6upx;
+ }
+
+ .use-numbox-value {
+ background-color: #f5f5f5;
+ width: 66rpx;
+ height: 50rpx;
+ padding: 0;
+ }
+
+ .use-numbox-disabled.iconfont {
+ color: #bbb;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-popup/use-popup.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-popup/use-popup.vue
new file mode 100644
index 0000000..54a92b5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-popup/use-popup.vue
@@ -0,0 +1,303 @@
+<template>
+ <view v-if="visibleSync" class="pos-f pos-full overflow-hidden use-popup"
+ :class="{ 'use-popup-visible': showPopup }" :style="[customStyle]">
+ <use-mask :show="showPopup && mask" :maskClickAble="maskCloseAble" @click="maskClick"></use-mask>
+ <view class="pos-a use-popup-content" :class="[
+ bgclass,
+ safeAreaInsetBottom ? 'safe-area-inset-bottom' : '',
+ 'use-popup-' + mode,
+ showPopup ? 'use-popup-content-visible' : 'use-popup-content-hidden',
+ zoom && mode == 'center' ? 'use-animation-zoom' : ''
+ ]" :style="[style]" @tap.stop.prevent @touchmove.stop.prevent @tap="modeCenterClose(mode)">
+ <view v-if="mode == 'center'" class="bg-main pos-r use-mode-center-box" :style="[centerStyle]"
+ @tap.stop.prevent @touchmove.stop.prevent>
+ <slot />
+ </view>
+ <block v-else>
+ <slot />
+ </block>
+
+ <view v-if="closeIcon" class="pos-a pos-top pos-right padding-sm fs-xl" @click="close">
+ <view class="iconfont iconguanbi"></view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ /**
+ * 显示状态
+ */
+ show: {
+ type: Boolean,
+ default: false
+ },
+ /**
+ * 弹出方向,left|right|top|bottom|center
+ */
+ mode: {
+ type: String,
+ default: 'left'
+ },
+ /**
+ * 是否显示遮罩
+ */
+ mask: {
+ type: Boolean,
+ default: true
+ },
+ /**
+ * 背景 class 样式
+ * */
+ bgclass: {
+ type: String,
+ default: 'bg-main'
+ },
+ // 抽屉的宽度(mode=left|right),或者高度(mode=top|bottom),单位rpx,或者"auto"
+ // 或者百分比"50%",表示由内容撑开高度或者宽度
+ length: {
+ type: [Number, String],
+ default: 'auto'
+ },
+ // 是否开启缩放动画,只在mode=center时有效
+ zoom: {
+ type: Boolean,
+ default: true
+ },
+ // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ },
+ // 是否可以通过点击遮罩进行关闭
+ maskCloseAble: {
+ type: Boolean,
+ default: true
+ },
+ // 用户自定义样式
+ customStyle: {
+ type: Object,
+ default () {
+ return {};
+ }
+ },
+ value: {
+ type: Boolean,
+ default: false
+ },
+ // 此为内部参数,不在文档对外使用,为了解决Picker和keyboard等融合了弹窗的组件
+ // 对v-model双向绑定多层调用造成报错不能修改props值的问题
+ popup: {
+ type: Boolean,
+ default: true
+ },
+ // 显示显示弹窗的圆角,单位rpx
+ borderRadius: {
+ type: [Number, String],
+ default: 0
+ },
+ zIndex: {
+ type: [Number, String],
+ default: '10020'
+ },
+ closeIcon: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ visibleSync: false,
+ showPopup: false,
+ };
+ },
+ watch: {
+ value(val) {
+ console.log('watch', val);
+ if (val) {
+ this.open();
+ } else {
+ this.close();
+ }
+ }
+ },
+ computed: {
+ // 根据mode的位置,设定其弹窗的宽度(mode = left|right),或者高度(mode = top|bottom)
+ style() {
+ let style = {};
+ let translate = '100%';
+ // 判断是否是否百分比或者auto值,是的话,直接使用该值,否则默认为rpx单位的数值
+ let length = (/%$/.test(this.length) || this.length == 'auto') ? this.length : uni.upx2px(this.length) +
+ 'px';
+ // 如果是左边或者上边弹出时,需要给translate设置为负值,用于隐藏
+ if (this.mode == 'left' || this.mode == 'top') {
+ translate = length == 'auto' ? '-100%' : '-' + length;
+ }
+ if (this.mode == 'left' || this.mode == 'right') {
+ style = {
+ width: length,
+ height: '100%',
+ transform: `translate3D(${translate},0px,0px)`
+ };
+ } else if (this.mode == 'top' || this.mode == 'bottom') {
+ style = {
+ width: '100%',
+ height: length,
+ transform: `translate3D(0px,${translate},0px)`
+ };
+ }
+ style.zIndex = this.zIndex;
+
+ // 如果用户设置了borderRadius值,添加弹窗的圆角
+ if (this.borderRadius) {
+ switch (this.mode) {
+ case 'top':
+ style.borderRadius = `0 0 ${this.borderRadius}rpx ${this.borderRadius}rpx`;
+ break;
+ case 'right':
+ style.borderRadius = `${this.borderRadius}rpx 0 0 ${this.borderRadius}rpx`;
+ break;
+ case 'bottom':
+ style.borderRadius = `${this.borderRadius}rpx ${this.borderRadius}rpx 0 0`;
+ break;
+ case 'left':
+ style.borderRadius = `0 ${this.borderRadius}rpx ${this.borderRadius}rpx 0`;
+ break;
+ default:
+ break;
+ }
+ // 不加可能圆角无效
+ style.overflow = 'hidden';
+ }
+ return style;
+ },
+ // 中部弹窗的特有样式
+ centerStyle() {
+ let style = {};
+ let length = (/%$/.test(this.length) || this.length == 'auto') ? this.length : uni.upx2px(this.length) +
+ 'px';
+ style.width = length;
+ style.zIndex = this.zIndex;
+ if (this.borderRadius) {
+ style.borderRadius = `${this.borderRadius}rpx`;
+ // 不加可能圆角无效
+ style.overflow = 'hidden';
+ }
+ return style;
+ }
+ },
+ created() {
+ this.visibleSync = this.value;
+ this.$common.timerout(() => {
+ this.showPopup = this.value;
+ }, 30);
+ },
+ methods: {
+ open() {
+ this.change('visibleSync', 'showPopup', true);
+ },
+ close() {
+ if (this.showPopup) {
+ this.change('showPopup', 'visibleSync', false);
+ return true;
+ }
+
+ return false;
+ },
+ // 遮罩被点击
+ maskClick() {
+ this.close();
+ },
+ // 中部弹出时,需要.use-popup-content将居中内容,此元素会铺满屏幕,点击需要关闭弹窗
+ // 让其只在mode=center时起作用
+ modeCenterClose(mode) {
+ if (mode != 'center' || !this.maskCloseAble) return;
+ this.close();
+ },
+ // 此处的原理是,关闭时先通过动画隐藏弹窗和遮罩,再移除整个组件
+ // 打开时,先渲染组件,延时一定时间再让遮罩和弹窗的动画起作用
+ change(param1, param2, state) {
+ // 如果this.popup为false,以为着为picker,actionsheet等组件调用了popup组件
+ if (this.popup) this.$emit('input', state);
+ this[param1] = state;
+
+ this.$common.timerout(() => {
+ this[param2] = state;
+ this.$emit(state ? 'open' : 'close');
+ }, state ? 30 : 250);
+ }
+ }
+ };
+</script>
+
+<style lang="scss">
+ .use-popup {
+ z-index: 10010;
+ }
+
+ .use-popup-content {
+ z-index: 10020;
+ transition: all 0.25s ease-in-out;
+ }
+
+ .use-popup-content-hidden {
+ transition: all 0.125s ease-in-out;
+ }
+
+ .use-popup-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ }
+
+ .use-popup-right {
+ top: 0;
+ right: 0;
+ bottom: 0;
+ }
+
+ .use-popup-bottom {
+ right: 0;
+ bottom: 0;
+ left: 0;
+ }
+
+ .use-popup-left {
+ top: 0;
+ bottom: 0;
+ left: 0;
+ }
+
+ .use-popup-center {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ opacity: 0;
+ z-index: 99999;
+ }
+
+ .use-mode-center-box {
+ min-width: 100rpx;
+ min-height: 100rpx;
+ }
+
+ .use-popup-content-visible.use-popup-center {
+ transform: scale(1);
+ opacity: 1;
+ }
+
+ .use-animation-zoom {
+ transform: scale(1.15);
+ }
+
+ .use-popup-content-visible {
+ transform: translate3D(0px, 0px, 0px) !important;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/qrcode.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/qrcode.js
new file mode 100644
index 0000000..6ea6553
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/qrcode.js
@@ -0,0 +1,1201 @@
+let QRCode = {};
+(function () {
+ /**
+ * 获取单个字符的utf8编码
+ * unicode BMP平面约65535个字符
+ * @param {num} code
+ * return {array}
+ */
+ function unicodeFormat8(code) {
+ // 1 byte
+ var c0, c1, c2;
+ if (code < 128) {
+ return [code];
+ // 2 bytes
+ } else if (code < 2048) {
+ c0 = 192 + (code >> 6);
+ c1 = 128 + (code & 63);
+ return [c0, c1];
+ // 3 bytes
+ } else {
+ c0 = 224 + (code >> 12);
+ c1 = 128 + (code >> 6 & 63);
+ c2 = 128 + (code & 63);
+ return [c0, c1, c2];
+ }
+ }
+ /**
+ * 获取字符串的utf8编码字节串
+ * @param {string} string
+ * @return {array}
+ */
+ function getUTF8Bytes(string) {
+ var utf8codes = [];
+ for (var i = 0; i < string.length; i++) {
+ var code = string.charCodeAt(i);
+ var utf8 = unicodeFormat8(code);
+ for (var j = 0; j < utf8.length; j++) {
+ utf8codes.push(utf8[j]);
+ }
+ }
+ return utf8codes;
+ }
+ /**
+ * 二维码算法实现
+ * @param {string} data 要编码的信息字符串
+ * @param {num} errorCorrectLevel 纠错等级
+ */
+ function QRCodeAlg(data, errorCorrectLevel) {
+ this.typeNumber = -1; //版本
+ this.errorCorrectLevel = errorCorrectLevel;
+ this.modules = null; //二维矩阵,存放最终结果
+ this.moduleCount = 0; //矩阵大小
+ this.dataCache = null; //数据缓存
+ this.rsBlocks = null; //版本数据信息
+ this.totalDataCount = -1; //可使用的数据量
+ this.data = data;
+ this.utf8bytes = getUTF8Bytes(data);
+ this.make();
+ }
+ QRCodeAlg.prototype = {
+ constructor: QRCodeAlg,
+ /**
+ * 获取二维码矩阵大小
+ * @return {num} 矩阵大小
+ */
+ getModuleCount: function () {
+ return this.moduleCount;
+ },
+ /**
+ * 编码
+ */
+ make: function () {
+ this.getRightType();
+ this.dataCache = this.createData();
+ this.createQrcode();
+ },
+ /**
+ * 设置二位矩阵功能图形
+ * @param {bool} test 表示是否在寻找最好掩膜阶段
+ * @param {num} maskPattern 掩膜的版本
+ */
+ makeImpl: function (maskPattern) {
+ this.moduleCount = this.typeNumber * 4 + 17;
+ this.modules = new Array(this.moduleCount);
+ for (var row = 0; row < this.moduleCount; row++) {
+ this.modules[row] = new Array(this.moduleCount);
+ }
+ this.setupPositionProbePattern(0, 0);
+ this.setupPositionProbePattern(this.moduleCount - 7, 0);
+ this.setupPositionProbePattern(0, this.moduleCount - 7);
+ this.setupPositionAdjustPattern();
+ this.setupTimingPattern();
+ this.setupTypeInfo(true, maskPattern);
+ if (this.typeNumber >= 7) {
+ this.setupTypeNumber(true);
+ }
+ this.mapData(this.dataCache, maskPattern);
+ },
+ /**
+ * 设置二维码的位置探测图形
+ * @param {num} row 探测图形的中心横坐标
+ * @param {num} col 探测图形的中心纵坐标
+ */
+ setupPositionProbePattern: function (row, col) {
+ for (var r = -1; r <= 7; r++) {
+ if (row + r <= -1 || this.moduleCount <= row + r) continue;
+ for (var c = -1; c <= 7; c++) {
+ if (col + c <= -1 || this.moduleCount <= col + c) continue;
+ if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) {
+ this.modules[row + r][col + c] = true;
+ } else {
+ this.modules[row + r][col + c] = false;
+ }
+ }
+ }
+ },
+ /**
+ * 创建二维码
+ * @return {[type]} [description]
+ */
+ createQrcode: function () {
+ var minLostPoint = 0;
+ var pattern = 0;
+ var bestModules = null;
+ for (var i = 0; i < 8; i++) {
+ this.makeImpl(i);
+ var lostPoint = QRUtil.getLostPoint(this);
+ if (i == 0 || minLostPoint > lostPoint) {
+ minLostPoint = lostPoint;
+ pattern = i;
+ bestModules = this.modules;
+ }
+ }
+ this.modules = bestModules;
+ this.setupTypeInfo(false, pattern);
+ if (this.typeNumber >= 7) {
+ this.setupTypeNumber(false);
+ }
+ },
+ /**
+ * 设置定位图形
+ * @return {[type]} [description]
+ */
+ setupTimingPattern: function () {
+ for (var r = 8; r < this.moduleCount - 8; r++) {
+ if (this.modules[r][6] != null) {
+ continue;
+ }
+ this.modules[r][6] = (r % 2 == 0);
+ if (this.modules[6][r] != null) {
+ continue;
+ }
+ this.modules[6][r] = (r % 2 == 0);
+ }
+ },
+ /**
+ * 设置矫正图形
+ * @return {[type]} [description]
+ */
+ setupPositionAdjustPattern: function () {
+ var pos = QRUtil.getPatternPosition(this.typeNumber);
+ for (var i = 0; i < pos.length; i++) {
+ for (var j = 0; j < pos.length; j++) {
+ var row = pos[i];
+ var col = pos[j];
+ if (this.modules[row][col] != null) {
+ continue;
+ }
+ for (var r = -2; r <= 2; r++) {
+ for (var c = -2; c <= 2; c++) {
+ if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {
+ this.modules[row + r][col + c] = true;
+ } else {
+ this.modules[row + r][col + c] = false;
+ }
+ }
+ }
+ }
+ }
+ },
+ /**
+ * 设置版本信息(7以上版本才有)
+ * @param {bool} test 是否处于判断最佳掩膜阶段
+ * @return {[type]} [description]
+ */
+ setupTypeNumber: function (test) {
+ var bits = QRUtil.getBCHTypeNumber(this.typeNumber);
+ for (var i = 0; i < 18; i++) {
+ var mod = (!test && ((bits >> i) & 1) == 1);
+ this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;
+ this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
+ }
+ },
+ /**
+ * 设置格式信息(纠错等级和掩膜版本)
+ * @param {bool} test
+ * @param {num} maskPattern 掩膜版本
+ * @return {}
+ */
+ setupTypeInfo: function (test, maskPattern) {
+ var data = (QRErrorCorrectLevel[this.errorCorrectLevel] << 3) | maskPattern;
+ var bits = QRUtil.getBCHTypeInfo(data);
+ // vertical
+ for (var i = 0; i < 15; i++) {
+ var mod = (!test && ((bits >> i) & 1) == 1);
+ if (i < 6) {
+ this.modules[i][8] = mod;
+ } else if (i < 8) {
+ this.modules[i + 1][8] = mod;
+ } else {
+ this.modules[this.moduleCount - 15 + i][8] = mod;
+ }
+ // horizontal
+ var mod = (!test && ((bits >> i) & 1) == 1);
+ if (i < 8) {
+ this.modules[8][this.moduleCount - i - 1] = mod;
+ } else if (i < 9) {
+ this.modules[8][15 - i - 1 + 1] = mod;
+ } else {
+ this.modules[8][15 - i - 1] = mod;
+ }
+ }
+ // fixed module
+ this.modules[this.moduleCount - 8][8] = (!test);
+ },
+ /**
+ * 数据编码
+ * @return {[type]} [description]
+ */
+ createData: function () {
+ var buffer = new QRBitBuffer();
+ var lengthBits = this.typeNumber > 9 ? 16 : 8;
+ buffer.put(4, 4); //添加模式
+ buffer.put(this.utf8bytes.length, lengthBits);
+ for (var i = 0, l = this.utf8bytes.length; i < l; i++) {
+ buffer.put(this.utf8bytes[i], 8);
+ }
+ if (buffer.length + 4 <= this.totalDataCount * 8) {
+ buffer.put(0, 4);
+ }
+ // padding
+ while (buffer.length % 8 != 0) {
+ buffer.putBit(false);
+ }
+ // padding
+ while (true) {
+ if (buffer.length >= this.totalDataCount * 8) {
+ break;
+ }
+ buffer.put(QRCodeAlg.PAD0, 8);
+ if (buffer.length >= this.totalDataCount * 8) {
+ break;
+ }
+ buffer.put(QRCodeAlg.PAD1, 8);
+ }
+ return this.createBytes(buffer);
+ },
+ /**
+ * 纠错码编码
+ * @param {buffer} buffer 数据编码
+ * @return {[type]}
+ */
+ createBytes: function (buffer) {
+ var offset = 0;
+ var maxDcCount = 0;
+ var maxEcCount = 0;
+ var length = this.rsBlock.length / 3;
+ var rsBlocks = new Array();
+ for (var i = 0; i < length; i++) {
+ var count = this.rsBlock[i * 3 + 0];
+ var totalCount = this.rsBlock[i * 3 + 1];
+ var dataCount = this.rsBlock[i * 3 + 2];
+ for (var j = 0; j < count; j++) {
+ rsBlocks.push([dataCount, totalCount]);
+ }
+ }
+ var dcdata = new Array(rsBlocks.length);
+ var ecdata = new Array(rsBlocks.length);
+ for (var r = 0; r < rsBlocks.length; r++) {
+ var dcCount = rsBlocks[r][0];
+ var ecCount = rsBlocks[r][1] - dcCount;
+ maxDcCount = Math.max(maxDcCount, dcCount);
+ maxEcCount = Math.max(maxEcCount, ecCount);
+ dcdata[r] = new Array(dcCount);
+ for (var i = 0; i < dcdata[r].length; i++) {
+ dcdata[r][i] = 0xff & buffer.buffer[i + offset];
+ }
+ offset += dcCount;
+ var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
+ var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
+ var modPoly = rawPoly.mod(rsPoly);
+ ecdata[r] = new Array(rsPoly.getLength() - 1);
+ for (var i = 0; i < ecdata[r].length; i++) {
+ var modIndex = i + modPoly.getLength() - ecdata[r].length;
+ ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0;
+ }
+ }
+ var data = new Array(this.totalDataCount);
+ var index = 0;
+ for (var i = 0; i < maxDcCount; i++) {
+ for (var r = 0; r < rsBlocks.length; r++) {
+ if (i < dcdata[r].length) {
+ data[index++] = dcdata[r][i];
+ }
+ }
+ }
+ for (var i = 0; i < maxEcCount; i++) {
+ for (var r = 0; r < rsBlocks.length; r++) {
+ if (i < ecdata[r].length) {
+ data[index++] = ecdata[r][i];
+ }
+ }
+ }
+ return data;
+
+ },
+ /**
+ * 布置模块,构建最终信息
+ * @param {} data
+ * @param {} maskPattern
+ * @return {}
+ */
+ mapData: function (data, maskPattern) {
+ var inc = -1;
+ var row = this.moduleCount - 1;
+ var bitIndex = 7;
+ var byteIndex = 0;
+ for (var col = this.moduleCount - 1; col > 0; col -= 2) {
+ if (col == 6) col--;
+ while (true) {
+ for (var c = 0; c < 2; c++) {
+ if (this.modules[row][col - c] == null) {
+ var dark = false;
+ if (byteIndex < data.length) {
+ dark = (((data[byteIndex] >>> bitIndex) & 1) == 1);
+ }
+ var mask = QRUtil.getMask(maskPattern, row, col - c);
+ if (mask) {
+ dark = !dark;
+ }
+ this.modules[row][col - c] = dark;
+ bitIndex--;
+ if (bitIndex == -1) {
+ byteIndex++;
+ bitIndex = 7;
+ }
+ }
+ }
+ row += inc;
+ if (row < 0 || this.moduleCount <= row) {
+ row -= inc;
+ inc = -inc;
+ break;
+ }
+ }
+ }
+ }
+ };
+ /**
+ * 填充字段
+ */
+ QRCodeAlg.PAD0 = 0xEC;
+ QRCodeAlg.PAD1 = 0x11;
+ //---------------------------------------------------------------------
+ // 纠错等级对应的编码
+ //---------------------------------------------------------------------
+ var QRErrorCorrectLevel = [1, 0, 3, 2];
+ //---------------------------------------------------------------------
+ // 掩膜版本
+ //---------------------------------------------------------------------
+ var QRMaskPattern = {
+ PATTERN000: 0,
+ PATTERN001: 1,
+ PATTERN010: 2,
+ PATTERN011: 3,
+ PATTERN100: 4,
+ PATTERN101: 5,
+ PATTERN110: 6,
+ PATTERN111: 7
+ };
+ //---------------------------------------------------------------------
+ // 工具类
+ //---------------------------------------------------------------------
+ var QRUtil = {
+ /*
+ 每个版本矫正图形的位置
+ */
+ PATTERN_POSITION_TABLE: [
+ [],
+ [6, 18],
+ [6, 22],
+ [6, 26],
+ [6, 30],
+ [6, 34],
+ [6, 22, 38],
+ [6, 24, 42],
+ [6, 26, 46],
+ [6, 28, 50],
+ [6, 30, 54],
+ [6, 32, 58],
+ [6, 34, 62],
+ [6, 26, 46, 66],
+ [6, 26, 48, 70],
+ [6, 26, 50, 74],
+ [6, 30, 54, 78],
+ [6, 30, 56, 82],
+ [6, 30, 58, 86],
+ [6, 34, 62, 90],
+ [6, 28, 50, 72, 94],
+ [6, 26, 50, 74, 98],
+ [6, 30, 54, 78, 102],
+ [6, 28, 54, 80, 106],
+ [6, 32, 58, 84, 110],
+ [6, 30, 58, 86, 114],
+ [6, 34, 62, 90, 118],
+ [6, 26, 50, 74, 98, 122],
+ [6, 30, 54, 78, 102, 126],
+ [6, 26, 52, 78, 104, 130],
+ [6, 30, 56, 82, 108, 134],
+ [6, 34, 60, 86, 112, 138],
+ [6, 30, 58, 86, 114, 142],
+ [6, 34, 62, 90, 118, 146],
+ [6, 30, 54, 78, 102, 126, 150],
+ [6, 24, 50, 76, 102, 128, 154],
+ [6, 28, 54, 80, 106, 132, 158],
+ [6, 32, 58, 84, 110, 136, 162],
+ [6, 26, 54, 82, 110, 138, 166],
+ [6, 30, 58, 86, 114, 142, 170]
+ ],
+ G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),
+ G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),
+ G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),
+ /*
+ BCH编码格式信息
+ */
+ getBCHTypeInfo: function (data) {
+ var d = data << 10;
+ while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {
+ d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15)));
+ }
+ return ((data << 10) | d) ^ QRUtil.G15_MASK;
+ },
+ /*
+ BCH编码版本信息
+ */
+ getBCHTypeNumber: function (data) {
+ var d = data << 12;
+ while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {
+ d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18)));
+ }
+ return (data << 12) | d;
+ },
+ /*
+ 获取BCH位信息
+ */
+ getBCHDigit: function (data) {
+ var digit = 0;
+ while (data != 0) {
+ digit++;
+ data >>>= 1;
+ }
+ return digit;
+ },
+ /*
+ 获取版本对应的矫正图形位置
+ */
+ getPatternPosition: function (typeNumber) {
+ return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
+ },
+ /*
+ 掩膜算法
+ */
+ getMask: function (maskPattern, i, j) {
+ switch (maskPattern) {
+ case QRMaskPattern.PATTERN000:
+ return (i + j) % 2 == 0;
+ case QRMaskPattern.PATTERN001:
+ return i % 2 == 0;
+ case QRMaskPattern.PATTERN010:
+ return j % 3 == 0;
+ case QRMaskPattern.PATTERN011:
+ return (i + j) % 3 == 0;
+ case QRMaskPattern.PATTERN100:
+ return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
+ case QRMaskPattern.PATTERN101:
+ return (i * j) % 2 + (i * j) % 3 == 0;
+ case QRMaskPattern.PATTERN110:
+ return ((i * j) % 2 + (i * j) % 3) % 2 == 0;
+ case QRMaskPattern.PATTERN111:
+ return ((i * j) % 3 + (i + j) % 2) % 2 == 0;
+ default:
+ throw new Error("bad maskPattern:" + maskPattern);
+ }
+ },
+ /*
+ 获取RS的纠错多项式
+ */
+ getErrorCorrectPolynomial: function (errorCorrectLength) {
+ var a = new QRPolynomial([1], 0);
+ for (var i = 0; i < errorCorrectLength; i++) {
+ a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));
+ }
+ return a;
+ },
+ /*
+ 获取评价
+ */
+ getLostPoint: function (qrCode) {
+ var moduleCount = qrCode.getModuleCount(),
+ lostPoint = 0,
+ darkCount = 0;
+ for (var row = 0; row < moduleCount; row++) {
+ var sameCount = 0;
+ var head = qrCode.modules[row][0];
+ for (var col = 0; col < moduleCount; col++) {
+ var current = qrCode.modules[row][col];
+ //level 3 评价
+ if (col < moduleCount - 6) {
+ if (current && !qrCode.modules[row][col + 1] && qrCode.modules[row][col + 2] && qrCode.modules[row][col + 3] && qrCode.modules[row][col + 4] && !qrCode.modules[row][col + 5] && qrCode.modules[row][col + 6]) {
+ if (col < moduleCount - 10) {
+ if (qrCode.modules[row][col + 7] && qrCode.modules[row][col + 8] && qrCode.modules[row][col + 9] && qrCode.modules[row][col + 10]) {
+ lostPoint += 40;
+ }
+ } else if (col > 3) {
+ if (qrCode.modules[row][col - 1] && qrCode.modules[row][col - 2] && qrCode.modules[row][col - 3] && qrCode.modules[row][col - 4]) {
+ lostPoint += 40;
+ }
+ }
+ }
+ }
+ //level 2 评价
+ if ((row < moduleCount - 1) && (col < moduleCount - 1)) {
+ var count = 0;
+ if (current) count++;
+ if (qrCode.modules[row + 1][col]) count++;
+ if (qrCode.modules[row][col + 1]) count++;
+ if (qrCode.modules[row + 1][col + 1]) count++;
+ if (count == 0 || count == 4) {
+ lostPoint += 3;
+ }
+ }
+ //level 1 评价
+ if (head ^ current) {
+ sameCount++;
+ } else {
+ head = current;
+ if (sameCount >= 5) {
+ lostPoint += (3 + sameCount - 5);
+ }
+ sameCount = 1;
+ }
+ //level 4 评价
+ if (current) {
+ darkCount++;
+ }
+ }
+ }
+ for (var col = 0; col < moduleCount; col++) {
+ var sameCount = 0;
+ var head = qrCode.modules[0][col];
+ for (var row = 0; row < moduleCount; row++) {
+ var current = qrCode.modules[row][col];
+ //level 3 评价
+ if (row < moduleCount - 6) {
+ if (current && !qrCode.modules[row + 1][col] && qrCode.modules[row + 2][col] && qrCode.modules[row + 3][col] && qrCode.modules[row + 4][col] && !qrCode.modules[row + 5][col] && qrCode.modules[row + 6][col]) {
+ if (row < moduleCount - 10) {
+ if (qrCode.modules[row + 7][col] && qrCode.modules[row + 8][col] && qrCode.modules[row + 9][col] && qrCode.modules[row + 10][col]) {
+ lostPoint += 40;
+ }
+ } else if (row > 3) {
+ if (qrCode.modules[row - 1][col] && qrCode.modules[row - 2][col] && qrCode.modules[row - 3][col] && qrCode.modules[row - 4][col]) {
+ lostPoint += 40;
+ }
+ }
+ }
+ }
+ //level 1 评价
+ if (head ^ current) {
+ sameCount++;
+ } else {
+ head = current;
+ if (sameCount >= 5) {
+ lostPoint += (3 + sameCount - 5);
+ }
+ sameCount = 1;
+ }
+ }
+ }
+ // LEVEL4
+ var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
+ lostPoint += ratio * 10;
+ return lostPoint;
+ }
+
+ };
+ //---------------------------------------------------------------------
+ // QRMath使用的数学工具
+ //---------------------------------------------------------------------
+ var QRMath = {
+ /*
+ 将n转化为a^m
+ */
+ glog: function (n) {
+ if (n < 1) {
+ throw new Error("glog(" + n + ")");
+ }
+ return QRMath.LOG_TABLE[n];
+ },
+ /*
+ 将a^m转化为n
+ */
+ gexp: function (n) {
+ while (n < 0) {
+ n += 255;
+ }
+ while (n >= 256) {
+ n -= 255;
+ }
+ return QRMath.EXP_TABLE[n];
+ },
+ EXP_TABLE: new Array(256),
+ LOG_TABLE: new Array(256)
+
+ };
+ for (var i = 0; i < 8; i++) {
+ QRMath.EXP_TABLE[i] = 1 << i;
+ }
+ for (var i = 8; i < 256; i++) {
+ QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
+ }
+ for (var i = 0; i < 255; i++) {
+ QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
+ }
+ //---------------------------------------------------------------------
+ // QRPolynomial 多项式
+ //---------------------------------------------------------------------
+ /**
+ * 多项式类
+ * @param {Array} num 系数
+ * @param {num} shift a^shift
+ */
+ function QRPolynomial(num, shift) {
+ if (num.length == undefined) {
+ throw new Error(num.length + "/" + shift);
+ }
+ var offset = 0;
+ while (offset < num.length && num[offset] == 0) {
+ offset++;
+ }
+ this.num = new Array(num.length - offset + shift);
+ for (var i = 0; i < num.length - offset; i++) {
+ this.num[i] = num[i + offset];
+ }
+ }
+ QRPolynomial.prototype = {
+ get: function (index) {
+ return this.num[index];
+ },
+ getLength: function () {
+ return this.num.length;
+ },
+ /**
+ * 多项式乘法
+ * @param {QRPolynomial} e 被乘多项式
+ * @return {[type]} [description]
+ */
+ multiply: function (e) {
+ var num = new Array(this.getLength() + e.getLength() - 1);
+ for (var i = 0; i < this.getLength(); i++) {
+ for (var j = 0; j < e.getLength(); j++) {
+ num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));
+ }
+ }
+ return new QRPolynomial(num, 0);
+ },
+ /**
+ * 多项式模运算
+ * @param {QRPolynomial} e 模多项式
+ * @return {}
+ */
+ mod: function (e) {
+ var tl = this.getLength(),
+ el = e.getLength();
+ if (tl - el < 0) {
+ return this;
+ }
+ var num = new Array(tl);
+ for (var i = 0; i < tl; i++) {
+ num[i] = this.get(i);
+ }
+ while (num.length >= el) {
+ var ratio = QRMath.glog(num[0]) - QRMath.glog(e.get(0));
+
+ for (var i = 0; i < e.getLength(); i++) {
+ num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);
+ }
+ while (num[0] == 0) {
+ num.shift();
+ }
+ }
+ return new QRPolynomial(num, 0);
+ }
+ };
+
+ //---------------------------------------------------------------------
+ // RS_BLOCK_TABLE
+ //---------------------------------------------------------------------
+ /*
+ 二维码各个版本信息[块数, 每块中的数据块数, 每块中的信息块数]
+ */
+ var RS_BLOCK_TABLE = [
+ // L
+ // M
+ // Q
+ // H
+ // 1
+ [1, 26, 19],
+ [1, 26, 16],
+ [1, 26, 13],
+ [1, 26, 9],
+
+ // 2
+ [1, 44, 34],
+ [1, 44, 28],
+ [1, 44, 22],
+ [1, 44, 16],
+
+ // 3
+ [1, 70, 55],
+ [1, 70, 44],
+ [2, 35, 17],
+ [2, 35, 13],
+
+ // 4
+ [1, 100, 80],
+ [2, 50, 32],
+ [2, 50, 24],
+ [4, 25, 9],
+
+ // 5
+ [1, 134, 108],
+ [2, 67, 43],
+ [2, 33, 15, 2, 34, 16],
+ [2, 33, 11, 2, 34, 12],
+
+ // 6
+ [2, 86, 68],
+ [4, 43, 27],
+ [4, 43, 19],
+ [4, 43, 15],
+
+ // 7
+ [2, 98, 78],
+ [4, 49, 31],
+ [2, 32, 14, 4, 33, 15],
+ [4, 39, 13, 1, 40, 14],
+
+ // 8
+ [2, 121, 97],
+ [2, 60, 38, 2, 61, 39],
+ [4, 40, 18, 2, 41, 19],
+ [4, 40, 14, 2, 41, 15],
+
+ // 9
+ [2, 146, 116],
+ [3, 58, 36, 2, 59, 37],
+ [4, 36, 16, 4, 37, 17],
+ [4, 36, 12, 4, 37, 13],
+
+ // 10
+ [2, 86, 68, 2, 87, 69],
+ [4, 69, 43, 1, 70, 44],
+ [6, 43, 19, 2, 44, 20],
+ [6, 43, 15, 2, 44, 16],
+
+ // 11
+ [4, 101, 81],
+ [1, 80, 50, 4, 81, 51],
+ [4, 50, 22, 4, 51, 23],
+ [3, 36, 12, 8, 37, 13],
+
+ // 12
+ [2, 116, 92, 2, 117, 93],
+ [6, 58, 36, 2, 59, 37],
+ [4, 46, 20, 6, 47, 21],
+ [7, 42, 14, 4, 43, 15],
+
+ // 13
+ [4, 133, 107],
+ [8, 59, 37, 1, 60, 38],
+ [8, 44, 20, 4, 45, 21],
+ [12, 33, 11, 4, 34, 12],
+
+ // 14
+ [3, 145, 115, 1, 146, 116],
+ [4, 64, 40, 5, 65, 41],
+ [11, 36, 16, 5, 37, 17],
+ [11, 36, 12, 5, 37, 13],
+
+ // 15
+ [5, 109, 87, 1, 110, 88],
+ [5, 65, 41, 5, 66, 42],
+ [5, 54, 24, 7, 55, 25],
+ [11, 36, 12],
+
+ // 16
+ [5, 122, 98, 1, 123, 99],
+ [7, 73, 45, 3, 74, 46],
+ [15, 43, 19, 2, 44, 20],
+ [3, 45, 15, 13, 46, 16],
+
+ // 17
+ [1, 135, 107, 5, 136, 108],
+ [10, 74, 46, 1, 75, 47],
+ [1, 50, 22, 15, 51, 23],
+ [2, 42, 14, 17, 43, 15],
+
+ // 18
+ [5, 150, 120, 1, 151, 121],
+ [9, 69, 43, 4, 70, 44],
+ [17, 50, 22, 1, 51, 23],
+ [2, 42, 14, 19, 43, 15],
+
+ // 19
+ [3, 141, 113, 4, 142, 114],
+ [3, 70, 44, 11, 71, 45],
+ [17, 47, 21, 4, 48, 22],
+ [9, 39, 13, 16, 40, 14],
+
+ // 20
+ [3, 135, 107, 5, 136, 108],
+ [3, 67, 41, 13, 68, 42],
+ [15, 54, 24, 5, 55, 25],
+ [15, 43, 15, 10, 44, 16],
+
+ // 21
+ [4, 144, 116, 4, 145, 117],
+ [17, 68, 42],
+ [17, 50, 22, 6, 51, 23],
+ [19, 46, 16, 6, 47, 17],
+
+ // 22
+ [2, 139, 111, 7, 140, 112],
+ [17, 74, 46],
+ [7, 54, 24, 16, 55, 25],
+ [34, 37, 13],
+
+ // 23
+ [4, 151, 121, 5, 152, 122],
+ [4, 75, 47, 14, 76, 48],
+ [11, 54, 24, 14, 55, 25],
+ [16, 45, 15, 14, 46, 16],
+
+ // 24
+ [6, 147, 117, 4, 148, 118],
+ [6, 73, 45, 14, 74, 46],
+ [11, 54, 24, 16, 55, 25],
+ [30, 46, 16, 2, 47, 17],
+
+ // 25
+ [8, 132, 106, 4, 133, 107],
+ [8, 75, 47, 13, 76, 48],
+ [7, 54, 24, 22, 55, 25],
+ [22, 45, 15, 13, 46, 16],
+
+ // 26
+ [10, 142, 114, 2, 143, 115],
+ [19, 74, 46, 4, 75, 47],
+ [28, 50, 22, 6, 51, 23],
+ [33, 46, 16, 4, 47, 17],
+
+ // 27
+ [8, 152, 122, 4, 153, 123],
+ [22, 73, 45, 3, 74, 46],
+ [8, 53, 23, 26, 54, 24],
+ [12, 45, 15, 28, 46, 16],
+
+ // 28
+ [3, 147, 117, 10, 148, 118],
+ [3, 73, 45, 23, 74, 46],
+ [4, 54, 24, 31, 55, 25],
+ [11, 45, 15, 31, 46, 16],
+
+ // 29
+ [7, 146, 116, 7, 147, 117],
+ [21, 73, 45, 7, 74, 46],
+ [1, 53, 23, 37, 54, 24],
+ [19, 45, 15, 26, 46, 16],
+
+ // 30
+ [5, 145, 115, 10, 146, 116],
+ [19, 75, 47, 10, 76, 48],
+ [15, 54, 24, 25, 55, 25],
+ [23, 45, 15, 25, 46, 16],
+
+ // 31
+ [13, 145, 115, 3, 146, 116],
+ [2, 74, 46, 29, 75, 47],
+ [42, 54, 24, 1, 55, 25],
+ [23, 45, 15, 28, 46, 16],
+
+ // 32
+ [17, 145, 115],
+ [10, 74, 46, 23, 75, 47],
+ [10, 54, 24, 35, 55, 25],
+ [19, 45, 15, 35, 46, 16],
+
+ // 33
+ [17, 145, 115, 1, 146, 116],
+ [14, 74, 46, 21, 75, 47],
+ [29, 54, 24, 19, 55, 25],
+ [11, 45, 15, 46, 46, 16],
+
+ // 34
+ [13, 145, 115, 6, 146, 116],
+ [14, 74, 46, 23, 75, 47],
+ [44, 54, 24, 7, 55, 25],
+ [59, 46, 16, 1, 47, 17],
+
+ // 35
+ [12, 151, 121, 7, 152, 122],
+ [12, 75, 47, 26, 76, 48],
+ [39, 54, 24, 14, 55, 25],
+ [22, 45, 15, 41, 46, 16],
+
+ // 36
+ [6, 151, 121, 14, 152, 122],
+ [6, 75, 47, 34, 76, 48],
+ [46, 54, 24, 10, 55, 25],
+ [2, 45, 15, 64, 46, 16],
+
+ // 37
+ [17, 152, 122, 4, 153, 123],
+ [29, 74, 46, 14, 75, 47],
+ [49, 54, 24, 10, 55, 25],
+ [24, 45, 15, 46, 46, 16],
+
+ // 38
+ [4, 152, 122, 18, 153, 123],
+ [13, 74, 46, 32, 75, 47],
+ [48, 54, 24, 14, 55, 25],
+ [42, 45, 15, 32, 46, 16],
+
+ // 39
+ [20, 147, 117, 4, 148, 118],
+ [40, 75, 47, 7, 76, 48],
+ [43, 54, 24, 22, 55, 25],
+ [10, 45, 15, 67, 46, 16],
+
+ // 40
+ [19, 148, 118, 6, 149, 119],
+ [18, 75, 47, 31, 76, 48],
+ [34, 54, 24, 34, 55, 25],
+ [20, 45, 15, 61, 46, 16]
+ ];
+
+ /**
+ * 根据数据获取对应版本
+ * @return {[type]} [description]
+ */
+ QRCodeAlg.prototype.getRightType = function () {
+ for (var typeNumber = 1; typeNumber < 41; typeNumber++) {
+ var rsBlock = RS_BLOCK_TABLE[(typeNumber - 1) * 4 + this.errorCorrectLevel];
+ if (rsBlock == undefined) {
+ throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + this.errorCorrectLevel);
+ }
+ var length = rsBlock.length / 3;
+ var totalDataCount = 0;
+ for (var i = 0; i < length; i++) {
+ var count = rsBlock[i * 3 + 0];
+ var dataCount = rsBlock[i * 3 + 2];
+ totalDataCount += dataCount * count;
+ }
+ var lengthBytes = typeNumber > 9 ? 2 : 1;
+ if (this.utf8bytes.length + lengthBytes < totalDataCount || typeNumber == 40) {
+ this.typeNumber = typeNumber;
+ this.rsBlock = rsBlock;
+ this.totalDataCount = totalDataCount;
+ break;
+ }
+ }
+ };
+
+ //---------------------------------------------------------------------
+ // QRBitBuffer
+ //---------------------------------------------------------------------
+ function QRBitBuffer() {
+ this.buffer = new Array();
+ this.length = 0;
+ }
+ QRBitBuffer.prototype = {
+ get: function (index) {
+ var bufIndex = Math.floor(index / 8);
+ return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1);
+ },
+ put: function (num, length) {
+ for (var i = 0; i < length; i++) {
+ this.putBit(((num >>> (length - i - 1)) & 1));
+ }
+ },
+ putBit: function (bit) {
+ var bufIndex = Math.floor(this.length / 8);
+ if (this.buffer.length <= bufIndex) {
+ this.buffer.push(0);
+ }
+ if (bit) {
+ this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));
+ }
+ this.length++;
+ }
+ };
+
+
+
+ // xzedit
+ let qrcodeAlgObjCache = [];
+ /**
+ * 二维码构造函数,主要用于绘制
+ * @param {参数列表} opt 传递参数
+ * @return {}
+ */
+ QRCode = function (opt) {
+ //设置默认参数
+ this.options = {
+ text: '',
+ size: 256,
+ correctLevel: 3,
+ background: '#ffffff',
+ foreground: '#000000',
+ pdground: '#000000',
+ image: '',
+ imageSize: 30,
+ canvasId: opt.canvasId,
+ context: opt.context,
+ usingComponents: opt.usingComponents,
+ showLoading: opt.showLoading,
+ loadingText: opt.loadingText,
+ };
+ if (typeof opt === 'string') { // 只编码ASCII字符串
+ opt = {
+ text: opt
+ };
+ }
+ if (opt) {
+ for (var i in opt) {
+ this.options[i] = opt[i];
+ }
+ }
+ //使用QRCodeAlg创建二维码结构
+ var qrCodeAlg = null;
+ for (var i = 0, l = qrcodeAlgObjCache.length; i < l; i++) {
+ if (qrcodeAlgObjCache[i].text == this.options.text && qrcodeAlgObjCache[i].text.correctLevel == this.options.correctLevel) {
+ qrCodeAlg = qrcodeAlgObjCache[i].obj;
+ break;
+ }
+ }
+ if (i == l) {
+ qrCodeAlg = new QRCodeAlg(this.options.text, this.options.correctLevel);
+ qrcodeAlgObjCache.push({
+ text: this.options.text,
+ correctLevel: this.options.correctLevel,
+ obj: qrCodeAlg
+ });
+ }
+ /**
+ * 计算矩阵点的前景色
+ * @param {Obj} config
+ * @param {Number} config.row 点x坐标
+ * @param {Number} config.col 点y坐标
+ * @param {Number} config.count 矩阵大小
+ * @param {Number} config.options 组件的options
+ * @return {String}
+ */
+ let getForeGround = function (config) {
+ var options = config.options;
+ if (options.pdground && (
+ (config.row > 1 && config.row < 5 && config.col > 1 && config.col < 5) ||
+ (config.row > (config.count - 6) && config.row < (config.count - 2) && config.col > 1 && config.col < 5) ||
+ (config.row > 1 && config.row < 5 && config.col > (config.count - 6) && config.col < (config.count - 2))
+ )) {
+ return options.pdground;
+ }
+ return options.foreground;
+ }
+ // 创建canvas
+ let createCanvas = function (options) {
+ if (options.showLoading) {
+ uni.showLoading({
+ title: options.loadingText,
+ mask: true
+ });
+ }
+ var ctx = uni.createCanvasContext(options.canvasId, options.context);
+ var count = qrCodeAlg.getModuleCount();
+ var ratioSize = options.size;
+ var ratioImgSize = options.imageSize;
+ //计算每个点的长宽
+ var tileW = (ratioSize / count).toPrecision(4);
+ var tileH = (ratioSize / count).toPrecision(4);
+ //绘制
+ for (var row = 0; row < count; row++) {
+ for (var col = 0; col < count; col++) {
+ var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW));
+ var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW));
+ var foreground = getForeGround({
+ row: row,
+ col: col,
+ count: count,
+ options: options
+ });
+ ctx.setFillStyle(qrCodeAlg.modules[row][col] ? foreground : options.background);
+ ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h);
+ }
+ }
+ if (options.image) {
+ var x = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
+ var y = Number(((ratioSize - ratioImgSize) / 2).toFixed(2));
+ drawRoundedRect(ctx, x, y, ratioImgSize, ratioImgSize, 2, 6, true, true)
+ ctx.drawImage(options.image, x, y, ratioImgSize, ratioImgSize);
+ // 画圆角矩形
+ function drawRoundedRect(ctxi, x, y, width, height, r, lineWidth, fill, stroke) {
+ ctxi.setLineWidth(lineWidth);
+ ctxi.setFillStyle(options.background);
+ ctxi.setStrokeStyle(options.background);
+ ctxi.beginPath(); // draw top and top right corner
+ ctxi.moveTo(x + r, y);
+ ctxi.arcTo(x + width, y, x + width, y + r, r); // draw right side and bottom right corner
+ ctxi.arcTo(x + width, y + height, x + width - r, y + height, r); // draw bottom and bottom left corner
+ ctxi.arcTo(x, y + height, x, y + height - r, r); // draw left and top left corner
+ ctxi.arcTo(x, y, x + r, y, r);
+ ctxi.closePath();
+ if (fill) {
+ ctxi.fill();
+ }
+ if (stroke) {
+ ctxi.stroke();
+ }
+ }
+ }
+ setTimeout(() => {
+ ctx.draw(true, () => {
+ // 保存到临时区域
+ setTimeout(() => {
+ uni.canvasToTempFilePath({
+ width: options.width,
+ height: options.height,
+ destWidth: options.width,
+ destHeight: options.height,
+ canvasId: options.canvasId,
+ quality: Number(1),
+ success: function (res) {
+ if (options.cbResult) {
+ options.cbResult(res.tempFilePath)
+ }
+ },
+ fail: function (res) {
+ if (options.cbResult) {
+ options.cbResult(res)
+ }
+ },
+ complete: function () {
+ if (options.showLoading){
+ uni.hideLoading();
+ }
+ },
+ }, options.context);
+ }, options.text.length + 100);
+ });
+ }, options.usingComponents ? 0 : 150);
+ }
+ createCanvas(this.options);
+ // 空判定
+ let empty = function (v) {
+ let tp = typeof v,
+ rt = false;
+ if (tp == "number" && String(v) == "") {
+ rt = true
+ } else if (tp == "undefined") {
+ rt = true
+ } else if (tp == "object") {
+ if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
+ } else if (tp == "string") {
+ if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
+ } else if (tp == "function") {
+ rt = false
+ }
+ return rt
+ }
+ };
+ QRCode.prototype.clear = function (fn) {
+ var ctx = uni.createCanvasContext(this.options.canvasId, this.options.context)
+ ctx.clearRect(0, 0, this.options.size, this.options.size)
+ ctx.draw(false, () => {
+ if (fn) {
+ fn()
+ }
+ })
+ };
+})()
+
+export default QRCode
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/use-qrcode.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/use-qrcode.vue
new file mode 100644
index 0000000..595592a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-qrcode/use-qrcode.vue
@@ -0,0 +1,201 @@
+<template xlang="wxml" minapp="mpvue">
+ <view class="use-qrcode">
+ <!-- #ifndef MP-ALIPAY -->
+ <canvas v-if="!result" class="use-qrcode-canvas" :canvas-id="cid" :style="{width:qrsize+'px',height:qrsize+'px'}" />
+ <!-- #endif -->
+
+ <!-- #ifdef MP-ALIPAY -->
+ <canvas v-if="!result" :id="cid" :width="qrsize" :height="qrsize" class="use-qrcode-canvas" />
+ <!-- #endif -->
+
+ <image v-show="show" :src="result" :style="{width:size+'px', height:size+'px'}" />
+ </view>
+</template>
+
+<script>
+import QRCode from "./qrcode.js"
+let qrcode
+export default {
+ name: "use-qrcode",
+ props: {
+ cid: {
+ type: String,
+ default: 'use-qrcode-canvas'
+ },
+ size: {
+ type: Number,
+ default: 150
+ },
+ qrsize: {
+ type: [Number, String],
+ default: 300
+ },
+ show: {
+ type: Boolean,
+ default: true
+ },
+ val: {
+ type: String,
+ default: ''
+ },
+ background: {
+ type: String,
+ default: '#ffffff'
+ },
+ foreground: {
+ type: String,
+ default: '#000000'
+ },
+ pdground: {
+ type: String,
+ default: '#000000'
+ },
+ icon: {
+ type: String,
+ default: ''
+ },
+ iconSize: {
+ type: Number,
+ default: 40
+ },
+ lv: {
+ type: Number,
+ default: 3
+ },
+ onval: {
+ type: Boolean,
+ default: false
+ },
+ loadMake: {
+ type: Boolean,
+ default: false
+ },
+ usingComponents: {
+ type: Boolean,
+ default: true
+ },
+ showLoading: {
+ type: Boolean,
+ default: true
+ },
+ loadingText: {
+ type: String,
+ default: '二维码生成中'
+ },
+ },
+ data() {
+ return {
+ result: '',
+ }
+ },
+ methods: {
+ _makeCode() {
+ let that = this
+ if (this._empty(this.val)) {
+ uni.showToast({
+ title: '二维码内容不能为空',
+ icon: 'none',
+ duration: 2000
+ });
+ return;
+ }
+
+ qrcode = new QRCode({
+ context: that, // 上下文环境
+ canvasId: that.cid, // canvas-id
+ usingComponents: that.usingComponents, // 是否是自定义组件
+ showLoading: that.showLoading, // 是否显示loading
+ loadingText: that.loadingText, // loading文字
+ text: that.val, // 生成内容
+ size: that.qrsize, // 二维码大小
+ background: that.background, // 背景色
+ foreground: that.foreground, // 前景色
+ pdground: that.pdground, // 定位角点颜色
+ correctLevel: that.lv, // 容错级别
+ image: that.icon, // 二维码图标
+ imageSize: that.iconSize,// 二维码图标大小
+ cbResult: function (res) { // 生成二维码的回调
+ that._result(res);
+
+ },
+ });
+ },
+ _clearCode() {
+ this._result('')
+ qrcode.clear()
+ },
+ _saveCode() {
+ let that = this;
+ if (!this.result) {
+ return;
+ }
+
+ uni.saveImageToPhotosAlbum({
+ filePath: that.result,
+ success: function () {
+ uni.showToast({
+ title: '二维码保存成功',
+ icon: 'success',
+ duration: 2000
+ });
+ }
+ });
+ },
+ _result(res) {
+ this.result = res;
+ this.$emit('result', res)
+ },
+ _empty(v) {
+ let tp = typeof v,
+ rt = false;
+ if (tp == "number" && String(v) == "") {
+ rt = true
+ } else if (tp == "undefined") {
+ rt = true
+ } else if (tp == "object") {
+ if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
+ } else if (tp == "string") {
+ if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
+ } else if (tp == "function") {
+ rt = false
+ }
+ return rt
+ }
+ },
+ watch: {
+ size: function (n, o) {
+ if (n != o && !this._empty(n)) {
+ this.cSize = n
+ if (!this._empty(this.val)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 100);
+ }
+ }
+ },
+ val: function (n, o) {
+ if (this.onval) {
+ if (n != o && !this._empty(n)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 0);
+ }
+ }
+ }
+ },
+ mounted: function () {
+ if (this.loadMake) {
+ if (!this._empty(this.val)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 0);
+ }
+ }
+ },
+}
+</script>
+
+<style>
+.use-qrcode { }
+.use-qrcode-canvas { position: fixed; top: -100vh; left: -100vw; z-index: -1; }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-smscode/use-smscode.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-smscode/use-smscode.vue
new file mode 100644
index 0000000..a99c4e8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-smscode/use-smscode.vue
@@ -0,0 +1,110 @@
+<template>
+ <view class="w-full dflex padding-bottom-sm">
+ <view class="iconfont iconyanzheng margin-right"></view>
+ <view class="dflex flex1 border-line">
+ <input class="padding-sm flex1" type="number" data-key="code" maxlength="6" :focus="codeFocus" :value="code"
+ @confirm="confirm" @input="inputChange" placeholder="请输入验证码" />
+
+ <view class="pos-r">
+ <view class="vertical-line" style="right: calc(100% + 20rpx);"></view>
+ <view v-if="!send" class="padding-tb-sm ft-dark-4" @click="sendCode">发送验证码</view>
+ <view v-else class="padding-tb-sm ft-dark-4">{{code_time}}s 重新获取</view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ name: "use-smscode",
+ props: {
+ agreement: {
+ type: Boolean,
+ default: true
+ },
+ agreementContent: {
+ type: String,
+ default: ''
+ },
+ mobile: {
+ type: String,
+ default: ''
+ },
+ type: {
+ type: String,
+ default: 'register'
+ }
+ },
+ data() {
+ return {
+ send: false,
+ code_time: 60,
+ code: '',
+ codeFocus: false
+ };
+ },
+ methods: {
+ inputChange(e) {
+ this.$emit('change', e.detail.value);
+ },
+ sendCode() {
+ let _this = this;
+ if (this.send) return;
+
+ if (!this.agreement) {
+ this.$messagebox.show(this.agreementContent);
+ return;
+ }
+
+ if (!this.mobile) {
+ this.$messagebox.show('请输入手机号');
+ return;
+ }
+ if (!/(^1[3|4|5|7|8|9][0-9]{9}$)/.test(this.mobile)) {
+ this.$messagebox.show('请输入正确的手机号码');
+ return;
+ }
+
+ uni.showLoading({
+ title: '发送中'
+ })
+
+ this.send = true;
+ this.code_time = 30;
+
+ _this.$authapi.GetSMSCode(this.mobile).then((res) => {
+ uni.hideLoading();
+ console.log(res);
+ if (res.code == 200) {
+ _this.$messagebox.show("验证码已发送");
+ this.codeFocus = true;
+ let timer = setInterval(() => {
+ --this.code_time;
+
+ if (this.code_time <= 0) {
+ clearInterval(this.timer)
+ this.send = false;
+ this.code_time = 30;
+ return;
+ }
+ }, 1000);
+ return;
+ } else {
+ _this.$messagebox.show(res.message);
+ }
+
+ this.send = false;
+ this.code_time = 30;
+ this.$messagebox.show(res.message);
+ });
+ },
+ confirm() {
+ this.$emit('confirm', this.code);
+ }
+ }
+ }
+</script>
+
+<style>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-totop/use-totop.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-totop/use-totop.vue
new file mode 100644
index 0000000..dd239fe
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/use-totop/use-totop.vue
@@ -0,0 +1,84 @@
+<template>
+ <view class="use-totop fixed-top animated" @tap.stop="totop" :class="{ 'fade-in': visible, 'dn': !visible, 'margin-b-50': type == 'tabbar', 'safe-area-inset-bottom-plus': safeAreaInsetBottom }"
+ :style="{ bottom: bottom + 'rpx', right: right + 'rpx' }">
+ <text class="iconfont iconzhiding"></text>
+ </view>
+</template>
+
+<script>
+ export default {
+ props: {
+ top: {
+ type: Number,
+ default: 100
+ },
+ right: {
+ type: String,
+ default: '30'
+ },
+ bottom: {
+ type: String,
+ default: '30'
+ },
+ duration: {
+ type: Number,
+ default: 120
+ },
+ scrollTop: {
+ type: Number,
+ default: 0
+ },
+ type: {
+ type: String,
+ default: 'normal'
+ },
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: false
+ }
+ },
+ watch: {
+ scrollTop(nv, ov) {
+ this.s_top = nv;
+ this.change();
+ }
+ },
+ data() {
+ return {
+ s_top: 0,
+ visible: false
+ };
+ },
+ methods: {
+ totop() {
+ uni.pageScrollTo({
+ scrollTop: 0,
+ duration: this.duration
+ })
+
+ this.$emit('to', {
+ type: 'to',
+ scrollTop: this.s_top
+ });
+ },
+ change(scrollTop) {
+ this.s_top = scrollTop;
+ if (this.s_top > this.top) {
+ if (!this.visible) this.visible = true;
+ } else {
+ if (this.visible) this.visible = false;
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ .use-totop {}
+
+ .margin-b-50 {
+ /* #ifdef H5 */
+ margin-bottom: calc(env(safe-area-inset-bottom) + 50px);
+ /* #endif */
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/userProfile/userProfile.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/userProfile/userProfile.vue
new file mode 100644
index 0000000..76c5003
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/components/userProfile/userProfile.vue
@@ -0,0 +1,154 @@
+<template>
+ <view class="user-info">
+ <text class="title">点击头像设置</text>
+ <u-upload @afterRead="afterRead" :use-before-read="true" @beforeRead="beforeRead" name="1" :maxCount="1" width="120"
+ height="120">
+ <up-avatar :src="userStore.userinfo.avatarurl" size="120"></up-avatar>
+ </u-upload>
+ <text class="title">昵称设置</text>
+ <up-input placeholder="请输入昵称" border="surround" v-model="userStore.userinfo.nickname" maxlength="9"></up-input>
+ <view class="save">
+ <up-button type="primary" text="保存" size="small" @click="save"></up-button>
+ </view>
+
+ <!-- <button class="avatar" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
+ <image :src="userStore.userinfo.avatarurl" class="avatar-img"></image>
+ </button>
+ <input class="nickname" type="nickname" :value="nickname" @blur="bindblur" placeholder="请输入昵称" /> -->
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { getFileUploadUrl } from "../../apis/common"
+import { UpdateVIPMaster } from "../../apis/api"
+export default {
+ props: {
+ saveCB: {
+ type: Function,
+ default: null,
+ },
+ },
+ setup(props) {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ uploadurl: ''
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ state.uploadurl = getFileUploadUrl();
+ }
+
+
+ const beforeRead = (e) => {
+ const size = (e.file.size) / 1024 / 1024
+ const index = e.file.url.indexOf('.')
+ const type = e.file.url.substring(index + 1)
+ if (type !== 'png' && type !== 'jpg' && type !== 'jpeg') {
+ uni.$u.toast('文件格式不正确, 请上传png/jpg/jpeg图片格式文件')
+ return false
+ } else {
+ if (size > 1.1) {
+ uni.$u.toast('上传图片大小不能超过1MB')
+ return false
+ }
+ }
+ }
+
+ const afterRead = async (event) => {
+ return new Promise((resolve, reject) => {
+ uni.uploadFile({
+ url: state.uploadurl, // 上传地址
+ filePath: event.file.url,
+ name: 'file',
+ formData: {
+ user: 'test',
+ },
+ success: (res) => {
+ userStore.userinfo.avatarurl = res.data
+ setTimeout(() => {
+ resolve(res.data.data);
+ }, 1000);
+ },
+ });
+ });
+ };
+
+ const save = () => {
+ if (!userStore.userinfo.avatarurl) {
+ uni.$u.toast('请上传头像')
+ return
+ }
+ if (!userStore.userinfo.nickname) {
+ uni.$u.toast('请设置昵称')
+ return
+ }
+ let obj = {
+ avatarurl: userStore.userinfo.avatarurl,
+ nickname: userStore.userinfo.nickname,
+ id: userStore.userinfo.id
+ }
+ uni.showLoading({
+ title: '保存中...',
+ });
+ UpdateVIPMaster(obj).then((res) => {
+ uni.hideLoading();
+ if (res.code == 200) {
+ proxy.$emit('saveCB');
+ } else {
+ uni.$u.toast('保存失败');
+ }
+ }).catch(err => {
+ uni.$u.toast('保存失败');
+ });
+ }
+
+
+
+ // const onChooseAvatar = (e) => {
+ // userStore.userinfo.avatarurl = e.detail.avatarUrl
+ // }
+ // const bindblur = (e) => {
+ // console.log(e, 888)
+ // }
+
+ return { ...toRefs(state), userStore, afterRead, beforeRead, save }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.user-info {
+ width: 100%;
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 5vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ .title {
+ color: gray;
+ margin: 20rpx;
+ }
+
+ .save {
+ margin-top: 20rpx;
+ width: 150rpx;
+ overflow: auto;
+ margin-bottom: 40rpx;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/config.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/config.js
new file mode 100644
index 0000000..3b64d10
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/config.js
@@ -0,0 +1,18 @@
+let config = {
+ appid: 'wx1e7526eb4d9cf91c',
+ questionhost: 'https://bwf.farriver.top/mobile/question?',
+ staticDomain: "https://bwf.farriver.top/static/",
+ // serverhost: 'https://bwf.farriver.top/api',
+ serverhost: 'http://localhost:9031/api',
+ // questionhost: 'http://localhost:9005/bwf/mobile/question?',
+
+ // 自定义头部 custom: 自定义,default: 系统默认
+ navbar: 'default',
+ debug: !0,
+ version: '1.0.0', // 版本号
+ appname: '', // 应用名称
+ appabbr: '', // 简称
+ appslogan: '',
+};
+
+export default config
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/main.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/main.js
new file mode 100644
index 0000000..c3ce82c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/main.js
@@ -0,0 +1,31 @@
+import { createSSRApp } from "vue";
+import App from "./App.vue";
+import uviewPlus from 'uview-plus'
+import * as Pinia from "pinia"
+import persist from 'pinia-plugin-persistedstate'
+import svgIcon from './components/common/svgIcon.vue'
+// import api from './apis/api'
+// import validator from './common/validator.js'
+// import config from './config.js'
+
+
+export function createApp() {
+
+ const app = createSSRApp(App);
+ //全局引入
+ // app.config.globalProperties.$api = api
+ // app.config.globalProperties.$config = config
+ // app.config.globalProperties.$validator = validator
+
+ app.use(uviewPlus)
+ const pinia = Pinia.createPinia()
+ pinia.use(persist)
+ app.use(pinia)
+ app.component('svg-icon', svgIcon);
+
+ return {
+ app,
+ pinia
+ };
+}
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/manifest.json b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/manifest.json
new file mode 100644
index 0000000..f40be19
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/manifest.json
@@ -0,0 +1,73 @@
+{
+ "name" : "",
+ "appid" : "",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+ "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+ "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+ "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+ "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+ "<uses-feature android:name=\"android.hardware.camera\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+ ]
+ },
+ /* ios打包配置 */
+ "ios" : {},
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "wx1e7526eb4d9cf91c",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true,
+ "lazyCodeLoading": "requiredComponents"
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics": {
+ "enable": false
+ },
+ "vueVersion" : "3"
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages.json b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages.json
new file mode 100644
index 0000000..a15ed38
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages.json
@@ -0,0 +1,128 @@
+{
+ "easycom": {
+ "custom": {
+ "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
+ "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
+ "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"
+ }
+ },
+ "lazyCodeLoading": "requiredComponents",
+ "pages": [
+ {
+ "path": "pages/home/index",
+ "style": {
+ "navigationBarTitleText": "首页"
+ }
+ },
+ {
+ "path": "pages/category/index",
+ "style": {
+ "navigationBarTitleText": "分类"
+ }
+ },
+ {
+ "path": "pages/search/index",
+ "style": {
+ "navigationBarTitleText": "搜索"
+ }
+ },
+ {
+ "path": "pages/product/index",
+ "style": {
+ "navigationBarTitleText": "产品"
+ }
+ },
+ {
+ "path": "pages/activity/index",
+ "style": {
+ "navigationBarTitleText": "活动"
+ }
+ },
+ {
+ "path": "pages/shoppingcart/index",
+ "style": {
+ "navigationBarTitleText": "购物车"
+ }
+ },
+ {
+ "path": "pages/my/index",
+ "style": {
+ "navigationBarTitleText": "我的"
+ }
+ },
+ {
+ "path": "pages/my/recharge",
+ "style": {
+ "navigationBarTitleText": "充值"
+ }
+ },
+ {
+ "path": "pages/my/setting",
+ "style": {
+ "navigationBarTitleText": "设置"
+ }
+ },
+ {
+ "path": "pages/my/share",
+ "style": {
+ "navigationBarTitleText": "分享"
+ }
+ },
+ {
+ "path": "pages/pay/pay",
+ "style": {
+ "navigationBarTitleText": "支付"
+ }
+ },
+ {
+ "path": "pages/security/login",
+ "style": {
+ "navigationBarTitleText": "登录"
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "xxx题库",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ },
+ "tabBar": {
+ "color": "#7A7E83",
+ "selectedColor": "#52ba9d",
+ "borderStyle": "black",
+ "backgroundColor": "#FFFFFF",
+ "list": [
+ {
+ "pagePath": "pages/home/index",
+ "iconPath": "static/image/tabbar/home.png",
+ "selectedIconPath": "static/image/tabbar/home-active.png",
+ "text": "首页"
+ },
+ {
+ "pagePath": "pages/category/index",
+ "iconPath": "static/image/tabbar/home.png",
+ "selectedIconPath": "static/image/tabbar/home-active.png",
+ "text": "分类"
+ },
+ {
+ "pagePath": "pages/activity/index",
+ "iconPath": "static/image/tabbar/home.png",
+ "selectedIconPath": "static/image/tabbar/home-active.png",
+ "text": "朋友圈"
+ },
+ {
+ "pagePath": "pages/shoppingcart/index",
+ "iconPath": "static/image/tabbar/home.png",
+ "selectedIconPath": "static/image/tabbar/home-active.png",
+ "text": "购物车"
+ },
+ {
+ "pagePath": "pages/my/index",
+ "iconPath": "static/image/tabbar/user.png",
+ "selectedIconPath": "static/image/tabbar/user-active.png",
+ "text": "我的"
+ }
+ ]
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/activity/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/activity/index.vue
new file mode 100644
index 0000000..81cbccc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/activity/index.vue
@@ -0,0 +1,159 @@
+<template>
+ <view class="margin-sm">
+ <view class="dflex-b">
+ <image src="/static/image/favicon.png" class="border-radius-lg headimg" style="width: 66rpx; height: 66rpx;"
+ mode="" @click="user"></image>
+ <view class="flex1 margin-left-sm">
+ <view class="bg-main border-radius-lg dflex" style="height: 76rpx; line-height: 76rpx;">
+ <input type="text" placeholder="输入关键词" class="w-full padding-lr"/>
+ <view class="iconfont iconsousuo-01 bg-base border-radius-lg h-full padding-lr-xl" @click="search">
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="margin-top">
+ <scroll-view scroll-x class="ws-np">
+ <view class="dflex padding-bottom-sm">
+ <block v-for="(item,index) in ['全部','关注','推荐','服饰','箱包','鞋子','手机','家电','饰品']" :key="index">
+ <view class="pos-r padding-tb-sm margin-right-xs padding-lr diblock line-height-1 tac"
+ :class="{active: title_id === index}" @click="pitch(index)">
+ {{item}}
+ <view class="badge" v-if="item == '关注'">2</view>
+ </view>
+ </block>
+ </view>
+ </scroll-view>
+ </view>
+ <view class="goodsContent border-radius">
+ <view class="goodsLeftList">
+ <block v-for="(item, index) in [1,1,1,1,1,1]" :key="index">
+ <view class="bg-main margin-bottom-sm border-radius" @click="dongt(item.id)">
+ <block v-for="(img, img_idx) in [1]" :key="img_idx">
+ <image src="https://cdn.uviewui.com/uview/goods/2.jpg"
+ style="max-height: 340rpx;" class="flex1" mode="heightFix"></image>
+ </block>
+ <view class="padding-lr-sm margin-top-sm clamp-2">阿吉豆耳钉女日韩可爱甜美气质猫咪耳环人造猫眼石文艺钩坠耳饰品</view>
+ <view class="dflex-b padding-lr-sm margin-tb-sm">
+ <view class="dflex" style="width: 60%;">
+ <image src="/static/image/favicon.png" class="border-radius-c headimg"
+ style="width: 50rpx; height: 50rpx;"></image>
+ <view class="ft-dark margin-left-xs fs-xxs">Usecloud</view>
+ </view>
+ <view class="dflex">
+ <view class="iconfont iconaixin"></view>
+ <view class="clamp ft-dark margin-left-xs fs-xxs">355</view>
+ </view>
+ </view>
+ </view>
+ </block>
+ </view>
+ <view class="goodsRightList">
+ <block v-for="(item, index) in [1,1,1,1,1,1]" :key="index">
+ <view class="bg-main margin-bottom-sm border-radius" @click="dongt(item.id)">
+ <block v-for="(img, img_idx) in [1]" :key="img_idx">
+ <image src="https://cdn.uviewui.com/uview/goods/1.jpg"
+ style="max-height: 340rpx;" class="flex1" mode="heightFix">
+ </image>
+ </block>
+ <view class="padding-lr-sm margin-top-sm clamp-2">小包包女新款潮2020法国小众质感高级感洋气小ck小香风链条斜挎包</view>
+ <view class="dflex-b padding-lr-sm margin-tb-sm">
+ <view class="dflex" style="width: 60%;">
+ <image src="/static/image/favicon.png" class="border-radius-c headimg"
+ style="width: 50rpx; height: 50rpx;"></image>
+ <view class="ft-dark margin-left-xs fs-xxs">Usecloud</view>
+ </view>
+ <view class="dflex">
+ <view class="iconfont iconaixin"></view>
+ <view class="clamp ft-dark margin-left-xs fs-xxs">356</view>
+ </view>
+ </view>
+ </view>
+ </block>
+ </view>
+ </view>
+
+ </view>
+</template>
+
+
+<script>
+ import {ref, reactive, toRefs, onMounted, getCurrentInstance} from "vue";
+ import {useBasicInfoStore} from "../../store/basicInfo"
+
+ export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+ title_id: 0,
+
+ scrollTop: 0,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+
+ }
+ const user = () => {
+ uni.navigateTo({
+ url: `/sub-shopping/pages/user`
+ });
+ }
+ // 搜索
+ const search = () => {
+ proxy.$refs.uToast.success(`搜索`);
+ }
+ const pitch = (index) => {
+ state.title_id = index
+ }
+ // 跳转详情页
+ const dongt = (options) => {
+ uni.navigateTo({
+ url: `/sub-shopping/pages/detail?id=${options}`
+ });
+ }
+
+ return {...toRefs(state), userStore, user, search, pitch, dongt}
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ page {
+ background-color: #F5F5F5;
+ }
+
+ .active {
+ color: #ff6a6c;
+ font-weight: bold;
+ font-size: 34 rpx;
+ }
+
+ .goodsContent {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+
+ .ft-dark {
+ color: #585858;
+ }
+ }
+
+ .goodsLeftList,
+ .goodsRightList {
+ padding: 0.1rem;
+ width: 50%;
+ overflow: hidden;
+ }
+
+ .goodsLeftList {
+ margin-right: 2 rpx;
+ }
+
+ .goodsRightList {
+ margin-left: 2 rpx;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/category/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/category/index.vue
new file mode 100644
index 0000000..1daef40
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/category/index.vue
@@ -0,0 +1,301 @@
+<template>
+ <view class="wh-full">
+ <useNavbar title="分类"></useNavbar>
+
+ <!-- 头部组件 -->
+ <useHeader :fixed="headerFixed" :placeholder="headerPlaceholder" type="gray" :search-tip="searchTip"
+ :search-auto="searchAuto"></useHeader>
+
+ <!-- 分类 -->
+ <view class="category dflex-s h-full padding-top-big">
+ <!-- 左侧一级分类 -->
+ <view class="h-full left padding-tb-16">
+ <scroll-view class="h-full" scroll-y="true" :scroll-top="scrollTop"
+ :scroll-with-animation="true">
+ <view v-for="(item,index) in fdatas" :key="index" class="item dflex-c"
+ :class="{'ac':active == index}">
+ <text @click="selectcategoryproduct(item,index)"> {{ item.name }}</text>
+ </view>
+ </scroll-view>
+ </view>
+
+ <!-- 右侧 1二级分类 2商品列表 -->
+ <scroll-view class="h-full right" scroll-with-animation scroll-y :scroll-top="top"
+ :style="{ height: scrollHeight, padding: 0 , width: '100%', backgroundColor: 'transparent'}"
+ @scroll="onScroll">
+ <view v-for="(item,index) in children" :key="index" class="item dflex-c" style="width: 100%;"
+ :class="{'ac':active == index}">
+ <view class="limit-area use-area margin-lr-sm" style="width: 100%;">
+ <text style="font-size: 15px;font-weight: bold;">{{ item.name }}</text>
+ <u-row v-if="item.children.length>0">
+ <u-col span="6" v-for="(i,indexs) in item.children" @click="getproducts(i,indexs)">
+ <view style="text-align: center;">
+ <image class="flex1" mode="heightFix" style="margin-top: 10px;width: 100%;"
+ src="https://www.farriver.top/d335a9db-464f-4123-9f2f-66e36e800489/others/20221022/d3de83ae-41b2-4ec3-bec5-38f0417cd196.jpg">
+ </image>
+ </view>
+ <view style="text-align: center;">
+ {{i.name}}
+ </view>
+ </u-col>
+ </u-row>
+ <u-empty v-else text="暂无更多数据!" mode="data"></u-empty>
+ </view>
+ </view>
+ </scroll-view>
+
+ <!-- 置顶 -->
+ <use-totop ref="usetop" type="tabbar" bottom="150" :top="10" :style="{ marginBottom: navHeight + 'px' }"
+ @to="totop"></use-totop>
+ </view>
+ <template>
+ <view>
+ <u-popup v-model="show" mode="bottom" width="50px" height="400px">
+ <view v-if="productformation">
+ <view style="margin-top: 80px;">
+ <u-row>
+ <u-col span="1">
+ <view>
+ <image :src="productformation.img" mode="aspectFill"
+ style="height: 80px;width: 80px;">
+ </image>
+ </view>
+ </u-col>
+ <u-col span="8">
+ <view style="margin-left: 150px;margin-top: -90px;">
+ <view>名称:{{productformation.productname}}</view>
+ <view>价格:{{productformation.price}}元</view>
+ </view>
+ </u-col>
+ </u-row>
+ </view>
+ <!-- <view>颜色:</view> -->
+ <view style="margin-left: 20px;">
+ <u-row>
+ 尺码:
+ </u-row>
+ <u-row>
+ <view>
+ <u-radio-group v-model="value">
+ <text @change="radioChange" v-for="(item, index) in chima" :name="item"
+ style="width: 50px; border-radius: 30%; border-style:solid;text-align: center;margin-left: 20px;margin-top: 5px;">
+ {{item}}
+ </text>
+ </u-radio-group>
+
+ </view>
+ </u-row>
+ </view>
+ </view>
+ <view style=": 1px;">
+ <button @click="addshoppbus">加入购物车</button>
+ <button>立即购买</button>
+ </view>
+ </u-popup>
+ </view>
+ </template>
+
+ <!-- 切换模式 1二级分类 2商品列表 -->
+ <view class="fixed-top" :style="{ marginBottom: navHeight + 'px' }" @click="changeMode">
+ <text class="iconfont iconpailie" v-if="mode == 1"></text>
+ <text class="iconfont iconpailie02" v-if="mode == 2"></text>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {ref, reactive, toRefs, onMounted, getCurrentInstance} from "vue";
+ import {onShow} from "@dcloudio/uni-app";
+ import {useBasicInfoStore} from "../../store/basicInfo";
+ import {GetProductCategoryListByParentName, GetProductListByCategoryId} from '../../apis/api';
+ import {useNavbar} from "../../components/use-navbar/use-navbar.vue";
+ import {useHeader} from "../../components/use-header/use-header.vue";
+
+ export default {
+ components: {useNavbar, useHeader},
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+ categories: [],
+ category: userStore.category,
+ products: [],
+ // 1分类列表 2商品列表
+ mode: 2,
+ // 兼容支付宝 height 显示 bug
+ scrollHeight: '100%',
+ active: 0,
+ scrollTop: 0,
+ height: 0,
+ // 头部参数
+ headerPlaceholder: 0,
+ headerFixed: !0,
+ searchAuto: !0,
+ searchTip: '请输入搜索关键字',
+ // 当前选中分类ID
+ value: 1,
+ needcount: "",
+ cid: 0,
+ cname: '',
+ categoryids: [],
+ // 一级数据
+ fdatas: [],
+ // 二级数据
+ children: [],
+ secchildren: [],
+ categoryDatas: [],
+ categoryEmpty: false,
+ show: false,
+ needpayproducts: [],
+ // 商品列表
+ goodsDatas: [],
+ chima: ["39", "40", "41", "42", "43",],
+ empty: false,
+ hasmore: 0,
+ productformation: [],
+ loadmoreType: 'nomore',
+ // 商品请求数据
+ reqdata: {
+ rows: 20,
+ page: 1
+ },
+
+ top: 0,
+ navHeight: 0
+ })
+
+ onMounted(() => {
+ Init();
+ loadProductCategories();
+ });
+
+ onShow((option) => {
+ console.log(option); // 获取url中query部分的参数
+ })
+
+ const Init = () => {
+
+ }
+
+ const loadProductCategories = () => {
+ state.categories = [];
+
+ GetProductCategoryListByParentName("家政服务").then(resp => {
+ if (resp.data) {
+ state.categories = resp.data;
+ if (state.categories) {
+ if (!state.category) {
+ state.category = state.categories.shift();
+ console.log(state.category);
+ }
+
+ loadProductListByCategoryId(state.category.id);
+ }
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const loadProductListByCategoryId = (categoryid) => {
+ state.products = [];
+
+ GetProductListByCategoryId(categoryid).then(resp => {
+ if (resp.data) {
+ state.products = resp.data;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const onProductClick = (product) => {
+ let params = {
+ id: product.id
+ }
+
+ uni.navigateTo({
+ url: `/pages/product/index?data=${encodeURIComponent(JSON.stringify(params))}`,
+ });
+
+ // proxy.$refs.uToast.success(`点击了${product.name}`)
+ }
+
+ return {...toRefs(state), userStore, onProductClick}
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ page {
+ height: 100%;
+ background-color: $page-color-base;
+ }
+
+ .category {
+ overflow: hidden;
+
+ .left {
+ width: 180 rpx;
+ background-color: $page-color-base;
+
+ .item {
+ font-size: 28 rpx;
+ height: 100 rpx;
+ color: $font-color-base;
+ position: relative;
+
+ &.active {
+ color: $uni-color-primary;
+ font-size: 38 rpx;
+ font-weight: 580;
+ }
+ }
+ }
+
+ .addbutton {
+ height: 28px;
+ width: 20px;
+ background-color: red;
+ margin-left: 150px;
+ border-radius: 50%;
+ margin-top: 25px;
+ line-height: 28px;
+
+
+ }
+
+ .right {
+ flex: 1;
+ overflow: hidden;
+ display: block;
+
+ .item {
+ flex-shrink: 0;
+ width: 33.33%;
+ font-size: $font-sm + 2upx;
+ color: #666;
+
+ image {
+ width: 130 rpx;
+ height: 130 rpx;
+ }
+ }
+ }
+ }
+
+ .goods {
+ display: flex;
+
+ .goods-left {
+ image {
+ width: 120 rpx;
+ height: 120 rpx;
+ }
+ }
+
+ .price-box {
+ bottom: 0;
+ }
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/home/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/home/index.vue
new file mode 100644
index 0000000..5841a1c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/home/index.vue
@@ -0,0 +1,319 @@
+<template>
+ <view class="u-page">
+ <u-toast ref="uToast"/>
+ <view class="u-block">
+ <u-search :show-action="false" :disabled="true" @click="onSearchTextClick"/>
+ </view>
+ <view class="swiper">
+ <u-swiper :list="swiperList" height="200" imgMode="aspectFill" @click="onSwiperClick"/>
+ </view>
+ <view class="u-block">
+ <u-scroll-list>
+ <view class="scroll-list">
+ <view class="scroll-list__line"
+ v-for="(item, index) in menuArr"
+ :key="index">
+ <view class="scroll-list__line__item"
+ v-for="(item1, index1) in item"
+ :key="index1"
+ :class="[(index1 === item.length - 1) && 'scroll-list__line__item--no-margin-right']">
+ <image
+ class="scroll-list__line__item__image"
+ :src="menuBaseUrl + item1.icon"
+ mode=""
+ ></image>
+ <text class="scroll-list__line__item__text">{{ item1.name }}</text>
+ </view>
+ </view>
+ </view>
+ </u-scroll-list>
+ </view>
+ <view class="u-block">
+ <u-scroll-list @right="right" @left="left">
+ <view class="scroll-list" style="flex-direction: row;">
+ <view class="scroll-list__goods-item"
+ v-for="(item, index) in list"
+ :key="index"
+ :class="[(index === 9) && 'scroll-list__goods-item--no-margin-right']">
+ <image class="scroll-list__goods-item__image" :src="item.thumb"></image>
+ <text class="scroll-list__goods-item__text">¥{{ item.price }}</text>
+ </view>
+ <view class="scroll-list__show-more">
+ <text class="scroll-list__show-more__text">查看更多</text>
+ <u-icon name="arrow-leftward" color="#f56c6c" size="12"></u-icon>
+ </view>
+ </view>
+ </u-scroll-list>
+ </view>
+ <view class="u-block">
+ <view v-for="(category,i) in categoryProducts" :key="category.id">
+ <view style="margin: 10px;text-align: center; vertical-align: center; background-color: #f5f4f4; width: 100%; height: 40px;">
+ <text>{{category.name}}</text>
+ <u-icon name="more-dot-fill" color="#f56c6c" size="12"></u-icon>
+ </view>
+ <view>
+ <u-grid :border="true">
+ <u-grid-item v-for="(product,j) in category.products" :key="product.id"
+ @click="onProductClick(product)">
+ <view>
+ <up-image :show-loading="true" :src="'https://cdn.uviewui.com/uview/swiper/swiper1.png'"
+ width="60px" height="60px"/>
+ <text>{{product.name}}</text>
+ </view>
+ </u-grid-item>
+ </u-grid>
+ </view>
+ <view>
+ <text>查看更多</text>
+ <u-icon name="arrow-leftward" color="#f56c6c" size="12"/>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {ref, reactive, toRefs, onMounted, getCurrentInstance} from "vue";
+ import {useBasicInfoStore} from "../../store/basicInfo"
+ import {GetProductCategoryWithProductList} from '../../apis/api'
+
+ export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+ swiperList: [
+ 'https://cdn.uviewui.com/uview/swiper/swiper1.png',
+ 'https://cdn.uviewui.com/uview/swiper/swiper2.png',
+ 'https://cdn.uviewui.com/uview/swiper/swiper3.png',
+ ],
+ menuBaseUrl: 'https://cdn.uviewui.com/uview/menu/',
+ list: [
+ {
+ price: '230.5',
+ thumb: 'https://cdn.uviewui.com/uview/goods/1.jpg'
+ }, {
+ price: '74.1',
+ thumb: 'https://cdn.uviewui.com/uview/goods/2.jpg'
+ }, {
+ price: '8457',
+ thumb: 'https://cdn.uviewui.com/uview/goods/6.jpg'
+ }, {
+ price: '1442',
+ thumb: 'https://cdn.uviewui.com/uview/goods/5.jpg'
+ }, {
+ price: '541',
+ thumb: 'https://cdn.uviewui.com/uview/goods/2.jpg'
+ }, {
+ price: '234',
+ thumb: 'https://cdn.uviewui.com/uview/goods/3.jpg'
+ }, {
+ price: '562',
+ thumb: 'https://cdn.uviewui.com/uview/goods/4.jpg'
+ }, {
+ price: '251.5',
+ thumb: 'https://cdn.uviewui.com/uview/goods/1.jpg'
+ }
+ ],
+ menuArr: [
+ [{
+ name: '天猫新品',
+ icon: '11.png'
+ },
+ {
+ name: '今日爆款',
+ icon: '9.png'
+ }, {
+ name: '天猫国际',
+ icon: '17.png'
+ }, {
+ name: '饿了么',
+ icon: '6.png'
+ }, {
+ name: '天猫超市',
+ icon: '11.png'
+ }, {
+ name: '分类',
+ icon: '2.png'
+ }, {
+ name: '天猫美食',
+ icon: '3.png'
+ }, {
+ name: '阿里健康',
+ icon: '12.png'
+ }, {
+ name: '口碑生活',
+ icon: '7.png'
+ }
+ ],
+ [{
+ name: '充值中心',
+ icon: '8.png'
+ },
+ {
+ name: '机票酒店',
+ icon: '10.png'
+ }, {
+ name: '金币庄园',
+ icon: '18.png'
+ }, {
+ name: '阿里拍卖',
+ icon: '15.png'
+ }, {
+ name: '淘宝吃货',
+ icon: '16.png'
+ }, {
+ name: '闲鱼',
+ icon: '4.png'
+ }, {
+ name: '会员中心',
+ icon: '6.png'
+ }, {
+ name: '造点新货',
+ icon: '13.png'
+ }, {
+ name: '土货鲜食',
+ icon: '14.png'
+ }
+ ]
+ ],
+ categoryProducts: [],
+ category: null,
+ })
+
+ onMounted(() => {
+ Init();
+ loadProductCategories();
+ });
+
+ const Init = () => {
+
+ }
+
+ const loadProductCategories = () => {
+ state.categoryProducts = [];
+
+ GetProductCategoryWithProductList({productcount: 6}).then(resp => {
+ if (resp.data) {
+ state.categoryProducts = resp.data;
+ if (state.categoryProducts)
+ state.categoryProducts = state.categoryProducts.filter(c => c.products != null && c.products.length > 0);
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const onSwiperClick = (data) => {
+ console.log(data);
+ }
+
+ const onProductCategoryClick = (category) => {
+ userStore.category = category;
+
+ uni.switchTab({
+ url: `/pages/category/index`,
+ });
+ }
+
+ const onProductClick = (product) => {
+ let params = {
+ id: product.id
+ }
+
+ uni.navigateTo({
+ url: `/pages/product/index?data=${encodeURIComponent(JSON.stringify(params))}`,
+ });
+ }
+
+ const onSearchTextClick = (data) => {
+
+ uni.navigateTo({
+ url: `/pages/search/index`,
+ });
+ proxy.$refs.uToast.success(`点击了search`)
+ }
+
+ return {
+ ...toRefs(state),
+ userStore,
+ onSearchTextClick,
+ onSwiperClick,
+ onProductCategoryClick,
+ onProductClick
+ }
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .u-block {
+ margin: 10px;
+ }
+
+ .swiper {
+ width: 100%;
+ overflow: auto;
+ }
+
+ .scroll-list {
+ @include flex(column);
+
+ &__goods-item {
+ margin-right: 20px;
+
+ &__image {
+ width: 60px;
+ height: 60px;
+ border-radius: 4px;
+ }
+
+ &__text {
+ color: #f56c6c;
+ text-align: center;
+ font-size: 12px;
+ margin-top: 5px;
+ }
+ }
+
+ &__show-more {
+ background-color: #fff0f0;
+ border-radius: 3px;
+ padding: 3px 6px;
+ @include flex(column);
+ align-items: center;
+
+ &__text {
+ font-size: 12px;
+ width: 12px;
+ color: #f56c6c;
+ line-height: 16px;
+ }
+ }
+
+ &__line {
+ @include flex;
+ margin-top: 10px;
+
+ &__item {
+ margin-right: 15px;
+
+ &__image {
+ width: 61px;
+ height: 48px;
+ }
+
+ &__text {
+ margin-top: 5px;
+ color: $u-content-color;
+ font-size: 12px;
+ text-align: center;
+ }
+
+ &--no-margin-right {
+ margin-right: 0;
+ }
+ }
+ }
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/index.vue
new file mode 100644
index 0000000..c37a29e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/index.vue
@@ -0,0 +1,132 @@
+<template>
+ <view class="content">
+ <view class="my-info">
+ <view class="avatar">
+ <up-avatar :src="userStore.userinfo.avatarurl" size="70"></up-avatar>
+ </view>
+ <view class="user-name">
+ <view>
+ <text >{{ userStore.userinfo.nickname }}</text>
+ </view>
+ <!-- <view>
+ <text class="info-text">{{ userStore.schoolName }}</text>
+ </view> -->
+ <!-- <view>
+ <text class="info-text">{{ userStore.collegeName }}</text>
+ </view>
+ <view>
+ <text class="info-text">{{ userStore.majorName }}</text>
+ </view> -->
+ </view>
+ <!--
+ <view class="name">
+
+ </view> -->
+
+ </view>
+ <view class="menu">
+ <u-cell-group>
+ <u-cell iconStyle="color:#52ba9d" icon="file-text-fill" title="我的题库" isLink
+ url="/pages/my/myquestion"></u-cell>
+ <!-- <u-cell iconStyle="color:#1684fc" icon="integral-fill" title="VIP" isLink :value="vipTerm"
+ url="/pages/my/vip"></u-cell> -->
+ <u-cell iconStyle="color:#52ba9d" icon="rmb-circle-fill" title="充值" :value="balance" isLink
+ url="/pages/my/recharge"></u-cell>
+ <!-- <u-cell iconStyle="color:#1684fc" icon="phone-fill" title="手机绑定" :value="phone" isLink
+ url="/pages/my/phnoe"></u-cell> -->
+ <u-cell iconStyle="color:#52ba9d" icon="setting-fill" title="设置" isLink url="/pages/my/setting"></u-cell>
+ <u-cell iconStyle="color:#52ba9d" icon="share-square" title="分享" isLink url="/pages/my/share"></u-cell>
+ </u-cell-group>
+ </view>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const state = reactive({
+ // vipTerm: '未开通',
+ balance: '',
+ phone: '',
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ // if (userStore.vip) {
+ // state.vipTerm = "有效期 " + userStore.vipTerm
+ // }
+ // state.balance = "余额 " + userStore.balance
+ // if (userStore.phone) {
+ // state.phone = userStore.phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
+ // } else {
+ // state.phone = "未绑定 "
+ // }
+ }
+
+
+ return { ...toRefs(state), userStore }
+ }
+}
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.content {
+ @extend .center;
+ //background-color: #f5efd9;
+ height: 100vh;
+ width: 100%;
+}
+
+.my-info {
+ // @extend .center;
+ height: 15vh;
+ width: 100%;
+ background-color: #52ba9d;
+ padding-top: 5vh;
+ display: flex;
+ justify-content: flex-start;
+ .avatar {
+ width: 70px;
+ height: 70px;
+ margin-left: 35rpx;
+ }
+
+ .user-name{
+ line-height: 70px;
+ color: #fff;
+ margin-left: 35rpx;
+ }
+
+ .info-text {
+ font-size: 12px;
+ color: gray;
+ }
+}
+
+.menu {
+ @extend .center;
+ height: 50vh;
+ width: 100%;
+ margin-top: 3vh;
+
+ ::v-deep .u-cell-group {
+ width: 90%;
+ margin: 0 rpx auto;
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/recharge.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/recharge.vue
new file mode 100644
index 0000000..5a1e321
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/recharge.vue
@@ -0,0 +1,207 @@
+<template>
+ <view class="content">
+ <image class="image-top" mode="aspectFill" lazy-load src="../../static/image/recharge.jpg"></image>
+ <view class="balance">
+ <view><text style="font-weight: 550;">余额:</text><text style="color:#3c9cff ;">¥{{ balance }}</text></view>
+ </view>
+ <view class="recharge">
+ <view class="option" v-for="(item, index) in package" :key="index" @click="sel(item, index)">
+ <text class="info-left" :style="selIndex == index ? 'color:#3c9cff' : ''">¥{{ item.amount }}
+ <text class="info-right" v-if="item.description">
+ ( <text>{{ item.description }}</text> )
+ </text>
+ </text>
+ <u-icon v-if="selIndex == index" name="checkbox-mark" color="#3c9cff"></u-icon>
+ </view>
+ </view>
+ <view class="submit">
+ <u-button size="large" type="primary" @click="submit">立即支付</u-button>
+ </view>
+
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted } from "vue";
+import { onLoad, onShow } from "@dcloudio/uni-app";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { CreateActiveOrder, getWalletDetail, depositActivityList } from "../../apis/api"
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const state = reactive({
+ package: [],
+ selIndex: 0,
+ depositSel: null,
+ balance: 0,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ onShow(() => {
+ getWalletDetailInfo()
+ })
+
+ const Init = () => {
+ }
+
+ const getWalletDetailInfo = () => {
+
+ getWalletDetail(userStore.userinfo.id).then((res) => {
+ if (res) {
+ state.balance = res.balance
+ }
+ })
+ let obj = {
+ pageIndex: 1,
+ pageSize: 100
+ }
+ depositActivityList(obj).then((res) => {
+ if (res) {
+ state.package = res.data
+ } else {
+ uni.$u.toast('暂无充值选项');
+ }
+ })
+ }
+
+ const sel = (item, index) => {
+ state.depositSel = item
+ state.selIndex = index
+ }
+
+ const submit = () => {
+ let products = []
+ products.push({
+ productid: state.depositSel.id,
+ price: state.depositSel.amount * state.depositSel.discountrate,
+ productname: state.depositSel.name,
+ })
+
+ let condition = {
+ no: 1,
+ vipuserid: userStore.userinfo.id,
+ vipname: userStore.userinfo.nickname,
+ vipphone: userStore.userinfo.cellphone,
+ totalmoney: state.depositSel.amount * state.depositSel.discountrate,
+ paymoney: state.depositSel.amount * state.depositSel.discountrate,
+ products: products,
+ type: 0
+ }
+ userStore.payInfo = condition
+
+ CreateActiveOrder(condition).then(resp => {
+ if (resp.code == 200) {
+ userStore.payInfo.id = resp.data.id
+ userStore.payInfo.payedmoney = resp.data.totalmoney
+ userStore.payInfo.paymentmethod = 2
+ userStore.payInfo.payPrice = state.depositSel.amount * state.depositSel.discountrate
+ userStore.routePage = 'recharge'
+ uni.navigateTo({
+ url: '/pages/pay/pay'
+ })
+ }
+ else {
+ state.vipShow = false
+ uni.$u.toast('订单创建失败!');
+ }
+
+ }).catch(err => {
+ console.error(err);
+ });
+
+
+
+ // userStore.testTitle = item.title
+ // if (item.type == 2) {
+ // //state.discountPrice = item.price * userStore.vipDiscount / 10
+ // state.vipShow = true
+
+
+ // } else {
+ // uni.navigateTo({
+ // url: '/pages/question/type'
+ // });
+ // }
+ }
+
+
+
+
+ return { ...toRefs(state), userStore, sel, submit }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.image-top {
+ width: 100%;
+ height: 18vh;
+}
+
+.balance {
+ @extend .center;
+ width: calc(95% - 40rpx);
+ //height: 15vh;
+ overflow: auto;
+ padding: 40rpx 20rpx;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 20rpx;
+}
+
+.recharge {
+ @extend .center;
+ width: calc(95% - 40rpx);
+ //height: 15vh;
+ overflow: auto;
+ padding: 20rpx;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 20rpx;
+
+
+ .option {
+ width: 100%;
+ height: 80rpx;
+ line-height: 80rpx;
+ border-bottom: 1rpx solid #f5f5f5;
+ display: flex;
+ justify-content: space-between;
+
+ .info-left {}
+
+ .info-right {
+ font-size: 20rpx;
+ color: gray !important;
+ margin-left: 5px;
+ }
+ }
+
+}
+
+.submit {
+ width: 95%;
+ overflow: auto;
+ margin-top: 40rpx;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/setting.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/setting.vue
new file mode 100644
index 0000000..a7550d4
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/setting.vue
@@ -0,0 +1,129 @@
+<template>
+ <view class="content">
+ <view class="card">
+ <view class="count">
+ <text>学校信息设置</text>
+ <text style="color: gray;">剩余修改次数
+ <text style="color:#3c9cff"> {{ count }} </text>
+ 次
+ </text>
+ </view>
+ <view class="organization">
+ <view class="show" style="margin-top: 40rpx;">
+ <text>学校:</text>
+ <text class="info">{{ userStore.schoolName }}</text>
+ </view>
+ <view class="show">
+ <text>学院:</text>
+ <text class="info">{{ userStore.collegeName }}</text>
+ </view>
+ <view class="show">
+ <text>专业:</text>
+ <text class="info">{{ userStore.majorName }}</text>
+ </view>
+ </view>
+ <view class="submit" v-if="count > 0">
+ <u-button size="large" type="primary" shape="circle" @click="submit">修改</u-button>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {ref, reactive, toRefs, onMounted, getCurrentInstance} from "vue";
+ import {onLoad, onShow} from "@dcloudio/uni-app";
+ import {useBasicInfoStore} from "../../store/basicInfo"
+
+ export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+ count: 100,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ onShow(() => {
+
+ })
+
+ const Init = () => {
+
+ }
+
+
+ const submit = () => {
+ userStore.school = null
+ userStore.college = null
+ userStore.major = null
+ uni.navigateTo({url: '/pages/index/index'})
+ }
+
+
+ return {...toRefs(state), userStore, submit}
+ }
+ }
+
+
+</script>
+
+<style scoped lang="scss">
+ .center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+ }
+
+ .card {
+ width: 95%;
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 20 rpx;
+ padding: 20 rpx 0 rpx 60 rpx 0 rpx;
+ @extend .center;
+
+ .count {
+ width: calc(100% - 40rpx);
+ padding: 0 rpx 20 rpx;
+ height: 80 rpx;
+ border-bottom: 1px solid #f5f5f5;
+ line-height: 80 rpx;
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .organization {
+ width: 80%;
+ overflow: auto;
+
+ .show {
+ height: 80 rpx;
+ line-height: 80 rpx;
+
+ .info {
+ color: gray;
+ }
+ }
+
+ }
+ }
+
+
+ .submit {
+ width: 80%;
+ overflow: auto;
+ margin-top: 60 rpx;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/share.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/share.vue
new file mode 100644
index 0000000..bf6db90
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/my/share.vue
@@ -0,0 +1,91 @@
+<template>
+ <view class="content">
+ <button class="share" open-type="share" >分享</button>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { onLoad, onShow, onHide, onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
+import { useBasicInfoStore } from "../../store/basicInfo"
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+
+ }
+
+
+ onShareAppMessage((res) => {
+ // 分享事件来源:button(页面内分享按钮)、menu(右上角分享按钮)
+ if (res.from === 'button') {// 来自页面内分享按钮
+ return {
+ //分享标题
+ title: shopDetailsData.value?.GoodsName,
+ //页面 path
+ path: '/pages/index/index',
+ // 分享图标
+ // imageUr: shopDetailsData.value?.GoodsCoverImg,
+ success: function (res) {
+ // 转发成功
+ console.log('res', res);
+ },
+ fail: function (res) {
+ // 转发失败
+ console.log('res', res);
+
+ }
+ }
+ } else {
+ return {
+ title: shopDetailsData.value?.GoodsName,
+ path: '/pages/index/index',
+ //imageUr: shopDetailsData.value?.GoodsCoverImg
+ }
+ }
+ })
+
+
+
+
+
+
+
+ return { ...toRefs(state), userStore }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.share {
+ width: 80%;
+ margin-top: 60rpx;
+ background-color: #eabb38;
+ color: #fff;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/pay/pay.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/pay/pay.vue
new file mode 100644
index 0000000..f88be2e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/pay/pay.vue
@@ -0,0 +1,174 @@
+<template>
+ <view class="content"></view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { PayUseWXViaMiniProgram, PaySuccess, walletRecharge } from "../../apis/api";
+import { guid } from "../../common/common";
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ getWXLoginCode()
+ }
+
+ const getWXLoginCode = () => {
+ uni.login({
+ provider: 'weixin',
+ success: function (res) {
+ doPay(res.code,);
+ },
+ fail: () => { },
+ complete: () => { },
+ })
+ }
+
+ const doPay = (code) => {
+
+ const payData = {
+ requesturl: "",
+ code: code,
+ orderid: guid(),
+ totalprice: userStore.payInfo.payPrice,
+ }
+
+ PayUseWXViaMiniProgram(payData).then(payRes => {
+
+ if (payRes.code == 200) {
+ let pay = payRes.data;
+
+ wx_pay(
+ pay.timestamp,
+ pay.nonceStr,
+ pay.prepay_id,
+ pay.signType,
+ pay.paySign,
+ doPaySuccess, doPayFailed, doPayCompleted);
+ } else {
+ //this.$messagebox.show(payRes.message, 5000);
+ }
+ })
+ }
+
+ const doPaySuccess = (res) => {
+ uni.$u.toast('支付成功!');
+ PaySuccess(userStore.payInfo).then(resp => {
+ if (resp) {
+ switch (userStore.routePage) {
+ case 'list':
+ uni.navigateTo({
+ url: '/pages/question/type'
+ });
+ break;
+ case 'recharge':
+ let obj = {
+ pageIndex: 1,
+ pageSize: 101,
+ masterid: userStore.userinfo.id,
+ amount: userStore.payInfo.payPrice
+ }
+ walletRecharge(obj).then((res) => {
+ if (res.code == 200) {
+ uni.navigateTo({
+ url: '/pages/my/recharge'
+ });
+ } else {
+ uni.navigateTo({
+ url: '/pages/my/recharge'
+ });
+ }
+ })
+ break;
+
+ default:
+ break;
+ }
+ }
+ })
+ }
+
+
+ const doPayFailed = (res) => {
+ uni.$u.toast('支付失败!');
+ uni.navigateBack();
+ }
+ const doPayCompleted = (res) => {
+ if (res.errMsg === 'requestPayment:ok') {
+ // uni.navigateTo({
+ // url: `/pages/category/productstatus`
+ // })
+
+ } else if (res.errMsg === 'requestPayment:fail cancel') {
+ // uni.navigateTo({
+ // url: `/pages/category/productstatus`
+ // })
+
+ } else {
+
+ //this.$messagebox.show(res.errMsg, 5000);
+ }
+
+ uni.navigateBack();
+ }
+ const wx_pay = (timeStamp, nonceStr, pack, signType, paySign, successFun = null, failfun = null,
+ completeFun = null) => {
+ wx.requestPayment({
+ provider: 'wxpay',
+ orderInfo: "orderInfo",
+ timeStamp: timeStamp,
+ nonceStr: nonceStr,
+ package: "prepay_id=" + pack,
+ signType: signType,
+ paySign: paySign,
+ success(res) {
+ successFun(res)
+ },
+ fail(err) {
+ if (failfun) {
+ failfun(err)
+ }
+ },
+ complete(result) {
+ if (completeFun) {
+ completeFun(result)
+ }
+ }
+ });
+ }
+
+
+
+
+ return { ...toRefs(state), userStore }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.content {
+ @extend .center;
+ //background-color: #f5efd9;
+ height: 100vh;
+ width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/product/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/product/index.vue
new file mode 100644
index 0000000..ab27620
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/product/index.vue
@@ -0,0 +1,92 @@
+<template>
+ <view>
+ <view v-if="product">
+ <up-row justify="space-between">
+ <up-col span="12">
+ <up-image :show-loading="true" :src="product.image" mode="widthFix"/>
+ <up-text type="info" :text="`${product.name}`"
+ customStyle="margin-top: 2px;"/>
+ <up-text type="price" :text="`¥${product.sellprice}`"
+ customStyle="margin-top: 2px;color: #8B0000;"/>
+ </up-col>
+ </up-row>
+ <up-row justify="space-between">
+ <up-col span="12">
+ <view v-for="(attribute, i) in attributes">
+ <view>
+ <span> {{attribute.name}}</span>
+ </view>
+ <view v-for="(value, j) in attribute.values">
+ <view>
+ <span> {{value.value}}</span>
+ </view>
+ </view>
+ </view>
+ </up-col>
+ </up-row>
+ </view>
+ <view v-else>
+ <u-empty mode="car" icon="http://cdn.uviewui.com/uview/empty/car.png"/>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {ref, reactive, toRefs, onMounted, getCurrentInstance} from "vue";
+ import {useBasicInfoStore} from "../../store/basicInfo"
+ import {GetProductDetailByMasterId} from '../../apis/api';
+ import {onLoad} from "@dcloudio/uni-app";
+
+ export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+ product: null,
+ attributes: [],
+ })
+
+ onLoad((options) => {
+ const dataStr = decodeURIComponent(options.data);
+ const params = JSON.parse(dataStr);
+
+ console.log(params); // { id: 1, name: 'Test' }
+ })
+
+ onMounted(() => {
+ Init();
+ loadData();
+ });
+
+ const Init = () => {
+ console.log(state.product);
+ }
+
+ const loadData = () => {
+ state.product = {};
+ state.attributes = [];
+
+ GetProductDetailByMasterId(userStore.product.id).then(resp => {
+ if (resp.data) {
+ state.product = resp.data;
+
+ if (state.product) {
+ state.attributes = state.product.keys;
+ }
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ return {...toRefs(state), userStore, loadData}
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .swiper {
+ width: 100%;
+ overflow: auto;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/search/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/search/index.vue
new file mode 100644
index 0000000..420fb9b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/search/index.vue
@@ -0,0 +1,66 @@
+<template>
+ <view class="u-page">
+ <view class="u-block">
+ <view class="u-demo-block__content">
+ <view class="u-page__tag-item">
+ <u-search
+ v-model="keywords"
+ :show-action="false"
+ @change="onSearchTextChange"
+ ></u-search>
+ </view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {useBasicInfoStore} from "../../store/basicInfo";
+ import {getCurrentInstance, onMounted, reactive, toRefs} from "vue";
+ import {GetProductCategoryListByParentName} from "../../apis/api";
+
+ export default {
+ name: "index",
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+ keywords: null,
+ historyKeywords: [],
+ })
+
+ onMounted(() => {
+ Init();
+ loadHistoryKeywords();
+ });
+
+ const Init = () => {
+
+ }
+
+ const loadHistoryKeywords = () => {
+ state.schools = [];
+ state.schoolColumns = [];
+
+ GetProductCategoryListByParentName("家政服务").then(resp => {
+ if (resp.data) {
+ state.categories = resp.data;
+ console.error(state.categories);
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const onSearchTextChange = (data) => {
+ console.log(data);
+ }
+
+ return {...toRefs(state), userStore, loadHistoryKeywords, onSearchTextChange}
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/security/login.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/security/login.vue
new file mode 100644
index 0000000..4a5da56
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/security/login.vue
@@ -0,0 +1,326 @@
+<template>
+ <view class="content">
+ <view class="logo">
+ <up-text type="primary" size="30" text="LOGO"></up-text>
+ </view>
+ <view class="card" v-if="loginShow">
+ <view class="login-phone">
+ <view class="phone">
+ <up-input placeholder="请输入手机号" border="bottom" v-model="phone" prefixIcon="phone"
+ prefixIconStyle="font-size: 22px;color: #909399" size="small"></up-input>
+ </view>
+ <view class="code">
+ <view class="code-input">
+ <up-input placeholder="请输入验证码" border="bottom" v-model="code" prefixIcon="phone"
+ prefixIconStyle="font-size: 22px;color: #909399" size="small"></up-input>
+ </view>
+ <view class="wrap">
+ <u-toast ref="uToastRef"></u-toast>
+ <u-code :seconds="seconds" @end="end()" @start="start()" ref="uCodeRef"
+ @change="codeChange"></u-code>
+ <u-button type="primary" @tap="getCode" size="small" :disabled="canSandMsg">{{ tips }}
+ </u-button>
+ </view>
+ </view>
+ <view class="submit">
+ <u-button size="large" type="primary" @click="submit">登录</u-button>
+ </view>
+ </view>
+ </view>
+ <view class="info" v-if="userProfileShow">
+ <UserProfile @saveCB="userProfileCB"/>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {ref, reactive, toRefs, onMounted, getCurrentInstance} from "vue";
+ import {useBasicInfoStore} from "../../store/basicInfo"
+ import {GetSMSCode, GetWXCode2Session, RegisterUserByCellphone, LoginByWXOpenID} from "../../apis/authapi"
+ import UserProfile from "../../components/userProfile/userProfile.vue"
+
+ export default {
+ components: {UserProfile},
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+ loginShow: true,
+ phone: '',
+ code: '',
+ tips: '',
+ seconds: 60,
+ bindingPhone: '',
+ canSandMsg: false,
+ userProfileShow: false,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ getOpenID();
+
+ // uni.navigateTo({
+ // url: '/pages/question/type'
+ // });
+ // uni.switchTab({
+ // url: '/pages/question/type' // 目标页面路径
+ // });
+ }
+
+ const getOpenID = () => {
+ uni.login({
+ provider: 'weixin',
+ success: function (loginRes) {
+ // 登录成功
+ uni.getUserInfo({
+ provider: 'weixin',
+ success: function (info) {
+ userStore.$state.userinfo = info.userInfo;
+ // 获取用户信息成功, info.authResult保存用户信息
+
+ // uni.showLoading({
+ // title: '身份获取中...',
+ // });
+ GetWXCode2Session(loginRes.code).then((res) => {
+ // uni.hideLoading();
+ if (res) {
+ let session_key = res.data.session_key;
+ let openid = res.data.openid;
+
+ let params2 = {
+ session_key: session_key,
+ openid: openid,
+ };
+ userStore.$state.userinfo.openid = openid;
+
+ uni.showLoading({
+ title: '身份获取中...',
+ });
+ LoginByWXOpenID(params2).then((res2) => {
+ uni.hideLoading();
+
+ let token = '';
+ if (res2) {
+ if (res2.code == 200) {
+ if (res2.data) {
+ token = res2.data.token;
+ uni.setStorageSync('token', token)
+ userStore.$state.hasLogin = true;
+ for (const key in res2.data) {
+ userStore.userinfo[key] = res2.data[key]
+ }
+
+ if (!res2.data.avatarurl || !res2.data.nickname) {
+ state.userProfileShow = true
+ } else {
+
+ }
+ }
+ } else if (res2.message == 'MSG_ERROR_USER_NOT_EXISTED') {
+ state.loginShow = true
+ console.log("未绑定手机号")
+ }
+ }
+ });
+ }
+ // else {
+ // uni.hideLoading();
+ // }
+ })
+ }
+ })
+
+ },
+ fail: function (err) {
+ // 登录授权失败
+ // err.code是错误码
+ }
+ });
+ }
+
+
+ const codeChange = (text) => {
+ state.tips = text;
+ };
+
+ const getCode = () => {
+ if (state.canSandMsg == true) {
+ return;
+ }
+ if (!state.phone) {
+ uni.$u.toast('请输入手机号');
+ return;
+ }
+ if (!/(^1[3|4|5|7|8|9][0-9]{9}$)/.test(state.phone)) {
+ uni.$u.toast('请输入正确的手机号码');
+ return;
+ }
+ uni.showLoading({
+ title: '正在获取验证码',
+ });
+ GetSMSCode(state.phone).then(resp => {
+ uni.hideLoading();
+ if (resp.code == 200) {
+ setTimeout(() => {
+ // 这里此提示会被start()方法中的提示覆盖
+ uni.$u.toast('验证码已发送');
+ // 通知验证码组件内部开始倒计时
+ proxy.$refs.uCodeRef.start();
+ }, 2000);
+ } else {
+ uni.$u.toast('验证码已发送失败');
+ }
+ }).catch(err => {
+ uni.hideLoading();
+ uni.$u.toast('验证码已发送失败');
+ });
+ };
+
+ const end = () => {
+ state.canSandMsg = false
+ //uni.$u.toast('倒计时结束');
+ };
+
+ const start = () => {
+ state.canSandMsg = true
+ //uni.$u.toast('倒计时开始');
+ };
+
+ const submit = () => {
+ if (!state.phone) {
+ uni.$u.toast('请输入手机号');
+ return;
+ }
+ if (!/(^1[3|4|5|7|8|9][0-9]{9}$)/.test(state.phone)) {
+ uni.$u.toast('请输入正确的手机号码');
+ return;
+ }
+ uni.showLoading({
+ title: '登录中...',
+ });
+ let params2 = {
+ openid: userStore.$state.userinfo.openid,
+ cellphone: state.phone,
+ randomcode: state.code
+ };
+ RegisterUserByCellphone(params2).then((res2) => {
+ uni.hideLoading();
+ let token = '';
+ if (res2) {
+ if (res2.code == 200) {
+ if (res2.data) {
+ token = res2.data.token;
+ uni.setStorageSync('token', token)
+ userStore.$state.hasLogin = true;
+ state.loginShow = false
+ state.userProfileShow = true
+ // uni.navigateTo({
+ // url: '/pages/question/type'
+ // });
+ }
+ } else {
+ uni.$u.toast('登录失败');
+ }
+ }
+ });
+ }
+
+ const userProfileCB = () => {
+ uni.navigateTo({
+ url: '/pages/index/index'
+ });
+ }
+
+
+ return {...toRefs(state), userStore, codeChange, getCode, end, start, submit, userProfileCB}
+ }
+ }
+
+
+</script>
+
+<style scoped lang="scss">
+ .center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ // justify-content: center;
+ }
+
+ .content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+ }
+
+ .logo {
+ @extend .center;
+ height: 20vh;
+ }
+
+ .card {
+ width: calc(90% - 80rpx);
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 5vh;
+ padding: 20 rpx 40 rpx 60 rpx 40 rpx;
+
+ .login-phone {
+ width: 100%;
+ overflow: auto;
+ margin-top: 20 rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ .phone {
+ width: 95%;
+ height: 60 rpx;
+ margin-top: 20 rpx;
+ }
+
+ .code {
+ width: 95%;
+ height: 100 rpx;
+ margin-top: 50 rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .code-input {
+ padding: 24 rpx 0 rpx;
+ width: 70%;
+ }
+
+ .wrap {
+ padding: 24 rpx 0 rpx;
+ }
+ }
+
+ .submit {
+ width: 95%;
+ overflow: auto;
+ margin-top: 100 rpx;
+ }
+ }
+ }
+
+ .info {
+ width: 80%;
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 5vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/shoppingcart/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/shoppingcart/index.vue
new file mode 100644
index 0000000..b198a40
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/pages/shoppingcart/index.vue
@@ -0,0 +1,74 @@
+<template>
+ <view class="content">
+
+ </view>
+</template>
+
+<script>
+ import {ref, reactive, toRefs, onMounted, getCurrentInstance} from "vue";
+ import {useBasicInfoStore} from "../../store/basicInfo"
+
+ export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const {proxy} = getCurrentInstance();
+ const state = reactive({
+
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+
+ }
+
+ return {...toRefs(state), userStore}
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .content {
+ @extend .center;
+ background-color: #f5efd9;
+ height: 100vh;
+ }
+
+ .logo {
+ @extend .center;
+ height: 20vh;
+ }
+
+ .school {
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+ }
+
+ .college {
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+ }
+
+ .major {
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+ }
+
+ .submit {
+ @extend .center;
+ width: 80%;
+ height: 20vh;
+ }
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/shime-uni.d.ts b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/shime-uni.d.ts
new file mode 100644
index 0000000..b3d3cc9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/shime-uni.d.ts
@@ -0,0 +1,6 @@
+export {};
+
+declare module "vue" {
+ type Hooks = App.AppInstance & Page.PageInstance;
+ interface ComponentCustomOptions extends Hooks {}
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/ercode.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/ercode.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/ercode.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/favicon.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/favicon.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/favicon.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/recharge.jpg b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/recharge.jpg
new file mode 100644
index 0000000..33861b9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/recharge.jpg
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/svg/profile.svg b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/svg/profile.svg
new file mode 100644
index 0000000..0866402
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/svg/profile.svg
@@ -0,0 +1,12 @@
+<?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="1644155990593" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="966"
+ xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+ <defs>
+ <style type="text/css"></style>
+ </defs>
+ <path d="M512 0c282.7776 0 512 229.2224 512 512S794.7776 1024 512 1024 0 794.7776 0 512 229.2224 0 512 0"
+ fill="#FF0808" p-id="967"></path>
+ <path d="M624.1664 538.5856C703.6032 538.5856 768 602.9824 768 682.432A72.7808 72.7808 0 0 1 695.2192 755.2H328.7808A72.7808 72.7808 0 0 1 256 682.432c0-79.4368 64.3968-143.8464 143.8464-143.8464zM512 243.2c70.6944 0 128 57.3056 128 128s-57.3056 128-128 128-128-57.3056-128-128 57.3056-128 128-128z"
+ fill="#FFFFFF" p-id="968"></path>
+</svg>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/card.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/card.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/card.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart-active.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart-active.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/cart.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category-active.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category-active.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/category.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home-active.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home-active.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/home.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index_fill.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/index_fill.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine_fill.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/mine_fill.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart_fill.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/scart_fill.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping-active.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping-active.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/shopping.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort_fill.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/sort_fill.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user-active.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user-active.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user.png
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/static/image/tabbar/user.png
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/store/basicInfo.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/store/basicInfo.js
new file mode 100644
index 0000000..d583dd2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/store/basicInfo.js
@@ -0,0 +1,70 @@
+import {reactive, toRefs} from 'vue'
+import {defineStore} from 'pinia'
+
+export const useBasicInfoStore = defineStore('basicInfo', () => {
+ //试卷type,免费--0,会员免费--1,收费--2
+ //支付方式,0(AccountBalancePay),1(AliPay),2(WeChatPay),3(BankPay)
+ //订单类型 0(RECHARGE),1(PAPER),2(MALL)
+
+ const state = reactive({
+ nickName: '',
+ vip: true,
+ vipPrice: 30,
+ vipDiscount: 7.5,
+ vipTerm: '2024-10-10',
+ balance: 0,
+ phone: '13888888888',
+ testTitle: '',
+ typeTitle: '',
+ typeIndex: 1,//单选题-1,多选题-2,填空题-3,名词解释-4,判断题-5,简答题-6,论述题-7,分析题-8,案例选择题-9,案例分析题-10,
+ userinfo: {
+ avatarurl: "",
+ birthday: null,
+ cellphone: null,
+ city: null,
+ country: null,
+ createtime: "",
+ diamondtype: null,
+ discountrate: null,
+ gender: null,
+ id: "",
+ idcard: null,
+ isdeleted: false,
+ language: null,
+ name: null,
+ nickname: "",
+ openid: "",
+ password: null,
+ province: null,
+ randomcode: null,
+ remark: null,
+ token: "",
+ type: null,
+ updatetime: null,
+ },
+ token: '',
+ hasLogin: false,
+ appconfig: [],
+ payInfo: {},
+ routePage: '',
+ updatecount: 0,
+ paperId: null,
+ questionType: null,
+ category: null,
+ product: null,
+ })
+
+ return {...toRefs(state)}
+}, {
+ // persist: true,
+ persist: {
+ storage: {
+ getItem(key) {
+ return uni.getStorageSync(key)
+ },
+ setItem(key, value) {
+ uni.setStorageSync(key, value)
+ }
+ }
+ }
+})
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/uni.scss b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/uni.scss
new file mode 100644
index 0000000..43cea84
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/src/uni.scss
@@ -0,0 +1,169 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+@import 'uview-plus/theme.scss';
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color: #333; // 基本色
+$uni-text-color-inverse: #fff; // 反色
+$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable: #c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color: #fff;
+$uni-bg-color-grey: #f8f8f8;
+$uni-bg-color-hover: #f1f1f1; // 点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color: #c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
+
+/* 图片尺寸 */
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
+$uni-color-subtitle: #555; // 二级标题颜色
+$uni-font-size-subtitle: 18px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 页面左右间距 */
+$page-row-spacing: 30upx;
+$page-col-spacing: 20upx;
+$page-color-base: #f4f5f7;
+$page-color-light: #f8f6fc;
+$base-color: #ff6a6c;
+
+/* 文字尺寸 */
+$font-sm: 24upx;
+$font-base: 28upx;
+$font-lg: 32upx;
+/*文字颜色*/
+$font-color-dark: #303133;
+$font-color-base: #75787d;
+$font-color-light: #909399;
+$font-color-disabled: #C0C4CC;
+$font-color-spec: #4399fc;
+/* 边框颜色 */
+$border-color-dark: #DCDFE6;
+$border-color-base: #E4E7ED;
+$border-color-light: #EBEEF5;
+/* 图片加载中颜色 */
+$image-bg-color: #eee;
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #bda780;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:24rpx;
+$uni-font-size-base:28rpx;
+$uni-font-size-lg:32rpx;
+
+/* 图片尺寸 */
+$uni-img-size-sm:40rpx;
+$uni-img-size-base:52rpx;
+$uni-img-size-lg:80rpx;
+
+/* Border Radius */
+$uni-border-radius-sm: 4rpx;
+$uni-border-radius-base: 6rpx;
+$uni-border-radius-lg: 12rpx;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 10px;
+$uni-spacing-row-base: 20rpx;
+$uni-spacing-row-lg: 30rpx;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 8rpx;
+$uni-spacing-col-base: 16rpx;
+$uni-spacing-col-lg: 24rpx;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:40rpx;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:36rpx;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:30rpx;
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/vite.config.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/vite.config.js
new file mode 100644
index 0000000..b9318f5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.mall/vite.config.js
@@ -0,0 +1,8 @@
+import {defineConfig} from 'vite'
+import uni from '@dcloudio/vite-plugin-uni'
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ uni(),
+ ],
+})
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/.gitignore b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/.gitignore
new file mode 100644
index 0000000..7ce6e50
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/.gitignore
@@ -0,0 +1,21 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+*.local
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/index.html b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/index.html
new file mode 100644
index 0000000..fb81ddc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/index.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <script>
+ var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+ CSS.supports('top: constant(a)'))
+ document.write(
+ '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+ (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+ </script>
+ <title></title>
+ <!--preload-links-->
+ <!--app-context-->
+ </head>
+ <body>
+ <div id="app"><!--app-html--></div>
+ <script type="module" src="/src/main.js"></script>
+ </body>
+</html>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package-lock.json b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package-lock.json
new file mode 100644
index 0000000..c7f0319
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package-lock.json
@@ -0,0 +1,14055 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-plus": "3.0.0-3090920231225001",
+ "@dcloudio/uni-components": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-jd": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-lark": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-qq": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
+ "clipboard": "^2.0.11",
+ "dayjs": "^1.11.10",
+ "pinia": "2.0",
+ "pinia-plugin-persistedstate": "^3.2.1",
+ "uview-plus": "^3.1.41",
+ "vue": "^3.2.45",
+ "vue-i18n": "^9.1.9"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3090920231225001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3090920231225001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3090920231225001",
+ "@vue/runtime-core": "^3.2.45",
+ "sass": "^1.69.7",
+ "sass-loader": "^10.5.2",
+ "vite": "4.0.3"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
+ "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz",
+ "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/highlight": "^7.25.7",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz",
+ "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz",
+ "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-module-transforms": "^7.25.7",
+ "@babel/helpers": "^7.25.7",
+ "@babel/parser": "^7.25.8",
+ "@babel/template": "^7.25.7",
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.8",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz",
+ "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.7",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz",
+ "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz",
+ "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz",
+ "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz",
+ "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "@babel/helper-member-expression-to-functions": "^7.25.7",
+ "@babel/helper-optimise-call-expression": "^7.25.7",
+ "@babel/helper-replace-supers": "^7.25.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7",
+ "@babel/traverse": "^7.25.7",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz",
+ "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "regexpu-core": "^6.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz",
+ "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz",
+ "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz",
+ "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.7",
+ "@babel/helper-simple-access": "^7.25.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz",
+ "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz",
+ "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz",
+ "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "@babel/helper-wrap-function": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz",
+ "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.25.7",
+ "@babel/helper-optimise-call-expression": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz",
+ "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz",
+ "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz",
+ "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz",
+ "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz",
+ "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz",
+ "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.7",
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz",
+ "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz",
+ "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.25.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz",
+ "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.8"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz",
+ "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz",
+ "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz",
+ "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz",
+ "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7",
+ "@babel/plugin-transform-optional-chaining": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz",
+ "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz",
+ "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz",
+ "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz",
+ "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz",
+ "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz",
+ "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz",
+ "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-remap-async-to-generator": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz",
+ "integrity": "sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-remap-async-to-generator": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz",
+ "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz",
+ "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz",
+ "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz",
+ "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz",
+ "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-replace-supers": "^7.25.7",
+ "@babel/traverse": "^7.25.7",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz",
+ "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/template": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz",
+ "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz",
+ "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz",
+ "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz",
+ "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz",
+ "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz",
+ "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz",
+ "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz",
+ "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz",
+ "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz",
+ "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz",
+ "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz",
+ "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz",
+ "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz",
+ "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz",
+ "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-simple-access": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz",
+ "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz",
+ "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz",
+ "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz",
+ "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz",
+ "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz",
+ "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz",
+ "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/plugin-transform-parameters": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz",
+ "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-replace-supers": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz",
+ "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz",
+ "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz",
+ "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz",
+ "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz",
+ "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "@babel/helper-create-class-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz",
+ "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz",
+ "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz",
+ "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz",
+ "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz",
+ "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz",
+ "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz",
+ "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz",
+ "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz",
+ "integrity": "sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.7",
+ "@babel/helper-create-class-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7",
+ "@babel/plugin-syntax-typescript": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz",
+ "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz",
+ "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz",
+ "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz",
+ "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz",
+ "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.8",
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-plugin-utils": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-import-assertions": "^7.25.7",
+ "@babel/plugin-syntax-import-attributes": "^7.25.7",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.25.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.8",
+ "@babel/plugin-transform-async-to-generator": "^7.25.7",
+ "@babel/plugin-transform-block-scoped-functions": "^7.25.7",
+ "@babel/plugin-transform-block-scoping": "^7.25.7",
+ "@babel/plugin-transform-class-properties": "^7.25.7",
+ "@babel/plugin-transform-class-static-block": "^7.25.8",
+ "@babel/plugin-transform-classes": "^7.25.7",
+ "@babel/plugin-transform-computed-properties": "^7.25.7",
+ "@babel/plugin-transform-destructuring": "^7.25.7",
+ "@babel/plugin-transform-dotall-regex": "^7.25.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.25.7",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7",
+ "@babel/plugin-transform-dynamic-import": "^7.25.8",
+ "@babel/plugin-transform-exponentiation-operator": "^7.25.7",
+ "@babel/plugin-transform-export-namespace-from": "^7.25.8",
+ "@babel/plugin-transform-for-of": "^7.25.7",
+ "@babel/plugin-transform-function-name": "^7.25.7",
+ "@babel/plugin-transform-json-strings": "^7.25.8",
+ "@babel/plugin-transform-literals": "^7.25.7",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.25.8",
+ "@babel/plugin-transform-member-expression-literals": "^7.25.7",
+ "@babel/plugin-transform-modules-amd": "^7.25.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.7",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.7",
+ "@babel/plugin-transform-modules-umd": "^7.25.7",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7",
+ "@babel/plugin-transform-new-target": "^7.25.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8",
+ "@babel/plugin-transform-numeric-separator": "^7.25.8",
+ "@babel/plugin-transform-object-rest-spread": "^7.25.8",
+ "@babel/plugin-transform-object-super": "^7.25.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.25.8",
+ "@babel/plugin-transform-optional-chaining": "^7.25.8",
+ "@babel/plugin-transform-parameters": "^7.25.7",
+ "@babel/plugin-transform-private-methods": "^7.25.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.25.8",
+ "@babel/plugin-transform-property-literals": "^7.25.7",
+ "@babel/plugin-transform-regenerator": "^7.25.7",
+ "@babel/plugin-transform-reserved-words": "^7.25.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.25.7",
+ "@babel/plugin-transform-spread": "^7.25.7",
+ "@babel/plugin-transform-sticky-regex": "^7.25.7",
+ "@babel/plugin-transform-template-literals": "^7.25.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.25.7",
+ "@babel/plugin-transform-unicode-escapes": "^7.25.7",
+ "@babel/plugin-transform-unicode-property-regex": "^7.25.7",
+ "@babel/plugin-transform-unicode-regex": "^7.25.7",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.7",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.38.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
+ "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "license": "MIT"
+ },
+ "node_modules/@babel/template": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz",
+ "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/types": "^7.25.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz",
+ "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@dcloudio/types": {
+ "version": "3.4.14",
+ "resolved": "https://registry.npmjs.org/@dcloudio/types/-/types-3.4.14.tgz",
+ "integrity": "sha512-VolQeZfTh8pQFsr2IlfIVX93blfvGTuBoJuZUc7iWOqtHV8gDrq6fXLhzsVlgZyuhhRZLOxlo33rkEqnY+ucAw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@dcloudio/uni-app": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app/-/uni-app-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-NsGrGjNmHc2zH1c5eqnHwSxuMNse+RknCQWIIWnnz+Q8lqHc1I9zf2mzxYXyNBHy4VhGRY2zblhkUyWLtGRaaA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cloud": "3.0.0-3090920231225001",
+ "@dcloudio/uni-components": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-push": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-stat": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "@dcloudio/types": "^3.3.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-plus": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-TCzWHbwuheEBSzpTqpHh/imhj4Rkwdg48m9C7ZLqun5runI056TEUdrpfuLBVuwsttk5NSpqm11ywS7GSSM7Mg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-app-uts": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-vue": "3.0.0-3090920231225001",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "licia": "^1.29.0",
+ "postcss-selector-parser": "^6.0.6"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-uts": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-uts/-/uni-app-uts-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-61At6ZKh9SpHMuewxtZEOuDS1hkwFs5AecqavFAZWovVQR30it2e5zSN4kwq/ZM1An/HFs0TLXV3YBnx9Q07oA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@jridgewell/gen-mapping": "^0.3.3",
+ "@jridgewell/trace-mapping": "^0.3.19",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "estree-walker": "^2.0.2",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2",
+ "unplugin-auto-import": "^0.16.7"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vite": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-MkmI3qzsGYrT787lRMyhb/DdIF9mE/BbhrExwM/RBshnVzl6rjQIKx5lIG94t58WIaP7Jcl/pJw+IPAe1FTQyQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vue": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-D7I4jGSnpBihSXXeckRSD152Da2N2vKDtGF1sbNe2m1R04W36AkVUtzFGpSOml4MNIedCGtzGWXKaX7rIU+mFA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@dcloudio/uni-automator": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-automator/-/uni-automator-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-6PKcEJK6VAARpEtsFUypFEu6DeAminijHJb63x6oK1lIt0VlJFGjXuCTBbFQTf6uLFSsUGMV4wcCmh2NswXxmg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "address": "^1.1.2",
+ "cross-env": "^7.0.3",
+ "debug": "^4.3.3",
+ "default-gateway": "^6.0.3",
+ "fs-extra": "^10.0.0",
+ "jsonc-parser": "^3.2.0",
+ "licia": "^1.29.0",
+ "merge": "^2.1.1",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ },
+ "peerDependencies": {
+ "jest": "27.0.4",
+ "jest-environment-node": "27.5.1"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-6Pt2nCRI57OwIoqBNctPTQ05oJPTZGlocylmrbpUy8Q5Z2eyQNlnA/jTm9L5tM6nnfJKzBE/yOBMOgJDsVWNYw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.2",
+ "@babel/core": "^7.21.3",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@intlify/core-base": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "autoprefixer": "^10.4.14",
+ "base64url": "^3.0.1",
+ "chokidar": "^3.5.3",
+ "compare-versions": "^3.6.0",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "esbuild": "^0.17.5",
+ "estree-walker": "^2.0.2",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "merge": "^2.1.1",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2",
+ "os-locale-s-fix": "^1.0.8-fix-1",
+ "picocolors": "^1.0.0",
+ "postcss-import": "^14.0.2",
+ "postcss-load-config": "^3.1.1",
+ "postcss-modules": "^4.3.0",
+ "postcss-selector-parser": "^6.0.6",
+ "resolve": "^1.22.1",
+ "tapable": "^2.2.0",
+ "xregexp": "3.1.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-cloud": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-+k8cnrQZlBYbY01Li9rR5PBcxxvn/i8sHpj+i3rbzJioks4nneR64ZP14Zisu07v5VwLcjuZNdI8Ato7KZjyUA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47",
+ "fast-glob": "^3.2.11"
+ }
+ },
+ "node_modules/@dcloudio/uni-components": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-components/-/uni-components-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-fyqPOzmEjgfhwrElZH+yTBjqbCzefgZTkbZrgPaQkvXRT8sJpsTpcjF8wNPLo0dB+9XppkNAJDy+c9EkDJGeKQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cloud": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5/-/uni-h5-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-q3YR+wESXb9JdFOJdoX8I7ER2TTOvY23fHFMMq1wZW49WLufMMu/BKM7FUeHtX9uteqMIVJDrzrjknwLgNUJiw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-h5-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "localstorage-polyfill": "^1.0.1",
+ "postcss-selector-parser": "^6.0.6",
+ "safe-area-insets": "^1.4.1",
+ "vue-router": "^4.1.6",
+ "xmlhttprequest": "^1.8.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-gyhFfI77gL2saPef0+3nQ9+mi//Vk/N7PeZCSxq6oRpHIUE3TkpB3xvQrPkciJPG8ivHX5BGcqcOdZt36qgBtA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-v19rnmf+V+2G07ABjViyaLqDcVJReBVuAb0xuSzNiLIezQ3GRFJAf4XEjbk56BrrRfdDRaNJ+6lrWP5j1KI8nw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/server-renderer": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-i18n": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-GUiyXxeLvunToD2LC1FybqtrLw/cbKmtO/Q3mwue0rEurhaTrabiVoOntP4n1t4QMaL+dFsex06cRbZgafqlIw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@dcloudio/uni-mp-alipay": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-zHcwqmFi9NtzW3cW9kAAjdfTbJ1YPrE8LKAbjHyp5XiytSRcTiuSqipBs4HgtVBijur8FPxrZtIYcGIQZQskBw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-baidu": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-zhS+I+KL7ecmni2lwy6KL5gpCqPQ/7gygkqBqdNIOq9eDB7c4rlPF6w+j7WmeBWeZPZpccYaQnsn9W7swpnmRA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-baidu/node_modules/jimp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz",
+ "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/custom": "^0.10.3",
+ "@jimp/plugins": "^0.10.3",
+ "@jimp/types": "^0.10.3",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-compiler": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-q9pgXG1gtN9VMaEQj4jlmHBkKAwFsKTCsZu4FsH4kpFoQoSgdEFH8VAHTWKA9reaUVLJGInO0Nsd+t9rZJi3EA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-jd": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-n+zDI+dRyVgSnp8vcLnflxs7usMEy/sfx2FWB77XswPHiMOi8Wz7SK/CQln/ScKD0pRWDPiXcLh4WXS1u3H0Hg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-kuaishou": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-Z3VFtDNDUEGkHOs5hzB+HiOuJWxGsLh6jQYlGLwXFNmWJFYWGaEBsAA+NztWOB4fRB2JeYSoTu78Al3MWFRwzQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-lark": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-LuXWe7vf2fncf1Hj0PpxKYCRWYwqhcz3kKkauNa9nVNjEwiD83UthW5oDxVWMCklIFjKw91mhe+zqq2Oc8bl1w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-qq": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-f114i9LhYxfgHUFpSKcOHWL5ZqOttwbzNeK7vMRaqUSWX8VKxzXhqJ5OOKB2HeKyMZGJ50wxvyYNYiR01dBg+A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47",
+ "fs-extra": "^10.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-toutiao": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-g6fpZeUS2mBDIalhQEKXnkMAKUP+xGz4poJrjABMRu6L2ayXjOCYHFC0uZEIoagcD5zb3UN4ZrPaQvFtcErqRA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vite": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-kcw5gPzIjMonakkT1PJtBwfr3PA6YKNxB+hJw2+gEnUFHCAVASXAOO1i7AmtWSqJsRI2FigIDDw1rjeMwY/BHg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vue": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-oSlZ9lynhc6f8q7GRQMecZIzUrxnh0pIByDS9zOaYyXfT8oemA7ai2FSpX+McpSQ43VhJfPHzeJbeK2V7F0Csg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-weixin": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-XV43ox/P19pTjvjXrDeIrjmbH8VUeV/iUm7ufK77gCwSAEff2yZOd/FlmikQncQItJP1M7Sxv8DnilEbPeLoBA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-weixin/node_modules/jimp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz",
+ "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/custom": "^0.10.3",
+ "@jimp/plugins": "^0.10.3",
+ "@jimp/types": "^0.10.3",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-xhs": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-xhs/-/uni-mp-xhs-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-pY/OCLGNLChmTShAG41sb0AGxqJCqsioNu4fIEKcC2dj8JFOUdcFBYS7ZvhrVrVYCErM0H3GcmLla0cJZfUCjQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-nvue-styler": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-rUO12CpVcMV1pMof7w9cs6FpCKuLPhA3fU7Tfl19XVJXv0IY//rX2aucZW0kOpw45RVJyAHbPBFuQKz7kEiGlA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vue/shared": "3.2.47",
+ "parse-css-font": "^4.0.0",
+ "postcss": "^8.4.23"
+ }
+ },
+ "node_modules/@dcloudio/uni-push": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-push/-/uni-push-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-aqUWb1DeF9y9en3fx03eQTZzKLjUCvakJZtmQQFbj69lV2Zh/v/EWKWkF0iOOezPGBTHXJvVDQMWGkdj1ez19Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001"
+ }
+ },
+ "node_modules/@dcloudio/uni-quickapp-webview": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-sFKH4WboIKvkVNEmxkhLvzE/Wya5YwFXdL/AoM8rxQO7DXP+eNOtMhapWz2NEKXN8XGM3WIVTjwyMINgg5+Ctw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-shared": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-shared/-/uni-shared-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-OXx/KBMuxAGayThVNshnZ17qZJrxjcdFeGwWJrDeTHmCpg+/Yr5yK+ubCQjN2kc4jttwq2fIkqqNs2xe4QFlSQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-stacktracey": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-UN0qPDt6uTo2M9HxD4WgJHJIrCWLpUkseBOoOseZ2QVqfFCTQvLcH3ZVr7fx4gkoc5FDCp1YI2uiiS2AnjqZtA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/@dcloudio/uni-stat": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stat/-/uni-stat-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-gac3rONnRtLCSTXn2QhnwjsZJTfVA8uHRFyp5Uf03rQbu82MuNVOzi7p7Q3Y/0uiCHSldZ47hhmwbqtb/qdKOQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "debug": "^4.3.3"
+ }
+ },
+ "node_modules/@dcloudio/vite-plugin-uni": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-kV/J7yl5ojsd1NZZ1eMziRDrz+MPbjDMm6rWG3fyW1u8Kzj06jUzzi7HRlkaWiPJHAmeRWGDf/6RFoSd+8fYCg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-legacy": "^4.0.3",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vitejs/plugin-vue-jsx": "^3.0.1",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "cac": "6.7.9",
+ "debug": "^4.3.3",
+ "estree-walker": "^2.0.2",
+ "express": "^4.17.1",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "picocolors": "^1.0.0",
+ "terser": "^5.4.0",
+ "unplugin-auto-import": "^0.16.7"
+ },
+ "bin": {
+ "uni": "bin/uni.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+ "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+ "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+ "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+ "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+ "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+ "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+ "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+ "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+ "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+ "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+ "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+ "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+ "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+ "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+ "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+ "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+ "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+ "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+ "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+ "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.9.tgz",
+ "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/devtools-if": "9.1.9",
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/devtools-if": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.9.tgz",
+ "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.9.tgz",
+ "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "source-map": "0.6.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/message-resolver": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+ "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/runtime": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.9.tgz",
+ "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/shared": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.9.tgz",
+ "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/vue-devtools": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz",
+ "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
+ "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/console/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@jest/console/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
+ "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/reporters": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^27.5.1",
+ "jest-config": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-resolve-dependencies": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "jest-watcher": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/core/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/core/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@jest/core/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
+ "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "expect": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
+ "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-haste-map": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^8.1.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@jest/reporters/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
+ "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
+ "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+ "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-runtime": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
+ "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^27.5.1",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@jest/transform/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@jest/transform/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/types/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@jest/types/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jimp/bmp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz",
+ "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "bmp-js": "^0.1.0",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/core": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz",
+ "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "any-base": "^1.1.0",
+ "buffer": "^5.2.0",
+ "core-js": "^3.4.1",
+ "exif-parser": "^0.1.12",
+ "file-type": "^9.0.0",
+ "load-bmfont": "^1.3.1",
+ "mkdirp": "^0.5.1",
+ "phin": "^2.9.1",
+ "pixelmatch": "^4.0.2",
+ "tinycolor2": "^1.4.1"
+ }
+ },
+ "node_modules/@jimp/custom": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz",
+ "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/core": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "node_modules/@jimp/gif": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz",
+ "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "omggif": "^1.0.9"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/jpeg": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz",
+ "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "jpeg-js": "^0.3.4"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blit": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz",
+ "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blur": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz",
+ "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-circle": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz",
+ "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-color": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz",
+ "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "tinycolor2": "^1.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-contain": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz",
+ "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-cover": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz",
+ "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-crop": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz",
+ "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-displace": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz",
+ "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-dither": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz",
+ "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-fisheye": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz",
+ "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-flip": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz",
+ "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-rotate": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-gaussian": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz",
+ "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-invert": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz",
+ "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-mask": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz",
+ "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-normalize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz",
+ "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-print": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz",
+ "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "load-bmfont": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-resize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz",
+ "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-rotate": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz",
+ "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-scale": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz",
+ "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-shadow": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz",
+ "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blur": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-threshold": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz",
+ "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-color": ">=0.8.0",
+ "@jimp/plugin-resize": ">=0.8.0"
+ }
+ },
+ "node_modules/@jimp/plugins": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz",
+ "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/plugin-blit": "^0.10.3",
+ "@jimp/plugin-blur": "^0.10.3",
+ "@jimp/plugin-circle": "^0.10.3",
+ "@jimp/plugin-color": "^0.10.3",
+ "@jimp/plugin-contain": "^0.10.3",
+ "@jimp/plugin-cover": "^0.10.3",
+ "@jimp/plugin-crop": "^0.10.3",
+ "@jimp/plugin-displace": "^0.10.3",
+ "@jimp/plugin-dither": "^0.10.3",
+ "@jimp/plugin-fisheye": "^0.10.3",
+ "@jimp/plugin-flip": "^0.10.3",
+ "@jimp/plugin-gaussian": "^0.10.3",
+ "@jimp/plugin-invert": "^0.10.3",
+ "@jimp/plugin-mask": "^0.10.3",
+ "@jimp/plugin-normalize": "^0.10.3",
+ "@jimp/plugin-print": "^0.10.3",
+ "@jimp/plugin-resize": "^0.10.3",
+ "@jimp/plugin-rotate": "^0.10.3",
+ "@jimp/plugin-scale": "^0.10.3",
+ "@jimp/plugin-shadow": "^0.10.3",
+ "@jimp/plugin-threshold": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/png": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz",
+ "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "pngjs": "^3.3.3"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/tiff": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz",
+ "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "utif": "^2.0.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/types": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz",
+ "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/bmp": "^0.10.3",
+ "@jimp/gif": "^0.10.3",
+ "@jimp/jpeg": "^0.10.3",
+ "@jimp/png": "^0.10.3",
+ "@jimp/tiff": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/utils": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz",
+ "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz",
+ "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.4.1",
+ "@parcel/watcher-darwin-arm64": "2.4.1",
+ "@parcel/watcher-darwin-x64": "2.4.1",
+ "@parcel/watcher-freebsd-x64": "2.4.1",
+ "@parcel/watcher-linux-arm-glibc": "2.4.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.4.1",
+ "@parcel/watcher-linux-arm64-musl": "2.4.1",
+ "@parcel/watcher-linux-x64-glibc": "2.4.1",
+ "@parcel/watcher-linux-x64-musl": "2.4.1",
+ "@parcel/watcher-win32-arm64": "2.4.1",
+ "@parcel/watcher-win32-ia32": "2.4.1",
+ "@parcel/watcher-win32-x64": "2.4.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
+ "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
+ "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
+ "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
+ "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
+ "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
+ "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
+ "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
+ "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
+ "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
+ "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
+ "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
+ "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "license": "MIT",
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+ "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+ "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "22.7.7",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz",
+ "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==",
+ "devOptional": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "node_modules/@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@vitejs/plugin-legacy": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz",
+ "integrity": "sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.22.9",
+ "@babel/preset-env": "^7.22.9",
+ "browserslist": "^4.21.9",
+ "core-js": "^3.31.1",
+ "magic-string": "^0.30.1",
+ "regenerator-runtime": "^0.13.11",
+ "systemjs": "^6.14.1"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "peerDependencies": {
+ "terser": "^5.4.0",
+ "vite": "^4.0.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+ "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
+ "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.23.3",
+ "@babel/plugin-transform-typescript": "^7.23.3",
+ "@vue/babel-plugin-jsx": "^1.1.5"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz",
+ "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz",
+ "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.6",
+ "@babel/types": "^7.25.6",
+ "@vue/babel-helper-vue-transform-on": "1.2.5",
+ "@vue/babel-plugin-resolve-type": "1.2.5",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-plugin-jsx/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz",
+ "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/parser": "^7.25.6",
+ "@vue/compiler-sfc": "^3.5.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz",
+ "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/shared": "3.5.12",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz",
+ "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz",
+ "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/compiler-core": "3.5.12",
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/compiler-ssr": "3.5.12",
+ "@vue/shared": "3.5.12",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.11",
+ "postcss": "^8.4.47",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz",
+ "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
+ "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
+ "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
+ "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
+ "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/reactivity-transform": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "license": "MIT",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
+ "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz",
+ "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
+ "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/reactivity-transform/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "license": "MIT",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/reactivity/node_modules/@vue/shared": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
+ "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz",
+ "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/runtime-core/node_modules/@vue/shared": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
+ "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@vue/runtime-dom/node_modules/@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/runtime-dom/node_modules/@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "vue": "3.2.47"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
+ "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+ "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+ "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+ "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+ "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+ "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+ "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+ "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+ "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "deprecated": "Use your platform's native atob() and btoa() methods instead",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
+ "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/any-base": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
+ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.20",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
+ "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.23.3",
+ "caniuse-lite": "^1.0.30001646",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
+ "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/babel-jest/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/babel-jest/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-jest/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+ "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz",
+ "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-import-attributes": "^7.24.7",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+ "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/base64url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
+ "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bmp-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==",
+ "license": "MIT"
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/browserslist": {
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz",
+ "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001663",
+ "electron-to-chromium": "^1.5.28",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-equal": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
+ "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cac": {
+ "version": "6.7.9",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.9.tgz",
+ "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001669",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz",
+ "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/centra": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz",
+ "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz",
+ "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "license": "MIT",
+ "dependencies": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==",
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/confbox": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
+ "license": "MIT"
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/core-js": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
+ "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
+ "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.23.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "bin": {
+ "cross-env": "src/bin/cross-env.js",
+ "cross-env-shell": "src/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=10.14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-font-size-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+ "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==",
+ "license": "MIT"
+ },
+ "node_modules/css-font-stretch-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+ "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==",
+ "license": "MIT"
+ },
+ "node_modules/css-font-style-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+ "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==",
+ "license": "MIT"
+ },
+ "node_modules/css-font-weight-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==",
+ "license": "MIT"
+ },
+ "node_modules/css-list-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-2.0.0.tgz",
+ "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==",
+ "license": "MIT"
+ },
+ "node_modules/css-system-font-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+ "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==",
+ "license": "MIT"
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "license": "MIT"
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
+ "license": "MIT"
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.41",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz",
+ "integrity": "sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==",
+ "license": "ISC"
+ },
+ "node_modules/emittery": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
+ "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz",
+ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.17.19",
+ "@esbuild/android-arm64": "0.17.19",
+ "@esbuild/android-x64": "0.17.19",
+ "@esbuild/darwin-arm64": "0.17.19",
+ "@esbuild/darwin-x64": "0.17.19",
+ "@esbuild/freebsd-arm64": "0.17.19",
+ "@esbuild/freebsd-x64": "0.17.19",
+ "@esbuild/linux-arm": "0.17.19",
+ "@esbuild/linux-arm64": "0.17.19",
+ "@esbuild/linux-ia32": "0.17.19",
+ "@esbuild/linux-loong64": "0.17.19",
+ "@esbuild/linux-mips64el": "0.17.19",
+ "@esbuild/linux-ppc64": "0.17.19",
+ "@esbuild/linux-riscv64": "0.17.19",
+ "@esbuild/linux-s390x": "0.17.19",
+ "@esbuild/linux-x64": "0.17.19",
+ "@esbuild/netbsd-x64": "0.17.19",
+ "@esbuild/openbsd-x64": "0.17.19",
+ "@esbuild/sunos-x64": "0.17.19",
+ "@esbuild/win32-arm64": "0.17.19",
+ "@esbuild/win32-ia32": "0.17.19",
+ "@esbuild/win32-x64": "0.17.19"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/eslint-scope/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/exif-parser": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
+ "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
+ "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.10",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz",
+ "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz",
+ "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generic-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz",
+ "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
+ "license": "MIT",
+ "dependencies": {
+ "loader-utils": "^3.2.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "license": "MIT",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "license": "MIT",
+ "dependencies": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
+ "license": "MIT"
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==",
+ "license": "ISC"
+ },
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "license": "ISC",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/immutable": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
+ "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/import-local": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz",
+ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/invert-kv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz",
+ "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/invert-kv?sponsor=1"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
+ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==",
+ "license": "MIT"
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest": {
+ "version": "27.0.4",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.4.tgz",
+ "integrity": "sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/core": "^27.0.4",
+ "import-local": "^3.0.2",
+ "jest-cli": "^27.0.4"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+ "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "execa": "^5.0.0",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
+ "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-circus/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-circus/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-circus/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-circus/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
+ "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "prompts": "^2.0.1",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-cli/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-cli/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
+ "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.8.0",
+ "@jest/test-sequencer": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "babel-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-jasmine2": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-config/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-config/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-diff/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
+ "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
+ "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-each/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-each/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+ "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jsdom": "^16.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+ "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+ "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^27.5.1",
+ "jest-serializer": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-jasmine2": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+ "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-jasmine2/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+ "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-matcher-utils/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-message-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
+ "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^1.1.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+ "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-snapshot": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-resolve/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
+ "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-leak-detector": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "source-map-support": "^0.5.6",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runner/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-runner/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
+ "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/globals": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "execa": "^5.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-runtime/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/@babel/traverse": {
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-snapshot/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
+ "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "leven": "^3.1.0",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-validate/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-validate/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
+ "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^27.5.1",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/jest-watcher/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jpeg-js": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
+ "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/klona": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
+ "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/lcid": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz",
+ "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+ "license": "MIT",
+ "dependencies": {
+ "invert-kv": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/licia": {
+ "version": "1.43.0",
+ "resolved": "https://registry.npmjs.org/licia/-/licia-1.43.0.tgz",
+ "integrity": "sha512-/m23vS54TozPbRMXUuV/Ht1+IIAB4Lw9bPX3ZPzzGL0uWNMt91QK/xktdJk//b2y1HiWPNTjb8lWM927nZI8OQ==",
+ "license": "MIT"
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/load-bmfont": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz",
+ "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-equal": "0.0.1",
+ "mime": "^1.3.4",
+ "parse-bmfont-ascii": "^1.0.3",
+ "parse-bmfont-binary": "^1.0.5",
+ "parse-bmfont-xml": "^1.1.4",
+ "phin": "^3.7.1",
+ "xhr": "^2.0.1",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/load-bmfont/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-bmfont/node_modules/phin": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz",
+ "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==",
+ "license": "MIT",
+ "dependencies": {
+ "centra": "^2.7.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz",
+ "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/local-pkg": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
+ "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+ "license": "MIT",
+ "dependencies": {
+ "mlly": "^1.4.2",
+ "pkg-types": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/localstorage-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+ "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.12",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz",
+ "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==",
+ "license": "MIT"
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/mlly": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz",
+ "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.12.1",
+ "pathe": "^1.1.2",
+ "pkg-types": "^1.2.0",
+ "ufo": "^1.5.4"
+ }
+ },
+ "node_modules/module-alias": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz",
+ "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==",
+ "license": "MIT"
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "license": "MIT"
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.13",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz",
+ "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/omggif": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
+ "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==",
+ "license": "MIT"
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-locale-s-fix": {
+ "version": "1.0.8-fix-1",
+ "resolved": "https://registry.npmjs.org/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz",
+ "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==",
+ "license": "MIT",
+ "dependencies": {
+ "lcid": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "yarn": "^1.22.4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "license": "(MIT AND Zlib)"
+ },
+ "node_modules/parse-bmfont-ascii": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
+ "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==",
+ "license": "MIT"
+ },
+ "node_modules/parse-bmfont-binary": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
+ "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==",
+ "license": "MIT"
+ },
+ "node_modules/parse-bmfont-xml": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
+ "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
+ "license": "MIT",
+ "dependencies": {
+ "xml-parse-from-string": "^1.0.0",
+ "xml2js": "^0.5.0"
+ }
+ },
+ "node_modules/parse-css-font": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-css-font/-/parse-css-font-4.0.0.tgz",
+ "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==",
+ "license": "MIT",
+ "dependencies": {
+ "css-font-size-keywords": "^1.0.0",
+ "css-font-stretch-keywords": "^1.0.1",
+ "css-font-style-keywords": "^1.0.1",
+ "css-font-weight-keywords": "^1.0.0",
+ "css-list-helpers": "^2.0.0",
+ "css-system-font-keywords": "^1.0.0",
+ "unquote": "^1.1.1"
+ }
+ },
+ "node_modules/parse-headers": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz",
+ "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==",
+ "license": "MIT"
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "license": "MIT"
+ },
+ "node_modules/phin": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.36.tgz",
+ "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia-plugin-persistedstate": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.3.tgz",
+ "integrity": "sha512-Cm819WBj/s5K5DGw55EwbXDtx+EZzM0YR5AZbq9XE3u0xvXwvX2JnWoFpWIcdzISBHqy9H1UiSIUmXyXqWsQRQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "pinia": "^2.0.0"
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pixelmatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz",
+ "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+ "license": "ISC",
+ "dependencies": {
+ "pngjs": "^3.0.0"
+ },
+ "bin": {
+ "pixelmatch": "bin/pixelmatch"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz",
+ "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==",
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.2",
+ "pathe": "^1.1.2"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.47",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+ "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.0",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^2.0.5",
+ "yaml": "^1.10.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-modules": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz",
+ "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==",
+ "license": "MIT",
+ "dependencies": {
+ "generic-names": "^4.0.0",
+ "icss-replace-symbols": "^1.1.0",
+ "lodash.camelcase": "^4.3.0",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.0",
+ "postcss-modules-scope": "^3.0.0",
+ "postcss-modules-values": "^4.0.0",
+ "string-hash": "^1.1.1"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
+ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
+ "license": "ISC",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
+ "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
+ "license": "MIT",
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
+ "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
+ "license": "ISC",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "license": "ISC",
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "license": "MIT"
+ },
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode-reader": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+ "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
+ "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "license": "MIT"
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz",
+ "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.2.0",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.11.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/regjsparser": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz",
+ "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~3.0.2"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz",
+ "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "3.29.5",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
+ "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
+ "license": "MIT",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-area-insets": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/safe-area-insets/-/safe-area-insets-1.4.1.tgz",
+ "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==",
+ "license": "ISC"
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sass": {
+ "version": "1.80.3",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.3.tgz",
+ "integrity": "sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "@parcel/watcher": "^2.4.1",
+ "chokidar": "^4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-loader": {
+ "version": "10.5.2",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.5.2.tgz",
+ "integrity": "sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "klona": "^2.0.4",
+ "loader-utils": "^2.0.0",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.0.0",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "fibers": ">= 3.1.0",
+ "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
+ "sass": "^1.3.0",
+ "webpack": "^4.36.0 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "fibers": {
+ "optional": true
+ },
+ "node-sass": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sass-loader/node_modules/loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/sass-loader/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+ "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
+ "license": "ISC"
+ },
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/scule": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
+ "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
+ "license": "MIT"
+ },
+ "node_modules/select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/send/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+ "license": "MIT"
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==",
+ "license": "CC0-1.0"
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-literal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz",
+ "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^9.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/strip-literal/node_modules/js-tokens": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
+ "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
+ "license": "MIT"
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/systemjs": {
+ "version": "6.15.1",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz",
+ "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.36.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz",
+ "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==",
+ "devOptional": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+ "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.20",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.26.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/throat": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz",
+ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/timm": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz",
+ "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==",
+ "license": "MIT"
+ },
+ "node_modules/tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
+ "license": "MIT"
+ },
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==",
+ "license": "MIT"
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
+ "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "devOptional": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unimport": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.13.1.tgz",
+ "integrity": "sha512-nNrVzcs93yrZQOW77qnyOVHtb68LegvhYFwxFMfuuWScmwQmyVCG/NBuN8tYsaGzgQUVYv34E/af+Cc9u4og4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.2",
+ "acorn": "^8.12.1",
+ "escape-string-regexp": "^5.0.0",
+ "estree-walker": "^3.0.3",
+ "fast-glob": "^3.3.2",
+ "local-pkg": "^0.5.0",
+ "magic-string": "^0.30.11",
+ "mlly": "^1.7.1",
+ "pathe": "^1.1.2",
+ "pkg-types": "^1.2.0",
+ "scule": "^1.3.0",
+ "strip-literal": "^2.1.0",
+ "unplugin": "^1.14.1"
+ }
+ },
+ "node_modules/unimport/node_modules/@rollup/pluginutils": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz",
+ "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unimport/node_modules/@rollup/pluginutils/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/unimport/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unimport/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unplugin": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.14.1.tgz",
+ "integrity": "sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.12.1",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "webpack-sources": "^3"
+ },
+ "peerDependenciesMeta": {
+ "webpack-sources": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz",
+ "integrity": "sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@antfu/utils": "^0.7.6",
+ "@rollup/pluginutils": "^5.0.5",
+ "fast-glob": "^3.3.1",
+ "local-pkg": "^0.5.0",
+ "magic-string": "^0.30.5",
+ "minimatch": "^9.0.3",
+ "unimport": "^3.4.0",
+ "unplugin": "^1.5.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@nuxt/kit": "^3.2.2",
+ "@vueuse/core": "*"
+ },
+ "peerDependenciesMeta": {
+ "@nuxt/kit": {
+ "optional": true
+ },
+ "@vueuse/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import/node_modules/@rollup/pluginutils": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz",
+ "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/unplugin-auto-import/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
+ "license": "MIT"
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/utif": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz",
+ "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
+ "license": "MIT",
+ "dependencies": {
+ "pako": "^1.0.5"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uview-plus": {
+ "version": "3.3.36",
+ "resolved": "https://registry.npmjs.org/uview-plus/-/uview-plus-3.3.36.tgz",
+ "integrity": "sha512-yiIIt3OkCDkBzflrr6by8qvYibvCzsFZ/Mn+Fdx9TDaTQAltWFBj7UNVN/wOeb3lou2T5S1QFy2rxw3OcAYi5g==",
+ "dependencies": {
+ "clipboard": "^2.0.11",
+ "dayjs": "^1.11.3"
+ },
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+ "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/v8-to-istanbul/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vite": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz",
+ "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==",
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.16.3",
+ "postcss": "^8.4.20",
+ "resolve": "^1.22.1",
+ "rollup": "^3.7.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
+ "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
+ "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
+ "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
+ "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
+ "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
+ "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
+ "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
+ "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
+ "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
+ "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-loong64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
+ "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
+ "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
+ "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-s390x": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
+ "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
+ "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/sunos-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
+ "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
+ "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
+ "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
+ "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/esbuild": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
+ "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.16.17",
+ "@esbuild/android-arm64": "0.16.17",
+ "@esbuild/android-x64": "0.16.17",
+ "@esbuild/darwin-arm64": "0.16.17",
+ "@esbuild/darwin-x64": "0.16.17",
+ "@esbuild/freebsd-arm64": "0.16.17",
+ "@esbuild/freebsd-x64": "0.16.17",
+ "@esbuild/linux-arm": "0.16.17",
+ "@esbuild/linux-arm64": "0.16.17",
+ "@esbuild/linux-ia32": "0.16.17",
+ "@esbuild/linux-loong64": "0.16.17",
+ "@esbuild/linux-mips64el": "0.16.17",
+ "@esbuild/linux-ppc64": "0.16.17",
+ "@esbuild/linux-riscv64": "0.16.17",
+ "@esbuild/linux-s390x": "0.16.17",
+ "@esbuild/linux-x64": "0.16.17",
+ "@esbuild/netbsd-x64": "0.16.17",
+ "@esbuild/openbsd-x64": "0.16.17",
+ "@esbuild/sunos-x64": "0.16.17",
+ "@esbuild/win32-arm64": "0.16.17",
+ "@esbuild/win32-ia32": "0.16.17",
+ "@esbuild/win32-x64": "0.16.17"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/vue-i18n": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.1.tgz",
+ "integrity": "sha512-xjxV0LYc1xQ8TbAVfIyZiOSS8qoU1R0YwV7V5I8I6Fd64+zvsTsdPgtylPsie3Vdt9wekeYhr+smKDeaK6RBuA==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/core-base": "9.14.1",
+ "@intlify/shared": "9.14.1",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/core-base": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.1.tgz",
+ "integrity": "sha512-rG5/hlNW6Qfve41go37szEf0mVLcfhYuOu83JcY0jZKasnwsrcZYYWDzebCcuO5I/6Sy1JFWo9p+nvkQS1Dy+w==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/message-compiler": "9.14.1",
+ "@intlify/shared": "9.14.1"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/message-compiler": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.1.tgz",
+ "integrity": "sha512-MY8hwukJBnXvGAncVKlHsqKDQ5ZcQx4peqEmI8wBUTXn4pezrtTGYXNoz81cLyEEHB+L/zlKWVBSh5TiX4gYoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@intlify/shared": "9.14.1",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/shared": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.1.tgz",
+ "integrity": "sha512-XjHu6PEQup9MnP1x0W9y0nXXfq9jFftAYSfV11hryjtH4XqXP8HrzMvXI+ZVifF+jZLszaTzIhvukllplxTQTg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz",
+ "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.6.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.95.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz",
+ "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "^1.0.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
+ "acorn": "^8.7.1",
+ "acorn-import-attributes": "^1.9.5",
+ "browserslist": "^4.21.10",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.17.1",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.11",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.1",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "devOptional": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
+ "license": "MIT"
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xhr": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz",
+ "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
+ "license": "MIT",
+ "dependencies": {
+ "global": "~4.4.0",
+ "is-function": "^1.0.1",
+ "parse-headers": "^2.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/xml-parse-from-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
+ "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==",
+ "license": "MIT"
+ },
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "license": "MIT",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/xregexp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.0.tgz",
+ "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==",
+ "license": "MIT"
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ }
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package.json b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package.json
new file mode 100644
index 0000000..0ad5dd8
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "scripts": {
+ "dev:app": "uni -p app",
+ "dev:app-android": "uni -p app-android",
+ "dev:app-ios": "uni -p app-ios",
+ "dev:custom": "uni -p",
+ "dev:h5": "uni",
+ "dev:h5:ssr": "uni --ssr",
+ "dev:mp-alipay": "uni -p mp-alipay",
+ "dev:mp-baidu": "uni -p mp-baidu",
+ "dev:mp-jd": "uni -p mp-jd",
+ "dev:mp-kuaishou": "uni -p mp-kuaishou",
+ "dev:mp-lark": "uni -p mp-lark",
+ "dev:mp-qq": "uni -p mp-qq",
+ "dev:mp-toutiao": "uni -p mp-toutiao",
+ "dev:mp-weixin": "uni -p mp-weixin",
+ "dev:mp-xhs": "uni -p mp-xhs",
+ "dev:quickapp-webview": "uni -p quickapp-webview",
+ "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
+ "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
+ "build:app": "uni build -p app",
+ "build:app-android": "uni build -p app-android",
+ "build:app-ios": "uni build -p app-ios",
+ "build:custom": "uni build -p",
+ "build:h5": "uni build",
+ "build:h5:ssr": "uni build --ssr",
+ "build:mp-alipay": "uni build -p mp-alipay",
+ "build:mp-baidu": "uni build -p mp-baidu",
+ "build:mp-jd": "uni build -p mp-jd",
+ "build:mp-kuaishou": "uni build -p mp-kuaishou",
+ "build:mp-lark": "uni build -p mp-lark",
+ "build:mp-qq": "uni build -p mp-qq",
+ "build:mp-toutiao": "uni build -p mp-toutiao",
+ "build:mp-weixin": "uni build -p mp-weixin",
+ "build:mp-xhs": "uni build -p mp-xhs",
+ "build:quickapp-webview": "uni build -p quickapp-webview",
+ "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
+ "build:quickapp-webview-union": "uni build -p quickapp-webview-union"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-plus": "3.0.0-3090920231225001",
+ "@dcloudio/uni-components": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-jd": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-lark": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-qq": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
+ "clipboard": "^2.0.11",
+ "dayjs": "^1.11.10",
+ "pinia": "2.0",
+ "pinia-plugin-persistedstate": "^3.2.1",
+ "uview-plus": "^3.1.41",
+ "vue": "^3.2.45",
+ "vue-i18n": "^9.1.9"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3090920231225001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3090920231225001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3090920231225001",
+ "@vue/runtime-core": "^3.2.45",
+ "sass": "^1.69.7",
+ "sass-loader": "^10.5.2",
+ "vite": "4.0.3"
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/shims-uni.d.ts b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/shims-uni.d.ts
new file mode 100644
index 0000000..ed4adcf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/shims-uni.d.ts
@@ -0,0 +1,10 @@
+/// <reference types='@dcloudio/types' />
+import 'vue'
+
+declare module '@vue/runtime-core' {
+ type Hooks = App.AppInstance & Page.PageInstance;
+
+ interface ComponentCustomOptions extends Hooks {
+
+ }
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/App.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/App.vue
new file mode 100644
index 0000000..f65dee3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/App.vue
@@ -0,0 +1,18 @@
+<script>
+ export default {
+ onLaunch: function () {
+ console.log('App Launch')
+ },
+ onShow: function () {
+ console.log('App Show')
+ },
+ onHide: function () {
+ console.log('App Hide')
+ },
+ }
+</script>
+
+<style lang="scss">
+ /*每个页面公共css */
+ @import "uview-plus/index.scss";
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/api.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/api.js
new file mode 100644
index 0000000..eda3014
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/api.js
@@ -0,0 +1,79 @@
+import {get, post} from './network';
+import $config from '../config';
+
+let host = $config.serverhost;
+
+export const GetQuestionSubjects = (params) => {
+ return post(`${host}/wechat/question/subject/list`, params)
+}
+export const GetQuestionPaperCategories = (params) => {
+ return post(`${host}/wechat/question/paper/category/list`, params)
+}
+export const GetQuestionPapers = (params) => {
+ return post(`${host}/wechat/question/paper/list`, params)
+}
+export const GetQuestionCategories = (params) => {
+ return post(`${host}/wechat/question/category/list`, params)
+}
+export const GetQuestionMasters = (params) => {
+ return post(`${host}/wechat/question/master/list`, params)
+}
+export const GetQuestionMastersByPaperid = (paperid) => {
+ return get(`${host}/wechat/question/master/listbypaperid?paperid=${paperid}`)
+}
+
+export const GetOrganizationMasters = (params) => {
+ return post(`${host}/wechat/organization/master/list`, params)
+}
+export const GetOrganizationDepartments = (params) => {
+ return post(`${host}/wechat/organization/department/list`, params)
+}
+export const GetOrganizationMajors = (params) => {
+ return post(`${host}/wechat/organization/major/list`, params)
+}
+export const GetOrganizationGrades = (params) => {
+ return post(`${host}/wechat/organization/grade/list`, params)
+}
+export const GetOrganizationClasses = (params) => {
+ return post(`${host}/wechat/organization/class/list`, params)
+}
+
+export const SetVIPOrganization = (params) => {
+ return post(`${host}/wechat/vip/organization/set`, params)
+}
+export const GetVIPOrganization = (id) => {
+ return get(`${host}/wechat/vip/organization/detail?masterid=${id}`)
+}
+export const UpdateVIPMaster = (params) => {
+ return post(`${host}/wechat/vip/master/update`, params)
+}
+
+//订单
+export const CreateActiveOrder = (params) => {
+ return post(`${host}/wechat/order/active/makeorder`, params)
+}
+export const PayUseWXViaMiniProgram = (params) => {
+ return post(`${host}/wechat/pay/PayUseWXViaMiniProgram`, params)
+}
+export const PaySuccess = (params) => {
+ return post(`${host}/wechat/order/active/pay`, params)
+}
+
+//钱包
+export const getWalletDetail = (id) => {
+ return get(`${host}/wechat/vip/master/wallet/detail?masterid=${id}`)
+}
+export const depositActivityList = (params) => {
+ return post(`${host}/wechat/vip/deposit/activity/list`, params)
+}
+export const walletRecharge = (params) => {
+ return post(`${host}/wechat/vip/master/wallet/recharge`, params)
+}
+export const walletCharge = (params) => {
+ return post(`${host}/wechat/vip/master/wallet/charge`, params)
+}
+
+//我的
+export const getMyPaperList = (id) => {
+ return get(`${host}/wechat/vip/paper/relation/list?masterid=${id}`)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/authapi.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/authapi.js
new file mode 100644
index 0000000..6178197
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/authapi.js
@@ -0,0 +1,56 @@
+import { get, post } from './network';
+import $config from '../config';
+
+let host = $config.serverhost;
+
+export const GetWXCode2Session = (code) => {
+ return get(`${host}/wechat/oauth/GetWXCode2SessionForMiniProgram?code=` + code)
+}
+
+export const GetAccessToken = (params) => {
+ return get(`${host}/wechat/oauth/GetAccessTokenForMiniProgram`)
+}
+
+export const GetUserPhoneNumber = (params) => {
+ return post(`${host}/wechat/oauth/GetUserPhoneNumberForMiniProgram`, params)
+}
+
+export const GetWeChatConfig = () => {
+ return get(`${host}/wechat/pay/GetWeChatConfig`)
+}
+
+export const GetSMSCode = (params) => {
+ return get(`${host}/wechat/oauth/GetSMSCode?cellphone=` + params)
+}
+
+export const LoginBySMSCode = (params) => {
+ return post(`${host}/wechat/oauth/loginBySMSCode`, params)
+}
+
+export const LoginByWXOpenID = (params) => {
+ return post(`${host}/wechat/oauth/LoginByWXOpenID`, params)
+}
+
+export const LoginByPassword = (params) => {
+ return post(`${host}/wechat/oauth/loginByPassword`, params)
+}
+
+export const GetAppConfig = (params) => {
+ return post(`${host}/wechat/oauth/GetAppConfig`, params);
+}
+
+export const RegisterUser = (params) => {
+ return post(`${host}/wechat/oauth/RegisterUser`, params)
+}
+
+export const RegisterUserByCellphone = (params) => {
+ return post(`${host}/wechat/oauth/RegisterUserByCellphone`, params)
+}
+
+export const ResetPasswordCellphone = (params) => {
+ return post(`${host}/wechat/oauth/ResetPasswordCellphone`, params)
+}
+
+export const UpdateUserPhoneNumber = (params) => {
+ return post(`${host}/wechat/oauth/UpdateUserPhoneNumber`, params)
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/common.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/common.js
new file mode 100644
index 0000000..7421213
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/common.js
@@ -0,0 +1,9 @@
+import { get, post } from './network';
+import $config from '../config';
+
+let host = $config.serverhost;
+
+export const getFileUploadUrl = () => {
+ return `${host}/file/upload?time=${new Date()}`
+}
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/network.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/network.js
new file mode 100644
index 0000000..c2ffbf7
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/network.js
@@ -0,0 +1,115 @@
+import validator from '../common/validator';
+
+const request = (url, options) => {
+ uni.showNavigationBarLoading()
+ return new Promise((resolve, reject) => {
+ uni.request({
+ url: `${url}`,
+ method: options.method,
+ data: options.method === 'GET' || options.header ===
+ 'application/x-www-form-urlencoded' ? options.data : JSON.stringify(options.data),
+ header: {
+ 'Content-Type': options.header,
+ 'Authorization': uni.getStorageSync('token'),
+ 'Referer': 'https://drptest.koreano.cn'
+ },
+ //https://servicewechat.com/wx1e7526eb4d9cf91c/devtools/page-frame.html
+ success(request) {
+ uni.stopPullDownRefresh()
+ if (request.data.status == 10 || request.data.status == 11) {
+ uni.setStorageSync('token', '')
+ let token = uni.getStorageSync('token')
+ if (validator.checkEmpty(token)) {
+ refLogin(url, options).then(res => {
+ if (res) {
+ resolve(res)
+ } else {
+ resolve({
+ tokenStatus: false,
+ status: 1
+ })
+ }
+ })
+ }
+ } else {
+ if (request.statusCode === 200 || request.data.status) {
+ resolve(request.data)
+ } else {
+ reject(request.data)
+ }
+ }
+ uni.hideNavigationBarLoading()
+ },
+ fail(error) {
+ console.log('---------网络连接错误------------')
+ uni.showToast({
+ icon: 'none',
+ title: '网络连接错误'
+ })
+ uni.hideNavigationBarLoading()
+ reject({
+ status: 1,
+ data: error.data
+ })
+ },
+ })
+ }).catch(function (reason) {
+ console.log('---------网络调用错误------------' + reason)
+ uni.showToast({
+ icon: 'none',
+ title: '网络调用错误'
+ })
+ uni.redirectTo({
+ url: '/pages/common/code_error/index?code=10002',
+ })
+ uni.hideNavigationBarLoading()
+ });
+}
+
+export const get = (url, options = {}) => {
+ return request(url, {
+ method: 'GET',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
+
+export const post = (url, options) => {
+ return request(url, {
+ method: 'POST',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
+
+export const put = (url, options) => {
+ return request(url, {
+ method: 'PUT',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
+
+export const postF = (url, options) => {
+ return request(url, {
+ method: 'POST',
+ data: options,
+ header: 'application/x-www-form-urlencoded'
+ })
+}
+
+export const putF = (url, options) => {
+ return request(url, {
+ method: 'PUT',
+ data: options,
+ header: 'application/x-www-form-urlencoded'
+ })
+}
+
+export const remove = (url, options) => {
+ return request(url, {
+ method: 'DELETE',
+ data: options,
+ header: 'application/json; charset=UTF-8'
+ })
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/ordernumber.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/ordernumber.js
new file mode 100644
index 0000000..c3acc9e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/apis/ordernumber.js
@@ -0,0 +1,14 @@
+export const getDateNums = (date) => {
+ const year = date.getFullYear()
+ const month = date.getMonth() + 1
+ const day = date.getDate()
+ const hour = date.getHours()
+ const minute = date.getMinutes()
+ const second = date.getSeconds()
+
+ return [year, month, day].map(formatNumber).join('') + [hour, minute, second].map(formatNumber).join('')
+}
+const formatNumber = n => {
+ n = n.toString()
+ return n[1] ? n : '0' + n
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/common.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/common.js
new file mode 100644
index 0000000..4413139
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/common.js
@@ -0,0 +1,7 @@
+export const guid = () => {
+ return (__s4() + __s4() + "-" + __s4() + "-" + __s4() + "-" + __s4() + "-" + __s4() +
+ __s4() + __s4());
+}
+const __s4 = () => {
+ return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/validator.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/validator.js
new file mode 100644
index 0000000..88af332
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/common/validator.js
@@ -0,0 +1,46 @@
+'use strict';
+
+class Validator {
+ constructor(arg) {
+
+ }
+
+ checkEmpty(val) {
+ if (typeof val === 'boolean') {
+ return false
+ }
+ if (typeof val === 'number') {
+ return false
+ }
+ if (val instanceof Array) {
+ if (val.length === 0) return true
+ } else if (val instanceof Object) {
+ if (JSON.stringify(val) === '{}') return true
+ } else {
+ if (val === 'null' || val == null || val === 'undefined' || val === undefined || val === '') return true
+ return false
+ }
+ return false
+ }
+
+ checkEmail(email) {
+ return RegExp(
+ /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/)
+ .test(
+ email);
+ }
+
+ checkMobile(mobile) {
+ return RegExp(/^1[34578]\d{9}$/).test(mobile);
+ }
+
+ checkMobile2(mobile) {
+ if (!/(^1[0-9][0-9]{9}$)/.test(mobile)) {
+ return false;
+ }
+
+ return true;
+ }
+}
+
+export default new Validator()
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/components/userProfile/userProfile.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/components/userProfile/userProfile.vue
new file mode 100644
index 0000000..1ae71bf
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/components/userProfile/userProfile.vue
@@ -0,0 +1,155 @@
+<template>
+ <view class="user-info">
+ <text class="title">点击头像设置</text>
+ <u-upload @afterRead="afterRead" :use-before-read="true" @beforeRead="beforeRead" name="1" :maxCount="1" width="120"
+ height="120">
+ <up-avatar :src="userStore.userinfo.avatarurl" size="120"></up-avatar>
+ </u-upload>
+ <text class="title">昵称设置</text>
+ <up-input placeholder="请输入昵称" border="surround" v-model="userStore.userinfo.nickname" maxlength="9"></up-input>
+ <view class="save">
+ <up-button type="primary" text="保存" size="small" @click="save"></up-button>
+ </view>
+
+ <!-- <button class="avatar" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
+ <image :src="userStore.userinfo.avatarurl" class="avatar-img"></image>
+ </button>
+ <input class="nickname" type="nickname" :value="nickname" @blur="bindblur" placeholder="请输入昵称" /> -->
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { getFileUploadUrl } from "../../apis/common"
+import { UpdateVIPMaster } from "../../apis/api"
+export default {
+ props: {
+ saveCB: {
+ type: Function,
+ default: null,
+ },
+ },
+ setup(props) {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ uploadurl: ''
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ state.uploadurl = getFileUploadUrl();
+ }
+
+
+ const beforeRead = (e) => {
+ const size = (e.file.size) / 1024 / 1024
+ const index = e.file.url.indexOf('.')
+ const type = e.file.url.substring(index + 1)
+ if (type !== 'png' && type !== 'jpg' && type !== 'jpeg') {
+ uni.$u.toast('文件格式不正确, 请上传png/jpg/jpeg图片格式文件')
+ return false
+ } else {
+ if (size > 1.1) {
+ uni.$u.toast('上传图片大小不能超过1MB')
+ return false
+ }
+ }
+ }
+
+ const afterRead = async (event) => {
+ return new Promise((resolve, reject) => {
+ uni.uploadFile({
+ url: state.uploadurl, // 上传地址
+ filePath: event.file.url,
+ name: 'file',
+ formData: {
+ user: 'test',
+ },
+ success: (res) => {
+ userStore.userinfo.avatarurl = res.data
+ setTimeout(() => {
+ resolve(res.data.data);
+ }, 1000);
+ },
+ });
+ });
+ };
+
+ const save = () => {
+ if (!userStore.userinfo.avatarurl) {
+ uni.$u.toast('请上传头像')
+ return
+ }
+ if (!userStore.userinfo.nickname) {
+ uni.$u.toast('请设置昵称')
+ return
+ }
+ let obj = {
+ avatarurl: userStore.userinfo.avatarurl,
+ nickname: userStore.userinfo.nickname,
+ id: userStore.userinfo.id
+ }
+ uni.showLoading({
+ title: '保存中...',
+ });
+ UpdateVIPMaster(obj).then((res) => {
+ uni.hideLoading();
+ if (res.code == 200) {
+ proxy.$emit('saveCB');
+ } else {
+ uni.$u.toast('保存失败');
+ proxy.$emit('saveCB');
+ }
+ }).catch(err => {
+ uni.$u.toast('保存失败');
+ });
+ }
+
+
+
+ // const onChooseAvatar = (e) => {
+ // userStore.userinfo.avatarurl = e.detail.avatarUrl
+ // }
+ // const bindblur = (e) => {
+ // console.log(e, 888)
+ // }
+
+ return { ...toRefs(state), userStore, afterRead, beforeRead, save }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.user-info {
+ width: 100%;
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 5vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ .title {
+ color: gray;
+ margin: 20rpx;
+ }
+
+ .save {
+ margin-top: 20rpx;
+ width: 150rpx;
+ overflow: auto;
+ margin-bottom: 40rpx;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/config.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/config.js
new file mode 100644
index 0000000..98f6583
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/config.js
@@ -0,0 +1,17 @@
+let config = {
+ appid: 'wx1e7526eb4d9cf91c',
+ serverhost: 'https://bwf.farriver.top/api',
+ questionhost: 'https://bwf.farriver.top/mobile/question?',
+ // serverhost: 'http://localhost:8080/api',
+ // questionhost: 'http://localhost:9005/mobile/question?',
+
+ // 自定义头部 custom: 自定义,default: 系统默认
+ navbar: 'default',
+ debug: !0,
+ version: '1.0.0', // 版本号
+ appname: '', // 应用名称
+ appabbr: '', // 简称
+ appslogan: '',
+};
+
+export default config
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/main.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/main.js
new file mode 100644
index 0000000..31aa7dc
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/main.js
@@ -0,0 +1,28 @@
+import { createSSRApp } from "vue";
+import App from "./App.vue";
+import uviewPlus from 'uview-plus'
+import * as Pinia from "pinia"
+import persist from 'pinia-plugin-persistedstate'
+// import api from './apis/api'
+// import validator from './common/validator.js'
+// import config from './config.js'
+
+
+export function createApp() {
+
+ const app = createSSRApp(App);
+ //全局引入
+ // app.config.globalProperties.$api = api
+ // app.config.globalProperties.$config = config
+ // app.config.globalProperties.$validator = validator
+
+ app.use(uviewPlus)
+ const pinia = Pinia.createPinia()
+ pinia.use(persist)
+ app.use(pinia)
+ return {
+ app,
+ pinia
+ };
+}
+
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/manifest.json b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/manifest.json
new file mode 100644
index 0000000..f40be19
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/manifest.json
@@ -0,0 +1,73 @@
+{
+ "name" : "",
+ "appid" : "",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+ "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+ "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+ "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+ "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+ "<uses-feature android:name=\"android.hardware.camera\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+ ]
+ },
+ /* ios打包配置 */
+ "ios" : {},
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "wx1e7526eb4d9cf91c",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true,
+ "lazyCodeLoading": "requiredComponents"
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics": {
+ "enable": false
+ },
+ "vueVersion" : "3"
+}
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages.json b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages.json
new file mode 100644
index 0000000..0189e2b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages.json
@@ -0,0 +1,104 @@
+{
+ "easycom": {
+ "custom": {
+ "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
+ "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
+ "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"
+ }
+ },
+ "lazyCodeLoading": "requiredComponents",
+ "pages": [
+ {
+ "path": "pages/security/login",
+ "style": {
+ "navigationBarTitleText": "登录"
+ }
+ },
+ {
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "xxx题库"
+ }
+ },
+ {
+ "path": "pages/my/my",
+ "style": {
+ "navigationBarTitleText": "我的"
+ }
+ },
+ {
+ "path": "pages/question/list",
+ "style": {
+ "navigationBarTitleText": "题库"
+ }
+ },
+ {
+ "path": "pages/question/type",
+ "style": {
+ "navigationBarTitleText": "题型"
+ }
+ },
+ {
+ "path": "pages/my/myquestion",
+ "style": {
+ "navigationBarTitleText": "我的题库"
+ }
+ },
+ {
+ "path": "pages/my/recharge",
+ "style": {
+ "navigationBarTitleText": "充值"
+ }
+ },
+ {
+ "path": "pages/my/setting",
+ "style": {
+ "navigationBarTitleText": "设置"
+ }
+ },
+ {
+ "path": "pages/my/share",
+ "style": {
+ "navigationBarTitleText": "分享"
+ }
+ },
+ {
+ "path": "pages/question/question",
+ "style": {
+ "navigationBarTitleText": "答题"
+ }
+ },
+ {
+ "path": "pages/pay/pay",
+ "style": {
+ "navigationBarTitleText": "支付"
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "xxx题库",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ },
+ "tabBar": {
+ "color": "#7A7E83",
+ "selectedColor": "#52ba9d",
+ "borderStyle": "black",
+ "backgroundColor": "#FFFFFF",
+ "list": [
+ {
+ "pagePath": "pages/question/list",
+ "iconPath": "static/image/tabbar/home.png",
+ "selectedIconPath": "static/image/tabbar/home-active.png",
+ "text": "题库"
+ },
+ {
+ "pagePath": "pages/my/my",
+ "iconPath": "static/image/tabbar/user.png",
+ "selectedIconPath": "static/image/tabbar/user-active.png",
+ "text": "我的"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/index/index.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/index/index.vue
new file mode 100644
index 0000000..9601c54
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/index/index.vue
@@ -0,0 +1,288 @@
+<template>
+ <view class="content">
+ <view class="logo">
+ <up-avatar :src="userStore.userinfo.avatarurl" size="120"></up-avatar>
+ </view>
+ <view class="school">
+ <u-button size="large" :plain="true" type="primary" @click="schoolShow = true" shape="circle">
+ {{ school ? school.name : "请选择学校" }}
+ </u-button>
+ <u-picker :show="schoolShow" :columns="schoolColumns" @confirm="schoolChange" @cancel="schoolShow = false">
+ </u-picker>
+ </view>
+ <view class="college">
+ <u-button size="large" :plain="true" type="primary" @click="collegeShow = true" shape="circle">
+ {{ college ? college.name : "请选择学院" }}
+ </u-button>
+ <u-picker :show="collegeShow" :columns="collegeColumns" @confirm="collegeChange" @cancel="collegeShow = false">
+ </u-picker>
+ </view>
+ <view class="major">
+ <u-button size="large" :plain="true" type="primary" @click="majorShow = true" shape="circle">
+ {{ major ? major.name : "请选择专业" }}
+ </u-button>
+ <u-picker :show="majorShow" :columns="majorColumns" @confirm="majorChange" @cancel="majorShow = false">
+ </u-picker>
+ </view>
+ <view class="submit">
+ <u-button size="large" type="primary" shape="circle" @click="submit">注册</u-button>
+ </view>
+ <u-popup :show="emptyShow" @close="emptyShow = false">
+ <u-empty text="所谓伊人,在水一方" mode="list"></u-empty>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import {
+ GetOrganizationMasters,
+ GetOrganizationDepartments,
+ GetOrganizationMajors,
+ SetVIPOrganization
+} from '../../apis/api'
+
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ schoolShow: false,
+ schools: [],
+ schoolColumns: [],
+ school: userStore.school,
+
+ collegeShow: false,
+ colleges: [],
+ collegeColumns: [],
+ college: userStore.college,
+
+ majorShow: false,
+ majors: [],
+ majorColumns: [],
+ major: userStore.major,
+
+ emptyShow:false,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ if (!userStore.$state.hasLogin) {
+ uni.navigateTo({
+ url: '/pages/security/login' // 目标页面路径
+ });
+ } else {
+ loadSchool();
+ }
+ //loadSchool();
+ if (!userStore.school ) {
+ state.school=null
+ }
+ if (!userStore.college ) {
+ state.college=null
+ }
+ if (!userStore.major ) {
+ state.major=null
+ }
+ };
+
+ const loadSchool = () => {
+ state.schools = [];
+ state.schoolColumns = [];
+
+ let condition = {};
+ GetOrganizationMasters(condition).then(resp => {
+ if (resp.data) {
+ state.schools = resp.data;
+
+ let sArray = [];
+ resp.data.map(e => {
+ sArray.push(e.name);
+ });
+
+ state.schoolColumns.push(sArray);
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const schoolChange = (e) => {
+ let target = e.value[0];
+ state.college=null
+ state.major=null
+ if (state.school == null || state.school.name !== target) {
+ state.school = state.schools.filter(e => e.name === target).shift();
+
+ state.schoolShow = false
+ } else {
+ state.schoolShow = false
+ }
+
+ loadCollege(state.school.id);
+ }
+
+ const loadCollege = (organizationid) => {
+ state.colleges = [];
+ state.collegeColumns = [];
+ state.major=null
+ let condition = { organizationid: organizationid };
+ GetOrganizationDepartments(condition).then(resp => {
+ if (resp.data) {
+ state.colleges = resp.data;
+
+ let sArray = [];
+ resp.data.map(e => {
+ sArray.push(e.name);
+ });
+
+ state.collegeColumns.push(sArray);
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const collegeChange = (e) => {
+ let target = e.value[0];
+
+ if (state.college == null || state.college.name !== target) {
+ state.college = state.colleges.filter(e => e.name === target).shift();
+
+ state.collegeShow = false
+ } else {
+ state.collegeShow = false
+ }
+
+ loadMajor(state.school.id, state.college.id);
+ }
+
+ const loadMajor = (organizationid, departmentid) => {
+ state.majors = [];
+ state.majorColumns = [];
+
+ let condition = { organizationid: organizationid, departmentid: departmentid };
+ GetOrganizationMajors(condition).then(resp => {
+ if (resp) {
+ state.majors = resp.data;
+
+ let sArray = [];
+ resp.data.map(e => {
+ sArray.push(e.name);
+ });
+
+ state.majorColumns.push(sArray);
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const majorChange = (e) => {
+ let target = e.value[0];
+
+ if (state.major == null || state.major.name !== target) {
+ state.major = state.majors.filter(e => e.name === target).shift();
+
+ state.majorShow = false
+ } else {
+ state.majorShow = false
+ }
+ }
+
+ const submit = () => {
+ if (!state.school) {
+ return;
+ }
+ if (!state.college) {
+ return;
+ }
+ if (!state.major) {
+ return;
+ }
+
+ userStore.school = state.school;
+ userStore.college = state.college;
+ userStore.major = state.major;
+
+ let model = {
+ masterid: userStore.userinfo.id,
+ mastercode: userStore.userinfo.idcard,
+ mastername: userStore.userinfo.name,
+ organizationid: state.school.id,
+ organizationname: state.school.name,
+ organizationcode: state.school.code,
+ departmentid: state.college.id,
+ departmentname: state.college.name,
+ departmentcode: state.college.code,
+ majorid: state.major.id,
+ majorname: state.major.name,
+ majorcode: state.major.code,
+ };
+ if (userStore.userinfo.id) {
+ SetVIPOrganization(model).then(resp => {
+ if (resp.data && resp.code === 200) {
+ userStore.grade = null;
+ userStore.subject = null;
+ uni.switchTab({
+ url: '/pages/question/list' // 目标页面路径
+ });
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+ }
+
+ return { ...toRefs(state), userStore, schoolChange, collegeChange, majorChange, submit }
+ }
+}
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+.content {
+ @extend .center;
+ background-color: #f5efd9;
+ height: 100vh;
+}
+
+.logo {
+ @extend .center;
+ height: 30vh;
+}
+
+.school {
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+}
+
+.college {
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+}
+
+.major {
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+}
+
+.submit {
+ @extend .center;
+ width: 80%;
+ height: 20vh;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/my.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/my.vue
new file mode 100644
index 0000000..1b2c2c0
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/my.vue
@@ -0,0 +1,162 @@
+<template>
+ <view class="content">
+ <view class="my-info">
+ <view class="avatar">
+ <up-avatar :src="userStore.userinfo.avatarurl" size="70" @click="userProfileShow = true"></up-avatar>
+ </view>
+ <view class="user-name">
+ <view>
+ <text>{{ userStore.userinfo.nickname }}</text>
+ </view>
+ <!-- <view>
+ <text class="info-text">{{ userStore.schoolName }}</text>
+ </view> -->
+ <!-- <view>
+ <text class="info-text">{{ userStore.collegeName }}</text>
+ </view>
+ <view>
+ <text class="info-text">{{ userStore.majorName }}</text>
+ </view> -->
+ </view>
+ <!--
+ <view class="name">
+
+ </view> -->
+
+ </view>
+ <view class="menu">
+ <u-cell-group>
+ <u-cell iconStyle="color:#52ba9d" icon="file-text-fill" title="我的题库" isLink
+ url="/pages/my/myquestion"></u-cell>
+ <!-- <u-cell iconStyle="color:#1684fc" icon="integral-fill" title="VIP" isLink :value="vipTerm"
+ url="/pages/my/vip"></u-cell> -->
+ <u-cell iconStyle="color:#52ba9d" icon="rmb-circle-fill" title="充值" :value="balance" isLink
+ url="/pages/my/recharge"></u-cell>
+ <!-- <u-cell iconStyle="color:#1684fc" icon="phone-fill" title="手机绑定" :value="phone" isLink
+ url="/pages/my/phnoe"></u-cell> -->
+ <u-cell iconStyle="color:#52ba9d" icon="setting-fill" title="设置" isLink url="/pages/my/setting"></u-cell>
+ <u-cell iconStyle="color:#52ba9d" icon="share-square" title="分享" isLink url="/pages/my/share"></u-cell>
+ </u-cell-group>
+ </view>
+ <u-popup :show="userProfileShow" @close="userProfileShow = false">
+ <view class="info">
+ <UserProfile @saveCB="userProfileCB" />
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import UserProfile from "../../components/userProfile/userProfile.vue"
+
+export default {
+ components: { UserProfile },
+ setup() {
+ const userStore = useBasicInfoStore()
+ const state = reactive({
+ // vipTerm: '未开通',
+ balance: '',
+ phone: '',
+ userProfileShow: false,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ // if (userStore.vip) {
+ // state.vipTerm = "有效期 " + userStore.vipTerm
+ // }
+ // state.balance = "余额 " + userStore.balance
+ // if (userStore.phone) {
+ // state.phone = userStore.phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
+ // } else {
+ // state.phone = "未绑定 "
+ // }
+ }
+
+ const userProfileCB = () => {
+ console.log('成功999')
+ // uni.navigateTo({
+ // url: '/pages/index/index'
+ // });
+ state.userProfileShow = false
+ }
+
+
+ return { ...toRefs(state), userStore, userProfileCB }
+ }
+}
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.content {
+ @extend .center;
+ //background-color: #f5efd9;
+ height: 100vh;
+ width: 100%;
+}
+
+.my-info {
+ // @extend .center;
+ height: 15vh;
+ width: 100%;
+ background-color: #52ba9d;
+ padding-top: 5vh;
+ display: flex;
+ justify-content: flex-start;
+
+ .avatar {
+ width: 70px;
+ height: 70px;
+ margin-left: 35rpx;
+ }
+
+ .user-name {
+ line-height: 70px;
+ color: #fff;
+ margin-left: 35rpx;
+ }
+
+ .info-text {
+ font-size: 12px;
+ color: gray;
+ }
+}
+
+.menu {
+ @extend .center;
+ height: 50vh;
+ width: 100%;
+ margin-top: 3vh;
+
+ ::v-deep .u-cell-group {
+ width: 90%;
+ margin: 0 rpx auto;
+ }
+}
+
+.info {
+ width: 100%;
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 5vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/myquestion.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/myquestion.vue
new file mode 100644
index 0000000..6c26b74
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/myquestion.vue
@@ -0,0 +1,125 @@
+<template>
+ <view class="content">
+ <view class="select-show" v-if="userStore.subject">
+ <text>年级:{{ userStore.grade.name }} 科目:{{ userStore.subject.subjectname }}</text>
+ </view>
+ <scroll-view scroll-y class="test-list" v-if="userStore.subject">
+ <view class="menu" v-for="(item, index) in testList" :key="index" @click="practice(item, index)">
+ <text>{{ item.papername }}</text>
+ <u-icon size="20px" color="#f3d95b" name="integral-fill"
+ custom-style="margin-top:10rpx;margin-left:10rpx;"></u-icon>
+ </view>
+ <view class="empty-show" v-if="testList.length == 0">
+ <u-empty text="暂无数据" mode="list"></u-empty>
+ </view>
+ </scroll-view>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { getMyPaperList } from "../../apis/api"
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ testList: [],
+ testSel: {},
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ getPaperList()
+ }
+
+ const getPaperList = () => {
+ getMyPaperList(userStore.userinfo.id).then((res) => {
+ if (res.data.length > 0) {
+ state.testList = res.data
+ }
+ })
+ }
+
+
+
+ const practice = (item, index) => {
+ state.testSel = item
+ userStore.testTitle = item.papername
+ uni.navigateTo({
+ url: '/pages/question/type'
+ });
+ }
+
+
+ return {
+ ...toRefs(state),
+ userStore,
+ practice,
+ }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.select-show {
+ width: calc(100% - 40rpx);
+ height: 40rpx;
+ background-color: #fff;
+ display: flex;
+ justify-content: flex-start;
+ padding: 20rpx;
+ font-size: 24rpx;
+ line-height: 40rpx;
+}
+
+.test-list {
+ width: 100%;
+ height: calc(100vh - 140rpx);
+ padding: 15rpx;
+
+ .menu {
+ // width: calc(95% - 40rpx);
+ // overflow: auto;
+ // background-color: #fff;
+ // border-radius: 15rpx;
+ // padding: 20rpx;
+ // display: flex;
+ // justify-content: flex-start;
+ // margin: 20rpx auto;
+ width: calc(95% - 40rpx);
+ height: 80rpx;
+ line-height: 80rpx;
+ margin: 20rpx auto;
+ display: flex;
+ justify-content: flex-start;
+ background-color: #fff;
+ border-radius: 15rpx;
+ padding: 0rpx 20rpx;
+ }
+}
+
+.empty-show {
+ margin-top: 30vh;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/recharge.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/recharge.vue
new file mode 100644
index 0000000..5a1e321
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/recharge.vue
@@ -0,0 +1,207 @@
+<template>
+ <view class="content">
+ <image class="image-top" mode="aspectFill" lazy-load src="../../static/image/recharge.jpg"></image>
+ <view class="balance">
+ <view><text style="font-weight: 550;">余额:</text><text style="color:#3c9cff ;">¥{{ balance }}</text></view>
+ </view>
+ <view class="recharge">
+ <view class="option" v-for="(item, index) in package" :key="index" @click="sel(item, index)">
+ <text class="info-left" :style="selIndex == index ? 'color:#3c9cff' : ''">¥{{ item.amount }}
+ <text class="info-right" v-if="item.description">
+ ( <text>{{ item.description }}</text> )
+ </text>
+ </text>
+ <u-icon v-if="selIndex == index" name="checkbox-mark" color="#3c9cff"></u-icon>
+ </view>
+ </view>
+ <view class="submit">
+ <u-button size="large" type="primary" @click="submit">立即支付</u-button>
+ </view>
+
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted } from "vue";
+import { onLoad, onShow } from "@dcloudio/uni-app";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { CreateActiveOrder, getWalletDetail, depositActivityList } from "../../apis/api"
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const state = reactive({
+ package: [],
+ selIndex: 0,
+ depositSel: null,
+ balance: 0,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ onShow(() => {
+ getWalletDetailInfo()
+ })
+
+ const Init = () => {
+ }
+
+ const getWalletDetailInfo = () => {
+
+ getWalletDetail(userStore.userinfo.id).then((res) => {
+ if (res) {
+ state.balance = res.balance
+ }
+ })
+ let obj = {
+ pageIndex: 1,
+ pageSize: 100
+ }
+ depositActivityList(obj).then((res) => {
+ if (res) {
+ state.package = res.data
+ } else {
+ uni.$u.toast('暂无充值选项');
+ }
+ })
+ }
+
+ const sel = (item, index) => {
+ state.depositSel = item
+ state.selIndex = index
+ }
+
+ const submit = () => {
+ let products = []
+ products.push({
+ productid: state.depositSel.id,
+ price: state.depositSel.amount * state.depositSel.discountrate,
+ productname: state.depositSel.name,
+ })
+
+ let condition = {
+ no: 1,
+ vipuserid: userStore.userinfo.id,
+ vipname: userStore.userinfo.nickname,
+ vipphone: userStore.userinfo.cellphone,
+ totalmoney: state.depositSel.amount * state.depositSel.discountrate,
+ paymoney: state.depositSel.amount * state.depositSel.discountrate,
+ products: products,
+ type: 0
+ }
+ userStore.payInfo = condition
+
+ CreateActiveOrder(condition).then(resp => {
+ if (resp.code == 200) {
+ userStore.payInfo.id = resp.data.id
+ userStore.payInfo.payedmoney = resp.data.totalmoney
+ userStore.payInfo.paymentmethod = 2
+ userStore.payInfo.payPrice = state.depositSel.amount * state.depositSel.discountrate
+ userStore.routePage = 'recharge'
+ uni.navigateTo({
+ url: '/pages/pay/pay'
+ })
+ }
+ else {
+ state.vipShow = false
+ uni.$u.toast('订单创建失败!');
+ }
+
+ }).catch(err => {
+ console.error(err);
+ });
+
+
+
+ // userStore.testTitle = item.title
+ // if (item.type == 2) {
+ // //state.discountPrice = item.price * userStore.vipDiscount / 10
+ // state.vipShow = true
+
+
+ // } else {
+ // uni.navigateTo({
+ // url: '/pages/question/type'
+ // });
+ // }
+ }
+
+
+
+
+ return { ...toRefs(state), userStore, sel, submit }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.image-top {
+ width: 100%;
+ height: 18vh;
+}
+
+.balance {
+ @extend .center;
+ width: calc(95% - 40rpx);
+ //height: 15vh;
+ overflow: auto;
+ padding: 40rpx 20rpx;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 20rpx;
+}
+
+.recharge {
+ @extend .center;
+ width: calc(95% - 40rpx);
+ //height: 15vh;
+ overflow: auto;
+ padding: 20rpx;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 20rpx;
+
+
+ .option {
+ width: 100%;
+ height: 80rpx;
+ line-height: 80rpx;
+ border-bottom: 1rpx solid #f5f5f5;
+ display: flex;
+ justify-content: space-between;
+
+ .info-left {}
+
+ .info-right {
+ font-size: 20rpx;
+ color: gray !important;
+ margin-left: 5px;
+ }
+ }
+
+}
+
+.submit {
+ width: 95%;
+ overflow: auto;
+ margin-top: 40rpx;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/setting.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/setting.vue
new file mode 100644
index 0000000..cef45b3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/setting.vue
@@ -0,0 +1,128 @@
+<template>
+ <view class="content">
+ <view class="card">
+ <view class="count">
+ <text>学校信息设置</text>
+ <text style="color: gray;">剩余修改次数<text style="color:#3c9cff"> {{ count }} </text>次</text>
+ </view>
+ <view class="organization">
+ <view class="show" style="margin-top: 40rpx;">
+ <text>学校:</text><text class="info">{{ userStore.schoolName }}</text>
+ </view>
+ <view class="show">
+ <text>学院:</text><text class="info">{{ userStore.collegeName }}</text>
+ </view>
+ <view class="show">
+ <text>专业:</text><text class="info">{{ userStore.majorName }}</text>
+ </view>
+ </view>
+ <view class="submit" v-if="count > 0">
+ <u-button size="large" type="primary" shape="circle" @click="submit">修改</u-button>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { onLoad, onShow } from "@dcloudio/uni-app";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { GetVIPOrganization } from "../../apis/api"
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ count: 100,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ onShow(() => {
+ GetVIPOrganization(userStore.userinfo.id).then((res) => {
+ state.count = state.count - res.updatecount
+ })
+ })
+
+ const Init = () => {
+
+ }
+
+
+ const submit = () => {
+ userStore.school = null
+ userStore.college = null
+ userStore.major = null
+ uni.navigateTo({ url: '/pages/index/index' })
+ }
+
+
+
+
+ return { ...toRefs(state), userStore, submit }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.card {
+ width: 95%;
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 20rpx;
+ padding: 20rpx 0rpx 60rpx 0rpx;
+ @extend .center;
+
+ .count {
+ width: calc(100% - 40rpx);
+ padding: 0rpx 20rpx;
+ height: 80rpx;
+ border-bottom: 1px solid #f5f5f5;
+ line-height: 80rpx;
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .organization {
+ width: 80%;
+ overflow: auto;
+
+ .show {
+ height: 80rpx;
+ line-height: 80rpx;
+
+ .info {
+ color: gray;
+ }
+ }
+
+ }
+}
+
+
+.submit {
+ width: 80%;
+ overflow: auto;
+ margin-top: 60rpx;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/share.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/share.vue
new file mode 100644
index 0000000..bf6db90
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/my/share.vue
@@ -0,0 +1,91 @@
+<template>
+ <view class="content">
+ <button class="share" open-type="share" >分享</button>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { onLoad, onShow, onHide, onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
+import { useBasicInfoStore } from "../../store/basicInfo"
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+
+ }
+
+
+ onShareAppMessage((res) => {
+ // 分享事件来源:button(页面内分享按钮)、menu(右上角分享按钮)
+ if (res.from === 'button') {// 来自页面内分享按钮
+ return {
+ //分享标题
+ title: shopDetailsData.value?.GoodsName,
+ //页面 path
+ path: '/pages/index/index',
+ // 分享图标
+ // imageUr: shopDetailsData.value?.GoodsCoverImg,
+ success: function (res) {
+ // 转发成功
+ console.log('res', res);
+ },
+ fail: function (res) {
+ // 转发失败
+ console.log('res', res);
+
+ }
+ }
+ } else {
+ return {
+ title: shopDetailsData.value?.GoodsName,
+ path: '/pages/index/index',
+ //imageUr: shopDetailsData.value?.GoodsCoverImg
+ }
+ }
+ })
+
+
+
+
+
+
+
+ return { ...toRefs(state), userStore }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.share {
+ width: 80%;
+ margin-top: 60rpx;
+ background-color: #eabb38;
+ color: #fff;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/pay/pay.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/pay/pay.vue
new file mode 100644
index 0000000..f88be2e
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/pay/pay.vue
@@ -0,0 +1,174 @@
+<template>
+ <view class="content"></view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { PayUseWXViaMiniProgram, PaySuccess, walletRecharge } from "../../apis/api";
+import { guid } from "../../common/common";
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ getWXLoginCode()
+ }
+
+ const getWXLoginCode = () => {
+ uni.login({
+ provider: 'weixin',
+ success: function (res) {
+ doPay(res.code,);
+ },
+ fail: () => { },
+ complete: () => { },
+ })
+ }
+
+ const doPay = (code) => {
+
+ const payData = {
+ requesturl: "",
+ code: code,
+ orderid: guid(),
+ totalprice: userStore.payInfo.payPrice,
+ }
+
+ PayUseWXViaMiniProgram(payData).then(payRes => {
+
+ if (payRes.code == 200) {
+ let pay = payRes.data;
+
+ wx_pay(
+ pay.timestamp,
+ pay.nonceStr,
+ pay.prepay_id,
+ pay.signType,
+ pay.paySign,
+ doPaySuccess, doPayFailed, doPayCompleted);
+ } else {
+ //this.$messagebox.show(payRes.message, 5000);
+ }
+ })
+ }
+
+ const doPaySuccess = (res) => {
+ uni.$u.toast('支付成功!');
+ PaySuccess(userStore.payInfo).then(resp => {
+ if (resp) {
+ switch (userStore.routePage) {
+ case 'list':
+ uni.navigateTo({
+ url: '/pages/question/type'
+ });
+ break;
+ case 'recharge':
+ let obj = {
+ pageIndex: 1,
+ pageSize: 101,
+ masterid: userStore.userinfo.id,
+ amount: userStore.payInfo.payPrice
+ }
+ walletRecharge(obj).then((res) => {
+ if (res.code == 200) {
+ uni.navigateTo({
+ url: '/pages/my/recharge'
+ });
+ } else {
+ uni.navigateTo({
+ url: '/pages/my/recharge'
+ });
+ }
+ })
+ break;
+
+ default:
+ break;
+ }
+ }
+ })
+ }
+
+
+ const doPayFailed = (res) => {
+ uni.$u.toast('支付失败!');
+ uni.navigateBack();
+ }
+ const doPayCompleted = (res) => {
+ if (res.errMsg === 'requestPayment:ok') {
+ // uni.navigateTo({
+ // url: `/pages/category/productstatus`
+ // })
+
+ } else if (res.errMsg === 'requestPayment:fail cancel') {
+ // uni.navigateTo({
+ // url: `/pages/category/productstatus`
+ // })
+
+ } else {
+
+ //this.$messagebox.show(res.errMsg, 5000);
+ }
+
+ uni.navigateBack();
+ }
+ const wx_pay = (timeStamp, nonceStr, pack, signType, paySign, successFun = null, failfun = null,
+ completeFun = null) => {
+ wx.requestPayment({
+ provider: 'wxpay',
+ orderInfo: "orderInfo",
+ timeStamp: timeStamp,
+ nonceStr: nonceStr,
+ package: "prepay_id=" + pack,
+ signType: signType,
+ paySign: paySign,
+ success(res) {
+ successFun(res)
+ },
+ fail(err) {
+ if (failfun) {
+ failfun(err)
+ }
+ },
+ complete(result) {
+ if (completeFun) {
+ completeFun(result)
+ }
+ }
+ });
+ }
+
+
+
+
+ return { ...toRefs(state), userStore }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.content {
+ @extend .center;
+ //background-color: #f5efd9;
+ height: 100vh;
+ width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/list.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/list.vue
new file mode 100644
index 0000000..d7e0171
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/list.vue
@@ -0,0 +1,576 @@
+<template>
+ <view class="content">
+ <view class="swiper">
+ <u-swiper :list="imgList" height="150" imgMode="scaleToFill"></u-swiper>
+ </view>
+ <view class="select" v-if="!userStore.subject">
+ <view class="grade">
+ <u-button size="large" :plain="true" type="primary" @click="gradeShow = true" shape="circle">
+ {{ grade ? grade.name : "请选择年级" }}
+ </u-button>
+ <u-picker :show="gradeShow" :columns="gradeColumns" @confirm="gradeChange" @cancel="gradeShow = false">
+ </u-picker>
+ </view>
+ <view class="subject">
+ <u-button size="large" :plain="true" type="primary" @click="subjectShow = true" shape="circle">
+ {{ subject ? subject.subjectname : "请选择科目" }}
+ </u-button>
+ <u-picker :show="subjectShow" :columns="subjectColumns" @confirm="subjectChange"
+ @cancel="subjectShow = false">
+ </u-picker>
+ </view>
+ <view class="submit">
+ <u-button size="large" type="primary" shape="circle" @click="submit">确定</u-button>
+ </view>
+ </view>
+ <view class="select-show" v-if="userStore.subject">
+ <text>
+ 年级: <text style="color: gray;">
+ {{ grade ? grade.name : "年级未选择" }}</text>
+ 科目:<text style="color: gray;">{{ subject ? subject.subjectname : "年级未选择" }}</text>
+ </text>
+ <view class="change">
+ <u-button size="mini" text="修改" color="linear-gradient(to right, rgb(66, 83, 216), rgb(213, 51, 186))"
+ shape="circle" @click="selectChange"></u-button>
+ </view>
+ </view>
+ <scroll-view scroll-y class="test-list" v-if="userStore.subject">
+ <view class="menu" v-for="(item, index) in papers" :key="index" @click="practice(item, index)">
+ <view class="menu-icon">
+ <image v-if="item.coverimage" mode="aspectFit" :src="item.coverimage"></image>
+ <image v-else style="width: 70%;height: 15vw;" src="../../static/image/test.png"></image>
+ </view>
+ <view :class="item.type == 2 ? 'menu-info-recharge' : 'menu-info'">
+ <text>{{ item.name }}</text>
+ <!-- <u-icon v-if="item.type == 2" size="20px" color="#f3d95b" name="rmb-circle"></u-icon> -->
+ </view>
+ <!-- <view class="menu-rmb">
+
+ </view> -->
+ </view>
+ <u-popup :show="vipShow" @close="vipShow = false">
+ <view class="popup-content">
+ <view class="close">
+ <text> {{ testSel.name }}</text>
+ <u-icon name="close-circle-fill" @click="vipShow = false"></u-icon>
+ </view>
+ <view class="popup-info">
+ <view class="info">
+ <view class="info-title">
+ <text>题库金额</text>
+ </view>
+ <view class="info-value">
+ <text>¥{{ testSel.price }}</text>
+ </view>
+ </view>
+ <view class="info">
+ <view class="info-title">
+ <text>有效期</text>
+ </view>
+ <view class="info-value">
+ <text>3个月</text>
+ </view>
+ </view>
+ <view class="info">
+ <view class="info-title">
+ <text>应付金额</text>
+ </view>
+ <view class="info-value">
+ <text>¥{{ testSel.price }}</text>
+ </view>
+ </view>
+ <!-- <view class="info">
+ <view class="info-title">
+ <text>优惠(VIP{{ userStore.vipDiscount }}折)</text>
+ </view>
+ <view class="info-value">
+ <text>¥{{ discountPrice }}</text>
+ </view>
+ </view> -->
+ <view class="info">
+ <view class="info-title">
+ <text>使用余额(余额:¥{{ balance }} 本次使用¥{{ testSel.price }})</text>
+ <switch :disabled="balanceDisabled" :checked="isUse" @change="useBalance()"
+ style="transform:scale(0.7)" />
+ </view>
+ <view class="info-value">
+ <text>¥{{ isUse ? testSel.price : 0 }}</text>
+ </view>
+ </view>
+ <view class="info">
+ <view class="info-title">
+ <text>实付金额</text>
+ </view>
+ <view class="info-value">
+ <text>¥{{ testSel.price }}</text>
+ </view>
+ </view>
+ <u-button size="large" type="primary" @click="pay">立即购买</u-button>
+ </view>
+ </view>
+ </u-popup>
+ </scroll-view>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { onLoad, onShow } from "@dcloudio/uni-app";
+import {
+ GetOrganizationGrades,
+ GetQuestionSubjects,
+ GetQuestionPapers,
+ CreateActiveOrder,
+ getWalletDetail,
+ PaySuccess,
+ getMyPaperList
+} from "../../apis/api";
+
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ imgList: [
+ 'https://cdn.uviewui.com/uview/swiper/swiper1.png',
+ 'https://cdn.uviewui.com/uview/swiper/swiper2.png',
+ 'https://cdn.uviewui.com/uview/swiper/swiper3.png',
+ ],
+
+ gradeShow: false,
+ grades: [],
+ gradeColumns: [],
+ grade: userStore.grade,
+
+ subjectShow: false,
+ subjects: [],
+ subjectColumns: [],
+ subject: userStore.subject,
+
+ papers: [],
+ vipShow: false,
+ testSel: {},
+ discountPrice: 0,
+ isUse: false,
+ balance: 0,
+ balanceDisabled: false,
+
+ paperList: [],
+ })
+
+ onMounted(() => {
+ Init(
+ );
+ });
+
+ onShow(() => {
+ getWalletDetailInfo()
+ getPaperList()
+
+ if (state.subject) {
+ loadPaper(state.subject.subjectid);
+ } else {
+ loadGrade(userStore.masterOrganization.majorid);
+ }
+
+ if (!userStore.grade) {
+ state.grade = null
+ }
+
+ if (!userStore.subject) {
+ state.subject = null
+ }
+ })
+
+ const Init = () => {
+
+ }
+
+ const getWalletDetailInfo = () => {
+ getWalletDetail(userStore.userinfo.id).then((res) => {
+ if (res) {
+ state.balance = res.balance
+ }
+ })
+ }
+
+ const getPaperList = () => {
+ getMyPaperList(userStore.userinfo.id).then((res) => {
+ if (res.data.length > 0) {
+ state.paperList = res.data
+ }
+ })
+ }
+
+ const loadGrade = (majorid) => {
+ state.grades = [];
+ state.gradeColumns = [];
+
+ let condition = { majorid: majorid };
+ GetOrganizationGrades(condition).then(resp => {
+ if (resp.data) {
+ state.grades = resp.data;
+
+ let sArray = [];
+ resp.data.map(e => {
+ sArray.push(e.name);
+
+ });
+
+ state.gradeColumns.push(sArray);
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const gradeChange = (e) => {
+ let target = e.value[0];
+
+ if (state.grade == null || state.grade.name !== target) {
+ state.grade = state.grades.filter(e => e.name === target).shift();
+
+ state.gradeShow = false
+ } else {
+ state.gradeShow = false
+ }
+
+ loadSubject(state.grade.id);
+ }
+
+ const loadSubject = (gradeid) => {
+ state.subject = null;
+ state.subjects = [];
+ state.subjectColumns = [];
+
+ let condition = { gradeid: gradeid };
+ GetQuestionSubjects(condition).then(resp => {
+ if (resp.data) {
+ state.subjects = resp.data;
+
+ let sArray = [];
+ resp.data.map(e => {
+ sArray.push(e.subjectname);
+ });
+
+ state.subjectColumns.push(sArray);
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ const subjectChange = (e) => {
+ let target = e.value[0];
+
+ if (state.subject == null || state.subject.subjectname !== target) {
+ state.subject = state.subjects.filter(e => e.subjectname === target).shift();
+
+ state.subjectShow = false
+ } else {
+ state.subjectShow = false
+ }
+
+ }
+
+ const submit = () => {
+ userStore.grade = state.grade
+ userStore.subject = state.subject
+
+
+ loadPaper(userStore.subject.subjectid);
+ }
+
+ const selectChange = () => {
+ userStore.grade = null;
+ userStore.subject = null;
+ state.grade = null
+ state.subject = null
+
+ state.papers = [];
+ loadGrade(userStore.masterOrganization.majorid);
+ }
+
+ const loadPaper = (subjectid) => {
+ state.subjects = [];
+ state.subjectColumns = [];
+
+ let condition = { subjectid: subjectid };
+ GetQuestionPapers(condition).then(resp => {
+ if (resp.data) {
+ state.papers = resp.data;
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+
+ const useBalance = () => {
+ state.isUse = !state.isUse
+ }
+
+ const practice = (item, index) => {
+ state.testSel = item
+ userStore.testTitle = item.name
+ userStore.paperId = item.id
+ if (state.balance < item.price) {
+ state.discountPrice = true
+ }
+ if (item.type == 2) {
+ let count = state.paperList.filter(e => item.id == e.paperid).length
+ if (count > 0) {
+ uni.navigateTo({
+ url: '/pages/question/type'
+ });
+ } else {
+ state.vipShow = true
+ }
+ //state.vipShow = true
+ } else {
+ uni.navigateTo({
+ url: '/pages/question/type'
+ });
+ }
+ }
+
+ const pay = () => {
+ let products = []
+ products.push({
+ productid: state.testSel.id,
+ price: state.testSel.price,
+ productname: state.testSel.name,
+ })
+
+ let condition = {
+ no: 1,
+ vipuserid: userStore.userinfo.id,
+ vipname: userStore.userinfo.nickname,
+ vipphone: userStore.userinfo.cellphone,
+ totalmoney: state.testSel.price,
+ paymoney: state.testSel.price,
+ products: products,
+ type: 1
+ }
+ userStore.payInfo = condition
+ CreateActiveOrder(condition).then(resp => {
+ if (resp.code == 200) {
+ userStore.payInfo.id = resp.data.id
+ userStore.payInfo.payedmoney = resp.data.totalmoney
+ if (state.isUse) {
+ userStore.payInfo.paymentmethod = 0
+ PaySuccess(userStore.payInfo).then(resp => {
+ if (resp) {
+ state.vipShow = false
+ uni.navigateTo({
+ url: '/pages/question/type'
+ });
+ }
+ })
+ } else {
+ userStore.payInfo.paymentmethod = 2
+ userStore.payPrice = state.testSel.price
+ userStore.payInfo.payPrice = state.testSel.price
+ userStore.routePage = 'list'
+ state.vipShow = false
+ uni.navigateTo({
+ url: '/pages/pay/pay'
+ })
+ }
+ }
+ else {
+ state.vipShow = false
+ uni.$u.toast('订单创建失败!');
+ }
+ }).catch(err => {
+ console.error(err);
+ });
+ }
+
+ return {
+ ...toRefs(state),
+ userStore,
+ gradeChange,
+ subjectChange,
+ submit,
+ selectChange,
+ useBalance,
+ practice,
+ pay
+ }
+ }
+}
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.swiper {
+ width: 100%;
+ overflow: auto;
+}
+
+.select {
+ @extend .center;
+ width: 100%;
+ overflow: auto;
+ margin-top: 100rpx;
+
+ .grade {
+ margin-top: 60rpx;
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+ }
+
+ .subject {
+ margin-top: 60rpx;
+ @extend .center;
+ width: 80%;
+ height: 10vh;
+ }
+
+ .submit {
+ margin-top: 60rpx;
+ @extend .center;
+ width: 80%;
+ height: 20vh;
+ }
+}
+
+.select-show {
+ width: calc(100% - 40rpx);
+ height: 40rpx;
+ background-color: #fff;
+ display: flex;
+ justify-content: flex-start;
+ padding: 20rpx;
+ font-size: 24rpx;
+ line-height: 40rpx;
+
+ .change {
+ width: 100rpx;
+ margin-left: 20rpx;
+
+ }
+}
+
+.test-list {
+ width: 100%;
+ height: calc(100vh - 190px - 30rpx);
+ padding: 15rpx;
+
+ .menu {
+ width: 30vw;
+ height: 35vw;
+ background-color: #fff;
+ margin: 1.66vw;
+ border-radius: 15rpx;
+ float: left;
+ // display: flex;
+ // flex-direction: column;
+ // align-items: center;
+ // justify-content: center;
+
+ // width: 40%;
+ // height: 100rpx;
+ // // line-height: 100rpx;
+ // // margin: 20rpx;
+ // // display: flex;
+ // // justify-content: flex-start;
+ // background-color: #fff;
+ // border-radius: 15rpx;
+ // padding: 0rpx 0rpx 0rpx 10rpx;
+
+ .menu-icon {
+ width: 100%;
+ height: 20vw;
+ @extend .center;
+ justify-content: center;
+ background-color: #f9f9f9;
+ }
+
+ .menu-info {
+ width: calc(100% - 20rpx);
+ height: calc(15vw - 20rpx);
+ display: flex;
+ justify-content: flex-start;
+ flex-wrap: wrap;
+ vertical-align: baseline;
+ padding: 10rpx;
+ font-size: 25rpx;
+
+ ::v-deep .u-icon {
+ display: inline-block;
+ margin-top: 4rpx;
+ margin-left: 10rpx;
+ }
+ }
+
+ .menu-info-recharge {
+ @extend .menu-info;
+ background-size: 17%;
+ background-repeat: no-repeat;
+ background-position: 95% 90%;
+ background-image: url('../../static/image/charge.png');
+ }
+
+ .menu-rmb {
+ width: 100rpx;
+ height: 100rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+}
+
+.popup-content {
+
+
+ .close {
+ width: calc(100% - 20rpx);
+ height: 80rpx;
+ background-color: #f5f5f5;
+ line-height: 80rpx;
+ display: flex;
+ justify-content: space-between;
+ padding: 0rpx 10rpx;
+ }
+
+ .popup-info {
+ width: 100%;
+ overflow: auto;
+
+ .info {
+ width: calc(100% - 30rpx);
+ height: 80rpx;
+ line-height: 80rpx;
+ border-bottom: 1rpx solid #f5f5f5;
+ display: flex;
+ justify-content: space-between;
+ padding: 0rpx 15rpx;
+ font-size: 24rpx;
+
+ .info-title {}
+
+ .info-value {
+ color: gray;
+ }
+ }
+ }
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/question.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/question.vue
new file mode 100644
index 0000000..2777ce9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/question.vue
@@ -0,0 +1,62 @@
+<template>
+ <view class="content">
+ <web-view :src="url"></web-view>
+ </view>
+</template>
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance, nextTick } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import configInfo from '../../config';
+
+export default {
+ components: {},
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ url: ""
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ uni.setNavigationBarTitle({
+ title: userStore.testTitle + "(" + userStore.questionType + ")"
+ });
+
+ state.url = configInfo.questionhost +
+ "token=" + userStore.userinfo.token +
+ "&paperid=" + userStore.paperId +
+ "&type=" + userStore.questionType
+
+ console.log(state.url,9999)
+ }
+
+
+
+
+ return { ...toRefs(state), userStore, }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.content {
+ @extend .center;
+ background-color: #f5f5f5;
+ height: 100vh;
+ width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/type.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/type.vue
new file mode 100644
index 0000000..0203c72
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/question/type.vue
@@ -0,0 +1,135 @@
+<template>
+ <view class="content">
+ <scroll-view scroll-y class="type-list">
+ <view class="menu" v-for="(item, index) in titleList" :key="index" @click="sel(item, index)">
+ <image style="width: 40px; height: 40px;" :src="getImage(item)"></image>
+ <text style="color: gray;font-size: 14px;margin-top: 5px;">{{ item }}</text>
+ <text style="color: gray;font-size: 12px;">( {{ getCount(item) }}题 )</text>
+ </view>
+ <view class="empty-show" v-if="titleList.length == 0">
+ <u-empty text="暂无数据" mode="list"></u-empty>
+ </view>
+ </scroll-view>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { GetQuestionMasters, GetQuestionPaperCategories, GetQuestionCategories } from "../../apis/api"
+
+export default {
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ list: [],
+ titleList: [],
+ typeList: ["单选题", "多选题", "判断题", "填空题", "名词解释", "简答题", "论述题", "分析题", "案例选择题", "案例分析题"],
+ getTypeList: []
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ uni.setNavigationBarTitle({
+ title: userStore.testTitle
+ });
+ getQuestionType()
+
+ }
+
+ const getQuestionType = () => {
+ let obj = {
+ pageIndex: 1,
+ pageSize: 1001,
+ paperid: userStore.paperId
+ }
+ GetQuestionCategories(obj).then((res) => {
+ state.getTypeList = res.data
+ console.log(state.getTypeList, 888)
+ GetQuestionMasters(obj).then((res) => {
+ state.list = res.data
+ state.titleList = [...new Set(res.data.map(i => i.categoryname))];
+ state.titleList.sort((a, b) => { return state.typeList.indexOf(a) - state.typeList.indexOf(b) })
+ })
+ })
+
+ GetQuestionPaperCategories(obj).then((res) => {
+ state.list = res.data
+ state.titleList = [...new Set(res.data.map(i => i.categoryname))];
+ state.titleList.sort((a, b) => { return state.typeList.indexOf(a) - state.typeList.indexOf(b) })
+ })
+
+ }
+
+
+ const sel = (item, index) => {
+ console.log(item, 99999)
+ userStore.questionType = item
+ uni.navigateTo({
+ url: '/pages/question/question'
+ });
+ }
+
+ const getCount = (item) => {
+ return state.list.filter(e => e.categoryname == item).length
+ }
+
+ const getImage = (item) => {
+ let src = state.getTypeList.filter(e => item == e.name)[0].icon
+ if (src) {
+ return src
+ } else {
+ return 'https://bwf.farriver.top/static/icon/svg/question-category.svg'
+ }
+ }
+
+ return { ...toRefs(state), userStore, sel, getCount, getImage }
+ }
+}
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ //justify-content: center;
+}
+
+.content {
+ @extend .center;
+ background-color: #f5f5f5;
+ height: 100vh;
+ width: 100%;
+}
+
+.type-list {
+ width: calc(100% - 30rpx);
+ height: calc(100vh - 30rpx);
+ padding: 15rpx;
+
+ .menu {
+ width: calc(30% - 40rpx);
+ height: calc(30vw - 40rpx);
+ background-color: #fff;
+ margin: 1.66%;
+ border-radius: 15rpx;
+ float: left;
+ padding: 20rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+}
+
+.empty-show {
+ margin-top: 30vh;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/security/login.vue b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/security/login.vue
new file mode 100644
index 0000000..640f65b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/pages/security/login.vue
@@ -0,0 +1,362 @@
+<template>
+ <view class="content">
+ <view class="logo">
+ <!-- <up-text type="primary" size="30" text="LOGO"></up-text> -->
+ <image class="image-logo" lazy-load src="../../static/image/loginlogo.png"></image>
+ </view>
+ <view class="card" v-if="loginShow">
+ <view class="login-phone">
+ <view class="phone">
+ <up-input placeholder="请输入手机号" border="bottom" v-model="phone" prefixIcon="phone"
+ prefixIconStyle="font-size: 22px;color: #909399" size="small"></up-input>
+ </view>
+ <view class="code">
+ <view class="code-input">
+ <up-input placeholder="请输入验证码" border="bottom" v-model="code" prefixIcon="bell"
+ prefixIconStyle="font-size: 22px;color: #909399" size="small"></up-input>
+ </view>
+ <view class="wrap">
+ <u-toast ref="uToastRef"></u-toast>
+ <u-code :seconds="seconds" @end="end()" @start="start()" ref="uCodeRef"
+ @change="codeChange"></u-code>
+ <u-button type="primary" @tap="getCode" size="small" :disabled="canSandMsg">{{ tips
+ }}</u-button>
+ </view>
+ </view>
+ <view class="submit">
+ <u-button size="large" type="primary" @click="submit">登录</u-button>
+ </view>
+ </view>
+ </view>
+ <view class="info" v-if="userProfileShow">
+ <UserProfile @saveCB="userProfileCB" />
+ </view>
+ </view>
+</template>
+
+<script>
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
+import { useBasicInfoStore } from "../../store/basicInfo"
+import { GetSMSCode, GetWXCode2Session, RegisterUserByCellphone, LoginByWXOpenID } from "../../apis/authapi"
+import { GetVIPOrganization } from "../../apis/api"
+import UserProfile from "../../components/userProfile/userProfile.vue"
+
+export default {
+ components: { UserProfile },
+ setup() {
+ const userStore = useBasicInfoStore()
+ const { proxy } = getCurrentInstance();
+ const state = reactive({
+ loginShow: false,
+ phone: '',
+ code: '',
+ tips: '',
+ seconds: 60,
+ bindingPhone: '',
+ canSandMsg: false,
+ userProfileShow: false,
+ })
+
+ onMounted(() => {
+ Init();
+ });
+
+ const Init = () => {
+ getOpenID();
+
+ // uni.navigateTo({
+ // url: '/pages/question/type'
+ // });
+ // uni.switchTab({
+ // url: '/pages/question/type' // 目标页面路径
+ // });
+ }
+
+ const getOpenID = () => {
+ uni.login({
+ provider: 'weixin',
+ success: function (loginRes) {
+ // 登录成功
+ uni.getUserInfo({
+ provider: 'weixin',
+ success: function (info) {
+ userStore.$state.userinfo = info.userInfo;
+ // 获取用户信息成功, info.authResult保存用户信息
+
+ // uni.showLoading({
+ // title: '身份获取中...',
+ // });
+ GetWXCode2Session(loginRes.code).then((res) => {
+ // uni.hideLoading();
+ if (res) {
+ let session_key = res.data.session_key;
+ let openid = res.data.openid;
+
+ let params2 = {
+ session_key: session_key,
+ openid: openid,
+ };
+ userStore.$state.userinfo.openid = openid;
+
+ uni.showLoading({
+ title: '身份获取中...',
+ });
+ LoginByWXOpenID(params2).then((res2) => {
+ uni.hideLoading();
+
+ let token = '';
+ if (res2) {
+ if (res2.code == 200) {
+ if (res2.data) {
+ token = res2.data.token;
+ uni.setStorageSync('token', token)
+ userStore.$state.hasLogin = true;
+ for (const key in res2.data) {
+ userStore.userinfo[key] = res2.data[key]
+ }
+
+ if (!res2.data.avatarurl || !res2.data.nickname) {
+ state.userProfileShow = true;
+ userStore.school = null
+ userStore.college = null
+ userStore.major = null
+ } else {
+ GetVIPOrganization(userStore.userinfo.id).then((res3) => {
+ if (!res3) {
+ uni.navigateTo({
+ url: '/pages/index/index'
+ });
+ } else {
+ for (const key in res3) {
+ userStore.masterOrganization[key] = res3[key]
+ }
+ userStore.schoolName = userStore.masterOrganization.organizationname
+ userStore.collegeName = userStore.masterOrganization.departmentname
+ userStore.majorName = userStore.masterOrganization.majorname
+ userStore.updatecount = userStore.masterOrganization.updatecount ? userStore.masterOrganization.updatecount : 0
+ uni.switchTab({
+ url: '/pages/question/list'
+ });
+ }
+
+
+ // uni.navigateTo({
+ // url: '/pages/question/list'
+ // });
+ })
+ }
+ }
+ } else if (res2.message == 'MSG_ERROR_USER_NOT_EXISTED') {
+ state.loginShow = true
+ console.log("未绑定手机号")
+ }
+ }
+ });
+ }
+ // else {
+ // uni.hideLoading();
+ // }
+ })
+ }
+ })
+
+ },
+ fail: function (err) {
+ // 登录授权失败
+ // err.code是错误码
+ }
+ });
+ }
+
+
+ const codeChange = (text) => {
+ state.tips = text;
+ };
+
+ const getCode = () => {
+ if (state.canSandMsg == true) {
+ return;
+ }
+ if (!state.phone) {
+ uni.$u.toast('请输入手机号');
+ return;
+ }
+ if (!/(^1[3|4|5|7|8|9][0-9]{9}$)/.test(state.phone)) {
+ uni.$u.toast('请输入正确的手机号码');
+ return;
+ }
+ uni.showLoading({
+ title: '正在获取验证码',
+ });
+ GetSMSCode(state.phone).then(resp => {
+ uni.hideLoading();
+ if (resp.code == 200) {
+ setTimeout(() => {
+ // 这里此提示会被start()方法中的提示覆盖
+ uni.$u.toast('验证码已发送');
+ // 通知验证码组件内部开始倒计时
+ proxy.$refs.uCodeRef.start();
+ }, 2000);
+ } else {
+ uni.$u.toast('验证码已发送失败');
+ }
+ }).catch(err => {
+ uni.hideLoading();
+ uni.$u.toast('验证码已发送失败');
+ });
+ };
+
+ const end = () => {
+ state.canSandMsg = false
+ //uni.$u.toast('倒计时结束');
+ };
+
+ const start = () => {
+ state.canSandMsg = true
+ //uni.$u.toast('倒计时开始');
+ };
+
+ const submit = () => {
+ if (!state.phone) {
+ uni.$u.toast('请输入手机号');
+ return;
+ }
+ if (!/(^1[3|4|5|7|8|9][0-9]{9}$)/.test(state.phone)) {
+ uni.$u.toast('请输入正确的手机号码');
+ return;
+ }
+ uni.showLoading({
+ title: '登录中...',
+ });
+ let params2 = {
+ openid: userStore.$state.userinfo.openid,
+ cellphone: state.phone,
+ randomcode: state.code
+ };
+ RegisterUserByCellphone(params2).then((res2) => {
+ uni.hideLoading();
+ let token = '';
+ if (res2) {
+ if (res2.code == 200) {
+ if (res2.data) {
+ token = res2.data.token;
+ userStore.userinfo.id = res2.data.id
+ uni.setStorageSync('token', token)
+ userStore.$state.hasLogin = true;
+ state.loginShow = false
+ state.userProfileShow = true
+ // uni.navigateTo({
+ // url: '/pages/question/type'
+ // });
+ }
+ } else {
+ uni.$u.toast('登录失败');
+ }
+ }
+ });
+ }
+
+ const userProfileCB = () => {
+ uni.navigateTo({
+ url: '/pages/index/index'
+ });
+ }
+
+
+
+
+ return { ...toRefs(state), userStore, codeChange, getCode, end, start, submit, userProfileCB }
+ }
+}
+
+
+
+</script>
+
+<style scoped lang="scss">
+.center {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ // justify-content: center;
+}
+
+.content {
+ @extend .center;
+ height: 100vh;
+ width: 100%;
+ background-color: #f5f5f5;
+}
+
+.logo {
+ @extend .center;
+ height: 25vh;
+ justify-content: center;
+ .image-logo{
+ height: 25vh;
+ width: 50vw;
+ }
+}
+
+.card {
+ width: calc(90% - 80rpx);
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 5vh;
+ padding: 20rpx 40rpx 60rpx 40rpx;
+
+ .login-phone {
+ width: 100%;
+ overflow: auto;
+ margin-top: 20rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+
+ .phone {
+ width: 95%;
+ height: 60rpx;
+ margin-top: 20rpx;
+ }
+
+ .code {
+ width: 95%;
+ height: 100rpx;
+ margin-top: 50rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .code-input {
+ padding: 24rpx 0rpx;
+ width: 70%;
+ }
+
+ .wrap {
+ padding: 24rpx 0rpx;
+ }
+ }
+
+ .submit {
+ width: 95%;
+ overflow: auto;
+ margin-top: 100rpx;
+ }
+ }
+}
+
+.info {
+ width: 80%;
+ //height: 15vh;
+ overflow: auto;
+ border-radius: 10px;
+ background-color: #fff;
+ margin-top: 5vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+</style>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/shime-uni.d.ts b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/shime-uni.d.ts
new file mode 100644
index 0000000..b3d3cc9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/shime-uni.d.ts
@@ -0,0 +1,6 @@
+export {};
+
+declare module "vue" {
+ type Hooks = App.AppInstance & Page.PageInstance;
+ interface ComponentCustomOptions extends Hooks {}
+}
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/charge.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/charge.png
new file mode 100644
index 0000000..487e0ac
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/charge.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/ercode.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/ercode.png
new file mode 100644
index 0000000..1159a23
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/ercode.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/favicon.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/favicon.png
new file mode 100644
index 0000000..b45b39c
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/favicon.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/loginlogo.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/loginlogo.png
new file mode 100644
index 0000000..c597d76
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/loginlogo.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/recharge.jpg b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/recharge.jpg
new file mode 100644
index 0000000..33861b9
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/recharge.jpg
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/svg/profile.svg b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/svg/profile.svg
new file mode 100644
index 0000000..0866402
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/svg/profile.svg
@@ -0,0 +1,12 @@
+<?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="1644155990593" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="966"
+ xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+ <defs>
+ <style type="text/css"></style>
+ </defs>
+ <path d="M512 0c282.7776 0 512 229.2224 512 512S794.7776 1024 512 1024 0 794.7776 0 512 229.2224 0 512 0"
+ fill="#FF0808" p-id="967"></path>
+ <path d="M624.1664 538.5856C703.6032 538.5856 768 602.9824 768 682.432A72.7808 72.7808 0 0 1 695.2192 755.2H328.7808A72.7808 72.7808 0 0 1 256 682.432c0-79.4368 64.3968-143.8464 143.8464-143.8464zM512 243.2c70.6944 0 128 57.3056 128 128s-57.3056 128-128 128-128-57.3056-128-128 57.3056-128 128-128z"
+ fill="#FFFFFF" p-id="968"></path>
+</svg>
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/card.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/card.png
new file mode 100644
index 0000000..270fab2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/card.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart-active.png
new file mode 100644
index 0000000..a635e3a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart-active.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart.png
new file mode 100644
index 0000000..a8fe1e3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/cart.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category-active.png
new file mode 100644
index 0000000..79426ed
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category-active.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category.png
new file mode 100644
index 0000000..3c76705
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/category.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home-active.png
new file mode 100644
index 0000000..f4d8c82
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home-active.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home.png
new file mode 100644
index 0000000..051750d
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/home.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index.png
new file mode 100644
index 0000000..20ec638
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index_fill.png
new file mode 100644
index 0000000..c0e2c00
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/index_fill.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine.png
new file mode 100644
index 0000000..cd25fa6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine_fill.png
new file mode 100644
index 0000000..b7ddf02
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/mine_fill.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart.png
new file mode 100644
index 0000000..ac95b08
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart_fill.png
new file mode 100644
index 0000000..89b65e2
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/scart_fill.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping-active.png
new file mode 100644
index 0000000..8151d71
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping-active.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping.png
new file mode 100644
index 0000000..7eb3c8a
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/shopping.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort.png
new file mode 100644
index 0000000..e5f9e9f
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort_fill.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort_fill.png
new file mode 100644
index 0000000..62c28e6
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/sort_fill.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user-active.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user-active.png
new file mode 100644
index 0000000..c5a81b3
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user-active.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user.png
new file mode 100644
index 0000000..8a489fa
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/tabbar/user.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/test.png b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/test.png
new file mode 100644
index 0000000..02e764b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/static/image/test.png
Binary files differ
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/store/basicInfo.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/store/basicInfo.js
new file mode 100644
index 0000000..952559b
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/store/basicInfo.js
@@ -0,0 +1,104 @@
+import { reactive, toRefs } from 'vue'
+import { defineStore } from 'pinia'
+
+export const useBasicInfoStore = defineStore('basicInfo', () => {
+ //试卷type,免费--0,会员免费--1,收费--2
+ //支付方式,0(AccountBalancePay),1(AliPay),2(WeChatPay),3(BankPay)
+ //订单类型 0(RECHARGE),1(PAPER),2(MALL)
+
+ const state = reactive({
+ nickName: '',
+ school: null,
+ schoolName: null,
+ college: null,
+ collegeName: null,
+ major: null,
+ majorName: null,
+ grade: null,
+ subject: null,
+ vip: true,
+ vipPrice: 30,
+ vipDiscount: 7.5,
+ vipTerm: '2024-10-10',
+ balance: 0,
+ phone: '13888888888',
+ testTitle: '',
+ typeTitle: '',
+ typeIndex: 1,//单选题-1,多选题-2,填空题-3,名词解释-4,判断题-5,简答题-6,论述题-7,分析题-8,案例选择题-9,案例分析题-10,
+ questionList: [],
+ queIndex: 0,
+ userinfo: {
+ avatarurl: "",
+ birthday: null,
+ cellphone: null,
+ city: null,
+ country: null,
+ createtime: "",
+ diamondtype: null,
+ discountrate: null,
+ gender: null,
+ id: "",
+ idcard: null,
+ isdeleted: false,
+ language: null,
+ name: null,
+ nickname: "",
+ openid: "",
+ password: null,
+ province: null,
+ randomcode: null,
+ remark: null,
+ token: "",
+ type: null,
+ updatetime: null,
+ },
+ masterOrganization: {
+ classcode: null,
+ classid: null,
+ classname: null,
+ createtime: null,
+ departmentcode: null,
+ departmentid: null,
+ departmentname: null,
+ gradecode: null,
+ gradeid: null,
+ gradename: null,
+ id: null,
+ isdeleted: false,
+ majorcode: null,
+ majorid: null,
+ majorname: null,
+ mastercode: null,
+ masterid: null,
+ mastername: null,
+ organizationcode: null,
+ organizationid: null,
+ organizationname: null,
+ remark: null,
+ updatetime: null,
+ },
+ token: '',
+ hasLogin: false,
+ appconfig: [],
+ payInfo: {},
+ routePage: '',
+ updatecount: 0,
+ paperId: null,
+ questionType:null
+
+ })
+
+ return { ...toRefs(state) }
+}, {
+ // persist: true,
+ persist: {
+ storage: {
+ getItem(key) {
+ return uni.getStorageSync(key)
+ },
+ setItem(key, value) {
+ uni.setStorageSync(key, value)
+ }
+ }
+ }
+})
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/uni.scss b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/uni.scss
new file mode 100644
index 0000000..0e09d55
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/src/uni.scss
@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+@import 'uview-plus/theme.scss';
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color: #333; // 基本色
+$uni-text-color-inverse: #fff; // 反色
+$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable: #c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color: #fff;
+$uni-bg-color-grey: #f8f8f8;
+$uni-bg-color-hover: #f1f1f1; // 点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color: #c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
+
+/* 图片尺寸 */
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
+$uni-color-subtitle: #555; // 二级标题颜色
+$uni-font-size-subtitle: 18px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
\ No newline at end of file
diff --git a/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/vite.config.js b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/vite.config.js
new file mode 100644
index 0000000..b9318f5
--- /dev/null
+++ b/04-Development/02-Code/bwf/com.farriver.bwf.wechatmp.vue3/vite.config.js
@@ -0,0 +1,8 @@
+import {defineConfig} from 'vite'
+import uni from '@dcloudio/vite-plugin-uni'
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ uni(),
+ ],
+})
diff --git a/04-Development/02-Code/bwf/pom.xml b/04-Development/02-Code/bwf/pom.xml
new file mode 100644
index 0000000..bad52f6
--- /dev/null
+++ b/04-Development/02-Code/bwf/pom.xml
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>pom</packaging>
+ <artifactId>bwf</artifactId>
+ <groupId>com.farriver.bwf</groupId>
+ <version>${revision}</version>
+ <modules>
+ <module>com.farriver.bwf.common</module>
+ <module>com.farriver.bwf.data.transferobject</module>
+ <module>com.farriver.bwf.data.master</module>
+ <module>com.farriver.bwf.service</module>
+ <module>com.farriver.bwf.service.extend</module>
+ <module>com.farriver.bwf.web</module>
+ <module>com.farriver.bwf.webui</module>
+ </modules>
+ <properties>
+ <revision>1.0-SNAPSHOT</revision>
+ <java.version>17</java.version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <!-- SpringCloud与SpringBoot版本选型 https://sca.aliyun.com/zh-cn/docs/2022.0.0.0/overview/version-explain-->
+ <spring-boot.version>3.0.2</spring-boot.version>
+ <spring-cloud.version>2022.0.0</spring-cloud.version>
+ <spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
+ <fastjson.version>2.0.47</fastjson.version>
+ <log4j.version>1.2.17</log4j.version>
+ <logback.version>1.4.14</logback.version>
+ <slf4j.version>2.0.12</slf4j.version>
+ <jjwt.version>0.12.5</jjwt.version>
+ <aspectj.version>1.9.21.2</aspectj.version>
+ <guava.version>33.1.0-jre</guava.version>
+ <mysql.version>8.0.33</mysql.version>
+ <mysql-connector-j.version>8.3.0</mysql-connector-j.version>
+ <druid.version>1.2.22</druid.version>
+ <commons-fileupload.version>1.5</commons-fileupload.version>
+ <poi.version>4.1.1</poi.version>
+ <fastdfs-client.version>1.32-SNAPSHOT</fastdfs-client.version>
+ <okhttp.version>4.12.0</okhttp.version>
+ <logback-ext-spring.version>0.1.5</logback-ext-spring.version>
+ <jsoup.version>1.17.2</jsoup.version>
+ <httpclient5.version>5.3.1</httpclient5.version>
+ <mybatis-spring.version>3.0.3</mybatis-spring.version>
+ <itextpdf.version>5.5.13.3</itextpdf.version>
+ <javax.servlet-api.version>4.0.1</javax.servlet-api.version>
+ <tencentcloud-sdk-java.version>3.1.373</tencentcloud-sdk-java.version>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!--以war的形式部署设定tomcat -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-tomcat</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-websocket</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-thymeleaf</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-redis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-cache</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-amqp</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-mail</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-aop</artifactId>
+ </dependency>
+ <!--SpringCloud ailibaba nacos 服务注册与发现模块 -->
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-openfeign</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-loadbalancer</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-starter-bootstrap</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mybatis</groupId>
+ <artifactId>mybatis-spring</artifactId>
+ <version>${mybatis-spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mybatis.spring.boot</groupId>
+ <artifactId>mybatis-spring-boot-starter</artifactId>
+ <version>${mybatis-spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.mysql</groupId>
+ <artifactId>mysql-connector-j</artifactId>
+ <version>${mysql-connector-j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>${guava.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>${aspectj.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>${aspectj.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>io.jsonwebtoken</groupId>
+ <artifactId>jjwt</artifactId>
+ <version>${jjwt.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>druid-spring-boot-starter</artifactId>
+ <version>${druid.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba.fastjson2</groupId>
+ <artifactId>fastjson2</artifactId>
+ <version>${fastjson.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <version>${commons-fileupload.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>${poi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ <version>${poi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.csource</groupId>
+ <artifactId>fastdfs-client-java</artifactId>
+ <version>${fastdfs-client.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ <version>${logback.version}</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-access</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.logback-extensions</groupId>
+ <artifactId>logback-ext-spring</artifactId>
+ <version>${logback-ext-spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.squareup.okhttp3</groupId>
+ <artifactId>okhttp</artifactId>
+ <version>${okhttp.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jsoup</groupId>
+ <artifactId>jsoup</artifactId>
+ <version>${jsoup.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents.client5</groupId>
+ <artifactId>httpclient5</artifactId>
+ <version>${httpclient5.version}</version>
+ </dependency>
+ <!-- 在用maven 编译,打包过程中回出现javax.servlet找不到的情况,所以需要在这里配置 -->
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>${javax.servlet-api.version}</version>
+ </dependency>
+ <!-- 腾讯短信服务 -->
+ <dependency>
+ <groupId>com.tencentcloudapi</groupId>
+ <artifactId>tencentcloud-sdk-java-common</artifactId>
+ <version>${tencentcloud-sdk-java.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.tencentcloudapi</groupId>
+ <artifactId>tencentcloud-sdk-java</artifactId>
+ <version>${tencentcloud-sdk-java.version}</version>
+ </dependency>
+ <!-- 阿里短信服务-->
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>dysmsapi20170525</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>tea-openapi</artifactId>
+ <version>0.0.13</version>
+ </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>tea-console</artifactId>
+ <version>0.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>darabonba-env</artifactId>
+ <version>0.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>tea-util</artifactId>
+ <version>0.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>darabonba-time</artifactId>
+ <version>0.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>darabonba-string</artifactId>
+ <version>0.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.aliyun</groupId>
+ <artifactId>tea</artifactId>
+ <version>[1.0.3, 2.0.0)</version>
+ </dependency>
+ <!-- itextpdf -->
+ <dependency>
+ <groupId>com.itextpdf</groupId>
+ <artifactId>itextpdf</artifactId>
+ <version>${itextpdf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.itextpdf.tool</groupId>
+ <artifactId>xmlworker</artifactId>
+ <version>${itextpdf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.18.30</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring-boot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-dependencies</artifactId>
+ <version>${spring-cloud.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba.cloud</groupId>
+ <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+ <version>${spring-cloud-alibaba.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+ <build>
+ <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
+ <plugins>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <version>3.3.1</version>
+ </plugin>
+ <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>3.3.1</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>3.2.5</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-install-plugin</artifactId>
+ <version>3.1.1</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>3.1.1</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/04-Development/03-Build/README.md b/04-Development/03-Build/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/03-Build/README.md
diff --git a/04-Development/04-Database/README.md b/04-Development/04-Database/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/04-Database/README.md
diff --git a/04-Development/05-Publish/README.md b/04-Development/05-Publish/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/05-Publish/README.md
diff --git a/04-Development/06-Development Environment/README.md b/04-Development/06-Development Environment/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/06-Development Environment/README.md
diff --git a/04-Development/README.md b/04-Development/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/04-Development/README.md
diff --git a/05-Test/01-Test Plan/README.md b/05-Test/01-Test Plan/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/05-Test/01-Test Plan/README.md
diff --git a/05-Test/02-Test Design/README.md b/05-Test/02-Test Design/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/05-Test/02-Test Design/README.md
diff --git a/05-Test/03-Test Data/README.md b/05-Test/03-Test Data/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/05-Test/03-Test Data/README.md
diff --git a/05-Test/README.md b/05-Test/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/05-Test/README.md
diff --git a/06-Deployment/01-Manual/01-Draft/README.md b/06-Deployment/01-Manual/01-Draft/README.md
new file mode 100644
index 0000000..476daae
--- /dev/null
+++ b/06-Deployment/01-Manual/01-Draft/README.md
@@ -0,0 +1,7 @@
+## System Function design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted FDS to customer to comment and approve.
+
+
+
diff --git a/06-Deployment/01-Manual/02-Review/README.md b/06-Deployment/01-Manual/02-Review/README.md
new file mode 100644
index 0000000..476daae
--- /dev/null
+++ b/06-Deployment/01-Manual/02-Review/README.md
@@ -0,0 +1,7 @@
+## System Function design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted FDS to customer to comment and approve.
+
+
+
diff --git a/06-Deployment/01-Manual/03-Submitted/README.md b/06-Deployment/01-Manual/03-Submitted/README.md
new file mode 100644
index 0000000..476daae
--- /dev/null
+++ b/06-Deployment/01-Manual/03-Submitted/README.md
@@ -0,0 +1,7 @@
+## System Function design specification
+01-Draft: for draft document.
+02-Review: for project manager to comment and review.
+03-Submitted: Submitted FDS to customer to comment and approve.
+
+
+
diff --git a/06-Deployment/01-Manual/04-ToCustomer/README.md b/06-Deployment/01-Manual/04-ToCustomer/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/06-Deployment/01-Manual/04-ToCustomer/README.md
diff --git a/06-Deployment/01-Manual/04-ToCustomer/~$PQ FDS R01 - ToCustomer.docx b/06-Deployment/01-Manual/04-ToCustomer/~$PQ FDS R01 - ToCustomer.docx
new file mode 100644
index 0000000..ddafff9
--- /dev/null
+++ b/06-Deployment/01-Manual/04-ToCustomer/~$PQ FDS R01 - ToCustomer.docx
Binary files differ
diff --git a/06-Deployment/01-Manual/README.md b/06-Deployment/01-Manual/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/06-Deployment/01-Manual/README.md
diff --git a/06-Deployment/02-FAT release/README.md b/06-Deployment/02-FAT release/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/06-Deployment/02-FAT release/README.md
diff --git a/07-QA/README.md b/07-QA/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/07-QA/README.md
diff --git a/08-SCM/README.md b/08-SCM/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/08-SCM/README.md
diff --git a/09-FAT/README.md b/09-FAT/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/09-FAT/README.md
diff --git a/10-SAT/README.md b/10-SAT/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/10-SAT/README.md
diff --git a/README.md b/README.md
index d5fb346..1dac28b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
## FR-BWF
-羽毛球圈
+世界羽毛球联合会(Badminton World Federation,BWF)
--
Gitblit v1.9.3