gitextract_uh972pfn/ ├── .gitignore ├── LICENSE ├── README.md ├── docs/ │ ├── package.json │ └── src/ │ ├── .vuepress/ │ │ ├── config.ts │ │ ├── navbar.ts │ │ ├── sidebar.ts │ │ ├── styles/ │ │ │ ├── index.scss │ │ │ └── palette.scss │ │ └── theme.ts │ ├── README.md │ ├── deploy/ │ │ ├── README.md │ │ ├── docker.md │ │ ├── how-to-backup.md │ │ ├── multi-judgeserver.md │ │ ├── open-https.md │ │ └── update.md │ ├── develop/ │ │ ├── db.md │ │ ├── judge_dispatcher.md │ │ ├── sandbox.md │ │ └── update-fe.md │ ├── introduction/ │ │ ├── README.md │ │ └── architecture.md │ ├── monomer/ │ │ ├── backend.md │ │ ├── frontend.md │ │ ├── judgeserver.md │ │ ├── mysql-checker.md │ │ ├── mysql.md │ │ ├── nacos.md │ │ ├── redis.md │ │ └── rsync.md │ └── use/ │ ├── admin-user.md │ ├── close-free-cdn.md │ ├── contest.md │ ├── custom-difficulty.md │ ├── discussion-admin.md │ ├── import-problem.md │ ├── import-user.md │ ├── judge-mode.md │ ├── notice-announcement.md │ ├── testcase.md │ └── training.md ├── pom.xml ├── voj-backend/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ ├── alibaba/ │ │ │ │ └── druid/ │ │ │ │ └── pool/ │ │ │ │ └── DruidAbstractDataSource.java │ │ │ └── simplefanc/ │ │ │ └── voj/ │ │ │ └── backend/ │ │ │ ├── BackendApplication.java │ │ │ ├── cache/ │ │ │ │ ├── CacheTypeManager.java │ │ │ │ ├── DoubleCache.java │ │ │ │ └── DoubleCacheManager.java │ │ │ ├── common/ │ │ │ │ ├── annotation/ │ │ │ │ │ └── Access.java │ │ │ │ ├── constants/ │ │ │ │ │ ├── AccessEnum.java │ │ │ │ │ ├── CallJudgerType.java │ │ │ │ │ ├── Constant.java │ │ │ │ │ ├── EmailConstant.java │ │ │ │ │ ├── FileConstant.java │ │ │ │ │ ├── FileTypeEnum.java │ │ │ │ │ ├── QueueConstant.java │ │ │ │ │ ├── RoleEnum.java │ │ │ │ │ ├── ScheduleConstant.java │ │ │ │ │ ├── TrainingEnum.java │ │ │ │ │ └── UserStatusEnum.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── StatusAccessDeniedException.java │ │ │ │ │ ├── StatusFailException.java │ │ │ │ │ ├── StatusForbiddenException.java │ │ │ │ │ ├── StatusNotFoundException.java │ │ │ │ │ ├── StatusSystemErrorException.java │ │ │ │ │ └── advice/ │ │ │ │ │ └── GlobalExceptionAdvice.java │ │ │ │ └── utils/ │ │ │ │ ├── ConfigUtil.java │ │ │ │ ├── ExcelUtil.java │ │ │ │ ├── JwtUtil.java │ │ │ │ ├── MyFileUtil.java │ │ │ │ ├── RedisUtil.java │ │ │ │ └── RestTemplateUtil.java │ │ │ ├── config/ │ │ │ │ ├── CacheConfig.java │ │ │ │ ├── CommonAsyncTaskConfig.java │ │ │ │ ├── ConfigVO.java │ │ │ │ ├── CorsConfig.java │ │ │ │ ├── DruidConfiguration.java │ │ │ │ ├── JudgeAsyncTaskConfig.java │ │ │ │ ├── MyMetaObjectConfig.java │ │ │ │ ├── MybatisPlusConfig.java │ │ │ │ ├── NacosConfig.java │ │ │ │ ├── RedisConfig.java │ │ │ │ ├── RestTemplateConfig.java │ │ │ │ ├── ShiroConfig.java │ │ │ │ ├── StartupRunner.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ └── property/ │ │ │ │ ├── DoubleCacheProperties.java │ │ │ │ ├── EmailRuleBO.java │ │ │ │ ├── FilePathProperties.java │ │ │ │ └── RemoteAccountProperties.java │ │ │ ├── controller/ │ │ │ │ ├── admin/ │ │ │ │ │ ├── AdminContestController.java │ │ │ │ │ ├── AdminDiscussionController.java │ │ │ │ │ ├── AdminJudgeController.java │ │ │ │ │ ├── AdminProblemController.java │ │ │ │ │ ├── AdminTagController.java │ │ │ │ │ ├── AdminTrainingCategoryController.java │ │ │ │ │ ├── AdminTrainingController.java │ │ │ │ │ ├── AdminUserController.java │ │ │ │ │ ├── AnnouncementController.java │ │ │ │ │ ├── ConfigController.java │ │ │ │ │ ├── DashboardController.java │ │ │ │ │ └── SwitchController.java │ │ │ │ ├── file/ │ │ │ │ │ ├── ContestFileController.java │ │ │ │ │ ├── ImageController.java │ │ │ │ │ ├── ImportFpsProblemController.java │ │ │ │ │ ├── ImportLOJProblemController.java │ │ │ │ │ ├── ImportQDUOJProblemController.java │ │ │ │ │ ├── MarkDownFileController.java │ │ │ │ │ ├── ProblemFileController.java │ │ │ │ │ ├── TestCaseController.java │ │ │ │ │ └── UserFileController.java │ │ │ │ ├── msg/ │ │ │ │ │ ├── AdminNoticeController.java │ │ │ │ │ ├── NoticeController.java │ │ │ │ │ └── UserMessageController.java │ │ │ │ └── oj/ │ │ │ │ ├── AccountController.java │ │ │ │ ├── CommentController.java │ │ │ │ ├── CommonController.java │ │ │ │ ├── ContestAdminController.java │ │ │ │ ├── ContestController.java │ │ │ │ ├── ContestScoreboardController.java │ │ │ │ ├── DiscussionController.java │ │ │ │ ├── HomeController.java │ │ │ │ ├── JudgeController.java │ │ │ │ ├── PassportController.java │ │ │ │ ├── ProblemController.java │ │ │ │ ├── RankController.java │ │ │ │ └── TrainingController.java │ │ │ ├── dao/ │ │ │ │ ├── common/ │ │ │ │ │ ├── AnnouncementEntityService.java │ │ │ │ │ ├── FileEntityService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AnnouncementEntityServiceImpl.java │ │ │ │ │ └── FileEntityEntityServiceImpl.java │ │ │ │ ├── contest/ │ │ │ │ │ ├── ContestAnnouncementEntityService.java │ │ │ │ │ ├── ContestEntityService.java │ │ │ │ │ ├── ContestPrintEntityService.java │ │ │ │ │ ├── ContestProblemEntityService.java │ │ │ │ │ ├── ContestRecordEntityService.java │ │ │ │ │ ├── ContestRegisterEntityService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── ContestAnnouncementEntityServiceImpl.java │ │ │ │ │ ├── ContestEntityServiceImpl.java │ │ │ │ │ ├── ContestPrintEntityServiceImpl.java │ │ │ │ │ ├── ContestProblemEntityServiceImpl.java │ │ │ │ │ ├── ContestRecordEntityServiceImpl.java │ │ │ │ │ └── ContestRegisterEntityServiceImpl.java │ │ │ │ ├── discussion/ │ │ │ │ │ ├── CommentEntityService.java │ │ │ │ │ ├── CommentLikeEntityService.java │ │ │ │ │ ├── DiscussionEntityService.java │ │ │ │ │ ├── DiscussionLikeEntityService.java │ │ │ │ │ ├── DiscussionReportEntityService.java │ │ │ │ │ ├── ReplyEntityService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CommentEntityServiceImpl.java │ │ │ │ │ ├── CommentLikeEntityServiceImpl.java │ │ │ │ │ ├── DiscussionEntityServiceImpl.java │ │ │ │ │ ├── DiscussionLikeEntityServiceImpl.java │ │ │ │ │ ├── DiscussionReportEntityServiceImpl.java │ │ │ │ │ └── ReplyEntityServiceImpl.java │ │ │ │ ├── judge/ │ │ │ │ │ ├── JudgeCaseEntityService.java │ │ │ │ │ ├── JudgeEntityService.java │ │ │ │ │ ├── JudgeServerEntityService.java │ │ │ │ │ ├── RemoteJudgeAccountEntityService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── JudgeCaseEntityServiceImpl.java │ │ │ │ │ ├── JudgeEntityServiceImpl.java │ │ │ │ │ ├── JudgeServerEntityServiceImpl.java │ │ │ │ │ └── RemoteJudgeAccountEntityServiceImpl.java │ │ │ │ ├── msg/ │ │ │ │ │ ├── AdminSysNoticeEntityService.java │ │ │ │ │ ├── MsgRemindEntityService.java │ │ │ │ │ ├── UserSysNoticeEntityService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AdminSysNoticeEntityServiceImpl.java │ │ │ │ │ ├── MsgRemindEntityServiceImpl.java │ │ │ │ │ └── UserSysNoticeEntityServiceImpl.java │ │ │ │ ├── problem/ │ │ │ │ │ ├── CategoryEntityService.java │ │ │ │ │ ├── CodeTemplateEntityService.java │ │ │ │ │ ├── LanguageEntityService.java │ │ │ │ │ ├── ProblemCaseEntityService.java │ │ │ │ │ ├── ProblemEntityService.java │ │ │ │ │ ├── ProblemLanguageEntityService.java │ │ │ │ │ ├── ProblemTagEntityService.java │ │ │ │ │ ├── TagClassificationEntityService.java │ │ │ │ │ ├── TagEntityService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CategoryEntityServiceImpl.java │ │ │ │ │ ├── CodeTemplateEntityServiceImpl.java │ │ │ │ │ ├── LanguageEntityServiceImpl.java │ │ │ │ │ ├── ProblemCaseEntityServiceImpl.java │ │ │ │ │ ├── ProblemEntityServiceImpl.java │ │ │ │ │ ├── ProblemLanguageEntityServiceImpl.java │ │ │ │ │ ├── ProblemTagEntityServiceImpl.java │ │ │ │ │ ├── TagClassificationEntityServiceImpl.java │ │ │ │ │ └── TagEntityServiceImpl.java │ │ │ │ ├── training/ │ │ │ │ │ ├── MappingTrainingCategoryEntityService.java │ │ │ │ │ ├── TrainingCategoryEntityService.java │ │ │ │ │ ├── TrainingEntityService.java │ │ │ │ │ ├── TrainingProblemEntityService.java │ │ │ │ │ ├── TrainingRecordEntityService.java │ │ │ │ │ ├── TrainingRegisterEntityService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── MappingTrainingCategoryEntityServiceImpl.java │ │ │ │ │ ├── TrainingCategoryEntityServiceImpl.java │ │ │ │ │ ├── TrainingEntityServiceImpl.java │ │ │ │ │ ├── TrainingProblemEntityServiceImpl.java │ │ │ │ │ ├── TrainingRecordEntityServiceImpl.java │ │ │ │ │ └── TrainingRegisterEntityServiceImpl.java │ │ │ │ └── user/ │ │ │ │ ├── AuthEntityService.java │ │ │ │ ├── RoleAuthEntityService.java │ │ │ │ ├── RoleEntityService.java │ │ │ │ ├── SessionEntityService.java │ │ │ │ ├── UserAcproblemEntityService.java │ │ │ │ ├── UserInfoEntityService.java │ │ │ │ ├── UserRoleEntityService.java │ │ │ │ └── impl/ │ │ │ │ ├── AuthEntityServiceImpl.java │ │ │ │ ├── RoleAuthEntityServiceImpl.java │ │ │ │ ├── RoleEntityServiceImpl.java │ │ │ │ ├── SessionEntityServiceImpl.java │ │ │ │ ├── UserAcproblemEntityServiceImpl.java │ │ │ │ ├── UserInfoEntityServiceImpl.java │ │ │ │ └── UserRoleEntityServiceImpl.java │ │ │ ├── judge/ │ │ │ │ ├── AbstractTaskReceiver.java │ │ │ │ ├── ChooseUtils.java │ │ │ │ ├── Dispatcher.java │ │ │ │ ├── local/ │ │ │ │ │ ├── JudgeTaskDispatcher.java │ │ │ │ │ └── JudgeTaskTaskReceiver.java │ │ │ │ └── remote/ │ │ │ │ ├── RemoteJudgeTaskDispatcher.java │ │ │ │ ├── RemoteJudgeTaskReceiver.java │ │ │ │ └── crawler/ │ │ │ │ ├── AbstractCFStyleProblemCrawler.java │ │ │ │ ├── AbstractProblemCrawler.java │ │ │ │ ├── AtCoderProblemCrawler.java │ │ │ │ ├── CFProblemCrawler.java │ │ │ │ ├── CrawlersHolder.java │ │ │ │ ├── GYMProblemCrawler.java │ │ │ │ ├── HDUProblemCrawler.java │ │ │ │ ├── JSKProblemCrawler.java │ │ │ │ ├── MXTProblemCrawler.java │ │ │ │ ├── POJProblemCrawler.java │ │ │ │ ├── TKOJProblemCrawler.java │ │ │ │ └── YACSProblemCrawler.java │ │ │ ├── mapper/ │ │ │ │ ├── AdminSysNoticeMapper.java │ │ │ │ ├── AnnouncementMapper.java │ │ │ │ ├── AuthMapper.java │ │ │ │ ├── CategoryMapper.java │ │ │ │ ├── CodeTemplateMapper.java │ │ │ │ ├── CommentLikeMapper.java │ │ │ │ ├── CommentMapper.java │ │ │ │ ├── ContestAnnouncementMapper.java │ │ │ │ ├── ContestMapper.java │ │ │ │ ├── ContestPrintMapper.java │ │ │ │ ├── ContestProblemMapper.java │ │ │ │ ├── ContestRecordMapper.java │ │ │ │ ├── ContestRegisterMapper.java │ │ │ │ ├── DiscussionLikeMapper.java │ │ │ │ ├── DiscussionMapper.java │ │ │ │ ├── DiscussionReportMapper.java │ │ │ │ ├── FileMapper.java │ │ │ │ ├── JudgeCaseMapper.java │ │ │ │ ├── JudgeMapper.java │ │ │ │ ├── JudgeServerMapper.java │ │ │ │ ├── LanguageMapper.java │ │ │ │ ├── MappingTrainingCategoryMapper.java │ │ │ │ ├── MsgRemindMapper.java │ │ │ │ ├── ProblemCaseMapper.java │ │ │ │ ├── ProblemLanguageMapper.java │ │ │ │ ├── ProblemMapper.java │ │ │ │ ├── ProblemTagMapper.java │ │ │ │ ├── RemoteJudgeAccountMapper.java │ │ │ │ ├── ReplyMapper.java │ │ │ │ ├── RoleAuthMapper.java │ │ │ │ ├── RoleMapper.java │ │ │ │ ├── SessionMapper.java │ │ │ │ ├── TagClassificationMapper.java │ │ │ │ ├── TagMapper.java │ │ │ │ ├── TrainingCategoryMapper.java │ │ │ │ ├── TrainingMapper.java │ │ │ │ ├── TrainingProblemMapper.java │ │ │ │ ├── TrainingRecordMapper.java │ │ │ │ ├── TrainingRegisterMapper.java │ │ │ │ ├── UserAcproblemMapper.java │ │ │ │ ├── UserInfoMapper.java │ │ │ │ ├── UserRecordMapper.java │ │ │ │ ├── UserRoleMapper.java │ │ │ │ ├── UserSysNoticeMapper.java │ │ │ │ └── xml/ │ │ │ │ ├── AdminSysNoticeMapper.xml │ │ │ │ ├── AnnouncementMapper.xml │ │ │ │ ├── CommentMapper.xml │ │ │ │ ├── ContestExplanationMapper.xml │ │ │ │ ├── ContestMapper.xml │ │ │ │ ├── ContestProblemMapper.xml │ │ │ │ ├── ContestRecordMapper.xml │ │ │ │ ├── ContestRegisterMapper.xml │ │ │ │ ├── ContestScoreMapper.xml │ │ │ │ ├── DiscussionMapper.xml │ │ │ │ ├── JudgeMapper.xml │ │ │ │ ├── MsgRemindMapper.xml │ │ │ │ ├── ProblemMapper.xml │ │ │ │ ├── RoleAuthMapper.xml │ │ │ │ ├── RoleMapper.xml │ │ │ │ ├── SessionMapper.xml │ │ │ │ ├── TagMapper.xml │ │ │ │ ├── TrainingCategoryMapper.xml │ │ │ │ ├── TrainingMapper.xml │ │ │ │ ├── TrainingProblemMapper.xml │ │ │ │ ├── TrainingRecordMapper.xml │ │ │ │ ├── UserAcproblemMapper.xml │ │ │ │ ├── UserInfoMapper.xml │ │ │ │ ├── UserRecordMapper.xml │ │ │ │ ├── UserRoleMapper.xml │ │ │ │ └── UserSysNoticeMapper.xml │ │ │ ├── pojo/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── AdminEditUserDTO.java │ │ │ │ │ ├── AnnouncementDTO.java │ │ │ │ │ ├── ApplyResetPasswordDTO.java │ │ │ │ │ ├── ChangeEmailDTO.java │ │ │ │ │ ├── ChangePasswordDTO.java │ │ │ │ │ ├── CheckAcDTO.java │ │ │ │ │ ├── CheckUsernameOrEmailDTO.java │ │ │ │ │ ├── ContestPrintDTO.java │ │ │ │ │ ├── ContestProblemDTO.java │ │ │ │ │ ├── ContestRankDTO.java │ │ │ │ │ ├── DbAndRedisConfigDTO.java │ │ │ │ │ ├── EmailConfigDTO.java │ │ │ │ │ ├── LoginDTO.java │ │ │ │ │ ├── PidListDTO.java │ │ │ │ │ ├── ProblemDTO.java │ │ │ │ │ ├── QDOJProblemDTO.java │ │ │ │ │ ├── RegisterContestDTO.java │ │ │ │ │ ├── RegisterDTO.java │ │ │ │ │ ├── RegisterTrainingDTO.java │ │ │ │ │ ├── ReplyDTO.java │ │ │ │ │ ├── ResetPasswordDTO.java │ │ │ │ │ ├── SubmitIdListDTO.java │ │ │ │ │ ├── SwitchConfigDTO.java │ │ │ │ │ ├── TestEmailDTO.java │ │ │ │ │ ├── ToJudgeDTO.java │ │ │ │ │ ├── TrainingDTO.java │ │ │ │ │ ├── TrainingProblemDTO.java │ │ │ │ │ ├── UserReadContestAnnouncementDTO.java │ │ │ │ │ └── WebConfigDTO.java │ │ │ │ └── vo/ │ │ │ │ ├── ACMContestRankVO.java │ │ │ │ ├── ACMRankVO.java │ │ │ │ ├── AccessVO.java │ │ │ │ ├── AdminContestVO.java │ │ │ │ ├── AdminSysNoticeVO.java │ │ │ │ ├── AnnouncementVO.java │ │ │ │ ├── CaptchaVO.java │ │ │ │ ├── ChangeAccountVO.java │ │ │ │ ├── CheckUsernameOrEmailVO.java │ │ │ │ ├── CommentListVO.java │ │ │ │ ├── CommentVO.java │ │ │ │ ├── ContestOutsideInfo.java │ │ │ │ ├── ContestProblemVO.java │ │ │ │ ├── ContestRecordVO.java │ │ │ │ ├── ContestRegisterCountVO.java │ │ │ │ ├── ContestVO.java │ │ │ │ ├── DiscussionVO.java │ │ │ │ ├── ExcelIpVO.java │ │ │ │ ├── ExcelUserVO.java │ │ │ │ ├── ImportProblemVO.java │ │ │ │ ├── JudgeVO.java │ │ │ │ ├── OIContestRankVO.java │ │ │ │ ├── OIRankVO.java │ │ │ │ ├── ProblemCountVO.java │ │ │ │ ├── ProblemInfoVO.java │ │ │ │ ├── ProblemTagVO.java │ │ │ │ ├── ProblemVO.java │ │ │ │ ├── RandomProblemVO.java │ │ │ │ ├── RegisterCodeVO.java │ │ │ │ ├── RoleAuthsVO.java │ │ │ │ ├── SubmissionInfoVO.java │ │ │ │ ├── SysMsgVO.java │ │ │ │ ├── TrainingRankVO.java │ │ │ │ ├── TrainingRecordVO.java │ │ │ │ ├── TrainingVO.java │ │ │ │ ├── UserHomeVO.java │ │ │ │ ├── UserInfoVO.java │ │ │ │ ├── UserMsgVO.java │ │ │ │ ├── UserRolesVO.java │ │ │ │ └── UserUnreadMsgCountVO.java │ │ │ ├── service/ │ │ │ │ ├── account/ │ │ │ │ │ ├── PassportService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── PassportServiceImpl.java │ │ │ │ ├── admin/ │ │ │ │ │ ├── announcement/ │ │ │ │ │ │ ├── AdminAnnouncementService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── AdminAnnouncementServiceImpl.java │ │ │ │ │ ├── contest/ │ │ │ │ │ │ ├── AdminContestAnnouncementService.java │ │ │ │ │ │ ├── AdminContestProblemService.java │ │ │ │ │ │ ├── AdminContestService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── AdminContestAnnouncementServiceImpl.java │ │ │ │ │ │ ├── AdminContestProblemServiceImpl.java │ │ │ │ │ │ └── AdminContestServiceImpl.java │ │ │ │ │ ├── discussion/ │ │ │ │ │ │ ├── AdminDiscussionService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── AdminDiscussionServiceImpl.java │ │ │ │ │ ├── problem/ │ │ │ │ │ │ ├── AdminProblemService.java │ │ │ │ │ │ ├── RemoteProblemService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── AdminProblemServiceImpl.java │ │ │ │ │ ├── rejudge/ │ │ │ │ │ │ ├── RejudgeService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── RejudgeServiceImpl.java │ │ │ │ │ ├── system/ │ │ │ │ │ │ ├── ConfigService.java │ │ │ │ │ │ ├── DashboardService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── ConfigServiceImpl.java │ │ │ │ │ │ └── DashboardServiceImpl.java │ │ │ │ │ ├── tag/ │ │ │ │ │ │ ├── AdminTagService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ └── AdminTagServiceImpl.java │ │ │ │ │ ├── training/ │ │ │ │ │ │ ├── AdminTrainingCategoryService.java │ │ │ │ │ │ ├── AdminTrainingProblemService.java │ │ │ │ │ │ ├── AdminTrainingRecordService.java │ │ │ │ │ │ ├── AdminTrainingService.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── AdminTrainingCategoryServiceImpl.java │ │ │ │ │ │ ├── AdminTrainingProblemServiceImpl.java │ │ │ │ │ │ └── AdminTrainingServiceImpl.java │ │ │ │ │ └── user/ │ │ │ │ │ ├── AdminUserService.java │ │ │ │ │ ├── UserRecordService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AdminUserServiceImpl.java │ │ │ │ │ └── UserRecordServiceImpl.java │ │ │ │ ├── email/ │ │ │ │ │ └── EmailService.java │ │ │ │ ├── file/ │ │ │ │ │ ├── ContestFileService.java │ │ │ │ │ ├── ImageService.java │ │ │ │ │ ├── ImportDSOJProblemService.java │ │ │ │ │ ├── ImportFpsProblemService.java │ │ │ │ │ ├── ImportLOJProblemService.java │ │ │ │ │ ├── ImportQDUOJProblemService.java │ │ │ │ │ ├── MarkDownFileService.java │ │ │ │ │ ├── ProblemFileService.java │ │ │ │ │ ├── TestCaseService.java │ │ │ │ │ ├── UserFileService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── ContestFileServiceImpl.java │ │ │ │ │ ├── ImageServiceImpl.java │ │ │ │ │ ├── ImportDSOJProblemServiceImpl.java │ │ │ │ │ ├── ImportFpsProblemServiceImpl.java │ │ │ │ │ ├── ImportLOJProblemServiceImpl.java │ │ │ │ │ ├── ImportQDUOJProblemServiceImpl.java │ │ │ │ │ ├── MarkDownFileServiceImpl.java │ │ │ │ │ ├── ProblemFileServiceImpl.java │ │ │ │ │ ├── TestCaseServiceImpl.java │ │ │ │ │ └── UserFileServiceImpl.java │ │ │ │ ├── msg/ │ │ │ │ │ ├── AdminNoticeService.java │ │ │ │ │ ├── NoticeService.java │ │ │ │ │ ├── UserMessageService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AdminNoticeServiceImpl.java │ │ │ │ │ ├── NoticeServiceImpl.java │ │ │ │ │ └── UserMessageServiceImpl.java │ │ │ │ ├── oj/ │ │ │ │ │ ├── AccountService.java │ │ │ │ │ ├── BeforeDispatchInitService.java │ │ │ │ │ ├── CommentService.java │ │ │ │ │ ├── CommonService.java │ │ │ │ │ ├── ContestACMRankService.java │ │ │ │ │ ├── ContestAdminService.java │ │ │ │ │ ├── ContestOIRankService.java │ │ │ │ │ ├── ContestScoreboardService.java │ │ │ │ │ ├── ContestService.java │ │ │ │ │ ├── DiscussionService.java │ │ │ │ │ ├── HomeService.java │ │ │ │ │ ├── JudgeService.java │ │ │ │ │ ├── ProblemService.java │ │ │ │ │ ├── RankService.java │ │ │ │ │ ├── TrainingService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AccountServiceImpl.java │ │ │ │ │ ├── CommentServiceImpl.java │ │ │ │ │ ├── CommonServiceImpl.java │ │ │ │ │ ├── ContestAdminServiceImpl.java │ │ │ │ │ ├── ContestScoreboardServiceImpl.java │ │ │ │ │ ├── ContestServiceImpl.java │ │ │ │ │ ├── DiscussionServiceImpl.java │ │ │ │ │ ├── HomeServiceImpl.java │ │ │ │ │ ├── JudgeServiceImpl.java │ │ │ │ │ ├── ProblemServiceImpl.java │ │ │ │ │ ├── RankServiceImpl.java │ │ │ │ │ └── TrainingServiceImpl.java │ │ │ │ └── schedule/ │ │ │ │ └── ScheduleService.java │ │ │ ├── shiro/ │ │ │ │ ├── AccountProfile.java │ │ │ │ ├── AccountRealm.java │ │ │ │ ├── JwtFilter.java │ │ │ │ ├── JwtToken.java │ │ │ │ └── UserSessionUtil.java │ │ │ └── validator/ │ │ │ ├── AccessInterceptor.java │ │ │ ├── AccessValidator.java │ │ │ ├── ContestValidator.java │ │ │ ├── JudgeValidator.java │ │ │ └── TrainingValidator.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── banner.txt │ │ ├── email-rule.yml │ │ ├── logback-spring.xml │ │ └── templates/ │ │ ├── emailTemplate_registerCode.html │ │ ├── emailTemplate_resetPassword.html │ │ └── emailTemplate_testEmail.html │ └── test/ │ └── java/ │ └── com/ │ └── simplefanc/ │ └── AppTest.java ├── voj-common/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── simplefanc/ │ └── voj/ │ └── common/ │ ├── constants/ │ │ ├── Constant.java │ │ ├── ContestConstant.java │ │ ├── ContestEnum.java │ │ ├── JudgeCaseMode.java │ │ ├── JudgeMode.java │ │ ├── JudgeStatus.java │ │ ├── ProblemEnum.java │ │ ├── ProblemLevelEnum.java │ │ ├── RedisConstant.java │ │ └── RemoteOj.java │ ├── pojo/ │ │ ├── dto/ │ │ │ ├── CompileDTO.java │ │ │ └── JudgeDTO.java │ │ └── entity/ │ │ ├── common/ │ │ │ ├── Announcement.java │ │ │ └── File.java │ │ ├── contest/ │ │ │ ├── Contest.java │ │ │ ├── ContestAnnouncement.java │ │ │ ├── ContestPrint.java │ │ │ ├── ContestProblem.java │ │ │ ├── ContestRecord.java │ │ │ └── ContestRegister.java │ │ ├── discussion/ │ │ │ ├── Comment.java │ │ │ ├── CommentLike.java │ │ │ ├── Discussion.java │ │ │ ├── DiscussionLike.java │ │ │ ├── DiscussionReport.java │ │ │ └── Reply.java │ │ ├── judge/ │ │ │ ├── Judge.java │ │ │ ├── JudgeCase.java │ │ │ ├── JudgeServer.java │ │ │ └── RemoteJudgeAccount.java │ │ ├── msg/ │ │ │ ├── AdminSysNotice.java │ │ │ ├── MsgRemind.java │ │ │ └── UserSysNotice.java │ │ ├── problem/ │ │ │ ├── Category.java │ │ │ ├── CodeTemplate.java │ │ │ ├── Language.java │ │ │ ├── Problem.java │ │ │ ├── ProblemCase.java │ │ │ ├── ProblemLanguage.java │ │ │ ├── ProblemTag.java │ │ │ ├── Tag.java │ │ │ └── TagClassification.java │ │ ├── training/ │ │ │ ├── MappingTrainingCategory.java │ │ │ ├── Training.java │ │ │ ├── TrainingCategory.java │ │ │ ├── TrainingProblem.java │ │ │ ├── TrainingRecord.java │ │ │ └── TrainingRegister.java │ │ └── user/ │ │ ├── Auth.java │ │ ├── Role.java │ │ ├── RoleAuth.java │ │ ├── Session.java │ │ ├── UserAcproblem.java │ │ ├── UserInfo.java │ │ └── UserRole.java │ ├── result/ │ │ ├── CommonResult.java │ │ └── ResultStatus.java │ └── utils/ │ ├── CodeForcesAES.js │ ├── CodeForcesUtils.java │ ├── IpUtil.java │ └── Tools.java └── voj-judger/ ├── pom.xml └── src/ └── main/ ├── java/ │ └── com/ │ └── simplefanc/ │ └── voj/ │ └── judger/ │ ├── JudgeServerApplication.java │ ├── common/ │ │ ├── constants/ │ │ │ ├── CompileConfig.java │ │ │ ├── Constants.java │ │ │ ├── JudgeDir.java │ │ │ ├── JudgeLanguage.java │ │ │ ├── JudgeServerConstant.java │ │ │ └── RunConfig.java │ │ ├── exception/ │ │ │ ├── CompileException.java │ │ │ ├── RuntimeException.java │ │ │ ├── SubmitException.java │ │ │ └── SystemException.java │ │ └── utils/ │ │ ├── JudgeUtil.java │ │ └── ThreadPoolUtil.java │ ├── config/ │ │ ├── AsyncTaskConfig.java │ │ ├── DruidConfiguration.java │ │ ├── MyMetaObjectConfig.java │ │ ├── MybatisPlusConfig.java │ │ ├── NacosConfig.java │ │ └── StartupRunner.java │ ├── controller/ │ │ ├── JudgeController.java │ │ └── SystemConfigController.java │ ├── dao/ │ │ ├── ContestEntityService.java │ │ ├── ContestRecordEntityService.java │ │ ├── JudgeCaseEntityService.java │ │ ├── JudgeEntityService.java │ │ ├── JudgeServerEntityService.java │ │ ├── ProblemCaseEntityService.java │ │ ├── ProblemEntityService.java │ │ ├── RemoteJudgeAccountEntityService.java │ │ ├── UserAcproblemEntityService.java │ │ └── impl/ │ │ ├── ContestEntityServiceImpl.java │ │ ├── ContestRecordEntityServiceImpl.java │ │ ├── JudgeCaseEntityServiceImpl.java │ │ ├── JudgeEntityServiceImpl.java │ │ ├── JudgeServerEntityServiceImpl.java │ │ ├── ProblemCaseEntityServiceImpl.java │ │ ├── ProblemEntityServiceImpl.java │ │ ├── RemoteJudgeAccountEntityServiceImpl.java │ │ └── UserAcproblemEntityServiceImpl.java │ ├── judge/ │ │ ├── local/ │ │ │ ├── Compiler.java │ │ │ ├── JudgeContext.java │ │ │ ├── JudgeProcess.java │ │ │ ├── JudgeRun.java │ │ │ ├── ProblemTestCaseUtils.java │ │ │ ├── SandboxRun.java │ │ │ ├── pojo/ │ │ │ │ ├── CaseResult.java │ │ │ │ ├── JudgeCaseDTO.java │ │ │ │ ├── JudgeGlobalDTO.java │ │ │ │ ├── JudgeResult.java │ │ │ │ └── SandBoxRes.java │ │ │ └── strategy/ │ │ │ ├── AbstractJudge.java │ │ │ ├── DefaultJudge.java │ │ │ ├── InteractiveJudge.java │ │ │ └── SpecialJudge.java │ │ └── remote/ │ │ ├── RemoteJudgeContext.java │ │ ├── RemoteOjAware.java │ │ ├── account/ │ │ │ ├── RemoteAccount.java │ │ │ └── RemoteAccountRepository.java │ │ ├── httpclient/ │ │ │ ├── AnonymousHttpContextRepository.java │ │ │ ├── CookieUtil.java │ │ │ ├── DedicatedHttpClient.java │ │ │ ├── DedicatedHttpClientFactory.java │ │ │ ├── HttpBodyValidator.java │ │ │ ├── HttpClientUtil.java │ │ │ ├── HttpStatusValidator.java │ │ │ ├── Mapper.java │ │ │ ├── SimpleHttpResponse.java │ │ │ ├── SimpleHttpResponseMapper.java │ │ │ ├── SimpleHttpResponseValidator.java │ │ │ └── SimpleNameValueEntityFactory.java │ │ ├── loginer/ │ │ │ ├── AbstractRetentiveLoginer.java │ │ │ ├── Loginer.java │ │ │ └── LoginersHolder.java │ │ ├── pojo/ │ │ │ ├── RemoteOjInfo.java │ │ │ ├── SubmissionInfo.java │ │ │ └── SubmissionRemoteStatus.java │ │ ├── provider/ │ │ │ ├── atcoder/ │ │ │ │ ├── AtCoderInfo.java │ │ │ │ ├── AtCoderLoginer.java │ │ │ │ ├── AtCoderQuerier.java │ │ │ │ └── AtCoderSubmitter.java │ │ │ ├── codeforcesgym/ │ │ │ │ ├── GYMInfo.java │ │ │ │ ├── GYMLoginer.java │ │ │ │ ├── GYMQuerier.java │ │ │ │ └── GYMSubmitter.java │ │ │ ├── codefores/ │ │ │ │ ├── CFInfo.java │ │ │ │ ├── CFLoginer.java │ │ │ │ ├── CFQuerier.java │ │ │ │ └── CFSubmitter.java │ │ │ ├── eoj/ │ │ │ │ ├── EojInfo.java │ │ │ │ └── EojLoginer.java │ │ │ ├── hdu/ │ │ │ │ ├── HDUInfo.java │ │ │ │ ├── HDULoginer.java │ │ │ │ ├── HDUQuerier.java │ │ │ │ └── HDUSubmitter.java │ │ │ ├── jsk/ │ │ │ │ ├── JSKInfo.java │ │ │ │ ├── JSKLoginer.java │ │ │ │ ├── JSKQuerier.java │ │ │ │ └── JSKSubmitter.java │ │ │ ├── mxt/ │ │ │ │ ├── MXTCaptchaRecognizer.java │ │ │ │ ├── MXTInfo.java │ │ │ │ ├── MXTLoginer.java │ │ │ │ ├── MXTQuerier.java │ │ │ │ ├── MXTSubmitter.java │ │ │ │ └── RsaUtil.java │ │ │ ├── poj/ │ │ │ │ ├── POJInfo.java │ │ │ │ ├── POJLoginer.java │ │ │ │ ├── POJQuerier.java │ │ │ │ └── POJSubmitter.java │ │ │ ├── shared/ │ │ │ │ └── codeforces/ │ │ │ │ ├── AbstractCFStyleLoginer.java │ │ │ │ ├── AbstractCFStyleQuerier.java │ │ │ │ ├── AbstractCFStyleSubmitter.java │ │ │ │ └── CFUtil.java │ │ │ └── tkoj/ │ │ │ ├── TKOJCaptchaRecognizer.java │ │ │ ├── TKOJInfo.java │ │ │ ├── TKOJLoginer.java │ │ │ ├── TKOJQuerier.java │ │ │ ├── TKOJSubmitter.java │ │ │ └── TKOJVerifyUtil.java │ │ ├── querier/ │ │ │ ├── Querier.java │ │ │ ├── QueriersHolder.java │ │ │ └── RemoteJudgeQuerier.java │ │ └── submitter/ │ │ ├── RemoteJudgeSubmitter.java │ │ ├── Submitter.java │ │ └── SubmittersHolder.java │ ├── mapper/ │ │ ├── ContestMapper.java │ │ ├── ContestRecordMapper.java │ │ ├── JudgeCaseMapper.java │ │ ├── JudgeMapper.java │ │ ├── JudgeServerMapper.java │ │ ├── ProblemCaseMapper.java │ │ ├── ProblemMapper.java │ │ ├── RemoteJudgeAccountMapper.java │ │ ├── UserAcproblemMapper.java │ │ └── UserRecordMapper.java │ └── service/ │ ├── JudgeService.java │ ├── SystemConfigService.java │ └── impl/ │ ├── JudgeServiceImpl.java │ └── SystemConfigServiceImpl.java └── resources/ ├── application.yml ├── banner.txt └── logback-spring.xml