diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..abc78ba --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.gradle/ +/build/ diff --git a/build/classes/java/main/research/loghunter/LogHunterApplication.class b/build/classes/java/main/research/loghunter/LogHunterApplication.class deleted file mode 100644 index 108ab5b..0000000 Binary files a/build/classes/java/main/research/loghunter/LogHunterApplication.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/config/WebConfig$1.class b/build/classes/java/main/research/loghunter/config/WebConfig$1.class deleted file mode 100644 index fc8a1f0..0000000 Binary files a/build/classes/java/main/research/loghunter/config/WebConfig$1.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/config/WebConfig.class b/build/classes/java/main/research/loghunter/config/WebConfig.class deleted file mode 100644 index 2d4f4e3..0000000 Binary files a/build/classes/java/main/research/loghunter/config/WebConfig.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/controller/ErrorLogController.class b/build/classes/java/main/research/loghunter/controller/ErrorLogController.class deleted file mode 100644 index 104f05a..0000000 Binary files a/build/classes/java/main/research/loghunter/controller/ErrorLogController.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/controller/ExportController.class b/build/classes/java/main/research/loghunter/controller/ExportController.class deleted file mode 100644 index 33fb7f3..0000000 Binary files a/build/classes/java/main/research/loghunter/controller/ExportController.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/controller/PatternController.class b/build/classes/java/main/research/loghunter/controller/PatternController.class deleted file mode 100644 index 08d03f0..0000000 Binary files a/build/classes/java/main/research/loghunter/controller/PatternController.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/controller/ScanController.class b/build/classes/java/main/research/loghunter/controller/ScanController.class deleted file mode 100644 index 7afc099..0000000 Binary files a/build/classes/java/main/research/loghunter/controller/ScanController.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/controller/ServerController.class b/build/classes/java/main/research/loghunter/controller/ServerController.class deleted file mode 100644 index 06a74bb..0000000 Binary files a/build/classes/java/main/research/loghunter/controller/ServerController.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/controller/ServerLogPathController.class b/build/classes/java/main/research/loghunter/controller/ServerLogPathController.class deleted file mode 100644 index 566d25e..0000000 Binary files a/build/classes/java/main/research/loghunter/controller/ServerLogPathController.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/controller/SettingController.class b/build/classes/java/main/research/loghunter/controller/SettingController.class deleted file mode 100644 index a29c273..0000000 Binary files a/build/classes/java/main/research/loghunter/controller/SettingController.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/ErrorLogDto$ErrorLogDtoBuilder.class b/build/classes/java/main/research/loghunter/dto/ErrorLogDto$ErrorLogDtoBuilder.class deleted file mode 100644 index 0ab3464..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/ErrorLogDto$ErrorLogDtoBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/ErrorLogDto.class b/build/classes/java/main/research/loghunter/dto/ErrorLogDto.class deleted file mode 100644 index e4e6036..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/ErrorLogDto.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/FileTreeDto$FileNode$FileNodeBuilder.class b/build/classes/java/main/research/loghunter/dto/FileTreeDto$FileNode$FileNodeBuilder.class deleted file mode 100644 index 637cd14..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/FileTreeDto$FileNode$FileNodeBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/FileTreeDto$FileNode.class b/build/classes/java/main/research/loghunter/dto/FileTreeDto$FileNode.class deleted file mode 100644 index 59c8ac8..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/FileTreeDto$FileNode.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/FileTreeDto$PathNode$PathNodeBuilder.class b/build/classes/java/main/research/loghunter/dto/FileTreeDto$PathNode$PathNodeBuilder.class deleted file mode 100644 index 6442d27..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/FileTreeDto$PathNode$PathNodeBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/FileTreeDto$PathNode.class b/build/classes/java/main/research/loghunter/dto/FileTreeDto$PathNode.class deleted file mode 100644 index 376e5cf..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/FileTreeDto$PathNode.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/FileTreeDto$ServerNode$ServerNodeBuilder.class b/build/classes/java/main/research/loghunter/dto/FileTreeDto$ServerNode$ServerNodeBuilder.class deleted file mode 100644 index a055fde..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/FileTreeDto$ServerNode$ServerNodeBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/FileTreeDto$ServerNode.class b/build/classes/java/main/research/loghunter/dto/FileTreeDto$ServerNode.class deleted file mode 100644 index 1e487be..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/FileTreeDto$ServerNode.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/FileTreeDto.class b/build/classes/java/main/research/loghunter/dto/FileTreeDto.class deleted file mode 100644 index 0d47544..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/FileTreeDto.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/PatternDto$PatternDtoBuilder.class b/build/classes/java/main/research/loghunter/dto/PatternDto$PatternDtoBuilder.class deleted file mode 100644 index e8a8f5a..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/PatternDto$PatternDtoBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/PatternDto.class b/build/classes/java/main/research/loghunter/dto/PatternDto.class deleted file mode 100644 index aafbeeb..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/PatternDto.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/ServerDto$ServerDtoBuilder.class b/build/classes/java/main/research/loghunter/dto/ServerDto$ServerDtoBuilder.class deleted file mode 100644 index 05b4a15..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/ServerDto$ServerDtoBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/ServerDto.class b/build/classes/java/main/research/loghunter/dto/ServerDto.class deleted file mode 100644 index 649ae13..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/ServerDto.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/ServerLogPathDto$ServerLogPathDtoBuilder.class b/build/classes/java/main/research/loghunter/dto/ServerLogPathDto$ServerLogPathDtoBuilder.class deleted file mode 100644 index 0e19408..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/ServerLogPathDto$ServerLogPathDtoBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/ServerLogPathDto.class b/build/classes/java/main/research/loghunter/dto/ServerLogPathDto.class deleted file mode 100644 index 0272ec1..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/ServerLogPathDto.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/SettingDto$SettingDtoBuilder.class b/build/classes/java/main/research/loghunter/dto/SettingDto$SettingDtoBuilder.class deleted file mode 100644 index 4036817..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/SettingDto$SettingDtoBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/dto/SettingDto.class b/build/classes/java/main/research/loghunter/dto/SettingDto.class deleted file mode 100644 index 0305391..0000000 Binary files a/build/classes/java/main/research/loghunter/dto/SettingDto.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/ErrorLog$ErrorLogBuilder.class b/build/classes/java/main/research/loghunter/entity/ErrorLog$ErrorLogBuilder.class deleted file mode 100644 index 33c5cbb..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/ErrorLog$ErrorLogBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/ErrorLog.class b/build/classes/java/main/research/loghunter/entity/ErrorLog.class deleted file mode 100644 index 74f02ad..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/ErrorLog.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/Pattern$PatternBuilder.class b/build/classes/java/main/research/loghunter/entity/Pattern$PatternBuilder.class deleted file mode 100644 index 60275cb..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/Pattern$PatternBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/Pattern.class b/build/classes/java/main/research/loghunter/entity/Pattern.class deleted file mode 100644 index cd0ee14..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/Pattern.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/ScanHistory$ScanHistoryBuilder.class b/build/classes/java/main/research/loghunter/entity/ScanHistory$ScanHistoryBuilder.class deleted file mode 100644 index c4c9a43..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/ScanHistory$ScanHistoryBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/ScanHistory.class b/build/classes/java/main/research/loghunter/entity/ScanHistory.class deleted file mode 100644 index f169ead..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/ScanHistory.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/ScannedFile.class b/build/classes/java/main/research/loghunter/entity/ScannedFile.class deleted file mode 100644 index b8f0113..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/ScannedFile.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/Server$ServerBuilder.class b/build/classes/java/main/research/loghunter/entity/Server$ServerBuilder.class deleted file mode 100644 index a63ac02..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/Server$ServerBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/Server.class b/build/classes/java/main/research/loghunter/entity/Server.class deleted file mode 100644 index 49911ef..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/Server.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/ServerLogPath$ServerLogPathBuilder.class b/build/classes/java/main/research/loghunter/entity/ServerLogPath$ServerLogPathBuilder.class deleted file mode 100644 index fb20881..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/ServerLogPath$ServerLogPathBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/ServerLogPath.class b/build/classes/java/main/research/loghunter/entity/ServerLogPath.class deleted file mode 100644 index 7c44a5b..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/ServerLogPath.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/Setting$SettingBuilder.class b/build/classes/java/main/research/loghunter/entity/Setting$SettingBuilder.class deleted file mode 100644 index d921a12..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/Setting$SettingBuilder.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/entity/Setting.class b/build/classes/java/main/research/loghunter/entity/Setting.class deleted file mode 100644 index fc69515..0000000 Binary files a/build/classes/java/main/research/loghunter/entity/Setting.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/repository/ErrorLogRepository.class b/build/classes/java/main/research/loghunter/repository/ErrorLogRepository.class deleted file mode 100644 index 1500cf2..0000000 Binary files a/build/classes/java/main/research/loghunter/repository/ErrorLogRepository.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/repository/PatternRepository.class b/build/classes/java/main/research/loghunter/repository/PatternRepository.class deleted file mode 100644 index 107b3ce..0000000 Binary files a/build/classes/java/main/research/loghunter/repository/PatternRepository.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/repository/ScanHistoryRepository.class b/build/classes/java/main/research/loghunter/repository/ScanHistoryRepository.class deleted file mode 100644 index 196592c..0000000 Binary files a/build/classes/java/main/research/loghunter/repository/ScanHistoryRepository.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/repository/ScannedFileRepository.class b/build/classes/java/main/research/loghunter/repository/ScannedFileRepository.class deleted file mode 100644 index 8ba3a75..0000000 Binary files a/build/classes/java/main/research/loghunter/repository/ScannedFileRepository.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/repository/ServerLogPathRepository.class b/build/classes/java/main/research/loghunter/repository/ServerLogPathRepository.class deleted file mode 100644 index 0ba0e31..0000000 Binary files a/build/classes/java/main/research/loghunter/repository/ServerLogPathRepository.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/repository/ServerRepository.class b/build/classes/java/main/research/loghunter/repository/ServerRepository.class deleted file mode 100644 index c1f05b9..0000000 Binary files a/build/classes/java/main/research/loghunter/repository/ServerRepository.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/repository/SettingRepository.class b/build/classes/java/main/research/loghunter/repository/SettingRepository.class deleted file mode 100644 index ed60197..0000000 Binary files a/build/classes/java/main/research/loghunter/repository/SettingRepository.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ErrorLogService.class b/build/classes/java/main/research/loghunter/service/ErrorLogService.class deleted file mode 100644 index 30322b4..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ErrorLogService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ExportService$ExportRequest.class b/build/classes/java/main/research/loghunter/service/ExportService$ExportRequest.class deleted file mode 100644 index 1e02130..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ExportService$ExportRequest.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ExportService$ExportResult.class b/build/classes/java/main/research/loghunter/service/ExportService$ExportResult.class deleted file mode 100644 index dc5f820..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ExportService$ExportResult.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ExportService.class b/build/classes/java/main/research/loghunter/service/ExportService.class deleted file mode 100644 index a1d3446..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ExportService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/LogParserService$MatchResult.class b/build/classes/java/main/research/loghunter/service/LogParserService$MatchResult.class deleted file mode 100644 index 7cf7bed..0000000 Binary files a/build/classes/java/main/research/loghunter/service/LogParserService$MatchResult.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/LogParserService.class b/build/classes/java/main/research/loghunter/service/LogParserService.class deleted file mode 100644 index f8a86db..0000000 Binary files a/build/classes/java/main/research/loghunter/service/LogParserService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/PatternService$PatternTestResult.class b/build/classes/java/main/research/loghunter/service/PatternService$PatternTestResult.class deleted file mode 100644 index 2dc0a3a..0000000 Binary files a/build/classes/java/main/research/loghunter/service/PatternService$PatternTestResult.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/PatternService.class b/build/classes/java/main/research/loghunter/service/PatternService.class deleted file mode 100644 index b9c02f3..0000000 Binary files a/build/classes/java/main/research/loghunter/service/PatternService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$DailyStat.class b/build/classes/java/main/research/loghunter/service/ScanService$DailyStat.class deleted file mode 100644 index fb184a4..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$DailyStat.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$FileErrorStats.class b/build/classes/java/main/research/loghunter/service/ScanService$FileErrorStats.class deleted file mode 100644 index 7d67b38..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$FileErrorStats.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$PatternErrorStats.class b/build/classes/java/main/research/loghunter/service/ScanService$PatternErrorStats.class deleted file mode 100644 index 9bcfb52..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$PatternErrorStats.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$ResetResult.class b/build/classes/java/main/research/loghunter/service/ScanService$ResetResult.class deleted file mode 100644 index dd9cf71..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$ResetResult.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$ScanProgress.class b/build/classes/java/main/research/loghunter/service/ScanService$ScanProgress.class deleted file mode 100644 index 7d948a9..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$ScanProgress.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$ScanResult.class b/build/classes/java/main/research/loghunter/service/ScanService$ScanResult.class deleted file mode 100644 index 6a914bd..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$ScanResult.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$ServerDailyStats.class b/build/classes/java/main/research/loghunter/service/ScanService$ServerDailyStats.class deleted file mode 100644 index f26f78e..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$ServerDailyStats.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$ServerErrorStats.class b/build/classes/java/main/research/loghunter/service/ScanService$ServerErrorStats.class deleted file mode 100644 index 6f0610f..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$ServerErrorStats.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$ServerTimeStats.class b/build/classes/java/main/research/loghunter/service/ScanService$ServerTimeStats.class deleted file mode 100644 index dc9a287..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$ServerTimeStats.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService$TimeStat.class b/build/classes/java/main/research/loghunter/service/ScanService$TimeStat.class deleted file mode 100644 index c2c2149..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService$TimeStat.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ScanService.class b/build/classes/java/main/research/loghunter/service/ScanService.class deleted file mode 100644 index e3a834b..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ScanService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ServerLogPathService.class b/build/classes/java/main/research/loghunter/service/ServerLogPathService.class deleted file mode 100644 index 93d8dcf..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ServerLogPathService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/ServerService.class b/build/classes/java/main/research/loghunter/service/ServerService.class deleted file mode 100644 index 28fc664..0000000 Binary files a/build/classes/java/main/research/loghunter/service/ServerService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/SettingService.class b/build/classes/java/main/research/loghunter/service/SettingService.class deleted file mode 100644 index 0e87ff0..0000000 Binary files a/build/classes/java/main/research/loghunter/service/SettingService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/SftpService$ConnectionTestResult.class b/build/classes/java/main/research/loghunter/service/SftpService$ConnectionTestResult.class deleted file mode 100644 index 6324860..0000000 Binary files a/build/classes/java/main/research/loghunter/service/SftpService$ConnectionTestResult.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/SftpService$RemoteFile.class b/build/classes/java/main/research/loghunter/service/SftpService$RemoteFile.class deleted file mode 100644 index a97dd8d..0000000 Binary files a/build/classes/java/main/research/loghunter/service/SftpService$RemoteFile.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/SftpService$TimeCheckResult.class b/build/classes/java/main/research/loghunter/service/SftpService$TimeCheckResult.class deleted file mode 100644 index 1bf0a1f..0000000 Binary files a/build/classes/java/main/research/loghunter/service/SftpService$TimeCheckResult.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/service/SftpService.class b/build/classes/java/main/research/loghunter/service/SftpService.class deleted file mode 100644 index 1d4b3e3..0000000 Binary files a/build/classes/java/main/research/loghunter/service/SftpService.class and /dev/null differ diff --git a/build/classes/java/main/research/loghunter/util/CryptoUtil.class b/build/classes/java/main/research/loghunter/util/CryptoUtil.class deleted file mode 100644 index 549db3a..0000000 Binary files a/build/classes/java/main/research/loghunter/util/CryptoUtil.class and /dev/null differ diff --git a/build/resolvedMainClassName b/build/resolvedMainClassName deleted file mode 100644 index dc1c9e6..0000000 --- a/build/resolvedMainClassName +++ /dev/null @@ -1 +0,0 @@ -research.loghunter.LogHunterApplication \ No newline at end of file diff --git a/build/resources/main/application.properties b/build/resources/main/application.properties deleted file mode 100644 index 6b28735..0000000 --- a/build/resources/main/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=log-hunter diff --git a/build/resources/main/application.yml b/build/resources/main/application.yml deleted file mode 100644 index ecfc827..0000000 --- a/build/resources/main/application.yml +++ /dev/null @@ -1,34 +0,0 @@ -server: - port: 8080 - -spring: - application: - name: log-hunter - - datasource: - url: jdbc:sqlite:./data/loghunter.db - driver-class-name: org.sqlite.JDBC - - jpa: - database-platform: org.hibernate.community.dialect.SQLiteDialect - hibernate: - ddl-auto: update - show-sql: false - properties: - hibernate: - format_sql: true - - # 정적 리소스 캐시 비활성화 - web: - resources: - cache: - cachecontrol: - no-cache: true - no-store: true - -# 앱 설정 -app: - crypto: - key: ${LOGHUNTER_CRYPTO_KEY:LogHunterDefaultKey32Bytes!!} - export: - path: ./exports diff --git a/build/resources/main/static/assets/Badge-SZTgBg80.js b/build/resources/main/static/assets/Badge-SZTgBg80.js deleted file mode 100644 index 8be0598..0000000 --- a/build/resources/main/static/assets/Badge-SZTgBg80.js +++ /dev/null @@ -1 +0,0 @@ -import"./index--fsvNaiQ.js";import{_ as e,a as s,h as r,G as n,i as o,t as c,n as d}from"./index-DFoOAXeQ.js";const l={__name:"Badge",props:{text:String,variant:{type:String,default:"default"}},setup(a){return(t,i)=>(r(),s("span",{class:d(["badge",`badge-${a.variant}`])},[n(t.$slots,"default",{},()=>[o(c(a.text),1)])],2))}},g=e(l,[["__scopeId","data-v-b7bd2350"]]);export{g as B}; diff --git a/build/resources/main/static/assets/Button-Ddldcbk7.js b/build/resources/main/static/assets/Button-Ddldcbk7.js deleted file mode 100644 index 27d5d1c..0000000 --- a/build/resources/main/static/assets/Button-Ddldcbk7.js +++ /dev/null @@ -1 +0,0 @@ -import"./index--fsvNaiQ.js";import{_ as d,r,a,e as c,G as u,n as f,h as o}from"./index-DFoOAXeQ.js";const m=["type","disabled"],b={key:0,class:"spinner"},y={__name:"Button",props:{type:{type:String,default:"button"},variant:{type:String,default:"primary"},size:{type:String,default:"md"},disabled:Boolean,loading:Boolean},emits:["click"],setup(e,{expose:l}){const n=r(null);return l({focus:()=>{var t;(t=n.value)==null||t.focus()}}),(t,s)=>(o(),a("button",{ref_key:"buttonRef",ref:n,type:e.type,class:f(["btn",`btn-${e.variant}`,{"btn-sm":e.size==="sm","btn-lg":e.size==="lg"}]),disabled:e.disabled||e.loading,onClick:s[0]||(s[0]=i=>t.$emit("click",i))},[e.loading?(o(),a("span",b)):c("",!0),u(t.$slots,"default",{},void 0)],10,m))}},B=d(y,[["__scopeId","data-v-c92354e1"]]);export{B}; diff --git a/build/resources/main/static/assets/DailyStats-03BWk9_D.js b/build/resources/main/static/assets/DailyStats-03BWk9_D.js deleted file mode 100644 index 62fb146..0000000 --- a/build/resources/main/static/assets/DailyStats-03BWk9_D.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as C,r as g,o as x,a as l,b as s,l as w,s as I,t as d,F as B,g as T,h as o,d as R,w as m,f as L,u as _}from"./index-DFoOAXeQ.js";import{a as A,C as F}from"./index--fsvNaiQ.js";import{C as O,a as W,L as N,B as V,p as E,b as M,c as $,d as P,e as z}from"./chartjs-plugin-datalabels.esm-B8xtR40N.js";const U={class:"daily-stats"},Y={class:"page-header"},Z={class:"filter-section"},j={key:0,class:"loading"},q={key:1,class:"no-data"},G={key:2,class:"server-charts"},H={class:"chart-header"},J={class:"chart-subtitle"},K={class:"chart-wrapper"},Q={class:"chart-container"},X={__name:"DailyStats",setup(tt){O.register(W,N,V,E,M,$,P);const c=g(!1),r=g([]),n=g(f());function f(){return new Date().toISOString().split("T")[0]}function b(){const t=new Date(n.value);t.setDate(t.getDate()-1),n.value=t.toISOString().split("T")[0],i()}function y(){const t=new Date(n.value);t.setDate(t.getDate()+1),n.value=t.toISOString().split("T")[0],i()}const S={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"top"},tooltip:{mode:"index",intersect:!1},datalabels:{display:t=>{if(t.datasetIndex!==2)return!1;const e=t.chart.data.datasets,a=t.dataIndex;return e.reduce((u,p)=>u+(p.data[a]||0),0)>0},anchor:"end",align:"end",offset:0,font:{size:9},color:"#666",formatter:(t,e)=>{const a=e.chart.data.datasets,v=e.dataIndex;return a.reduce((u,p)=>u+(p.data[v]||0),0)}}},scales:{x:{stacked:!0,ticks:{maxRotation:0,autoSkip:!0,maxTicksLimit:24,callback:function(t,e){const a=this.getLabelForValue(t);return a&&a.endsWith(":00")?a:""}},grid:{display:!1}},y:{stacked:!0,beginAtZero:!0}},barPercentage:.8,categoryPercentage:.9},D=t=>({labels:t.timeStats.map(a=>a.time),datasets:[{label:"CRITICAL",data:t.timeStats.map(a=>a.critical),backgroundColor:"#9b59b6",borderWidth:0},{label:"ERROR",data:t.timeStats.map(a=>a.error),backgroundColor:"#e74c3c",borderWidth:0},{label:"WARN",data:t.timeStats.map(a=>a.warn),backgroundColor:"#f39c12",borderWidth:0}]}),i=async()=>{c.value=!0;try{r.value=await A.getTimeStatsByServer(n.value,15)}catch(t){console.error("Failed to load stats:",t),r.value=[]}finally{c.value=!1}},h=t=>{const e=new Date(t);return`${e.getFullYear()}년 ${e.getMonth()+1}월 ${e.getDate()}일`},k=t=>t.timeStats.reduce((e,a)=>e+a.total,0);return x(()=>{i()}),(t,e)=>(o(),l("div",U,[s("div",Y,[e[1]||(e[1]=s("h2",null,"일별 에러현황",-1)),s("div",Z,[s("button",{class:"nav-btn",onClick:b},"◀ 이전"),w(s("input",{type:"date","onUpdate:modelValue":e[0]||(e[0]=a=>n.value=a),onChange:i},null,544),[[I,n.value]]),s("button",{class:"nav-btn",onClick:y},"다음 ▶")])]),c.value?(o(),l("div",j,[...e[2]||(e[2]=[s("p",null,"로딩중...",-1)])])):r.value.length===0?(o(),l("div",q,[s("p",null,d(h(n.value))+"에 분석된 에러 데이터가 없습니다.",1)])):(o(),l("div",G,[(o(!0),l(B,null,T(r.value,a=>(o(),R(_(F),{key:a.serverId,class:"server-chart-card"},{header:m(()=>[s("div",H,[s("h3",null,"🖥️ "+d(a.serverName),1),s("span",J,d(h(n.value))+" 15분 단위 에러 ("+d(k(a))+"건)",1)])]),default:m(()=>[s("div",K,[s("div",Q,[L(_(z),{data:D(a),options:S},null,8,["data"])])])]),_:2},1024))),128))]))]))}},nt=C(X,[["__scopeId","data-v-b7241be8"]]);export{nt as default}; diff --git a/build/resources/main/static/assets/DailyStats-DaWyYZ7V.css b/build/resources/main/static/assets/DailyStats-DaWyYZ7V.css deleted file mode 100644 index a7c25ea..0000000 --- a/build/resources/main/static/assets/DailyStats-DaWyYZ7V.css +++ /dev/null @@ -1 +0,0 @@ -.page-header[data-v-b7241be8]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h2[data-v-b7241be8]{margin:0}.filter-section[data-v-b7241be8]{display:flex;align-items:center;gap:8px}.filter-section input[type=date][data-v-b7241be8]{padding:10px 16px;border:1px solid #ddd;border-radius:6px;font-size:14px;cursor:pointer}.filter-section input[type=date][data-v-b7241be8]:focus{outline:none;border-color:#3498db}.nav-btn[data-v-b7241be8]{padding:10px 16px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;font-size:14px;transition:all .2s}.nav-btn[data-v-b7241be8]:hover{background:#f0f0f0;border-color:#3498db}.loading[data-v-b7241be8],.no-data[data-v-b7241be8]{text-align:center;padding:60px;color:#666;background:#fff;border-radius:8px}.server-charts[data-v-b7241be8]{display:flex;flex-direction:column;gap:20px}.server-chart-card[data-v-b7241be8]{width:100%}.chart-header[data-v-b7241be8]{display:flex;align-items:center;gap:12px}.chart-header h3[data-v-b7241be8]{margin:0;font-size:16px}.chart-subtitle[data-v-b7241be8]{font-size:13px;color:#888}.chart-wrapper[data-v-b7241be8]{overflow-x:auto}.chart-container[data-v-b7241be8]{height:220px;min-width:100%;padding:8px 0} diff --git a/build/resources/main/static/assets/Dashboard-CILG6x2p.css b/build/resources/main/static/assets/Dashboard-CILG6x2p.css deleted file mode 100644 index d559396..0000000 --- a/build/resources/main/static/assets/Dashboard-CILG6x2p.css +++ /dev/null @@ -1 +0,0 @@ -.dashboard-header[data-v-abd43acf]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.dashboard-header h2[data-v-abd43acf]{margin:0}.server-grid[data-v-abd43acf]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-bottom:24px}.server-card[data-v-abd43acf]{transition:box-shadow .2s}.server-card[data-v-abd43acf]:hover{box-shadow:0 4px 12px #00000026}.server-header[data-v-abd43acf]{display:flex;justify-content:space-between;align-items:center}.server-title[data-v-abd43acf]{display:flex;align-items:center;gap:10px}.server-title h4[data-v-abd43acf]{margin:0;font-size:16px}.server-info[data-v-abd43acf]{margin-bottom:12px}.info-row[data-v-abd43acf]{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f0f0f0}.info-row[data-v-abd43acf]:last-child{border-bottom:none}.info-row .label[data-v-abd43acf]{color:#666;font-size:13px}.info-row .value[data-v-abd43acf]{font-weight:500}.info-row .value.has-error[data-v-abd43acf]{color:#e74c3c}.progress-section[data-v-abd43acf]{padding:12px;background:#f8f9fa;border-radius:8px;margin-top:12px}.progress-header[data-v-abd43acf]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.status-text[data-v-abd43acf]{font-size:13px;color:#333}.progress-bar-container[data-v-abd43acf]{height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-bar[data-v-abd43acf]{height:100%;background:#3498db;transition:width .3s}.progress-details[data-v-abd43acf]{display:flex;justify-content:space-between;font-size:12px;color:#666}.empty-card[data-v-abd43acf]{text-align:center}.empty-content[data-v-abd43acf]{padding:40px 20px}.empty-content p[data-v-abd43acf]{margin-bottom:16px;color:#666}.daily-charts[data-v-abd43acf]{margin-top:32px}.daily-charts h3[data-v-abd43acf]{margin-bottom:16px;font-size:18px}.chart-list[data-v-abd43acf]{display:flex;flex-direction:column;gap:16px}.chart-card[data-v-abd43acf]{width:100%}.chart-header[data-v-abd43acf]{display:flex;justify-content:space-between;align-items:center}.chart-total[data-v-abd43acf]{font-size:13px;color:#888}.chart-container[data-v-abd43acf]{height:200px;padding:8px 0} diff --git a/build/resources/main/static/assets/Dashboard-D7yH75no.js b/build/resources/main/static/assets/Dashboard-D7yH75no.js deleted file mode 100644 index 68e62c9..0000000 --- a/build/resources/main/static/assets/Dashboard-D7yH75no.js +++ /dev/null @@ -1 +0,0 @@ -import{C as F,s as U,a as k}from"./index--fsvNaiQ.js";import{_ as V,r as u,c as W,o as G,a as f,b as e,d as A,e as I,f as c,w as o,u as d,F as B,g as N,h as i,i as _,t as n,n as O,j}from"./index-DFoOAXeQ.js";import{B as w}from"./Button-Ddldcbk7.js";import{B as R}from"./Badge-SZTgBg80.js";import{C as K,a as Z,L as q,B as H,p as J,b as Q,c as X,d as Y,e as aa}from"./chartjs-plugin-datalabels.esm-B8xtR40N.js";const ta={class:"dashboard"},sa={class:"dashboard-header"},ea={class:"header-actions"},la={class:"server-grid"},na={class:"server-header"},oa={class:"server-title"},da={class:"server-actions"},ia={class:"server-info"},ra={class:"info-row"},ua={class:"value"},ca={class:"info-row"},va={class:"value"},fa={class:"info-row"},_a={key:0,class:"progress-section"},ha={class:"progress-header"},pa={class:"status-text"},ga={class:"progress-bar-container"},ma={class:"progress-details"},ba={class:"empty-content"},ya={key:1,class:"daily-charts"},Sa={class:"chart-list"},Ca={class:"chart-header"},Fa={class:"chart-total"},ka={class:"chart-container"},Aa={__name:"Dashboard",setup(Ia){K.register(Z,q,H,J,Q,X,Y);const h=u([]),g=u([]),m=u(!1),p=u(null),v=u(!1),l=u({}),x=W(()=>h.value.filter(a=>a.active)),E={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{mode:"index",intersect:!1},datalabels:{display:a=>{if(a.datasetIndex!==2)return!1;const s=a.chart.data.datasets,t=a.dataIndex;return s.reduce((S,C)=>S+(C.data[t]||0),0)>0},anchor:"end",align:"end",offset:2,font:{size:10,weight:"bold"},color:"#666",formatter:(a,s)=>{const t=s.chart.data.datasets,r=s.dataIndex;return t.reduce((S,C)=>S+(C.data[r]||0),0)}}},scales:{x:{stacked:!0,grid:{display:!1}},y:{stacked:!0,beginAtZero:!0,grid:{color:"#f0f0f0"}}}},$=a=>({labels:a.dailyStats.map(t=>{const r=new Date(t.date);return`${r.getMonth()+1}/${r.getDate()}`}),datasets:[{label:"CRITICAL",data:a.dailyStats.map(t=>t.critical),backgroundColor:"#9b59b6",borderRadius:2},{label:"ERROR",data:a.dailyStats.map(t=>t.error),backgroundColor:"#e74c3c",borderRadius:2},{label:"WARN",data:a.dailyStats.map(t=>t.warn),backgroundColor:"#f39c12",borderRadius:2}]}),L=a=>a.dailyStats.reduce((s,t)=>s+t.total,0),b=async()=>{m.value=!0;try{h.value=await U.getAll()}catch(a){console.error("Failed to load servers:",a)}finally{m.value=!1}},y=async()=>{try{g.value=await k.getDailyStatsByServer(30)}catch(a){console.error("Failed to load daily stats:",a)}},P=a=>{p.value=a.id,l.value[a.id]={status:"RUNNING",currentPath:"",currentFile:"",totalFiles:0,scannedFiles:0,errorsFound:0},k.startWithProgress(a.id,s=>{l.value[a.id]=s},s=>{p.value=null,s.success?l.value[a.id]={...l.value[a.id],status:"SUCCESS",message:`완료: ${s.filesScanned}개 파일, ${s.errorsFound}개 에러`}:l.value[a.id]={...l.value[a.id],status:"FAILED",message:s.error},b(),y(),setTimeout(()=>{delete l.value[a.id]},5e3)},s=>{p.value=null,l.value[a.id]={...l.value[a.id],status:"FAILED",message:s}})},T=()=>{v.value=!0,k.startAllWithProgress(a=>{l.value[a.serverId]=a},a=>{v.value=!1,b(),y(),setTimeout(()=>{l.value={}},5e3)},a=>{v.value=!1,alert("분석 실패: "+a)})},D=a=>a?new Date(a).toLocaleString("ko-KR"):"-",z=a=>a.status==="SUCCESS"?a.message||"완료":a.status==="FAILED"?a.message||"실패":a.currentFile?`분석중: ${a.currentFile}`:a.currentPath?`경로: ${a.currentPath}`:"준비중...",M=a=>a.totalFiles===0?0:Math.round(a.scannedFiles/a.totalFiles*100);return G(()=>{b(),y()}),(a,s)=>(i(),f("div",ta,[e("div",sa,[s[2]||(s[2]=e("h2",null,"대시보드",-1)),e("div",ea,[c(d(w),{onClick:T,loading:v.value,disabled:x.value.length===0},{default:o(()=>[...s[1]||(s[1]=[_(" 전체 분석 실행 ",-1)])]),_:1},8,["loading","disabled"])])]),e("div",la,[(i(!0),f(B,null,N(h.value,t=>(i(),A(d(F),{key:t.id,class:"server-card"},{header:o(()=>[e("div",na,[e("div",oa,[c(d(R),{variant:t.active?"success":"default",size:"sm"},{default:o(()=>[_(n(t.active?"활성":"비활성"),1)]),_:2},1032,["variant"]),e("h4",null,n(t.name),1)]),e("div",da,[c(d(w),{size:"sm",onClick:r=>P(t),loading:p.value===t.id,disabled:!t.active||v.value},{default:o(()=>[...s[3]||(s[3]=[_(" 분석 실행 ",-1)])]),_:1},8,["onClick","loading","disabled"])])])]),default:o(()=>[e("div",ia,[e("div",ra,[s[4]||(s[4]=e("span",{class:"label"},"호스트",-1)),e("span",ua,n(t.host)+":"+n(t.port),1)]),e("div",ca,[s[5]||(s[5]=e("span",{class:"label"},"마지막 분석",-1)),e("span",va,n(D(t.lastScanAt)),1)]),e("div",fa,[s[6]||(s[6]=e("span",{class:"label"},"마지막 에러",-1)),e("span",{class:O(["value",{"has-error":t.lastErrorAt}])},n(D(t.lastErrorAt)),3)])]),l.value[t.id]?(i(),f("div",_a,[e("div",ha,[e("span",pa,n(z(l.value[t.id])),1),c(d(R),{variant:l.value[t.id].status==="RUNNING"?"warn":"success"},{default:o(()=>[_(n(l.value[t.id].status),1)]),_:2},1032,["variant"])]),e("div",ga,[e("div",{class:"progress-bar",style:j({width:M(l.value[t.id])+"%"})},null,4)]),e("div",ma,[e("span",null,"파일: "+n(l.value[t.id].scannedFiles)+" / "+n(l.value[t.id].totalFiles),1),e("span",null,"에러: "+n(l.value[t.id].errorsFound)+"건",1)])])):I("",!0)]),_:2},1024))),128))]),h.value.length===0&&!m.value?(i(),A(d(F),{key:0,class:"empty-card"},{default:o(()=>[e("div",ba,[s[8]||(s[8]=e("p",null,"등록된 서버가 없습니다.",-1)),c(d(w),{onClick:s[0]||(s[0]=t=>a.$router.push("/servers"))},{default:o(()=>[...s[7]||(s[7]=[_("서버 등록하기",-1)])]),_:1})])]),_:1})):I("",!0),g.value.length>0?(i(),f("div",ya,[s[9]||(s[9]=e("h3",null,"최근 30일 에러 추이",-1)),e("div",Sa,[(i(!0),f(B,null,N(g.value,t=>(i(),A(d(F),{key:t.serverId,class:"chart-card"},{header:o(()=>[e("div",Ca,[e("span",null,"🖥️ "+n(t.serverName),1),e("span",Fa,"총 "+n(L(t))+"건",1)])]),default:o(()=>[e("div",ka,[c(d(aa),{data:$(t),options:E},null,8,["data"])])]),_:2},1024))),128))])])):I("",!0)]))}},xa=V(Aa,[["__scopeId","data-v-abd43acf"]]);export{xa as default}; diff --git a/build/resources/main/static/assets/ErrorLogs-BZmKr5Li.css b/build/resources/main/static/assets/ErrorLogs-BZmKr5Li.css deleted file mode 100644 index d49fe4c..0000000 --- a/build/resources/main/static/assets/ErrorLogs-BZmKr5Li.css +++ /dev/null @@ -1 +0,0 @@ -.layout-container[data-v-1cff7c91]{display:flex;gap:20px;height:calc(100vh - 120px)}.tree-panel[data-v-1cff7c91]{width:360px;min-width:360px;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column}.tree-header[data-v-1cff7c91]{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid #eee}.tree-header h4[data-v-1cff7c91]{margin:0;font-size:15px}.server-select[data-v-1cff7c91]{padding:12px 16px;border-bottom:1px solid #eee}.server-select select[data-v-1cff7c91]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;background:#fff;cursor:pointer}.server-select select[data-v-1cff7c91]:focus{outline:none;border-color:#3498db}.tree-content[data-v-1cff7c91]{flex:1;overflow-y:auto;padding:8px}.tree-loading[data-v-1cff7c91],.tree-empty[data-v-1cff7c91]{padding:20px;text-align:center;color:#666;font-size:13px}.tree-item[data-v-1cff7c91]{display:flex;align-items:center;padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s}.tree-item[data-v-1cff7c91]:hover{background:#f5f5f5}.tree-item.active[data-v-1cff7c91]{background:#e3f2fd;font-weight:500}.tree-toggle[data-v-1cff7c91]{width:16px;font-size:10px;color:#999;margin-right:4px}.tree-icon[data-v-1cff7c91]{margin-right:8px;font-size:14px}.tree-label[data-v-1cff7c91]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-count[data-v-1cff7c91]{font-size:12px;color:#666;background:#f0f0f0;padding:2px 8px;border-radius:10px;margin-left:8px}.tree-count-detail[data-v-1cff7c91]{display:flex;gap:4px;margin-left:8px}.tree-count-detail span[data-v-1cff7c91]{font-size:11px;padding:2px 6px;border-radius:8px;font-weight:500}.tree-count-detail .critical[data-v-1cff7c91]{background:#f3e5f5;color:#9b59b6}.tree-count-detail .error[data-v-1cff7c91]{background:#ffebee;color:#e74c3c}.tree-count-detail .warn[data-v-1cff7c91]{background:#fff8e1;color:#f39c12}.tree-delete[data-v-1cff7c91]{opacity:0;background:none;border:none;cursor:pointer;padding:4px;font-size:12px;transition:opacity .15s}.tree-item:hover .tree-delete[data-v-1cff7c91]{opacity:1}.tree-delete[data-v-1cff7c91]:hover{transform:scale(1.1)}.tree-all[data-v-1cff7c91]{margin-bottom:8px;border-bottom:1px solid #eee;padding-bottom:12px}.tree-path[data-v-1cff7c91]{margin-bottom:4px}.tree-files[data-v-1cff7c91]{margin-left:20px}.tree-file-item[data-v-1cff7c91]{padding-left:26px}.list-panel[data-v-1cff7c91]{flex:1;min-width:0;overflow:hidden}.list-panel[data-v-1cff7c91] .card{height:100%;display:flex;flex-direction:column;overflow:hidden}.list-panel[data-v-1cff7c91] .card-body{flex:1;display:flex;flex-direction:column;overflow:hidden}.card-header-content[data-v-1cff7c91]{display:flex;justify-content:space-between;align-items:center}.card-header-content h3[data-v-1cff7c91]{margin:0;font-size:16px}.header-actions[data-v-1cff7c91]{display:flex;gap:8px}.filters[data-v-1cff7c91]{padding:16px;background:#f8f9fa;border-radius:8px;margin-bottom:16px;flex-shrink:0}.filter-row[data-v-1cff7c91]{display:grid;grid-template-columns:1fr 1fr 2fr auto;gap:16px;align-items:end}.filter-actions[data-v-1cff7c91]{display:flex;gap:8px;padding-bottom:4px}.results-section[data-v-1cff7c91]{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.results-header[data-v-1cff7c91]{margin-bottom:12px;color:#666;font-size:14px;flex-shrink:0}.table-wrapper[data-v-1cff7c91]{flex:1;overflow-y:auto;min-height:0}.error-table[data-v-1cff7c91]{width:100%;border-collapse:collapse}.error-table th[data-v-1cff7c91],.error-table td[data-v-1cff7c91]{padding:10px 12px;text-align:left;border-bottom:1px solid #eee}.error-table th[data-v-1cff7c91]{background:#f8f9fa;font-weight:600;font-size:13px;position:sticky;top:0;z-index:1}.error-table th.sortable[data-v-1cff7c91]{cursor:pointer;-webkit-user-select:none;user-select:none}.error-table th.sortable[data-v-1cff7c91]:hover{background:#e9ecef}.sort-icon[data-v-1cff7c91]{margin-left:4px;color:#999;font-size:12px}.error-table tbody tr[data-v-1cff7c91]:hover{background:#fafafa}.col-time[data-v-1cff7c91]{width:160px;white-space:nowrap}.col-severity[data-v-1cff7c91]{width:90px}.col-pattern[data-v-1cff7c91]{width:100px}.summary-link[data-v-1cff7c91]{color:#333;text-decoration:none;cursor:pointer}.summary-link[data-v-1cff7c91]:hover{color:#3498db;text-decoration:underline}.empty-result[data-v-1cff7c91],.loading-result[data-v-1cff7c91]{padding:40px;text-align:center;color:#666}.pagination[data-v-1cff7c91]{display:flex;justify-content:center;align-items:center;gap:16px;padding:16px 0;border-top:1px solid #eee;flex-shrink:0}.page-info[data-v-1cff7c91]{font-size:14px;color:#666}.warning-text[data-v-1cff7c91]{color:#e74c3c;font-size:13px;margin-top:8px}.error-detail[data-v-1cff7c91]{max-height:60vh;overflow-y:auto}.detail-grid[data-v-1cff7c91]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.detail-item[data-v-1cff7c91]{display:flex;flex-direction:column;gap:4px}.detail-item label[data-v-1cff7c91]{font-size:12px;color:#666}.file-path[data-v-1cff7c91]{word-break:break-all;font-family:monospace;font-size:12px}.detail-section[data-v-1cff7c91]{margin-bottom:16px}.detail-section label[data-v-1cff7c91]{display:block;font-size:12px;color:#666;margin-bottom:8px}.summary-box[data-v-1cff7c91]{padding:12px;background:#f8f9fa;border-radius:4px;font-size:14px}.context-box[data-v-1cff7c91]{padding:12px;background:#1e1e1e;color:#d4d4d4;border-radius:4px;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;margin:0;max-height:250px} diff --git a/build/resources/main/static/assets/ErrorLogs-DWDLe7x0.js b/build/resources/main/static/assets/ErrorLogs-DWDLe7x0.js deleted file mode 100644 index 596b105..0000000 --- a/build/resources/main/static/assets/ErrorLogs-DWDLe7x0.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as ke,r as i,k as ge,c as Q,o as Ce,a as o,b as t,f as u,w as v,u as c,l as he,v as be,F as R,g as A,n as Y,t as a,h as n,i as p,e as _,m as Z,p as Ie}from"./index-DFoOAXeQ.js";import{C as we,e as B,p as xe}from"./index--fsvNaiQ.js";import{M as ee}from"./Modal-BaZTW7NU.js";import{F as U}from"./FormInput-BsW78DWl.js";import{B as k}from"./Button-Ddldcbk7.js";import{B as te}from"./Badge-SZTgBg80.js";const Ve={class:"error-history"},Pe={class:"layout-container"},Ne={class:"tree-panel"},Re={class:"tree-header"},Ae={class:"server-select"},Fe=["value"],$e={class:"tree-content"},Ee={key:0,class:"tree-loading"},De={key:1,class:"tree-empty"},Le={key:2,class:"tree-list"},Te={class:"tree-count"},Be=["onClick"],Se={class:"tree-toggle"},ze=["title"],Me={class:"tree-count"},Oe={key:0,class:"tree-files"},Ue=["onClick","title"],We={class:"tree-label"},He={class:"tree-count-detail"},Xe={key:0,class:"critical"},je={key:1,class:"error"},qe={key:2,class:"warn"},Ge=["onClick"],Je={class:"list-panel"},Ke={class:"card-header-content"},Qe={key:0},Ye={key:1},Ze={class:"header-actions"},et={class:"filters"},tt={class:"filter-row"},lt={class:"filter-actions"},st={class:"results-section"},at={class:"results-header"},ot={key:0},nt={class:"table-wrapper"},rt={key:0,class:"error-table"},it={class:"sort-icon"},dt={class:"sort-icon"},ut={class:"sort-icon"},vt={class:"sort-icon"},ct={class:"col-time"},pt={class:"col-severity"},mt={class:"col-pattern"},yt={class:"col-summary"},ft=["onClick"],_t={key:0,class:"empty-result"},kt={key:1,class:"loading-result"},gt={key:2,class:"pagination"},Ct={class:"page-info"},ht={key:0,class:"error-detail"},bt={class:"detail-grid"},It={class:"detail-item"},wt={class:"detail-item"},xt={class:"detail-item"},Vt={class:"detail-item"},Pt={class:"file-path"},Nt={class:"detail-item"},Rt={class:"detail-item"},At={class:"detail-section"},Ft={class:"summary-box"},$t={class:"detail-section"},Et={class:"context-box"},Dt=100,Lt={__name:"ErrorLogs",setup(Tt){const h=i([]),F=i(!1),b=i(null),I=i([]),d=i(null),$=i(!1),x=i([]),S=i(0),E=i(0),y=i(0),V=i("occurredAt"),w=i("desc"),r=ge({patternId:"",severity:"",keyword:""}),W=i([]),le=[{value:"",label:"전체"},{value:"CRITICAL",label:"CRITICAL"},{value:"ERROR",label:"ERROR"},{value:"WARN",label:"WARN"}],P=i(!1),f=i(null),N=i(!1),H=i(null),z=i(null),X=i(""),M=i(!1),j=i(null),D=Q(()=>b.value?h.value.filter(l=>l.serverId===b.value):h.value),se=Q(()=>D.value.reduce((l,e)=>l+e.totalErrorCount,0)),O=async()=>{F.value=!0;try{h.value=await B.getTree(),h.value.length>0&&h.value[0].paths.length>0&&(I.value=[h.value[0].serverId+":"+h.value[0].paths[0].path])}catch(l){console.error("Failed to load tree:",l)}finally{F.value=!1}},ae=async()=>{try{const l=await xe.getAll();W.value=[{value:"",label:"전체"},...l.map(e=>({value:e.id,label:e.name}))]}catch(l){console.error("Failed to load options:",l)}},oe=()=>{d.value=null,I.value=[];const l=D.value[0];l&&l.paths.length>0&&(I.value=[l.serverId+":"+l.paths[0].path]),y.value=0,g()},ne=l=>{const e=I.value.indexOf(l);e>=0?I.value.splice(e,1):I.value.push(l)},re=()=>{d.value=null,y.value=0,g()},ie=(l,e)=>{d.value={serverId:l,...e},y.value=0,g()},de=l=>l.length>30?"..."+l.slice(-27):l,L=l=>{V.value===l?w.value=w.value==="asc"?"desc":"asc":(V.value=l,w.value="desc"),y.value=0,g()},T=l=>V.value!==l?"↕":w.value==="asc"?"↑":"↓",g=async()=>{$.value=!0;try{const l={page:y.value,size:Dt,sort:`${V.value},${w.value}`};d.value?(l.serverId=d.value.serverId,l.filePath=d.value.filePath):b.value&&(l.serverId=b.value),r.patternId&&(l.patternId=r.patternId),r.severity&&(l.severity=r.severity),r.keyword&&(l.keyword=r.keyword);const e=await B.search(l);x.value=e.content||[],S.value=e.totalElements||0,E.value=e.totalPages||0}catch(l){console.error("Failed to search errors:",l),x.value=[]}finally{$.value=!1}},ue=()=>{r.patternId="",r.severity="",r.keyword="",V.value="occurredAt",w.value="desc",y.value=0,g()},q=l=>{y.value=l,g()},ve=(l,e)=>{H.value=l,z.value=e.filePath,X.value=e.fileName,N.value=!0,Ie(()=>{var s;(s=j.value)==null||s.focus()})},ce=async()=>{M.value=!0;try{await B.deleteByFile(H.value,z.value),N.value=!1,d.value&&d.value.filePath===z.value&&(d.value=null),await O(),g()}catch(l){console.error("Failed to delete:",l),alert("삭제 실패")}finally{M.value=!1}},pe=async l=>{try{f.value=await B.getById(l.id),P.value=!0}catch{f.value=l,P.value=!0}},G=()=>{const l=new URLSearchParams;return d.value?(l.append("serverId",d.value.serverId),l.append("filePath",d.value.filePath)):b.value&&l.append("serverId",b.value),r.patternId&&l.append("patternId",r.patternId),r.severity&&l.append("severity",r.severity),r.keyword&&l.append("keyword",r.keyword),l.toString()},me=()=>{const l=G();window.open(`/api/export/html?${l}`,"_blank")},ye=()=>{const l=G();window.open(`/api/export/txt?${l}`,"_blank")},J=l=>l?new Date(l).toLocaleString("ko-KR",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}):"-",fe=(l,e)=>l?l.length>e?l.substring(0,e)+"...":l:"",K=l=>({CRITICAL:"critical",ERROR:"error",WARN:"warn"})[l]||"default";return Ce(()=>{O(),ae(),g()}),(l,e)=>(n(),o("div",Ve,[t("div",Pe,[t("div",Ne,[t("div",Re,[e[15]||(e[15]=t("h4",null,"파일 탐색",-1)),u(c(k),{size:"sm",variant:"secondary",onClick:O,loading:F.value},{default:v(()=>[...e[14]||(e[14]=[p(" 새로고침 ",-1)])]),_:1},8,["loading"])]),t("div",Ae,[he(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>b.value=s),onChange:oe},[e[16]||(e[16]=t("option",{value:null},"전체 서버",-1)),(n(!0),o(R,null,A(h.value,s=>(n(),o("option",{key:s.serverId,value:s.serverId},a(s.serverName)+" ("+a(s.totalErrorCount)+"건) ",9,Fe))),128))],544),[[be,b.value]])]),t("div",$e,[F.value?(n(),o("div",Ee,"로딩중...")):D.value.length===0?(n(),o("div",De," 분석된 파일이 없습니다. ")):(n(),o("div",Le,[t("div",{class:Y(["tree-item tree-all",{active:!d.value}]),onClick:re},[e[17]||(e[17]=t("span",{class:"tree-icon"},"📊",-1)),e[18]||(e[18]=t("span",{class:"tree-label"},"전체",-1)),t("span",Te,a(se.value)+"건",1)],2),(n(!0),o(R,null,A(D.value,s=>(n(),o("div",{key:s.serverId},[(n(!0),o(R,null,A(s.paths,C=>(n(),o("div",{key:C.path,class:"tree-path"},[t("div",{class:"tree-item tree-path-item",onClick:m=>ne(s.serverId+":"+C.path)},[t("span",Se,a(I.value.includes(s.serverId+":"+C.path)?"▼":"▶"),1),e[19]||(e[19]=t("span",{class:"tree-icon"},"📁",-1)),t("span",{class:"tree-label",title:C.path},a(de(C.path)),9,ze),t("span",Me,a(C.totalErrorCount)+"건",1)],8,Be),I.value.includes(s.serverId+":"+C.path)?(n(),o("div",Oe,[(n(!0),o(R,null,A(C.files,m=>(n(),o("div",{key:m.filePath,class:Y(["tree-item tree-file-item",{active:d.value&&d.value.filePath===m.filePath&&d.value.serverId===s.serverId}]),onClick:_e=>ie(s.serverId,m),title:m.fileName},[e[20]||(e[20]=t("span",{class:"tree-icon"},"📄",-1)),t("span",We,a(m.fileName),1),t("span",He,[m.criticalCount?(n(),o("span",Xe,a(m.criticalCount),1)):_("",!0),m.errorLevelCount?(n(),o("span",je,a(m.errorLevelCount),1)):_("",!0),m.warnCount?(n(),o("span",qe,a(m.warnCount),1)):_("",!0)]),t("button",{class:"tree-delete",onClick:Z(_e=>ve(s.serverId,m),["stop"]),title:"삭제"}," 🗑️ ",8,Ge)],10,Ue))),128))])):_("",!0)]))),128))]))),128))]))])]),t("div",Je,[u(c(we),null,{header:v(()=>[t("div",Ke,[t("h3",null,[d.value?(n(),o("span",Qe,a(d.value.fileName),1)):(n(),o("span",Ye,"전체 에러 이력"))]),t("div",Ze,[u(c(k),{size:"sm",variant:"secondary",onClick:me},{default:v(()=>[...e[21]||(e[21]=[p("HTML",-1)])]),_:1}),u(c(k),{size:"sm",variant:"secondary",onClick:ye},{default:v(()=>[...e[22]||(e[22]=[p("TXT",-1)])]),_:1})])])]),default:v(()=>[t("div",et,[t("div",tt,[u(c(U),{modelValue:r.patternId,"onUpdate:modelValue":e[1]||(e[1]=s=>r.patternId=s),label:"패턴",type:"select",options:W.value,placeholder:"전체"},null,8,["modelValue","options"]),u(c(U),{modelValue:r.severity,"onUpdate:modelValue":e[2]||(e[2]=s=>r.severity=s),label:"심각도",type:"select",options:le,placeholder:"전체"},null,8,["modelValue"]),u(c(U),{modelValue:r.keyword,"onUpdate:modelValue":e[3]||(e[3]=s=>r.keyword=s),label:"키워드",placeholder:"검색어 입력..."},null,8,["modelValue"]),t("div",lt,[u(c(k),{onClick:g},{default:v(()=>[...e[23]||(e[23]=[p("검색",-1)])]),_:1}),u(c(k),{variant:"secondary",onClick:ue},{default:v(()=>[...e[24]||(e[24]=[p("초기화",-1)])]),_:1})])])]),t("div",st,[t("div",at,[S.value>0?(n(),o("span",ot,"총 "+a(S.value)+"건",1)):_("",!0)]),t("div",nt,[x.value.length>0?(n(),o("table",rt,[t("thead",null,[t("tr",null,[t("th",{class:"col-time sortable",onClick:e[4]||(e[4]=s=>L("occurredAt"))},[e[25]||(e[25]=p(" 발생시간 ",-1)),t("span",it,a(T("occurredAt")),1)]),t("th",{class:"col-severity sortable",onClick:e[5]||(e[5]=s=>L("severity"))},[e[26]||(e[26]=p(" 심각도 ",-1)),t("span",dt,a(T("severity")),1)]),t("th",{class:"col-pattern sortable",onClick:e[6]||(e[6]=s=>L("patternName"))},[e[27]||(e[27]=p(" 패턴 ",-1)),t("span",ut,a(T("patternName")),1)]),t("th",{class:"col-summary sortable",onClick:e[7]||(e[7]=s=>L("summary"))},[e[28]||(e[28]=p(" 요약 ",-1)),t("span",vt,a(T("summary")),1)])])]),t("tbody",null,[(n(!0),o(R,null,A(x.value,s=>(n(),o("tr",{key:s.id},[t("td",ct,a(J(s.occurredAt)),1),t("td",pt,[u(c(te),{variant:K(s.severity)},{default:v(()=>[p(a(s.severity),1)]),_:2},1032,["variant"])]),t("td",mt,a(s.patternName),1),t("td",yt,[t("a",{href:"#",class:"summary-link",onClick:Z(C=>pe(s),["prevent"])},a(fe(s.summary,100)),9,ft)])]))),128))])])):_("",!0)]),x.value.length===0&&!$.value?(n(),o("div",_t,[...e[29]||(e[29]=[t("p",null,"검색 결과가 없습니다.",-1)])])):_("",!0),$.value?(n(),o("div",kt,[...e[30]||(e[30]=[t("p",null,"로딩중...",-1)])])):_("",!0),E.value>1?(n(),o("div",gt,[u(c(k),{size:"sm",variant:"secondary",disabled:y.value===0,onClick:e[8]||(e[8]=s=>q(y.value-1))},{default:v(()=>[...e[31]||(e[31]=[p(" 이전 ",-1)])]),_:1},8,["disabled"]),t("span",Ct,a(y.value+1)+" / "+a(E.value),1),u(c(k),{size:"sm",variant:"secondary",disabled:y.value>=E.value-1,onClick:e[9]||(e[9]=s=>q(y.value+1))},{default:v(()=>[...e[32]||(e[32]=[p(" 다음 ",-1)])]),_:1},8,["disabled"])])):_("",!0)])]),_:1})])]),u(c(ee),{modelValue:P.value,"onUpdate:modelValue":e[11]||(e[11]=s=>P.value=s),title:"에러 상세",width:"900px"},{footer:v(()=>[u(c(k),{variant:"secondary",onClick:e[10]||(e[10]=s=>P.value=!1)},{default:v(()=>[...e[41]||(e[41]=[p("닫기",-1)])]),_:1})]),default:v(()=>[f.value?(n(),o("div",ht,[t("div",bt,[t("div",It,[e[33]||(e[33]=t("label",null,"서버",-1)),t("span",null,a(f.value.serverName),1)]),t("div",wt,[e[34]||(e[34]=t("label",null,"심각도",-1)),u(c(te),{variant:K(f.value.severity)},{default:v(()=>[p(a(f.value.severity),1)]),_:1},8,["variant"])]),t("div",xt,[e[35]||(e[35]=t("label",null,"패턴",-1)),t("span",null,a(f.value.patternName),1)]),t("div",Vt,[e[36]||(e[36]=t("label",null,"파일",-1)),t("span",Pt,a(f.value.filePath),1)]),t("div",Nt,[e[37]||(e[37]=t("label",null,"라인",-1)),t("span",null,a(f.value.lineNumber),1)]),t("div",Rt,[e[38]||(e[38]=t("label",null,"발생시간",-1)),t("span",null,a(J(f.value.occurredAt)),1)])]),t("div",At,[e[39]||(e[39]=t("label",null,"요약",-1)),t("div",Ft,a(f.value.summary),1)]),t("div",$t,[e[40]||(e[40]=t("label",null,"컨텍스트",-1)),t("pre",Et,a(f.value.context),1)])])):_("",!0)]),_:1},8,["modelValue"]),u(c(ee),{modelValue:N.value,"onUpdate:modelValue":e[13]||(e[13]=s=>N.value=s),title:"파일 삭제",width:"400px"},{footer:v(()=>[u(c(k),{variant:"secondary",onClick:e[12]||(e[12]=s=>N.value=!1)},{default:v(()=>[...e[42]||(e[42]=[p("취소",-1)])]),_:1}),u(c(k),{ref_key:"deleteBtn",ref:j,variant:"danger",onClick:ce,loading:M.value},{default:v(()=>[...e[43]||(e[43]=[p("삭제",-1)])]),_:1},8,["loading"])]),default:v(()=>[t("p",null,a(X.value)+" 파일의 분석 결과를 삭제하시겠습니까?",1),e[44]||(e[44]=t("p",{class:"warning-text"},"에러 로그와 스캔 기록이 삭제되어 재분석이 가능해집니다.",-1))]),_:1},8,["modelValue"])]))}},Wt=ke(Lt,[["__scopeId","data-v-1cff7c91"]]);export{Wt as default}; diff --git a/build/resources/main/static/assets/FormInput-BsW78DWl.js b/build/resources/main/static/assets/FormInput-BsW78DWl.js deleted file mode 100644 index 7fabaaa..0000000 --- a/build/resources/main/static/assets/FormInput-BsW78DWl.js +++ /dev/null @@ -1 +0,0 @@ -import"./index--fsvNaiQ.js";import{_ as i,c as s,a as t,h as l,e as o,i as c,t as n,F as m,g as y}from"./index-DFoOAXeQ.js";const h={class:"form-group"},v=["for"],b={key:0,class:"required"},g=["id","type","value","placeholder","disabled","readonly"],f=["id","value","placeholder","disabled","readonly","rows"],k=["id","value","disabled"],V={key:0,value:""},S=["value"],x={key:4,class:"error-text"},I={key:5,class:"hint-text"},B={__name:"FormInput",props:{modelValue:{type:[String,Number],default:""},label:String,type:{type:String,default:"text"},placeholder:String,required:Boolean,disabled:Boolean,readonly:Boolean,error:String,hint:String,rows:{type:Number,default:3},options:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(e){const r=s(()=>`input-${Math.random().toString(36).slice(2,9)}`);return(u,d)=>(l(),t("div",h,[e.label?(l(),t("label",{key:0,for:r.value},[c(n(e.label)+" ",1),e.required?(l(),t("span",b,"*")):o("",!0)],8,v)):o("",!0),e.type!=="textarea"&&e.type!=="select"?(l(),t("input",{key:1,id:r.value,type:e.type,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,class:"form-input",onInput:d[0]||(d[0]=a=>u.$emit("update:modelValue",a.target.value))},null,40,g)):e.type==="textarea"?(l(),t("textarea",{key:2,id:r.value,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,rows:e.rows,class:"form-input",onInput:d[1]||(d[1]=a=>u.$emit("update:modelValue",a.target.value))},null,40,f)):e.type==="select"?(l(),t("select",{key:3,id:r.value,value:e.modelValue,disabled:e.disabled,class:"form-input",onChange:d[2]||(d[2]=a=>u.$emit("update:modelValue",a.target.value))},[e.placeholder?(l(),t("option",V,n(e.placeholder),1)):o("",!0),(l(!0),t(m,null,y(e.options,a=>(l(),t("option",{key:a.value,value:a.value},n(a.label),9,S))),128))],40,k)):o("",!0),e.error?(l(),t("span",x,n(e.error),1)):o("",!0),e.hint?(l(),t("span",I,n(e.hint),1)):o("",!0)]))}},N=i(B,[["__scopeId","data-v-45f49038"]]);export{N as F}; diff --git a/build/resources/main/static/assets/Modal-BaZTW7NU.js b/build/resources/main/static/assets/Modal-BaZTW7NU.js deleted file mode 100644 index 01b1263..0000000 --- a/build/resources/main/static/assets/Modal-BaZTW7NU.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,d as m,a as d,e as i,b as e,t as u,G as c,j as f,m as p,T as h,h as s}from"./index-DFoOAXeQ.js";import"./index--fsvNaiQ.js";const y={class:"modal-header"},_={class:"modal-body"},k={key:0,class:"modal-footer"},v={__name:"Modal",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},width:{type:String,default:"500px"}},emits:["update:modelValue","close"],setup(t,{emit:n}){const a=n,l=()=>{a("update:modelValue",!1),a("close")};return(o,V)=>(s(),m(h,{to:"body"},[t.modelValue?(s(),d("div",{key:0,class:"modal-overlay",onClick:p(l,["self"])},[e("div",{class:"modal",style:f({width:t.width})},[e("div",y,[e("h3",null,u(t.title),1),e("button",{class:"close-btn",onClick:l},"×")]),e("div",_,[c(o.$slots,"default",{},void 0)]),o.$slots.footer?(s(),d("div",k,[c(o.$slots,"footer",{},void 0)])):i("",!0)],4)])):i("",!0)]))}},S=r(v,[["__scopeId","data-v-90993dd3"]]);export{S as M}; diff --git a/build/resources/main/static/assets/MonthlyStats-BMU-a3Ge.js b/build/resources/main/static/assets/MonthlyStats-BMU-a3Ge.js deleted file mode 100644 index fc2bb63..0000000 --- a/build/resources/main/static/assets/MonthlyStats-BMU-a3Ge.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as M,r as g,o as w,a as l,b as s,l as x,s as R,t as c,F as $,g as B,h as o,d as D,w as v,f as I,u as _}from"./index-DFoOAXeQ.js";import{a as N,C as F}from"./index--fsvNaiQ.js";import{C as A,a as L,L as E,B as T,p as V,b as Y,c as O,d as z,e as U}from"./chartjs-plugin-datalabels.esm-B8xtR40N.js";const W={class:"monthly-stats"},Z={class:"page-header"},j={class:"filter-section"},q={key:0,class:"loading"},G={key:1,class:"no-data"},H={key:2,class:"server-charts"},J={class:"chart-header"},K={class:"chart-subtitle"},P={class:"chart-container"},Q={__name:"MonthlyStats",setup(X){A.register(L,E,T,V,Y,O,z);const i=g(!1),r=g([]),n=g(f());function f(){const a=new Date;return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}`}function b(){const[a,e]=n.value.split("-").map(Number),t=new Date(a,e-2,1);n.value=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`,d()}function y(){const[a,e]=n.value.split("-").map(Number),t=new Date(a,e,1);n.value=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`,d()}const S={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"top"},tooltip:{mode:"index",intersect:!1},datalabels:{display:a=>{if(a.datasetIndex!==2)return!1;const e=a.chart.data.datasets,t=a.dataIndex;return e.reduce((p,h)=>p+(h.data[t]||0),0)>0},anchor:"end",align:"end",offset:2,font:{size:10,weight:"bold"},color:"#666",formatter:(a,e)=>{const t=e.chart.data.datasets,u=e.dataIndex;return t.reduce((p,h)=>p+(h.data[u]||0),0)}}},scales:{x:{stacked:!0},y:{stacked:!0,beginAtZero:!0}}},C=a=>({labels:a.dailyStats.map(t=>`${new Date(t.date).getDate()}일`),datasets:[{label:"CRITICAL",data:a.dailyStats.map(t=>t.critical),backgroundColor:"#9b59b6",borderRadius:2},{label:"ERROR",data:a.dailyStats.map(t=>t.error),backgroundColor:"#e74c3c",borderRadius:2},{label:"WARN",data:a.dailyStats.map(t=>t.warn),backgroundColor:"#f39c12",borderRadius:2}]}),d=async()=>{i.value=!0;try{const[a,e]=n.value.split("-").map(Number);r.value=await N.getMonthlyStatsByServer(a,e)}catch(a){console.error("Failed to load stats:",a),r.value=[]}finally{i.value=!1}},m=a=>{const[e,t]=a.split("-");return`${e}년 ${parseInt(t)}월`},k=a=>a.dailyStats.reduce((e,t)=>e+t.total,0);return w(()=>{d()}),(a,e)=>(o(),l("div",W,[s("div",Z,[e[1]||(e[1]=s("h2",null,"월별 에러현황",-1)),s("div",j,[s("button",{class:"nav-btn",onClick:b},"◀ 이전"),x(s("input",{type:"month","onUpdate:modelValue":e[0]||(e[0]=t=>n.value=t),onChange:d},null,544),[[R,n.value]]),s("button",{class:"nav-btn",onClick:y},"다음 ▶")])]),i.value?(o(),l("div",q,[...e[2]||(e[2]=[s("p",null,"로딩중...",-1)])])):r.value.length===0?(o(),l("div",G,[s("p",null,c(m(n.value))+"에 분석된 에러 데이터가 없습니다.",1)])):(o(),l("div",H,[(o(!0),l($,null,B(r.value,t=>(o(),D(_(F),{key:t.serverId,class:"server-chart-card"},{header:v(()=>[s("div",J,[s("h3",null,"🖥️ "+c(t.serverName),1),s("span",K,c(m(n.value))+" 일별 에러 ("+c(k(t))+"건)",1)])]),default:v(()=>[s("div",P,[I(_(U),{data:C(t),options:S},null,8,["data"])])]),_:2},1024))),128))]))]))}},st=M(Q,[["__scopeId","data-v-7c1c78fe"]]);export{st as default}; diff --git a/build/resources/main/static/assets/MonthlyStats-Bt4dp30j.css b/build/resources/main/static/assets/MonthlyStats-Bt4dp30j.css deleted file mode 100644 index 352749a..0000000 --- a/build/resources/main/static/assets/MonthlyStats-Bt4dp30j.css +++ /dev/null @@ -1 +0,0 @@ -.page-header[data-v-7c1c78fe]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h2[data-v-7c1c78fe]{margin:0}.filter-section[data-v-7c1c78fe]{display:flex;align-items:center;gap:8px}.filter-section input[type=month][data-v-7c1c78fe]{padding:10px 16px;border:1px solid #ddd;border-radius:6px;font-size:14px;cursor:pointer}.filter-section input[type=month][data-v-7c1c78fe]:focus{outline:none;border-color:#3498db}.nav-btn[data-v-7c1c78fe]{padding:10px 16px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;font-size:14px;transition:all .2s}.nav-btn[data-v-7c1c78fe]:hover{background:#f0f0f0;border-color:#3498db}.loading[data-v-7c1c78fe],.no-data[data-v-7c1c78fe]{text-align:center;padding:60px;color:#666;background:#fff;border-radius:8px}.server-charts[data-v-7c1c78fe]{display:flex;flex-direction:column;gap:20px}.server-chart-card[data-v-7c1c78fe]{width:100%}.chart-header[data-v-7c1c78fe]{display:flex;align-items:center;gap:12px}.chart-header h3[data-v-7c1c78fe]{margin:0;font-size:16px}.chart-subtitle[data-v-7c1c78fe]{font-size:13px;color:#888}.chart-container[data-v-7c1c78fe]{height:220px;padding:8px 0} diff --git a/build/resources/main/static/assets/PatternManage-BexqVEVy.css b/build/resources/main/static/assets/PatternManage-BexqVEVy.css deleted file mode 100644 index 64806cc..0000000 --- a/build/resources/main/static/assets/PatternManage-BexqVEVy.css +++ /dev/null @@ -1 +0,0 @@ -.page-header[data-v-821062ae]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h2[data-v-821062ae]{margin:0}.loading[data-v-821062ae],.empty-state[data-v-821062ae]{text-align:center;padding:60px;background:#fff;border-radius:8px;color:#666}.empty-state p[data-v-821062ae]{margin-bottom:16px}.pattern-grid[data-v-821062ae]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px}.pattern-card[data-v-821062ae]{transition:box-shadow .2s,transform .2s}.pattern-card[data-v-821062ae]:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.pattern-header[data-v-821062ae]{display:flex;justify-content:space-between;align-items:center}.pattern-title[data-v-821062ae]{display:flex;align-items:center;gap:10px}.pattern-title h4[data-v-821062ae]{margin:0;font-size:16px;font-weight:600}.pattern-body[data-v-821062ae]{padding:4px 0}.pattern-info[data-v-821062ae]{margin-bottom:12px}.pattern-info label[data-v-821062ae]{display:block;font-size:12px;color:#666;margin-bottom:4px}.regex-box[data-v-821062ae]{display:block;font-family:Consolas,Monaco,monospace;background:#f1f3f5;padding:10px 12px;border-radius:6px;font-size:13px;word-break:break-all;line-height:1.4;border-left:3px solid #3498db}.regex-box.exclude[data-v-821062ae]{border-left-color:#e67e22;background:#fef5e7}.pattern-meta[data-v-821062ae]{display:flex;flex-wrap:wrap;gap:12px;padding-top:8px;border-top:1px solid #eee;font-size:13px}.meta-item[data-v-821062ae]{display:flex;align-items:center;gap:4px}.meta-label[data-v-821062ae]{color:#888}.meta-value[data-v-821062ae]{font-weight:500;color:#333}.meta-item.description[data-v-821062ae]{flex-basis:100%;color:#666;font-style:italic}.pattern-actions[data-v-821062ae]{display:flex;gap:8px;padding-top:12px;border-top:1px solid #eee;margin-top:12px}.action-btn[data-v-821062ae]{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:10px 12px;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}.action-btn.test[data-v-821062ae]{background:#e8f4fd;color:#2980b9}.action-btn.test[data-v-821062ae]:hover{background:#d4e9f7}.action-btn.edit[data-v-821062ae]{background:#fef3e2;color:#d68910}.action-btn.edit[data-v-821062ae]:hover{background:#fce8c9}.action-btn.delete[data-v-821062ae]{background:#fdeaea;color:#c0392b}.action-btn.delete[data-v-821062ae]:hover{background:#f9d6d6}.form-group[data-v-821062ae]{margin-bottom:16px}.form-group label[data-v-821062ae]{display:flex;align-items:center;gap:8px;cursor:pointer}.test-section[data-v-821062ae]{display:flex;flex-direction:column;gap:16px}.test-pattern label[data-v-821062ae]{display:block;font-weight:500;margin-bottom:6px}.regex-display[data-v-821062ae]{display:block;font-family:monospace;background:#f8f9fa;padding:12px;border-radius:4px;font-size:13px;word-break:break-all}.test-result[data-v-821062ae]{padding:16px;border-radius:8px;margin-top:8px}.test-result.success[data-v-821062ae]{background:#d4edda;border:1px solid #c3e6cb}.test-result.fail[data-v-821062ae]{background:#f8d7da;border:1px solid #f5c6cb}.test-result h4[data-v-821062ae]{margin:0 0 12px}.test-result p[data-v-821062ae]{margin:0}.match-info[data-v-821062ae]{margin-top:8px}.match-info label[data-v-821062ae]{font-weight:500;margin-right:8px}.match-info code[data-v-821062ae]{background:#0000001a;padding:2px 6px;border-radius:3px}.error-msg[data-v-821062ae]{color:#721c24} diff --git a/build/resources/main/static/assets/PatternManage-CxrI6HBG.js b/build/resources/main/static/assets/PatternManage-CxrI6HBG.js deleted file mode 100644 index cc36efb..0000000 --- a/build/resources/main/static/assets/PatternManage-CxrI6HBG.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as J,r as u,o as G,a as p,b as t,f as n,w as i,u as s,F as H,g as K,h as v,i as d,d as Q,e as F,t as r,m as X,l as Y,q as Z,n as h}from"./index-DFoOAXeQ.js";import{p as V,C as ee}from"./index--fsvNaiQ.js";import{M as I}from"./Modal-BaZTW7NU.js";import{F as c}from"./FormInput-BsW78DWl.js";import{B as f}from"./Button-Ddldcbk7.js";import{B as $}from"./Badge-SZTgBg80.js";const le={class:"pattern-manage"},te={class:"page-header"},ae={key:0,class:"loading"},se={key:1,class:"empty-state"},oe={key:2,class:"pattern-grid"},ne={class:"pattern-header"},ie={class:"pattern-title"},ue={class:"pattern-body"},de={class:"pattern-info"},re={class:"regex-box"},ve={key:0,class:"pattern-info"},me={class:"regex-box exclude"},pe={class:"pattern-meta"},fe={class:"meta-item"},ce={class:"meta-value"},xe={key:0,class:"meta-item description"},ge={class:"pattern-actions"},ye=["onClick"],Ve=["onClick"],be=["onClick"],Re={class:"form-group"},ke={class:"test-section"},Ce={class:"test-pattern"},we={class:"regex-display"},Ee={key:0,class:"error-msg"},Me={key:1},Le={class:"match-info"},Te={class:"match-info"},Ae={key:2},Ue={__name:"PatternManage",setup(_e){const O=[{value:"CRITICAL",label:"CRITICAL"},{value:"ERROR",label:"ERROR"},{value:"WARN",label:"WARN"}],w=u([]),E=u(!1),M=u(!1),L=u(!1),T=u(!1),x=u(!1),b=u(!1),A=u(null),o=u({name:"",regex:"",excludeRegex:"",severity:"ERROR",contextLines:5,description:"",active:!0}),R=u(!1),k=u(null),g=u(""),m=u(null),y=u(!1),U=u(null),_=async()=>{E.value=!0;try{w.value=await V.getAll()}catch(a){console.error("Failed to load patterns:",a),alert("패턴 목록을 불러오는데 실패했습니다.")}finally{E.value=!1}},B=()=>{b.value=!1,A.value=null,o.value={name:"",regex:"",excludeRegex:"",severity:"ERROR",contextLines:5,description:"",active:!0},x.value=!0},S=a=>{b.value=!0,A.value=a.id,o.value={name:a.name,regex:a.regex,excludeRegex:a.excludeRegex||"",severity:a.severity,contextLines:a.contextLines,description:a.description||"",active:a.active},x.value=!0},N=async()=>{if(!o.value.name||!o.value.regex){alert("필수 항목을 입력해주세요.");return}M.value=!0;try{b.value?await V.update(A.value,o.value):await V.create(o.value),x.value=!1,await _()}catch(a){console.error("Failed to save pattern:",a),alert("저장에 실패했습니다. 정규식 문법을 확인해주세요.")}finally{M.value=!1}},q=a=>{U.value=a,y.value=!0},D=async()=>{L.value=!0;try{await V.delete(U.value.id),y.value=!1,await _()}catch(a){console.error("Failed to delete pattern:",a),alert("삭제에 실패했습니다.")}finally{L.value=!1}},z=a=>{k.value=a,g.value="",m.value=null,R.value=!0},W=async()=>{if(g.value){T.value=!0;try{m.value=await V.test(k.value.regex,g.value)}catch(a){console.error("Failed to test pattern:",a),alert("테스트 실행에 실패했습니다.")}finally{T.value=!1}}},j=a=>({CRITICAL:"critical",ERROR:"error",WARN:"warn"})[a]||"default";return G(()=>{_()}),(a,e)=>{var P;return v(),p("div",le,[t("div",te,[e[15]||(e[15]=t("h2",null,"패턴 관리",-1)),n(s(f),{onClick:B},{default:i(()=>[...e[14]||(e[14]=[d("+ 패턴 추가",-1)])]),_:1})]),E.value?(v(),p("div",ae,[...e[16]||(e[16]=[t("p",null,"로딩중...",-1)])])):w.value.length===0?(v(),p("div",se,[e[18]||(e[18]=t("p",null,"등록된 패턴이 없습니다.",-1)),n(s(f),{onClick:B},{default:i(()=>[...e[17]||(e[17]=[d("첫 패턴 추가하기",-1)])]),_:1})])):(v(),p("div",oe,[(v(!0),p(H,null,K(w.value,l=>(v(),Q(s(ee),{key:l.id,class:"pattern-card"},{header:i(()=>[t("div",ne,[t("div",ie,[n(s($),{variant:j(l.severity),size:"sm"},{default:i(()=>[d(r(l.severity),1)]),_:2},1032,["variant"]),t("h4",null,r(l.name),1)]),n(s($),{variant:l.active?"success":"default",size:"sm"},{default:i(()=>[d(r(l.active?"활성":"비활성"),1)]),_:2},1032,["variant"])])]),default:i(()=>[t("div",ue,[t("div",de,[e[19]||(e[19]=t("label",null,"정규식",-1)),t("code",re,r(l.regex),1)]),l.excludeRegex?(v(),p("div",ve,[e[20]||(e[20]=t("label",null,"제외 정규식",-1)),t("code",me,r(l.excludeRegex),1)])):F("",!0),t("div",pe,[t("span",fe,[e[21]||(e[21]=t("span",{class:"meta-label"},"컨텍스트",-1)),t("span",ce,r(l.contextLines)+"줄",1)]),l.description?(v(),p("span",xe,r(l.description),1)):F("",!0)])]),t("div",ge,[t("button",{class:"action-btn test",onClick:C=>z(l),title:"테스트"}," 🧪 테스트 ",8,ye),t("button",{class:"action-btn edit",onClick:C=>S(l),title:"수정"}," ✏️ 수정 ",8,Ve),t("button",{class:"action-btn delete",onClick:C=>q(l),title:"삭제"}," 🗑️ 삭제 ",8,be)])]),_:2},1024))),128))])),n(s(I),{modelValue:x.value,"onUpdate:modelValue":e[8]||(e[8]=l=>x.value=l),title:b.value?"패턴 수정":"패턴 추가",width:"600px"},{footer:i(()=>[n(s(f),{variant:"secondary",onClick:e[7]||(e[7]=l=>x.value=!1)},{default:i(()=>[...e[23]||(e[23]=[d("취소",-1)])]),_:1}),n(s(f),{onClick:N,loading:M.value},{default:i(()=>[...e[24]||(e[24]=[d("저장",-1)])]),_:1},8,["loading"])]),default:i(()=>[t("form",{onSubmit:X(N,["prevent"])},[n(s(c),{modelValue:o.value.name,"onUpdate:modelValue":e[0]||(e[0]=l=>o.value.name=l),label:"패턴명",placeholder:"예: NullPointerException",required:""},null,8,["modelValue"]),n(s(c),{modelValue:o.value.regex,"onUpdate:modelValue":e[1]||(e[1]=l=>o.value.regex=l),label:"정규식",type:"textarea",rows:3,placeholder:"예: (Exception|Error|SEVERE|FATAL)",required:"",hint:"Java 정규식 문법을 사용합니다."},null,8,["modelValue"]),n(s(c),{modelValue:o.value.excludeRegex,"onUpdate:modelValue":e[2]||(e[2]=l=>o.value.excludeRegex=l),label:"제외 정규식",type:"textarea",rows:2,placeholder:"예: throws\\\\s+(Exception|java\\\\.lang\\\\.Exception)",hint:"이 패턴에 매칭되면 에러에서 제외됩니다. (선택)"},null,8,["modelValue"]),n(s(c),{modelValue:o.value.severity,"onUpdate:modelValue":e[3]||(e[3]=l=>o.value.severity=l),label:"심각도",type:"select",options:O,required:""},null,8,["modelValue"]),n(s(c),{modelValue:o.value.contextLines,"onUpdate:modelValue":e[4]||(e[4]=l=>o.value.contextLines=l),label:"컨텍스트 라인 수",type:"number",placeholder:"5",hint:"에러 전후로 캡처할 라인 수"},null,8,["modelValue"]),n(s(c),{modelValue:o.value.description,"onUpdate:modelValue":e[5]||(e[5]=l=>o.value.description=l),label:"설명",type:"textarea",rows:2,placeholder:"이 패턴에 대한 설명"},null,8,["modelValue"]),t("div",Re,[t("label",null,[Y(t("input",{type:"checkbox","onUpdate:modelValue":e[6]||(e[6]=l=>o.value.active=l)},null,512),[[Z,o.value.active]]),e[22]||(e[22]=d(" 활성화 ",-1))])])],32)]),_:1},8,["modelValue","title"]),n(s(I),{modelValue:R.value,"onUpdate:modelValue":e[11]||(e[11]=l=>R.value=l),title:`패턴 테스트 - ${((P=k.value)==null?void 0:P.name)||""}`,width:"700px"},{footer:i(()=>[n(s(f),{variant:"secondary",onClick:e[10]||(e[10]=l=>R.value=!1)},{default:i(()=>[...e[32]||(e[32]=[d("닫기",-1)])]),_:1})]),default:i(()=>{var l;return[t("div",ke,[t("div",Ce,[e[25]||(e[25]=t("label",null,"정규식",-1)),t("code",we,r((l=k.value)==null?void 0:l.regex),1)]),n(s(c),{modelValue:g.value,"onUpdate:modelValue":e[9]||(e[9]=C=>g.value=C),label:"테스트할 텍스트",type:"textarea",rows:6,placeholder:"로그 텍스트를 붙여넣으세요..."},null,8,["modelValue"]),n(s(f),{onClick:W,loading:T.value,disabled:!g.value},{default:i(()=>[...e[26]||(e[26]=[d(" 테스트 실행 ",-1)])]),_:1},8,["loading","disabled"]),m.value?(v(),p("div",{key:0,class:h(["test-result",{success:m.value.matched,fail:!m.value.matched}])},[e[31]||(e[31]=t("h4",null,"테스트 결과",-1)),m.value.validRegex?m.value.matched?(v(),p("div",Me,[e[29]||(e[29]=t("p",null,"✅ 매칭 성공!",-1)),t("div",Le,[e[27]||(e[27]=t("label",null,"매칭된 텍스트:",-1)),t("code",null,r(m.value.matchedText),1)]),t("div",Te,[e[28]||(e[28]=t("label",null,"위치:",-1)),t("span",null,r(m.value.matchStart)+" ~ "+r(m.value.matchEnd),1)])])):(v(),p("div",Ae,[...e[30]||(e[30]=[t("p",null,"❌ 매칭 없음",-1)])])):(v(),p("div",Ee," ❌ 정규식 오류: "+r(m.value.errorMessage),1))],2)):F("",!0)])]}),_:1},8,["modelValue","title"]),n(s(I),{modelValue:y.value,"onUpdate:modelValue":e[13]||(e[13]=l=>y.value=l),title:"패턴 삭제",width:"400px"},{footer:i(()=>[n(s(f),{variant:"secondary",onClick:e[12]||(e[12]=l=>y.value=!1)},{default:i(()=>[...e[35]||(e[35]=[d("취소",-1)])]),_:1}),n(s(f),{variant:"danger",onClick:D,loading:L.value},{default:i(()=>[...e[36]||(e[36]=[d("삭제",-1)])]),_:1},8,["loading"])]),default:i(()=>{var l;return[t("p",null,[e[33]||(e[33]=d("정말로 ",-1)),t("strong",null,r((l=U.value)==null?void 0:l.name),1),e[34]||(e[34]=d(" 패턴을 삭제하시겠습니까?",-1))])]}),_:1},8,["modelValue"])])}}},Oe=J(Ue,[["__scopeId","data-v-821062ae"]]);export{Oe as default}; diff --git a/build/resources/main/static/assets/ServerManage-8NeMNC-c.css b/build/resources/main/static/assets/ServerManage-8NeMNC-c.css deleted file mode 100644 index e98c8d6..0000000 --- a/build/resources/main/static/assets/ServerManage-8NeMNC-c.css +++ /dev/null @@ -1 +0,0 @@ -.page-header[data-v-18b9f6a3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h2[data-v-18b9f6a3]{margin:0}.loading[data-v-18b9f6a3],.empty-state[data-v-18b9f6a3]{text-align:center;padding:60px;background:#fff;border-radius:8px;color:#666}.empty-state p[data-v-18b9f6a3]{margin-bottom:16px}.server-grid[data-v-18b9f6a3]{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:20px}.server-card[data-v-18b9f6a3]{transition:box-shadow .2s,transform .2s}.server-card[data-v-18b9f6a3]:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.server-header[data-v-18b9f6a3]{display:flex;justify-content:space-between;align-items:center}.server-title[data-v-18b9f6a3]{display:flex;align-items:center;gap:10px}.server-title h4[data-v-18b9f6a3]{margin:0;font-size:16px;font-weight:600}.server-body[data-v-18b9f6a3]{padding:4px 0}.progress-section[data-v-18b9f6a3]{padding:12px;background:#f8f9fa;border-radius:8px;margin-top:12px}.progress-header[data-v-18b9f6a3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.status-text[data-v-18b9f6a3]{font-size:13px;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:250px}.progress-bar-container[data-v-18b9f6a3]{height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-bar[data-v-18b9f6a3]{height:100%;background:#3498db;transition:width .3s}.progress-details[data-v-18b9f6a3]{display:flex;justify-content:space-between;font-size:12px;color:#666}.server-info-grid[data-v-18b9f6a3]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.info-item[data-v-18b9f6a3]{display:flex;align-items:flex-start;gap:8px}.info-icon[data-v-18b9f6a3]{font-size:16px;line-height:1;margin-top:2px}.info-content[data-v-18b9f6a3]{display:flex;flex-direction:column}.info-label[data-v-18b9f6a3]{font-size:11px;color:#888;text-transform:uppercase}.info-value[data-v-18b9f6a3]{font-size:14px;font-weight:500;color:#333}.server-actions[data-v-18b9f6a3]{display:flex;gap:8px;padding-top:12px;border-top:1px solid #eee;margin-top:12px}.action-btn[data-v-18b9f6a3]{display:flex;align-items:center;justify-content:center;gap:4px;padding:10px 12px;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}.action-btn.scan[data-v-18b9f6a3]{flex:1.5;background:#3498db;color:#fff}.action-btn.scan[data-v-18b9f6a3]:hover:not(:disabled){background:#2980b9}.action-btn.scan[data-v-18b9f6a3]:disabled{opacity:.6;cursor:not-allowed}.action-btn.test[data-v-18b9f6a3]{flex:0;padding:10px 14px;background:#e8f8f0;color:#27ae60}.action-btn.test[data-v-18b9f6a3]:hover:not(:disabled){background:#d4f0e3}.action-btn.test[data-v-18b9f6a3]:disabled{opacity:.7;cursor:not-allowed}.action-btn.path[data-v-18b9f6a3]{flex:0;padding:10px 14px;background:#e8f4fd;color:#2980b9}.action-btn.path[data-v-18b9f6a3]:hover{background:#d4e9f7}.action-btn.edit[data-v-18b9f6a3]{flex:0;padding:10px 14px;background:#fef3e2;color:#d68910}.action-btn.edit[data-v-18b9f6a3]:hover{background:#fce8c9}.action-btn.delete[data-v-18b9f6a3]{flex:0;padding:10px 14px;background:#fdeaea;color:#c0392b}.action-btn.delete[data-v-18b9f6a3]:hover{background:#f9d6d6}.form-group[data-v-18b9f6a3]{margin-bottom:16px}.form-group label[data-v-18b9f6a3]{display:flex;align-items:center;gap:8px;cursor:pointer}.log-path-section h4[data-v-18b9f6a3]{margin:0 0 12px;font-size:14px;color:#333}.log-path-form[data-v-18b9f6a3]{padding:16px;background:#f8f9fa;border-radius:8px;margin-bottom:20px}.log-path-inputs[data-v-18b9f6a3]{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:12px;margin-bottom:12px}.log-path-list[data-v-18b9f6a3]{padding:16px;background:#fff;border:1px solid #eee;border-radius:8px}.empty-paths[data-v-18b9f6a3]{text-align:center;padding:20px;color:#888}.path-cards[data-v-18b9f6a3]{display:flex;flex-direction:column;gap:10px}.path-card[data-v-18b9f6a3]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#f8f9fa;border-radius:6px;border-left:3px solid #3498db}.path-info[data-v-18b9f6a3]{flex:1}.path-main[data-v-18b9f6a3]{display:flex;align-items:center;gap:12px;margin-bottom:4px}.path-value[data-v-18b9f6a3]{font-family:monospace;font-size:13px;background:#e9ecef;padding:4px 8px;border-radius:4px}.path-pattern[data-v-18b9f6a3]{font-size:12px;color:#666;background:#fff3cd;padding:2px 8px;border-radius:4px}.path-meta[data-v-18b9f6a3]{display:flex;align-items:center;gap:8px}.path-desc[data-v-18b9f6a3]{font-size:12px;color:#888}.path-delete[data-v-18b9f6a3]{background:none;border:none;cursor:pointer;font-size:16px;padding:8px;border-radius:4px;transition:background .2s}.path-delete[data-v-18b9f6a3]:hover{background:#fdeaea}.warning-text[data-v-18b9f6a3]{color:#e74c3c;font-size:14px}.test-result[data-v-18b9f6a3]{padding:16px;border-radius:8px}.test-result.success[data-v-18b9f6a3]{background:#d4edda;border:1px solid #c3e6cb}.test-result.fail[data-v-18b9f6a3]{background:#f8d7da;border:1px solid #f5c6cb}.test-result p[data-v-18b9f6a3]{margin:0} diff --git a/build/resources/main/static/assets/ServerManage-cIpW_dU_.js b/build/resources/main/static/assets/ServerManage-cIpW_dU_.js deleted file mode 100644 index 38615c5..0000000 --- a/build/resources/main/static/assets/ServerManage-cIpW_dU_.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as ne,r as d,o as ie,a as m,b as a,f as n,w as i,u as o,F as Y,g as G,h as v,i as p,d as A,e as w,t as u,j as ue,m as de,l as re,q as ve,n as pe}from"./index-DFoOAXeQ.js";import{s as P,C as ce,a as me,l as U}from"./index--fsvNaiQ.js";import{M as E}from"./Modal-BaZTW7NU.js";import{F as f}from"./FormInput-BsW78DWl.js";import{B as h}from"./Button-Ddldcbk7.js";import{B as R}from"./Badge-SZTgBg80.js";const fe={class:"server-manage"},he={class:"page-header"},ye={key:0,class:"loading"},ge={key:1,class:"empty-state"},Ve={key:2,class:"server-grid"},ke={class:"server-header"},be={class:"server-title"},_e={class:"server-body"},Se={class:"server-info-grid"},Fe={class:"info-item"},Ce={class:"info-content"},we={class:"info-value"},Pe={class:"info-item"},Ue={class:"info-content"},Ie={class:"info-value"},Te={class:"info-item"},Me={class:"info-content"},Ae={class:"info-value"},Ee={class:"info-item"},$e={class:"info-content"},xe={class:"info-value"},De={key:0,class:"progress-section"},Le={class:"progress-header"},Be={class:"status-text"},Ne={class:"progress-bar-container"},Re={class:"progress-details"},qe={class:"server-actions"},Oe=["onClick","disabled"],We=["onClick","disabled"],ze=["onClick"],Ke=["onClick"],Ye=["onClick"],Ge={class:"form-group"},je={class:"log-path-section"},He={class:"log-path-form"},Je={class:"log-path-inputs"},Qe={class:"log-path-list"},Xe={key:0,class:"empty-paths"},Ze={key:1,class:"path-cards"},el={class:"path-info"},ll={class:"path-main"},al={class:"path-value"},tl={class:"path-pattern"},sl={class:"path-meta"},ol={key:0,class:"path-desc"},nl=["onClick"],il={key:0},ul={key:1},dl={__name:"ServerManage",setup(rl){const j=[{value:"PASSWORD",label:"비밀번호"},{value:"KEY_FILE",label:"키 파일"}],$=d([]),x=d(!1),D=d(!1),L=d(!1),b=d(!1),g=d(!1),B=d(null),s=d({name:"",host:"",port:22,username:"",authType:"PASSWORD",password:"",keyFilePath:"",passphrase:"",active:!0}),I=d(!1),_=d(null),V=d([]),c=d({path:"",filePattern:"",description:""}),S=d(!1),N=d(null),F=d(null),r=d({}),T=d(null),C=d(!1),k=d(null),M=async()=>{x.value=!0;try{$.value=await P.getAll()}catch(t){console.error("Failed to load servers:",t),alert("서버 목록을 불러오는데 실패했습니다.")}finally{x.value=!1}},q=()=>{g.value=!1,B.value=null,s.value={name:"",host:"",port:22,username:"",authType:"PASSWORD",password:"",keyFilePath:"",passphrase:"",active:!0},b.value=!0},H=t=>{g.value=!0,B.value=t.id,s.value={name:t.name,host:t.host,port:t.port,username:t.username,authType:t.authType,password:"",keyFilePath:t.keyFilePath||"",passphrase:"",active:t.active},b.value=!0},O=async()=>{if(!s.value.name||!s.value.host||!s.value.username){alert("필수 항목을 입력해주세요.");return}D.value=!0;try{g.value?await P.update(B.value,s.value):await P.create(s.value),b.value=!1,await M()}catch(t){console.error("Failed to save server:",t),alert("저장에 실패했습니다.")}finally{D.value=!1}},J=t=>{N.value=t,S.value=!0},Q=async()=>{L.value=!0;try{await P.delete(N.value.id),S.value=!1,await M()}catch(t){console.error("Failed to delete server:",t),alert("삭제에 실패했습니다.")}finally{L.value=!1}},X=t=>{F.value=t.id,r.value[t.id]={status:"RUNNING",currentPath:"",currentFile:"",totalFiles:0,scannedFiles:0,errorsFound:0},me.startWithProgress(t.id,e=>{r.value[t.id]=e},e=>{F.value=null,e.success?r.value[t.id]={...r.value[t.id],status:"SUCCESS",message:`완료: ${e.filesScanned}개 파일, ${e.errorsFound}개 에러`}:r.value[t.id]={...r.value[t.id],status:"FAILED",message:e.error},M(),setTimeout(()=>{delete r.value[t.id]},5e3)},e=>{F.value=null,r.value[t.id]={...r.value[t.id],status:"FAILED",message:e}})},Z=t=>t.status==="SUCCESS"?t.message||"완료":t.status==="FAILED"?t.message||"실패":t.currentFile?`분석중: ${t.currentFile}`:t.currentPath?`경로: ${t.currentPath}`:"준비중...",ee=t=>t.totalFiles===0?0:Math.round(t.scannedFiles/t.totalFiles*100),le=async t=>{T.value=t.id;try{k.value=await P.testConnection(t.id),C.value=!0}catch(e){console.error("Failed to test connection:",e),k.value={success:!1,error:"연결 테스트 실패: "+e.message},C.value=!0}finally{T.value=null}},ae=async t=>{_.value=t,c.value={path:"",filePattern:"",description:""};try{V.value=await U.getByServerId(t.id)}catch(e){console.error("Failed to load log paths:",e),V.value=[]}I.value=!0},te=async()=>{try{await U.create({serverId:_.value.id,path:c.value.path,filePattern:c.value.filePattern,description:c.value.description,active:!0}),V.value=await U.getByServerId(_.value.id),c.value={path:"",filePattern:"",description:""}}catch(t){console.error("Failed to add log path:",t),alert("경로 추가에 실패했습니다.")}},se=async t=>{if(confirm("이 경로를 삭제하시겠습니까?"))try{await U.delete(t),V.value=await U.getByServerId(_.value.id)}catch(e){console.error("Failed to delete log path:",e),alert("경로 삭제에 실패했습니다.")}},oe=t=>new Date(t).toLocaleString("ko-KR");return ie(()=>{M()}),(t,e)=>{var W;return v(),m("div",fe,[a("div",he,[e[21]||(e[21]=a("h2",null,"서버 관리",-1)),n(o(h),{onClick:q},{default:i(()=>[...e[20]||(e[20]=[p("+ 서버 추가",-1)])]),_:1})]),x.value?(v(),m("div",ye,[...e[22]||(e[22]=[a("p",null,"로딩중...",-1)])])):$.value.length===0?(v(),m("div",ge,[e[24]||(e[24]=a("p",null,"등록된 서버가 없습니다.",-1)),n(o(h),{onClick:q},{default:i(()=>[...e[23]||(e[23]=[p("첫 서버 추가하기",-1)])]),_:1})])):(v(),m("div",Ve,[(v(!0),m(Y,null,G($.value,l=>(v(),A(o(ce),{key:l.id,class:"server-card"},{header:i(()=>[a("div",ke,[a("div",be,[n(o(R),{variant:l.active?"success":"default",size:"sm"},{default:i(()=>[p(u(l.active?"활성":"비활성"),1)]),_:2},1032,["variant"]),a("h4",null,u(l.name),1)])])]),default:i(()=>[a("div",_e,[a("div",Se,[a("div",Fe,[e[26]||(e[26]=a("span",{class:"info-icon"},"🌐",-1)),a("div",Ce,[e[25]||(e[25]=a("span",{class:"info-label"},"호스트",-1)),a("span",we,u(l.host)+":"+u(l.port),1)])]),a("div",Pe,[e[28]||(e[28]=a("span",{class:"info-icon"},"👤",-1)),a("div",Ue,[e[27]||(e[27]=a("span",{class:"info-label"},"사용자",-1)),a("span",Ie,u(l.username),1)])]),a("div",Te,[e[30]||(e[30]=a("span",{class:"info-icon"},"🔑",-1)),a("div",Me,[e[29]||(e[29]=a("span",{class:"info-label"},"인증방식",-1)),a("span",Ae,u(l.authType==="PASSWORD"?"비밀번호":"키 파일"),1)])]),a("div",Ee,[e[32]||(e[32]=a("span",{class:"info-icon"},"📅",-1)),a("div",$e,[e[31]||(e[31]=a("span",{class:"info-label"},"마지막 분석",-1)),a("span",xe,u(l.lastScanAt?oe(l.lastScanAt):"-"),1)])])])]),r.value[l.id]?(v(),m("div",De,[a("div",Le,[a("span",Be,u(Z(r.value[l.id])),1),n(o(R),{variant:r.value[l.id].status==="RUNNING"?"warn":r.value[l.id].status==="SUCCESS"?"success":"error"},{default:i(()=>[p(u(r.value[l.id].status),1)]),_:2},1032,["variant"])]),a("div",Ne,[a("div",{class:"progress-bar",style:ue({width:ee(r.value[l.id])+"%"})},null,4)]),a("div",Re,[a("span",null,"파일: "+u(r.value[l.id].scannedFiles)+" / "+u(r.value[l.id].totalFiles),1),a("span",null,"에러: "+u(r.value[l.id].errorsFound)+"건",1)])])):w("",!0),a("div",qe,[a("button",{class:"action-btn scan",onClick:y=>X(l),disabled:!l.active||F.value===l.id},u(F.value===l.id?"⏳ 분석중...":"▶️ 분석 실행"),9,Oe),a("button",{class:"action-btn test",onClick:y=>le(l),disabled:T.value===l.id},u(T.value===l.id?"⏳":"🔌"),9,We),a("button",{class:"action-btn path",onClick:y=>ae(l)}," 📁 ",8,ze),a("button",{class:"action-btn edit",onClick:y=>H(l)}," ✏️ ",8,Ke),a("button",{class:"action-btn delete",onClick:y=>J(l)}," 🗑️ ",8,Ye)])]),_:2},1024))),128))])),n(o(E),{modelValue:b.value,"onUpdate:modelValue":e[10]||(e[10]=l=>b.value=l),title:g.value?"서버 수정":"서버 추가",width:"500px"},{footer:i(()=>[n(o(h),{variant:"secondary",onClick:e[9]||(e[9]=l=>b.value=!1)},{default:i(()=>[...e[34]||(e[34]=[p("취소",-1)])]),_:1}),n(o(h),{onClick:O,loading:D.value},{default:i(()=>[...e[35]||(e[35]=[p("저장",-1)])]),_:1},8,["loading"])]),default:i(()=>[a("form",{onSubmit:de(O,["prevent"])},[n(o(f),{modelValue:s.value.name,"onUpdate:modelValue":e[0]||(e[0]=l=>s.value.name=l),label:"서버명",placeholder:"예: 운영서버1",required:""},null,8,["modelValue"]),n(o(f),{modelValue:s.value.host,"onUpdate:modelValue":e[1]||(e[1]=l=>s.value.host=l),label:"호스트",placeholder:"예: 192.168.1.100",required:""},null,8,["modelValue"]),n(o(f),{modelValue:s.value.port,"onUpdate:modelValue":e[2]||(e[2]=l=>s.value.port=l),label:"포트",type:"number",placeholder:"22"},null,8,["modelValue"]),n(o(f),{modelValue:s.value.username,"onUpdate:modelValue":e[3]||(e[3]=l=>s.value.username=l),label:"사용자명",placeholder:"예: root",required:""},null,8,["modelValue"]),n(o(f),{modelValue:s.value.authType,"onUpdate:modelValue":e[4]||(e[4]=l=>s.value.authType=l),label:"인증 방식",type:"select",options:j,required:""},null,8,["modelValue"]),s.value.authType==="PASSWORD"?(v(),A(o(f),{key:0,modelValue:s.value.password,"onUpdate:modelValue":e[5]||(e[5]=l=>s.value.password=l),label:"비밀번호",type:"password",placeholder:g.value?"변경 시에만 입력":"비밀번호 입력",required:!g.value},null,8,["modelValue","placeholder","required"])):w("",!0),s.value.authType==="KEY_FILE"?(v(),A(o(f),{key:1,modelValue:s.value.keyFilePath,"onUpdate:modelValue":e[6]||(e[6]=l=>s.value.keyFilePath=l),label:"키 파일 경로",placeholder:"예: C:\\Users\\user\\.ssh\\id_rsa",required:""},null,8,["modelValue"])):w("",!0),s.value.authType==="KEY_FILE"?(v(),A(o(f),{key:2,modelValue:s.value.passphrase,"onUpdate:modelValue":e[7]||(e[7]=l=>s.value.passphrase=l),label:"Passphrase",type:"password",placeholder:g.value?"변경 시에만 입력":"Passphrase (없으면 비워두세요)"},null,8,["modelValue","placeholder"])):w("",!0),a("div",Ge,[a("label",null,[re(a("input",{type:"checkbox","onUpdate:modelValue":e[8]||(e[8]=l=>s.value.active=l)},null,512),[[ve,s.value.active]]),e[33]||(e[33]=p(" 활성화 ",-1))])])],32)]),_:1},8,["modelValue","title"]),n(o(E),{modelValue:I.value,"onUpdate:modelValue":e[15]||(e[15]=l=>I.value=l),title:`로그 경로 관리 - ${((W=_.value)==null?void 0:W.name)||""}`,width:"750px"},{footer:i(()=>[n(o(h),{variant:"secondary",onClick:e[14]||(e[14]=l=>I.value=!1)},{default:i(()=>[...e[38]||(e[38]=[p("닫기",-1)])]),_:1})]),default:i(()=>[a("div",je,[a("div",He,[e[37]||(e[37]=a("h4",null,"➕ 경로 추가",-1)),a("div",Je,[n(o(f),{modelValue:c.value.path,"onUpdate:modelValue":e[11]||(e[11]=l=>c.value.path=l),label:"경로",placeholder:"예: /var/log/tomcat/"},null,8,["modelValue"]),n(o(f),{modelValue:c.value.filePattern,"onUpdate:modelValue":e[12]||(e[12]=l=>c.value.filePattern=l),label:"파일 패턴",placeholder:"예: *.log"},null,8,["modelValue"]),n(o(f),{modelValue:c.value.description,"onUpdate:modelValue":e[13]||(e[13]=l=>c.value.description=l),label:"설명",placeholder:"예: Tomcat 로그"},null,8,["modelValue"])]),n(o(h),{size:"sm",onClick:te,disabled:!c.value.path||!c.value.filePattern},{default:i(()=>[...e[36]||(e[36]=[p(" 경로 추가 ",-1)])]),_:1},8,["disabled"])]),a("div",Qe,[a("h4",null,"📂 등록된 경로 ("+u(V.value.length)+"개)",1),V.value.length===0?(v(),m("div",Xe," 등록된 경로가 없습니다. ")):(v(),m("div",Ze,[(v(!0),m(Y,null,G(V.value,l=>(v(),m("div",{key:l.id,class:"path-card"},[a("div",el,[a("div",ll,[a("code",al,u(l.path),1),a("span",tl,u(l.filePattern),1)]),a("div",sl,[l.description?(v(),m("span",ol,u(l.description),1)):w("",!0),n(o(R),{variant:l.active?"success":"default",size:"sm"},{default:i(()=>[p(u(l.active?"활성":"비활성"),1)]),_:2},1032,["variant"])])]),a("button",{class:"path-delete",onClick:y=>se(l.id),title:"삭제"}," 🗑️ ",8,nl)]))),128))]))])])]),_:1},8,["modelValue","title"]),n(o(E),{modelValue:S.value,"onUpdate:modelValue":e[17]||(e[17]=l=>S.value=l),title:"서버 삭제",width:"400px"},{footer:i(()=>[n(o(h),{variant:"secondary",onClick:e[16]||(e[16]=l=>S.value=!1)},{default:i(()=>[...e[41]||(e[41]=[p("취소",-1)])]),_:1}),n(o(h),{variant:"danger",onClick:Q,loading:L.value},{default:i(()=>[...e[42]||(e[42]=[p("삭제",-1)])]),_:1},8,["loading"])]),default:i(()=>{var l;return[a("p",null,[e[39]||(e[39]=p("정말로 ",-1)),a("strong",null,u((l=N.value)==null?void 0:l.name),1),e[40]||(e[40]=p(" 서버를 삭제하시겠습니까?",-1))]),e[43]||(e[43]=a("p",{class:"warning-text"},"⚠️ 관련된 모든 로그 경로와 에러 이력도 함께 삭제됩니다.",-1))]}),_:1},8,["modelValue"]),n(o(E),{modelValue:C.value,"onUpdate:modelValue":e[19]||(e[19]=l=>C.value=l),title:"연결 테스트 결과",width:"450px"},{footer:i(()=>[n(o(h),{variant:"secondary",onClick:e[18]||(e[18]=l=>C.value=!1)},{default:i(()=>[...e[44]||(e[44]=[p("닫기",-1)])]),_:1})]),default:i(()=>{var l,y,z,K;return[a("div",{class:pe(["test-result",{success:(l=k.value)==null?void 0:l.success,fail:!((y=k.value)!=null&&y.success)}])},[(z=k.value)!=null&&z.success?(v(),m("div",il,[a("p",null,"✅ "+u(k.value.message),1)])):(v(),m("div",ul,[a("p",null,"❌ "+u((K=k.value)==null?void 0:K.error),1)]))],2)]}),_:1},8,["modelValue"])])}}},yl=ne(dl,[["__scopeId","data-v-18b9f6a3"]]);export{yl as default}; diff --git a/build/resources/main/static/assets/Settings-CipHZo9K.css b/build/resources/main/static/assets/Settings-CipHZo9K.css deleted file mode 100644 index 5ae2011..0000000 --- a/build/resources/main/static/assets/Settings-CipHZo9K.css +++ /dev/null @@ -1 +0,0 @@ -.settings[data-v-fdca948e]{max-width:800px}.card-header-content h3[data-v-fdca948e]{margin:0}.loading[data-v-fdca948e]{text-align:center;padding:40px;color:#666}.settings-form[data-v-fdca948e]{padding:10px 0}.setting-section[data-v-fdca948e]{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.setting-section[data-v-fdca948e]:last-of-type{border-bottom:none}.setting-section h4[data-v-fdca948e]{margin:0 0 20px;font-size:16px;color:#2c3e50}.form-actions[data-v-fdca948e]{display:flex;justify-content:flex-end;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #eee}.app-info[data-v-fdca948e]{margin-top:20px}.app-info h3[data-v-fdca948e]{margin:0}.info-list[data-v-fdca948e]{display:flex;flex-direction:column;gap:12px}.info-item[data-v-fdca948e]{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #f0f0f0}.info-item[data-v-fdca948e]:last-child{border-bottom:none}.info-item .label[data-v-fdca948e]{color:#666}.info-item .value[data-v-fdca948e]{font-weight:500} diff --git a/build/resources/main/static/assets/Settings-Co7-fA4D.js b/build/resources/main/static/assets/Settings-Co7-fA4D.js deleted file mode 100644 index b8454c1..0000000 --- a/build/resources/main/static/assets/Settings-Co7-fA4D.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as S,r as m,o as F,a as p,f as a,w as i,u as n,h as v,m as B,b as t,i as c}from"./index-DFoOAXeQ.js";import{C as V,b}from"./index--fsvNaiQ.js";import{F as u}from"./FormInput-BsW78DWl.js";import{B as y}from"./Button-Ddldcbk7.js";const k={class:"settings"},w={key:0,class:"loading"},C={class:"setting-section"},U={class:"setting-section"},h={class:"setting-section"},M={class:"setting-section"},z={class:"form-actions"},A={__name:"Settings",setup(N){const r=m(!1),d=m(!1),l=m({}),f={"server.port":"8080","export.path":"./exports","retention.days":"90","scan.timeout":"30","scan.maxFileSize":"100"},g=async()=>{r.value=!0;try{const o=await b.getAllAsMap();l.value={...f,...o}}catch(o){console.error("Failed to load settings:",o),l.value={...f}}finally{r.value=!1}},x=async()=>{d.value=!0;try{for(const[o,e]of Object.entries(l.value))await b.save({key:o,value:String(e)});alert("설정이 저장되었습니다.")}catch(o){console.error("Failed to save settings:",o),alert("설정 저장에 실패했습니다.")}finally{d.value=!1}};return F(()=>{g()}),(o,e)=>(v(),p("div",k,[a(n(V),null,{header:i(()=>[...e[5]||(e[5]=[t("div",{class:"card-header-content"},[t("h3",null,"설정")],-1)])]),default:i(()=>[r.value?(v(),p("div",w,"로딩중...")):(v(),p("form",{key:1,onSubmit:B(x,["prevent"]),class:"settings-form"},[t("div",C,[e[6]||(e[6]=t("h4",null,"일반 설정",-1)),a(n(u),{modelValue:l.value["server.port"],"onUpdate:modelValue":e[0]||(e[0]=s=>l.value["server.port"]=s),label:"서버 포트",type:"number",hint:"애플리케이션이 실행될 포트 번호 (기본: 8080)"},null,8,["modelValue"])]),t("div",U,[e[7]||(e[7]=t("h4",null,"내보내기 설정",-1)),a(n(u),{modelValue:l.value["export.path"],"onUpdate:modelValue":e[1]||(e[1]=s=>l.value["export.path"]=s),label:"내보내기 경로",placeholder:"예: C:\\LogHunter\\exports",hint:"리포트 파일이 저장될 기본 경로"},null,8,["modelValue"])]),t("div",h,[e[8]||(e[8]=t("h4",null,"데이터 관리",-1)),a(n(u),{modelValue:l.value["retention.days"],"onUpdate:modelValue":e[2]||(e[2]=s=>l.value["retention.days"]=s),label:"로그 보관 기간 (일)",type:"number",hint:"에러 로그 데이터 보관 기간 (0 = 무제한)"},null,8,["modelValue"])]),t("div",M,[e[9]||(e[9]=t("h4",null,"스캔 설정",-1)),a(n(u),{modelValue:l.value["scan.timeout"],"onUpdate:modelValue":e[3]||(e[3]=s=>l.value["scan.timeout"]=s),label:"스캔 타임아웃 (초)",type:"number",hint:"SFTP 연결 및 파일 다운로드 타임아웃"},null,8,["modelValue"]),a(n(u),{modelValue:l.value["scan.maxFileSize"],"onUpdate:modelValue":e[4]||(e[4]=s=>l.value["scan.maxFileSize"]=s),label:"최대 파일 크기 (MB)",type:"number",hint:"분석할 로그 파일의 최대 크기"},null,8,["modelValue"])]),t("div",z,[a(n(y),{onClick:g,variant:"secondary"},{default:i(()=>[...e[10]||(e[10]=[c("초기화",-1)])]),_:1}),a(n(y),{type:"submit",loading:d.value},{default:i(()=>[...e[11]||(e[11]=[c("저장",-1)])]),_:1},8,["loading"])])],32))]),_:1}),a(n(V),{class:"app-info"},{header:i(()=>[...e[12]||(e[12]=[t("h3",null,"애플리케이션 정보",-1)])]),default:i(()=>[e[13]||(e[13]=t("div",{class:"info-list"},[t("div",{class:"info-item"},[t("span",{class:"label"},"버전"),t("span",{class:"value"},"1.0.0")]),t("div",{class:"info-item"},[t("span",{class:"label"},"프레임워크"),t("span",{class:"value"},"Spring Boot 3.2 + Vue 3")]),t("div",{class:"info-item"},[t("span",{class:"label"},"데이터베이스"),t("span",{class:"value"},"SQLite (./data/loghunter.db)")])],-1))]),_:1})]))}},j=S(A,[["__scopeId","data-v-fdca948e"]]);export{j as default}; diff --git a/build/resources/main/static/assets/chartjs-plugin-datalabels.esm-B8xtR40N.js b/build/resources/main/static/assets/chartjs-plugin-datalabels.esm-B8xtR40N.js deleted file mode 100644 index a0a6691..0000000 --- a/build/resources/main/static/assets/chartjs-plugin-datalabels.esm-B8xtR40N.js +++ /dev/null @@ -1,24 +0,0 @@ -var Yn=Object.defineProperty;var Un=(i,t,e)=>t in i?Yn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var w=(i,t,e)=>Un(i,typeof t!="symbol"?t+"":t,e);import{x as Us,y as Xs,z as oi,A as Xn,r as Kn,o as qn,B as Gn,C as Zn,D as ri,E as Ks,p as Qn}from"./index-DFoOAXeQ.js";/*! - * @kurkle/color v0.3.4 - * https://github.com/kurkle/color#readme - * (c) 2024 Jukka Kurkela - * Released under the MIT License - */function de(i){return i+.5|0}const mt=(i,t,e)=>Math.max(Math.min(i,e),t);function Zt(i){return mt(de(i*2.55),0,255)}function _t(i){return mt(de(i*255),0,255)}function ut(i){return mt(de(i/2.55)/100,0,1)}function Ri(i){return mt(de(i*100),0,100)}const tt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},ai=[..."0123456789ABCDEF"],Jn=i=>ai[i&15],to=i=>ai[(i&240)>>4]+ai[i&15],ue=i=>(i&240)>>4===(i&15),eo=i=>ue(i.r)&&ue(i.g)&&ue(i.b)&&ue(i.a);function io(i){var t=i.length,e;return i[0]==="#"&&(t===4||t===5?e={r:255&tt[i[1]]*17,g:255&tt[i[2]]*17,b:255&tt[i[3]]*17,a:t===5?tt[i[4]]*17:255}:(t===7||t===9)&&(e={r:tt[i[1]]<<4|tt[i[2]],g:tt[i[3]]<<4|tt[i[4]],b:tt[i[5]]<<4|tt[i[6]],a:t===9?tt[i[7]]<<4|tt[i[8]]:255})),e}const so=(i,t)=>i<255?t(i):"";function no(i){var t=eo(i)?Jn:to;return i?"#"+t(i.r)+t(i.g)+t(i.b)+so(i.a,t):void 0}const oo=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function qs(i,t,e){const s=t*Math.min(e,1-e),n=(o,r=(o+i/30)%12)=>e-s*Math.max(Math.min(r-3,9-r,1),-1);return[n(0),n(8),n(4)]}function ro(i,t,e){const s=(n,o=(n+i/60)%6)=>e-e*t*Math.max(Math.min(o,4-o,1),0);return[s(5),s(3),s(1)]}function ao(i,t,e){const s=qs(i,1,.5);let n;for(t+e>1&&(n=1/(t+e),t*=n,e*=n),n=0;n<3;n++)s[n]*=1-t-e,s[n]+=t;return s}function lo(i,t,e,s,n){return i===n?(t-e)/s+(t.5?h/(2-o-r):h/(o+r),l=lo(e,s,n,h,o),l=l*60+.5),[l|0,c||0,a]}function mi(i,t,e,s){return(Array.isArray(t)?i(t[0],t[1],t[2]):i(t,e,s)).map(_t)}function bi(i,t,e){return mi(qs,i,t,e)}function co(i,t,e){return mi(ao,i,t,e)}function ho(i,t,e){return mi(ro,i,t,e)}function Gs(i){return(i%360+360)%360}function fo(i){const t=oo.exec(i);let e=255,s;if(!t)return;t[5]!==s&&(e=t[6]?Zt(+t[5]):_t(+t[5]));const n=Gs(+t[2]),o=+t[3]/100,r=+t[4]/100;return t[1]==="hwb"?s=co(n,o,r):t[1]==="hsv"?s=ho(n,o,r):s=bi(n,o,r),{r:s[0],g:s[1],b:s[2],a:e}}function uo(i,t){var e=pi(i);e[0]=Gs(e[0]+t),e=bi(e),i.r=e[0],i.g=e[1],i.b=e[2]}function go(i){if(!i)return;const t=pi(i),e=t[0],s=Ri(t[1]),n=Ri(t[2]);return i.a<255?`hsla(${e}, ${s}%, ${n}%, ${ut(i.a)})`:`hsl(${e}, ${s}%, ${n}%)`}const Li={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Ii={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function po(){const i={},t=Object.keys(Ii),e=Object.keys(Li);let s,n,o,r,a;for(s=0;s>16&255,o>>8&255,o&255]}return i}let ge;function mo(i){ge||(ge=po(),ge.transparent=[0,0,0,0]);const t=ge[i.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const bo=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function xo(i){const t=bo.exec(i);let e=255,s,n,o;if(t){if(t[7]!==s){const r=+t[7];e=t[8]?Zt(r):mt(r*255,0,255)}return s=+t[1],n=+t[3],o=+t[5],s=255&(t[2]?Zt(s):mt(s,0,255)),n=255&(t[4]?Zt(n):mt(n,0,255)),o=255&(t[6]?Zt(o):mt(o,0,255)),{r:s,g:n,b:o,a:e}}}function _o(i){return i&&(i.a<255?`rgba(${i.r}, ${i.g}, ${i.b}, ${ut(i.a)})`:`rgb(${i.r}, ${i.g}, ${i.b})`)}const Ue=i=>i<=.0031308?i*12.92:Math.pow(i,1/2.4)*1.055-.055,It=i=>i<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4);function yo(i,t,e){const s=It(ut(i.r)),n=It(ut(i.g)),o=It(ut(i.b));return{r:_t(Ue(s+e*(It(ut(t.r))-s))),g:_t(Ue(n+e*(It(ut(t.g))-n))),b:_t(Ue(o+e*(It(ut(t.b))-o))),a:i.a+e*(t.a-i.a)}}function pe(i,t,e){if(i){let s=pi(i);s[t]=Math.max(0,Math.min(s[t]+s[t]*e,t===0?360:1)),s=bi(s),i.r=s[0],i.g=s[1],i.b=s[2]}}function Zs(i,t){return i&&Object.assign(t||{},i)}function Fi(i){var t={r:0,g:0,b:0,a:255};return Array.isArray(i)?i.length>=3&&(t={r:i[0],g:i[1],b:i[2],a:255},i.length>3&&(t.a=_t(i[3]))):(t=Zs(i,{r:0,g:0,b:0,a:1}),t.a=_t(t.a)),t}function vo(i){return i.charAt(0)==="r"?xo(i):fo(i)}class ae{constructor(t){if(t instanceof ae)return t;const e=typeof t;let s;e==="object"?s=Fi(t):e==="string"&&(s=io(t)||mo(t)||vo(t)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var t=Zs(this._rgb);return t&&(t.a=ut(t.a)),t}set rgb(t){this._rgb=Fi(t)}rgbString(){return this._valid?_o(this._rgb):void 0}hexString(){return this._valid?no(this._rgb):void 0}hslString(){return this._valid?go(this._rgb):void 0}mix(t,e){if(t){const s=this.rgb,n=t.rgb;let o;const r=e===o?.5:e,a=2*r-1,l=s.a-n.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;o=1-c,s.r=255&c*s.r+o*n.r+.5,s.g=255&c*s.g+o*n.g+.5,s.b=255&c*s.b+o*n.b+.5,s.a=r*s.a+(1-r)*n.a,this.rgb=s}return this}interpolate(t,e){return t&&(this._rgb=yo(this._rgb,t._rgb,e)),this}clone(){return new ae(this.rgb)}alpha(t){return this._rgb.a=_t(t),this}clearer(t){const e=this._rgb;return e.a*=1-t,this}greyscale(){const t=this._rgb,e=de(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=e,this}opaquer(t){const e=this._rgb;return e.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return pe(this._rgb,2,t),this}darken(t){return pe(this._rgb,2,-t),this}saturate(t){return pe(this._rgb,1,t),this}desaturate(t){return pe(this._rgb,1,-t),this}rotate(t){return uo(this._rgb,t),this}}/*! - * Chart.js v4.5.1 - * https://www.chartjs.org - * (c) 2025 Chart.js Contributors - * Released under the MIT License - */function ht(){}const ko=(()=>{let i=0;return()=>i++})();function R(i){return i==null}function j(i){if(Array.isArray&&Array.isArray(i))return!0;const t=Object.prototype.toString.call(i);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function T(i){return i!==null&&Object.prototype.toString.call(i)==="[object Object]"}function it(i){return(typeof i=="number"||i instanceof Number)&&isFinite(+i)}function nt(i,t){return it(i)?i:t}function D(i,t){return typeof i>"u"?t:i}const wo=(i,t)=>typeof i=="string"&&i.endsWith("%")?parseFloat(i)/100*t:+i;function F(i,t,e){if(i&&typeof i.call=="function")return i.apply(e,t)}function L(i,t,e,s){let n,o,r;if(j(i))for(o=i.length,n=0;ni,x:i=>i.x,y:i=>i.y};function Po(i){const t=i.split("."),e=[];let s="";for(const n of t)s+=n,s.endsWith("\\")?s=s.slice(0,-1)+".":(e.push(s),s="");return e}function Ao(i){const t=Po(i);return e=>{for(const s of t){if(s==="")break;e=e&&e[s]}return e}}function Ht(i,t){return(Ei[t]||(Ei[t]=Ao(t)))(i)}function xi(i){return i.charAt(0).toUpperCase()+i.slice(1)}const le=i=>typeof i<"u",vt=i=>typeof i=="function",zi=(i,t)=>{if(i.size!==t.size)return!1;for(const e of i)if(!t.has(e))return!1;return!0};function Oo(i){return i.type==="mouseup"||i.type==="click"||i.type==="contextmenu"}const E=Math.PI,X=2*E,Ee=Number.POSITIVE_INFINITY,Co=E/180,V=E/2,Mt=E/4,Bi=E*2/3,Js=Math.log10,yt=Math.sign;function Oe(i,t,e){return Math.abs(i-t)n-o).pop(),t}function To(i){return typeof i=="symbol"||typeof i=="object"&&i!==null&&!(Symbol.toPrimitive in i||"toString"in i||"valueOf"in i)}function ze(i){return!To(i)&&!isNaN(parseFloat(i))&&isFinite(i)}function Ro(i,t){const e=Math.round(i);return e-t<=i&&e+t>=i}function Lo(i,t,e){let s,n,o;for(s=0,n=i.length;sl&&c=Math.min(t,e)-s&&i<=Math.max(t,e)+s}function _i(i,t,e){e=e||(r=>i[r]1;)o=n+s>>1,e(o)?n=o:s=o;return{lo:n,hi:s}}const li=(i,t,e,s)=>_i(i,e,s?n=>{const o=i[n][t];return oi[n][t]_i(i,e,s=>i[s][t]>=e);function Bo(i,t,e){let s=0,n=i.length;for(;ss&&i[n-1]>e;)n--;return s>0||n{const s="_onData"+xi(e),n=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...o){const r=n.apply(this,o);return i._chartjs.listeners.forEach(a=>{typeof a[s]=="function"&&a[s](...o)}),r}})})}function ji(i,t){const e=i._chartjs;if(!e)return;const s=e.listeners,n=s.indexOf(t);n!==-1&&s.splice(n,1),!(s.length>0)&&(sn.forEach(o=>{delete i[o]}),delete i._chartjs)}function nn(i){const t=new Set(i);return t.size===i.length?i:Array.from(t)}const on=function(){return typeof window>"u"?function(i){return i()}:window.requestAnimationFrame}();function rn(i,t){let e=[],s=!1;return function(...n){e=n,s||(s=!0,on.call(window,()=>{s=!1,i.apply(t,e)}))}}function Wo(i,t){let e;return function(...s){return t?(clearTimeout(e),e=setTimeout(i,t,s)):i.apply(this,s),t}}const yi=i=>i==="start"?"left":i==="end"?"right":"center",U=(i,t,e)=>i==="start"?t:i==="end"?e:(t+e)/2,jo=(i,t,e,s)=>i===(s?"left":"right")?e:i==="center"?(t+e)/2:t,me=i=>i===0||i===1,Ni=(i,t,e)=>-(Math.pow(2,10*(i-=1))*Math.sin((i-t)*X/e)),Vi=(i,t,e)=>Math.pow(2,-10*i)*Math.sin((i-t)*X/e)+1,ie={linear:i=>i,easeInQuad:i=>i*i,easeOutQuad:i=>-i*(i-2),easeInOutQuad:i=>(i/=.5)<1?.5*i*i:-.5*(--i*(i-2)-1),easeInCubic:i=>i*i*i,easeOutCubic:i=>(i-=1)*i*i+1,easeInOutCubic:i=>(i/=.5)<1?.5*i*i*i:.5*((i-=2)*i*i+2),easeInQuart:i=>i*i*i*i,easeOutQuart:i=>-((i-=1)*i*i*i-1),easeInOutQuart:i=>(i/=.5)<1?.5*i*i*i*i:-.5*((i-=2)*i*i*i-2),easeInQuint:i=>i*i*i*i*i,easeOutQuint:i=>(i-=1)*i*i*i*i+1,easeInOutQuint:i=>(i/=.5)<1?.5*i*i*i*i*i:.5*((i-=2)*i*i*i*i+2),easeInSine:i=>-Math.cos(i*V)+1,easeOutSine:i=>Math.sin(i*V),easeInOutSine:i=>-.5*(Math.cos(E*i)-1),easeInExpo:i=>i===0?0:Math.pow(2,10*(i-1)),easeOutExpo:i=>i===1?1:-Math.pow(2,-10*i)+1,easeInOutExpo:i=>me(i)?i:i<.5?.5*Math.pow(2,10*(i*2-1)):.5*(-Math.pow(2,-10*(i*2-1))+2),easeInCirc:i=>i>=1?i:-(Math.sqrt(1-i*i)-1),easeOutCirc:i=>Math.sqrt(1-(i-=1)*i),easeInOutCirc:i=>(i/=.5)<1?-.5*(Math.sqrt(1-i*i)-1):.5*(Math.sqrt(1-(i-=2)*i)+1),easeInElastic:i=>me(i)?i:Ni(i,.075,.3),easeOutElastic:i=>me(i)?i:Vi(i,.075,.3),easeInOutElastic(i){return me(i)?i:i<.5?.5*Ni(i*2,.1125,.45):.5+.5*Vi(i*2-1,.1125,.45)},easeInBack(i){return i*i*((1.70158+1)*i-1.70158)},easeOutBack(i){return(i-=1)*i*((1.70158+1)*i+1.70158)+1},easeInOutBack(i){let t=1.70158;return(i/=.5)<1?.5*(i*i*(((t*=1.525)+1)*i-t)):.5*((i-=2)*i*(((t*=1.525)+1)*i+t)+2)},easeInBounce:i=>1-ie.easeOutBounce(1-i),easeOutBounce(i){return i<1/2.75?7.5625*i*i:i<2/2.75?7.5625*(i-=1.5/2.75)*i+.75:i<2.5/2.75?7.5625*(i-=2.25/2.75)*i+.9375:7.5625*(i-=2.625/2.75)*i+.984375},easeInOutBounce:i=>i<.5?ie.easeInBounce(i*2)*.5:ie.easeOutBounce(i*2-1)*.5+.5};function an(i){if(i&&typeof i=="object"){const t=i.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function $i(i){return an(i)?i:new ae(i)}function Xe(i){return an(i)?i:new ae(i).saturate(.5).darken(.1).hexString()}const No=["x","y","borderWidth","radius","tension"],Vo=["color","borderColor","backgroundColor"];function $o(i){i.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),i.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),i.set("animations",{colors:{type:"color",properties:Vo},numbers:{type:"number",properties:No}}),i.describe("animations",{_fallback:"animation"}),i.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function Yo(i){i.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Yi=new Map;function Uo(i,t){t=t||{};const e=i+JSON.stringify(t);let s=Yi.get(e);return s||(s=new Intl.NumberFormat(i,t),Yi.set(e,s)),s}function ln(i,t,e){return Uo(t,e).format(i)}const Xo={values(i){return j(i)?i:""+i},numeric(i,t,e){if(i===0)return"0";const s=this.chart.options.locale;let n,o=i;if(e.length>1){const c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(n="scientific"),o=Ko(i,e)}const r=Js(Math.abs(o)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:n,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),ln(i,s,l)}};function Ko(i,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&i!==Math.floor(i)&&(e=i-Math.floor(i)),e}var cn={formatters:Xo};function qo(i){i.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:cn.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),i.route("scale.ticks","color","","color"),i.route("scale.grid","color","","borderColor"),i.route("scale.border","color","","borderColor"),i.route("scale.title","color","","color"),i.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),i.describe("scales",{_fallback:"scale"}),i.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const Tt=Object.create(null),ci=Object.create(null);function se(i,t){if(!t)return i;const e=t.split(".");for(let s=0,n=e.length;ss.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(s,n)=>Xe(n.backgroundColor),this.hoverBorderColor=(s,n)=>Xe(n.borderColor),this.hoverColor=(s,n)=>Xe(n.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Ke(this,t,e)}get(t){return se(this,t)}describe(t,e){return Ke(ci,t,e)}override(t,e){return Ke(Tt,t,e)}route(t,e,s,n){const o=se(this,t),r=se(this,s),a="_"+e;Object.defineProperties(o,{[a]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[a],c=r[n];return T(l)?Object.assign({},c,l):D(l,c)},set(l){this[a]=l}}})}apply(t){t.forEach(e=>e(this))}}var H=new Go({_scriptable:i=>!i.startsWith("on"),_indexable:i=>i!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[$o,Yo,qo]);function Zo(i){return!i||R(i.size)||R(i.family)?null:(i.style?i.style+" ":"")+(i.weight?i.weight+" ":"")+i.size+"px "+i.family}function Ui(i,t,e,s,n){let o=t[n];return o||(o=t[n]=i.measureText(n).width,e.push(n)),o>s&&(s=o),s}function St(i,t,e){const s=i.currentDevicePixelRatio,n=e!==0?Math.max(e/2,.5):0;return Math.round((t-n)*s)/s+n}function Xi(i,t){!t&&!i||(t=t||i.getContext("2d"),t.save(),t.resetTransform(),t.clearRect(0,0,i.width,i.height),t.restore())}function hi(i,t,e,s){hn(i,t,e,s,null)}function hn(i,t,e,s,n){let o,r,a,l,c,h,d,f;const u=t.pointStyle,p=t.rotation,g=t.radius;let m=(p||0)*Co;if(u&&typeof u=="object"&&(o=u.toString(),o==="[object HTMLImageElement]"||o==="[object HTMLCanvasElement]")){i.save(),i.translate(e,s),i.rotate(m),i.drawImage(u,-u.width/2,-u.height/2,u.width,u.height),i.restore();return}if(!(isNaN(g)||g<=0)){switch(i.beginPath(),u){default:n?i.ellipse(e,s,n/2,g,0,0,X):i.arc(e,s,g,0,X),i.closePath();break;case"triangle":h=n?n/2:g,i.moveTo(e+Math.sin(m)*h,s-Math.cos(m)*g),m+=Bi,i.lineTo(e+Math.sin(m)*h,s-Math.cos(m)*g),m+=Bi,i.lineTo(e+Math.sin(m)*h,s-Math.cos(m)*g),i.closePath();break;case"rectRounded":c=g*.516,l=g-c,r=Math.cos(m+Mt)*l,d=Math.cos(m+Mt)*(n?n/2-c:l),a=Math.sin(m+Mt)*l,f=Math.sin(m+Mt)*(n?n/2-c:l),i.arc(e-d,s-a,c,m-E,m-V),i.arc(e+f,s-r,c,m-V,m),i.arc(e+d,s+a,c,m,m+V),i.arc(e-f,s+r,c,m+V,m+E),i.closePath();break;case"rect":if(!p){l=Math.SQRT1_2*g,h=n?n/2:l,i.rect(e-h,s-l,2*h,2*l);break}m+=Mt;case"rectRot":d=Math.cos(m)*(n?n/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,f=Math.sin(m)*(n?n/2:g),i.moveTo(e-d,s-a),i.lineTo(e+f,s-r),i.lineTo(e+d,s+a),i.lineTo(e-f,s+r),i.closePath();break;case"crossRot":m+=Mt;case"cross":d=Math.cos(m)*(n?n/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,f=Math.sin(m)*(n?n/2:g),i.moveTo(e-d,s-a),i.lineTo(e+d,s+a),i.moveTo(e+f,s-r),i.lineTo(e-f,s+r);break;case"star":d=Math.cos(m)*(n?n/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,f=Math.sin(m)*(n?n/2:g),i.moveTo(e-d,s-a),i.lineTo(e+d,s+a),i.moveTo(e+f,s-r),i.lineTo(e-f,s+r),m+=Mt,d=Math.cos(m)*(n?n/2:g),r=Math.cos(m)*g,a=Math.sin(m)*g,f=Math.sin(m)*(n?n/2:g),i.moveTo(e-d,s-a),i.lineTo(e+d,s+a),i.moveTo(e+f,s-r),i.lineTo(e-f,s+r);break;case"line":r=n?n/2:Math.cos(m)*g,a=Math.sin(m)*g,i.moveTo(e-r,s-a),i.lineTo(e+r,s+a);break;case"dash":i.moveTo(e,s),i.lineTo(e+Math.cos(m)*(n?n/2:g),s+Math.sin(m)*g);break;case!1:i.closePath();break}i.fill(),t.borderWidth>0&&i.stroke()}}function vi(i,t,e){return e=e||.5,!t||i&&i.x>t.left-e&&i.xt.top-e&&i.y0&&o.strokeColor!=="";let l,c;for(i.save(),i.font=n.string,Qo(i,o),l=0;l+i||0;function Mi(i,t){const e={},s=T(t),n=s?Object.keys(t):t,o=T(i)?s?r=>D(i[r],i[t[r]]):r=>i[r]:()=>i;for(const r of n)e[r]=nr(o(r));return e}function dn(i){return Mi(i,{top:"y",right:"x",bottom:"y",left:"x"})}function zt(i){return Mi(i,["topLeft","topRight","bottomLeft","bottomRight"])}function J(i){const t=dn(i);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function $(i,t){i=i||{},t=t||H.font;let e=D(i.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let s=D(i.style,t.style);s&&!(""+s).match(ir)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:D(i.family,t.family),lineHeight:sr(D(i.lineHeight,t.lineHeight),e),size:e,style:s,weight:D(i.weight,t.weight),string:""};return n.string=Zo(n),n}function B(i,t,e,s){let n,o,r;for(n=0,o=i.length;ne&&a===0?0:a+l;return{min:r(s,-Math.abs(o)),max:r(n,o)}}function jt(i,t){return Object.assign(Object.create(i),t)}function Si(i,t=[""],e,s,n=()=>i[0]){const o=e||i;typeof s>"u"&&(s=pn("_fallback",i));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:i,_rootScopes:o,_fallback:s,_getTarget:n,override:a=>Si([a,...i],t,o,s)};return new Proxy(r,{deleteProperty(a,l){return delete a[l],delete a._keys,delete i[0][l],!0},get(a,l){return un(a,l,()=>ur(l,t,i,a))},getOwnPropertyDescriptor(a,l){return Reflect.getOwnPropertyDescriptor(a._scopes[0],l)},getPrototypeOf(){return Reflect.getPrototypeOf(i[0])},has(a,l){return qi(a).includes(l)},ownKeys(a){return qi(a)},set(a,l,c){const h=a._storage||(a._storage=n());return a[l]=h[l]=c,delete a._keys,!0}})}function Wt(i,t,e,s){const n={_cacheable:!1,_proxy:i,_context:t,_subProxy:e,_stack:new Set,_descriptors:fn(i,s),setContext:o=>Wt(i,o,e,s),override:o=>Wt(i.override(o),t,e,s)};return new Proxy(n,{deleteProperty(o,r){return delete o[r],delete i[r],!0},get(o,r,a){return un(o,r,()=>ar(o,r,a))},getOwnPropertyDescriptor(o,r){return o._descriptors.allKeys?Reflect.has(i,r)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(i,r)},getPrototypeOf(){return Reflect.getPrototypeOf(i)},has(o,r){return Reflect.has(i,r)},ownKeys(){return Reflect.ownKeys(i)},set(o,r,a){return i[r]=a,delete o[r],!0}})}function fn(i,t={scriptable:!0,indexable:!0}){const{_scriptable:e=t.scriptable,_indexable:s=t.indexable,_allKeys:n=t.allKeys}=i;return{allKeys:n,scriptable:e,indexable:s,isScriptable:vt(e)?e:()=>e,isIndexable:vt(s)?s:()=>s}}const rr=(i,t)=>i?i+xi(t):t,Pi=(i,t)=>T(t)&&i!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function un(i,t,e){if(Object.prototype.hasOwnProperty.call(i,t)||t==="constructor")return i[t];const s=e();return i[t]=s,s}function ar(i,t,e){const{_proxy:s,_context:n,_subProxy:o,_descriptors:r}=i;let a=s[t];return vt(a)&&r.isScriptable(t)&&(a=lr(t,a,i,e)),j(a)&&a.length&&(a=cr(t,a,i,r.isIndexable)),Pi(t,a)&&(a=Wt(a,n,o&&o[t],r)),a}function lr(i,t,e,s){const{_proxy:n,_context:o,_subProxy:r,_stack:a}=e;if(a.has(i))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+i);a.add(i);let l=t(o,r||s);return a.delete(i),Pi(i,l)&&(l=Ai(n._scopes,n,i,l)),l}function cr(i,t,e,s){const{_proxy:n,_context:o,_subProxy:r,_descriptors:a}=e;if(typeof o.index<"u"&&s(i))return t[o.index%t.length];if(T(t[0])){const l=t,c=n._scopes.filter(h=>h!==l);t=[];for(const h of l){const d=Ai(c,n,i,h);t.push(Wt(d,o,r&&r[i],a))}}return t}function gn(i,t,e){return vt(i)?i(t,e):i}const hr=(i,t)=>i===!0?t:typeof i=="string"?Ht(t,i):void 0;function dr(i,t,e,s,n){for(const o of t){const r=hr(e,o);if(r){i.add(r);const a=gn(r._fallback,e,n);if(typeof a<"u"&&a!==e&&a!==s)return a}else if(r===!1&&typeof s<"u"&&e!==s)return null}return!1}function Ai(i,t,e,s){const n=t._rootScopes,o=gn(t._fallback,e,s),r=[...i,...n],a=new Set;a.add(s);let l=Ki(a,r,e,o||e,s);return l===null||typeof o<"u"&&o!==e&&(l=Ki(a,r,o,l,s),l===null)?!1:Si(Array.from(a),[""],n,o,()=>fr(t,e,s))}function Ki(i,t,e,s,n){for(;e;)e=dr(i,t,e,s,n);return e}function fr(i,t,e){const s=i._getTarget();t in s||(s[t]={});const n=s[t];return j(n)&&T(e)?e:n||{}}function ur(i,t,e,s){let n;for(const o of t)if(n=pn(rr(o,i),e),typeof n<"u")return Pi(i,n)?Ai(e,s,i,n):n}function pn(i,t){for(const e of t){if(!e)continue;const s=e[i];if(typeof s<"u")return s}}function qi(i){let t=i._keys;return t||(t=i._keys=gr(i._scopes)),t}function gr(i){const t=new Set;for(const e of i)for(const s of Object.keys(e).filter(n=>!n.startsWith("_")))t.add(s);return Array.from(t)}function Oi(){return typeof window<"u"&&typeof document<"u"}function Ci(i){let t=i.parentNode;return t&&t.toString()==="[object ShadowRoot]"&&(t=t.host),t}function He(i,t,e){let s;return typeof i=="string"?(s=parseInt(i,10),i.indexOf("%")!==-1&&(s=s/100*t.parentNode[e])):s=i,s}const Ve=i=>i.ownerDocument.defaultView.getComputedStyle(i,null);function pr(i,t){return Ve(i).getPropertyValue(t)}const mr=["top","right","bottom","left"];function Dt(i,t,e){const s={};e=e?"-"+e:"";for(let n=0;n<4;n++){const o=mr[n];s[o]=parseFloat(i[t+"-"+o+e])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const br=(i,t,e)=>(i>0||t>0)&&(!e||!e.shadowRoot);function xr(i,t){const e=i.touches,s=e&&e.length?e[0]:i,{offsetX:n,offsetY:o}=s;let r=!1,a,l;if(br(n,o,i.target))a=n,l=o;else{const c=t.getBoundingClientRect();a=s.clientX-c.left,l=s.clientY-c.top,r=!0}return{x:a,y:l,box:r}}function At(i,t){if("native"in i)return i;const{canvas:e,currentDevicePixelRatio:s}=t,n=Ve(e),o=n.boxSizing==="border-box",r=Dt(n,"padding"),a=Dt(n,"border","width"),{x:l,y:c,box:h}=xr(i,e),d=r.left+(h&&a.left),f=r.top+(h&&a.top);let{width:u,height:p}=t;return o&&(u-=r.width+a.width,p-=r.height+a.height),{x:Math.round((l-d)/u*e.width/s),y:Math.round((c-f)/p*e.height/s)}}function _r(i,t,e){let s,n;if(t===void 0||e===void 0){const o=i&&Ci(i);if(!o)t=i.clientWidth,e=i.clientHeight;else{const r=o.getBoundingClientRect(),a=Ve(o),l=Dt(a,"border","width"),c=Dt(a,"padding");t=r.width-c.width-l.width,e=r.height-c.height-l.height,s=He(a.maxWidth,o,"clientWidth"),n=He(a.maxHeight,o,"clientHeight")}}return{width:t,height:e,maxWidth:s||Ee,maxHeight:n||Ee}}const bt=i=>Math.round(i*10)/10;function yr(i,t,e,s){const n=Ve(i),o=Dt(n,"margin"),r=He(n.maxWidth,i,"clientWidth")||Ee,a=He(n.maxHeight,i,"clientHeight")||Ee,l=_r(i,t,e);let{width:c,height:h}=l;if(n.boxSizing==="content-box"){const f=Dt(n,"border","width"),u=Dt(n,"padding");c-=u.width+f.width,h-=u.height+f.height}return c=Math.max(0,c-o.width),h=Math.max(0,s?c/s:h-o.height),c=bt(Math.min(c,r,l.maxWidth)),h=bt(Math.min(h,a,l.maxHeight)),c&&!h&&(h=bt(c/2)),(t!==void 0||e!==void 0)&&s&&l.height&&h>l.height&&(h=l.height,c=bt(Math.floor(h*s))),{width:c,height:h}}function Gi(i,t,e){const s=t||1,n=bt(i.height*s),o=bt(i.width*s);i.height=bt(i.height),i.width=bt(i.width);const r=i.canvas;return r.style&&(e||!r.style.height&&!r.style.width)&&(r.style.height=`${i.height}px`,r.style.width=`${i.width}px`),i.currentDevicePixelRatio!==s||r.height!==n||r.width!==o?(i.currentDevicePixelRatio=s,r.height=n,r.width=o,i.ctx.setTransform(s,0,0,s,0,0),!0):!1}const vr=function(){let i=!1;try{const t={get passive(){return i=!0,!1}};Oi()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch{}return i}();function Zi(i,t){const e=pr(i,t),s=e&&e.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}const kr=function(i,t){return{x(e){return i+i+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,s){return e-s},leftForLtr(e,s){return e-s}}},wr=function(){return{x(i){return i},setWidth(i){},textAlign(i){return i},xPlus(i,t){return i+t},leftForLtr(i,t){return i}}};function Bt(i,t,e){return i?kr(t,e):wr()}function mn(i,t){let e,s;(t==="ltr"||t==="rtl")&&(e=i.canvas.style,s=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),i.prevTextDirection=s)}function bn(i,t){t!==void 0&&(delete i.prevTextDirection,i.canvas.style.setProperty("direction",t[0],t[1]))}function be(i,t,e){return i.options.clip?i[e]:t[e]}function Mr(i,t){const{xScale:e,yScale:s}=i;return e&&s?{left:be(e,t,"left"),right:be(e,t,"right"),top:be(s,t,"top"),bottom:be(s,t,"bottom")}:t}function Sr(i,t){const e=t._clip;if(e.disabled)return!1;const s=Mr(t,i.chartArea);return{left:e.left===!1?0:s.left-(e.left===!0?0:e.left),right:e.right===!1?i.width:s.right+(e.right===!0?0:e.right),top:e.top===!1?0:s.top-(e.top===!0?0:e.top),bottom:e.bottom===!1?i.height:s.bottom+(e.bottom===!0?0:e.bottom)}}/*! - * Chart.js v4.5.1 - * https://www.chartjs.org - * (c) 2025 Chart.js Contributors - * Released under the MIT License - */class Pr{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,s,n){const o=e.listeners[n],r=e.duration;o.forEach(a=>a({chart:t,initial:e.initial,numSteps:r,currentStep:Math.min(s-e.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=on.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((s,n)=>{if(!s.running||!s.items.length)return;const o=s.items;let r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>s.duration&&(s.duration=l._total),l.tick(t),a=!0):(o[r]=o[o.length-1],o.pop());a&&(n.draw(),this._notify(n,s,t,"progress")),o.length||(s.running=!1,this._notify(n,s,t,"complete"),s.initial=!1),e+=o.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){const e=this._charts;let s=e.get(t);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,s)),s}listen(t,e,s){this._getAnims(t).listeners[e].push(s)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((s,n)=>Math.max(s,n._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const s=e.items;let n=s.length-1;for(;n>=0;--n)s[n].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var dt=new Pr;const Qi="transparent",Ar={boolean(i,t,e){return e>.5?t:i},color(i,t,e){const s=$i(i||Qi),n=s.valid&&$i(t||Qi);return n&&n.valid?n.mix(s,e).hexString():t},number(i,t,e){return i+(t-i)*e}};class Or{constructor(t,e,s,n){const o=e[s];n=B([t.to,n,o,t.from]);const r=B([t.from,o,n]);this._active=!0,this._fn=t.fn||Ar[t.type||typeof r],this._easing=ie[t.easing]||ie.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=s,this._from=r,this._to=n,this._promises=void 0}active(){return this._active}update(t,e,s){if(this._active){this._notify(!1);const n=this._target[this._prop],o=s-this._start,r=this._duration-o;this._start=s,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=B([t.to,e,n,t.from]),this._from=B([t.from,n,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,s=this._duration,n=this._prop,o=this._from,r=this._loop,a=this._to;let l;if(this._active=o!==a&&(r||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[n]=this._fn(o,a,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,s)=>{t.push({res:e,rej:s})})}_notify(t){const e=t?"res":"rej",s=this._promises||[];for(let n=0;n{const o=t[n];if(!T(o))return;const r={};for(const a of e)r[a]=o[a];(j(o.properties)&&o.properties||[n]).forEach(a=>{(a===n||!s.has(a))&&s.set(a,r)})})}_animateOptions(t,e){const s=e.options,n=Dr(t,s);if(!n)return[];const o=this._createAnimations(n,s);return s.$shared&&Cr(t.options.$animations,s).then(()=>{t.options=s},()=>{}),o}_createAnimations(t,e){const s=this._properties,n=[],o=t.$animations||(t.$animations={}),r=Object.keys(e),a=Date.now();let l;for(l=r.length-1;l>=0;--l){const c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){n.push(...this._animateOptions(t,e));continue}const h=e[c];let d=o[c];const f=s.get(c);if(d)if(f&&d.active()){d.update(f,h,a);continue}else d.cancel();if(!f||!f.duration){t[c]=h;continue}o[c]=d=new Or(f,t,c,h),n.push(d)}return n}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}const s=this._createAnimations(t,e);if(s.length)return dt.add(this._chart,s),!0}}function Cr(i,t){const e=[],s=Object.keys(t);for(let n=0;n0||!e&&o<0)return n.index}return null}function is(i,t){const{chart:e,_cachedMeta:s}=i,n=e._stacks||(e._stacks={}),{iScale:o,vScale:r,index:a}=s,l=o.axis,c=r.axis,h=Ir(o,r,s),d=t.length;let f;for(let u=0;ue[s].axis===t).shift()}function zr(i,t){return jt(i,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Br(i,t,e){return jt(i,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function Yt(i,t){const e=i.controller.index,s=i.vScale&&i.vScale.axis;if(s){t=t||i._parsed;for(const n of t){const o=n._stacks;if(!o||o[s]===void 0||o[s][e]===void 0)return;delete o[s][e],o[s]._visualValues!==void 0&&o[s]._visualValues[e]!==void 0&&delete o[s]._visualValues[e]}}}const Ze=i=>i==="reset"||i==="none",ss=(i,t)=>t?i:Object.assign({},i),Hr=(i,t,e)=>i&&!t.hidden&&t._stacked&&{keys:_n(e,!0),values:null};class ne{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=qe(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Yt(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,s=this.getDataset(),n=(d,f,u,p)=>d==="x"?f:d==="r"?p:u,o=e.xAxisID=D(s.xAxisID,Ge(t,"x")),r=e.yAxisID=D(s.yAxisID,Ge(t,"y")),a=e.rAxisID=D(s.rAxisID,Ge(t,"r")),l=e.indexAxis,c=e.iAxisID=n(l,o,r,a),h=e.vAxisID=n(l,r,o,a);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(r),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&ji(this._data,this),t._stacked&&Yt(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),s=this._data;if(T(e)){const n=this._cachedMeta;this._data=Lr(e,n)}else if(s!==e){if(s){ji(s,this);const n=this._cachedMeta;Yt(n),n._parsed=[]}e&&Object.isExtensible(e)&&Ho(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,s=this.getDataset();let n=!1;this._dataCheck();const o=e._stacked;e._stacked=qe(e.vScale,e),e.stack!==s.stack&&(n=!0,Yt(e),e.stack=s.stack),this._resyncElements(t),(n||o!==e._stacked)&&(is(this,e._parsed),e._stacked=qe(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),s=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:s,_data:n}=this,{iScale:o,_stacked:r}=s,a=o.axis;let l=t===0&&e===n.length?!0:s._sorted,c=t>0&&s._parsed[t-1],h,d,f;if(this._parsing===!1)s._parsed=n,s._sorted=!0,f=n;else{j(n[t])?f=this.parseArrayData(s,n,t,e):T(n[t])?f=this.parseObjectData(s,n,t,e):f=this.parsePrimitiveData(s,n,t,e);const u=()=>d[a]===null||c&&d[a]g||d=0;--f)if(!p()){this.updateRangeFromParsed(c,t,u,l);break}}return c}getAllParsedValues(t){const e=this._cachedMeta._parsed,s=[];let n,o,r;for(n=0,o=e.length;n=0&&tthis.getContext(s,n,e),g=c.resolveNamedOptions(f,u,p,d);return g.$shared&&(g.$shared=l,o[r]=Object.freeze(ss(g,l))),g}_resolveAnimations(t,e,s){const n=this.chart,o=this._cachedDataOpts,r=`animation-${e}`,a=o[r];if(a)return a;let l;if(n.options.animation!==!1){const h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),f=h.getOptionScopes(this.getDataset(),d);l=h.createResolver(f,this.getContext(t,s,e))}const c=new xn(n,l&&l.animations);return l&&l._cacheable&&(o[r]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ze(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const s=this.resolveDataElementOptions(t,e),n=this._sharedOptions,o=this.getSharedOptions(s),r=this.includeOptions(e,o)||o!==n;return this.updateSharedOptions(o,e,s),{sharedOptions:o,includeOptions:r}}updateElement(t,e,s,n){Ze(n)?Object.assign(t,s):this._resolveAnimations(e,n).update(t,s)}updateSharedOptions(t,e,s){t&&!Ze(e)&&this._resolveAnimations(void 0,e).update(t,s)}_setStyle(t,e,s,n){t.active=n;const o=this.getStyle(e,n);this._resolveAnimations(e,s,n).update(t,{options:!n&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,s){this._setStyle(t,s,"active",!1)}setHoverStyle(t,e,s){this._setStyle(t,s,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,s=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const n=s.length,o=e.length,r=Math.min(o,n);r&&this.parse(0,r),o>n?this._insertElements(n,o-n,t):o{for(c.length+=e,a=c.length-1;a>=r;a--)c[a]=c[a-e]};for(l(o),a=t;an-o))}return i._cache.$bar}function jr(i){const t=i.iScale,e=Wr(t,i.type);let s=t._length,n,o,r,a;const l=()=>{r===32767||r===-32768||(le(a)&&(s=Math.min(s,Math.abs(r-a)||s)),a=r)};for(n=0,o=e.length;n0?n[i-1]:null,a=iMath.abs(a)&&(l=a,c=r),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:n,end:o,min:r,max:a}}function yn(i,t,e,s){return j(i)?$r(i,t,e,s):t[e.axis]=e.parse(i,s),t}function ns(i,t,e,s){const n=i.iScale,o=i.vScale,r=n.getLabels(),a=n===o,l=[];let c,h,d,f;for(c=e,h=e+s;c=e?1:-1)}function Ur(i){let t,e,s,n,o;return i.horizontal?(t=i.base>i.x,e="left",s="right"):(t=i.baseh.controller.options.grouped),o=s.options.stacked,r=[],a=this._cachedMeta.controller.getParsed(e),l=a&&a[s.axis],c=h=>{const d=h._parsed.find(u=>u[s.axis]===l),f=d&&d[h.vScale.axis];if(R(f)||isNaN(f))return!0};for(const h of n)if(!(e!==void 0&&c(h))&&((o===!1||r.indexOf(h.stack)===-1||o===void 0&&h.stack===void 0)&&r.push(h.stack),h.index===t))break;return r.length||r.push(void 0),r}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter(s=>t[s].axis===e).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const s of this.chart.data.datasets)t[D(this.chart.options.indexAxis==="x"?s.xAxisID:s.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,s){const n=this._getStacks(t,s),o=e!==void 0?n.indexOf(e):-1;return o===-1?n.length-1:o}_getRuler(){const t=this.options,e=this._cachedMeta,s=e.iScale,n=[];let o,r;for(o=0,r=e.data.length;o!R(g[d.axis]));h.lo-=Math.max(0,u);const p=f.slice(h.hi).findIndex(g=>!R(g[d.axis]));h.hi+=Math.max(0,p)}return h}}return{lo:0,hi:o.length-1}}function $e(i,t,e,s,n){const o=i.getSortedVisibleDatasetMetas(),r=e[t];for(let a=0,l=o.length;a{l[r]&&l[r](t[e],n)&&(o.push({element:l,datasetIndex:c,index:h}),a=a||l.inRange(t.x,t.y,n))}),s&&!a?[]:o}var ea={modes:{index(i,t,e,s){const n=At(t,i),o=e.axis||"x",r=e.includeInvisible||!1,a=e.intersect?Je(i,n,o,s,r):ti(i,n,o,!1,s,r),l=[];return a.length?(i.getSortedVisibleDatasetMetas().forEach(c=>{const h=a[0].index,d=c.data[h];d&&!d.skip&&l.push({element:d,datasetIndex:c.index,index:h})}),l):[]},dataset(i,t,e,s){const n=At(t,i),o=e.axis||"xy",r=e.includeInvisible||!1;let a=e.intersect?Je(i,n,o,s,r):ti(i,n,o,!1,s,r);if(a.length>0){const l=a[0].datasetIndex,c=i.getDatasetMeta(l).data;a=[];for(let h=0;he.pos===t)}function ls(i,t){return i.filter(e=>vn.indexOf(e.pos)===-1&&e.box.axis===t)}function Xt(i,t){return i.sort((e,s)=>{const n=t?s:e,o=t?e:s;return n.weight===o.weight?n.index-o.index:n.weight-o.weight})}function ia(i){const t=[];let e,s,n,o,r,a;for(e=0,s=(i||[]).length;ec.box.fullSize),!0),s=Xt(Ut(t,"left"),!0),n=Xt(Ut(t,"right")),o=Xt(Ut(t,"top"),!0),r=Xt(Ut(t,"bottom")),a=ls(t,"x"),l=ls(t,"y");return{fullSize:e,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(r).concat(a),chartArea:Ut(t,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(r).concat(a)}}function cs(i,t,e,s){return Math.max(i[e],t[e])+Math.max(i[s],t[s])}function kn(i,t){i.top=Math.max(i.top,t.top),i.left=Math.max(i.left,t.left),i.bottom=Math.max(i.bottom,t.bottom),i.right=Math.max(i.right,t.right)}function ra(i,t,e,s){const{pos:n,box:o}=e,r=i.maxPadding;if(!T(n)){e.size&&(i[n]-=e.size);const d=s[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?o.height:o.width),e.size=d.size/d.count,i[n]+=e.size}o.getPadding&&kn(r,o.getPadding());const a=Math.max(0,t.outerWidth-cs(r,i,"left","right")),l=Math.max(0,t.outerHeight-cs(r,i,"top","bottom")),c=a!==i.w,h=l!==i.h;return i.w=a,i.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function aa(i){const t=i.maxPadding;function e(s){const n=Math.max(t[s]-i[s],0);return i[s]+=n,n}i.y+=e("top"),i.x+=e("left"),e("right"),e("bottom")}function la(i,t){const e=t.maxPadding;function s(n){const o={left:0,top:0,right:0,bottom:0};return n.forEach(r=>{o[r]=Math.max(t[r],e[r])}),o}return s(i?["left","right"]:["top","bottom"])}function Qt(i,t,e,s){const n=[];let o,r,a,l,c,h;for(o=0,r=i.length,c=0;o{typeof g.beforeLayout=="function"&&g.beforeLayout()});const h=l.reduce((g,m)=>m.box.options&&m.box.options.display===!1?g:g+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:n,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/h,hBoxMaxHeight:r/2}),f=Object.assign({},n);kn(f,J(s));const u=Object.assign({maxPadding:f,w:o,h:r,x:n.left,y:n.top},n),p=na(l.concat(c),d);Qt(a.fullSize,u,d,p),Qt(l,u,d,p),Qt(c,u,d,p)&&Qt(l,u,d,p),aa(u),hs(a.leftAndTop,u,d,p),u.x+=u.w,u.y+=u.h,hs(a.rightAndBottom,u,d,p),i.chartArea={left:u.left,top:u.top,right:u.left+u.w,bottom:u.top+u.h,height:u.h,width:u.w},L(a.chartArea,g=>{const m=g.box;Object.assign(m,i.chartArea),m.update(u.w,u.h,{left:0,top:0,right:0,bottom:0})})}};class wn{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,s){}removeEventListener(t,e,s){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,s,n){return e=Math.max(0,e||t.width),s=s||t.height,{width:e,height:Math.max(0,n?Math.floor(e/n):s)}}isAttached(t){return!0}updateConfig(t){}}class ca extends wn{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const De="$chartjs",ha={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ds=i=>i===null||i==="";function da(i,t){const e=i.style,s=i.getAttribute("height"),n=i.getAttribute("width");if(i[De]={initial:{height:s,width:n,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",ds(n)){const o=Zi(i,"width");o!==void 0&&(i.width=o)}if(ds(s))if(i.style.height==="")i.height=i.width/(t||2);else{const o=Zi(i,"height");o!==void 0&&(i.height=o)}return i}const Mn=vr?{passive:!0}:!1;function fa(i,t,e){i&&i.addEventListener(t,e,Mn)}function ua(i,t,e){i&&i.canvas&&i.canvas.removeEventListener(t,e,Mn)}function ga(i,t){const e=ha[i.type]||i.type,{x:s,y:n}=At(i,t);return{type:e,chart:t,native:i,x:s!==void 0?s:null,y:n!==void 0?n:null}}function We(i,t){for(const e of i)if(e===t||e.contains(t))return!0}function pa(i,t,e){const s=i.canvas,n=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||We(a.addedNodes,s),r=r&&!We(a.removedNodes,s);r&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}function ma(i,t,e){const s=i.canvas,n=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||We(a.removedNodes,s),r=r&&!We(a.addedNodes,s);r&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}const he=new Map;let fs=0;function Sn(){const i=window.devicePixelRatio;i!==fs&&(fs=i,he.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function ba(i,t){he.size||window.addEventListener("resize",Sn),he.set(i,t)}function xa(i){he.delete(i),he.size||window.removeEventListener("resize",Sn)}function _a(i,t,e){const s=i.canvas,n=s&&Ci(s);if(!n)return;const o=rn((a,l)=>{const c=n.clientWidth;e(a,l),c{const l=a[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return r.observe(n),ba(i,o),r}function ei(i,t,e){e&&e.disconnect(),t==="resize"&&xa(i)}function ya(i,t,e){const s=i.canvas,n=rn(o=>{i.ctx!==null&&e(ga(o,i))},i);return fa(s,t,n),n}class va extends wn{acquireContext(t,e){const s=t&&t.getContext&&t.getContext("2d");return s&&s.canvas===t?(da(t,e),s):null}releaseContext(t){const e=t.canvas;if(!e[De])return!1;const s=e[De].initial;["height","width"].forEach(o=>{const r=s[o];R(r)?e.removeAttribute(o):e.setAttribute(o,r)});const n=s.style||{};return Object.keys(n).forEach(o=>{e.style[o]=n[o]}),e.width=e.width,delete e[De],!0}addEventListener(t,e,s){this.removeEventListener(t,e);const n=t.$proxies||(t.$proxies={}),r={attach:pa,detach:ma,resize:_a}[e]||ya;n[e]=r(t,e,s)}removeEventListener(t,e){const s=t.$proxies||(t.$proxies={}),n=s[e];if(!n)return;({attach:ei,detach:ei,resize:ei}[e]||ua)(t,e,n),s[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,s,n){return yr(t,e,s,n)}isAttached(t){const e=t&&Ci(t);return!!(e&&e.isConnected)}}function ka(i){return!Oi()||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas?ca:va}class ct{constructor(){w(this,"x");w(this,"y");w(this,"active",!1);w(this,"options");w(this,"$animations")}tooltipPosition(t){const{x:e,y:s}=this.getProps(["x","y"],t);return{x:e,y:s}}hasValue(){return ze(this.x)&&ze(this.y)}getProps(t,e){const s=this.$animations;if(!e||!s)return this;const n={};return t.forEach(o=>{n[o]=s[o]&&s[o].active()?s[o]._to:this[o]}),n}}w(ct,"defaults",{}),w(ct,"defaultRoutes");function wa(i,t){const e=i.options.ticks,s=Ma(i),n=Math.min(e.maxTicksLimit||s,s),o=e.major.enabled?Pa(t):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>n)return Aa(t,c,o,r/n),c;const h=Sa(o,t,n);if(r>0){let d,f;const u=r>1?Math.round((l-a)/(r-1)):null;for(_e(t,c,h,R(u)?0:a-u,a),d=0,f=r-1;dn)return l}return Math.max(n,1)}function Pa(i){const t=[];let e,s;for(e=0,s=i.length;ei==="left"?"right":i==="right"?"left":i,us=(i,t,e)=>t==="top"||t==="left"?i[t]+e:i[t]-e,gs=(i,t)=>Math.min(t||i,i);function ps(i,t){const e=[],s=i.length/t,n=i.length;let o=0;for(;or+a)))return l}function Ta(i,t){L(i,e=>{const s=e.gc,n=s.length/2;let o;if(n>t){for(o=0;os?s:e,s=n&&e>s?e:s,{min:nt(e,nt(s,e)),max:nt(s,nt(e,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){F(this.options.beforeUpdate,[this])}update(t,e,s){const{beginAtZero:n,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=or(this,o,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a=o||s<=1||!this.isHorizontal()){this.labelRotation=n;return}const h=this._getLabelSizes(),d=h.widest.width,f=h.highest.height,u=Z(this.chart.width-d,0,this.maxWidth);a=t.offset?this.maxWidth/s:u/(s-1),d+6>a&&(a=u/(s-(t.offset?.5:1)),l=this.maxHeight-Kt(t.grid)-e.padding-ms(t.title,this.chart.options.font),c=Math.sqrt(d*d+f*f),r=Io(Math.min(Math.asin(Z((h.highest.height+6)/a,-1,1)),Math.asin(Z(l/c,-1,1))-Math.asin(Z(f/c,-1,1)))),r=Math.max(n,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){F(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){F(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:s,title:n,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const l=ms(n,e.options.font);if(a?(t.width=this.maxWidth,t.height=Kt(o)+l):(t.height=this.maxHeight,t.width=Kt(o)+l),s.display&&this.ticks.length){const{first:c,last:h,widest:d,highest:f}=this._getLabelSizes(),u=s.padding*2,p=Ot(this.labelRotation),g=Math.cos(p),m=Math.sin(p);if(a){const b=s.mirror?0:m*d.width+g*f.height;t.height=Math.min(this.maxHeight,t.height+b+u)}else{const b=s.mirror?0:g*d.width+m*f.height;t.width=Math.min(this.maxWidth,t.width+b+u)}this._calculatePadding(c,h,m,g)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,s,n){const{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let f=0,u=0;l?c?(f=n*t.width,u=s*e.height):(f=s*t.height,u=n*e.width):o==="start"?u=e.width:o==="end"?f=t.width:o!=="inner"&&(f=t.width/2,u=e.width/2),this.paddingLeft=Math.max((f-h+r)*this.width/(this.width-h),0),this.paddingRight=Math.max((u-d+r)*this.width/(this.width-d),0)}else{let h=e.height/2,d=t.height/2;o==="start"?(h=0,d=t.height):o==="end"&&(h=e.height,d=0),this.paddingTop=h+r,this.paddingBottom=d+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){F(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,s;for(e=0,s=t.length;e({width:r[P]||0,height:a[P]||0});return{first:S(0),last:S(e-1),widest:S(k),highest:S(M),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Eo(this._alignToPixels?St(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*n?a/s:l/n:l*n0}_computeGridLineItems(t){const e=this.axis,s=this.chart,n=this.options,{grid:o,position:r,border:a}=n,l=o.offset,c=this.isHorizontal(),d=this.ticks.length+(l?1:0),f=Kt(o),u=[],p=a.setContext(this.getContext()),g=p.display?p.width:0,m=g/2,b=function(z){return St(s,z,g)};let x,_,v,y,k,M,S,P,O,A,C,N;if(r==="top")x=b(this.bottom),M=this.bottom-f,P=x-m,A=b(t.top)+m,N=t.bottom;else if(r==="bottom")x=b(this.top),A=t.top,N=b(t.bottom)-m,M=x+m,P=this.top+f;else if(r==="left")x=b(this.right),k=this.right-f,S=x-m,O=b(t.left)+m,C=t.right;else if(r==="right")x=b(this.left),O=t.left,C=b(t.right)-m,k=x+m,S=this.left+f;else if(e==="x"){if(r==="center")x=b((t.top+t.bottom)/2+.5);else if(T(r)){const z=Object.keys(r)[0],W=r[z];x=b(this.chart.scales[z].getPixelForValue(W))}A=t.top,N=t.bottom,M=x+m,P=M+f}else if(e==="y"){if(r==="center")x=b((t.left+t.right)/2);else if(T(r)){const z=Object.keys(r)[0],W=r[z];x=b(this.chart.scales[z].getPixelForValue(W))}k=x-m,S=k-f,O=t.left,C=t.right}const Q=D(n.ticks.maxTicksLimit,d),I=Math.max(1,Math.ceil(d/Q));for(_=0;_0&&(wt-=kt/2);break}fe={left:wt,top:$t,width:kt+Lt.width,height:Vt+Lt.height,color:I.backdropColor}}m.push({label:v,font:P,textOffset:C,options:{rotation:g,color:W,strokeColor:st,strokeWidth:Y,textAlign:Rt,textBaseline:N,translation:[y,k],backdrop:fe}})}return m}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-Ot(this.labelRotation))return t==="top"?"left":"right";let n="center";return e.align==="start"?n="left":e.align==="end"?n="right":e.align==="inner"&&(n="inner"),n}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:s,mirror:n,padding:o}}=this.options,r=this._getLabelSizes(),a=t+o,l=r.widest.width;let c,h;return e==="left"?n?(h=this.right+o,s==="near"?c="left":s==="center"?(c="center",h+=l/2):(c="right",h+=l)):(h=this.right-a,s==="near"?c="right":s==="center"?(c="center",h-=l/2):(c="left",h=this.left)):e==="right"?n?(h=this.left+o,s==="near"?c="right":s==="center"?(c="center",h-=l/2):(c="left",h-=l)):(h=this.left+a,s==="near"?c="left":s==="center"?(c="center",h+=l/2):(c="right",h=this.right)):c="right",{textAlign:c,x:h}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;if(e==="left"||e==="right")return{top:0,left:this.left,bottom:t.height,right:this.right};if(e==="top"||e==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:t.width}}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:s,top:n,width:o,height:r}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(s,n,o,r),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const n=this.ticks.findIndex(o=>o.value===t);return n>=0?e.setContext(this.getContext(n)).lineWidth:0}drawGrid(t){const e=this.options.grid,s=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,r;const a=(l,c,h)=>{!h.width||!h.color||(s.save(),s.lineWidth=h.width,s.strokeStyle=h.color,s.setLineDash(h.borderDash||[]),s.lineDashOffset=h.borderDashOffset,s.beginPath(),s.moveTo(l.x,l.y),s.lineTo(c.x,c.y),s.stroke(),s.restore())};if(e.display)for(o=0,r=n.length;o{this.draw(o)}}]:[{z:s,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:n,draw:()=>{this.drawBorder()}},{z:e,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",n=[];let o,r;for(o=0,r=e.length;o{const s=e.split("."),n=s.pop(),o=[i].concat(s).join("."),r=t[e].split("."),a=r.pop(),l=r.join(".");H.route(o,n,l,a)})}function Ba(i){return"id"in i&&"defaults"in i}class Ha{constructor(){this.controllers=new ye(ne,"datasets",!0),this.elements=new ye(ct,"elements"),this.plugins=new ye(Object,"plugins"),this.scales=new ye(Nt,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,s){[...e].forEach(n=>{const o=s||this._getRegistryForType(n);s||o.isForType(n)||o===this.plugins&&n.id?this._exec(t,o,n):L(n,r=>{const a=s||this._getRegistryForType(r);this._exec(t,a,r)})})}_exec(t,e,s){const n=xi(t);F(s["before"+n],[],s),e[t](s),F(s["after"+n],[],s)}_getRegistryForType(t){for(let e=0;eo.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(n(e,s),t,"stop"),this._notify(n(s,e),t,"start")}}function ja(i){const t={},e=[],s=Object.keys(rt.plugins.items);for(let o=0;o1&&bs(i[0].toLowerCase());if(s)return s}throw new Error(`Cannot determine type of '${i}' axis. Please provide 'axis' or 'position' option.`)}function xs(i,t,e){if(e[t+"AxisID"]===i)return{axis:t}}function Ka(i,t){if(t.data&&t.data.datasets){const e=t.data.datasets.filter(s=>s.xAxisID===i||s.yAxisID===i);if(e.length)return xs(i,"x",e[0])||xs(i,"y",e[0])}return{}}function qa(i,t){const e=Tt[i.type]||{scales:{}},s=t.scales||{},n=di(i.type,t),o=Object.create(null);return Object.keys(s).forEach(r=>{const a=s[r];if(!T(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);const l=fi(r,a,Ka(r,i),H.scales[a.type]),c=Ua(l,n),h=e.scales||{};o[r]=ee(Object.create(null),[{axis:l},a,h[l],h[c]])}),i.data.datasets.forEach(r=>{const a=r.type||i.type,l=r.indexAxis||di(a,t),h=(Tt[a]||{}).scales||{};Object.keys(h).forEach(d=>{const f=Ya(d,l),u=r[f+"AxisID"]||f;o[u]=o[u]||Object.create(null),ee(o[u],[{axis:f},s[u],h[d]])})}),Object.keys(o).forEach(r=>{const a=o[r];ee(a,[H.scales[a.type],H.scale])}),o}function Pn(i){const t=i.options||(i.options={});t.plugins=D(t.plugins,{}),t.scales=qa(i,t)}function An(i){return i=i||{},i.datasets=i.datasets||[],i.labels=i.labels||[],i}function Ga(i){return i=i||{},i.data=An(i.data),Pn(i),i}const _s=new Map,On=new Set;function ve(i,t){let e=_s.get(i);return e||(e=t(),_s.set(i,e),On.add(e)),e}const qt=(i,t,e)=>{const s=Ht(t,e);s!==void 0&&i.add(s)};class Za{constructor(t){this._config=Ga(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=An(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Pn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return ve(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return ve(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return ve(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id,s=this.type;return ve(`${s}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const s=this._scopeCache;let n=s.get(t);return(!n||e)&&(n=new Map,s.set(t,n)),n}getOptionScopes(t,e,s){const{options:n,type:o}=this,r=this._cachedScopes(t,s),a=r.get(e);if(a)return a;const l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(d=>qt(l,t,d))),h.forEach(d=>qt(l,n,d)),h.forEach(d=>qt(l,Tt[o]||{},d)),h.forEach(d=>qt(l,H,d)),h.forEach(d=>qt(l,ci,d))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),On.has(e)&&r.set(e,c),c}chartOptionScopes(){const{options:t,type:e}=this;return[t,Tt[e]||{},H.datasets[e]||{},{type:e},H,ci]}resolveNamedOptions(t,e,s,n=[""]){const o={$shared:!0},{resolver:r,subPrefixes:a}=ys(this._resolverCache,t,n);let l=r;if(Ja(r,e)){o.$shared=!1,s=vt(s)?s():s;const c=this.createResolver(t,s,a);l=Wt(r,s,c)}for(const c of e)o[c]=l[c];return o}createResolver(t,e,s=[""],n){const{resolver:o}=ys(this._resolverCache,t,s);return T(e)?Wt(o,e,void 0,n):o}}function ys(i,t,e){let s=i.get(t);s||(s=new Map,i.set(t,s));const n=e.join();let o=s.get(n);return o||(o={resolver:Si(t,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},s.set(n,o)),o}const Qa=i=>T(i)&&Object.getOwnPropertyNames(i).some(t=>vt(i[t]));function Ja(i,t){const{isScriptable:e,isIndexable:s}=fn(i);for(const n of t){const o=e(n),r=s(n),a=(r||o)&&i[n];if(o&&(vt(a)||Qa(a))||r&&j(a))return!0}return!1}var tl="4.5.1";const el=["top","bottom","left","right","chartArea"];function vs(i,t){return i==="top"||i==="bottom"||el.indexOf(i)===-1&&t==="x"}function ks(i,t){return function(e,s){return e[i]===s[i]?e[t]-s[t]:e[i]-s[i]}}function ws(i){const t=i.chart,e=t.options.animation;t.notifyPlugins("afterRender"),F(e&&e.onComplete,[i],t)}function il(i){const t=i.chart,e=t.options.animation;F(e&&e.onProgress,[i],t)}function Cn(i){return Oi()&&typeof i=="string"?i=document.getElementById(i):i&&i.length&&(i=i[0]),i&&i.canvas&&(i=i.canvas),i}const Te={},Ms=i=>{const t=Cn(i);return Object.values(Te).filter(e=>e.canvas===t).pop()};function sl(i,t,e){const s=Object.keys(i);for(const n of s){const o=+n;if(o>=t){const r=i[n];delete i[n],(e>0||o>t)&&(i[o+e]=r)}}}function nl(i,t,e,s){return!e||i.type==="mouseout"?null:s?t:i}var pt;let Ti=(pt=class{static register(...t){rt.add(...t),Ss()}static unregister(...t){rt.remove(...t),Ss()}constructor(t,e){const s=this.config=new Za(e),n=Cn(t),o=Ms(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const r=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ka(n)),this.platform.updateConfig(s);const a=this.platform.acquireContext(n,r.aspectRatio),l=a&&a.canvas,c=l&&l.height,h=l&&l.width;if(this.id=ko(),this.ctx=a,this.canvas=l,this.width=h,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Wa,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Wo(d=>this.update(d),r.resizeDelay||0),this._dataChanges=[],Te[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}dt.listen(this,"complete",ws),dt.listen(this,"progress",il),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:n,_aspectRatio:o}=this;return R(t)?e&&o?o:n?s/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return rt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Gi(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Xi(this.canvas,this.ctx),this}stop(){return dt.stop(this),this}resize(t,e){dt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const s=this.options,n=this.canvas,o=s.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(n,t,e,o),a=s.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,Gi(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),F(s.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const e=this.options.scales||{};L(e,(s,n)=>{s.id=n})}buildOrUpdateScales(){const t=this.options,e=t.scales,s=this.scales,n=Object.keys(s).reduce((r,a)=>(r[a]=!1,r),{});let o=[];e&&(o=o.concat(Object.keys(e).map(r=>{const a=e[r],l=fi(r,a),c=l==="r",h=l==="x";return{options:a,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),L(o,r=>{const a=r.options,l=a.id,c=fi(l,a),h=D(a.type,r.dtype);(a.position===void 0||vs(a.position,c)!==vs(r.dposition))&&(a.position=r.dposition),n[l]=!0;let d=null;if(l in s&&s[l].type===h)d=s[l];else{const f=rt.getScale(h);d=new f({id:l,type:h,ctx:this.ctx,chart:this}),s[d.id]=d}d.init(a,t)}),L(n,(r,a)=>{r||delete s[a]}),L(s,r=>{et.configure(this,r,r.options),et.addBox(this,r)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,s=t.length;if(t.sort((n,o)=>n.index-o.index),s>e){for(let n=e;ne.length&&delete this._stacks,t.forEach((s,n)=>{e.filter(o=>o===s._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let s,n;for(this._removeUnreferencedMetasets(),s=0,n=e.length;s{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const s=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),n=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let c=0,h=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(ks("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){L(this.scales,t=>{et.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),s=new Set(t.events);(!zi(e,s)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:s,start:n,count:o}of e){const r=s==="_removeElements"?-o:o;sl(t,n,r)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,s=o=>new Set(t.filter(r=>r[0]===o).map((r,a)=>a+","+r.splice(1).join(","))),n=s(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;et.update(this,this.width,this.height,t);const e=this.chartArea,s=e.width<=0||e.height<=0;this._layers=[],L(this.boxes,n=>{s&&n.position==="chartArea"||(n.configure&&n.configure(),this._layers.push(...n._layers()))},this),this._layers.forEach((n,o)=>{n._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,s=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,s={meta:t,index:t.index,cancelable:!0},n=Sr(this,t);this.notifyPlugins("beforeDatasetDraw",s)!==!1&&(n&&ki(e,n),t.controller.draw(),n&&wi(e),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(t){return vi(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,s,n){const o=ea.modes[e];return typeof o=="function"?o(this,t,s,n):[]}getDatasetMeta(t){const e=this.data.datasets[t],s=this._metasets;let n=s.filter(o=>o&&o._dataset===e).pop();return n||(n={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},s.push(n)),n}getContext(){return this.$context||(this.$context=jt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const s=this.getDatasetMeta(t);return typeof s.hidden=="boolean"?!s.hidden:!e.hidden}setDatasetVisibility(t,e){const s=this.getDatasetMeta(t);s.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,s){const n=s?"show":"hide",o=this.getDatasetMeta(t),r=o.controller._resolveAnimations(void 0,n);le(e)?(o.data[e].hidden=!s,this.update()):(this.setDatasetVisibility(t,s),r.update(o,{visible:s}),this.update(a=>a.datasetIndex===t?n:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),dt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,o,r),t[o]=r},n=(o,r,a)=>{o.offsetX=r,o.offsetY=a,this._eventHandler(o)};L(this.options.events,o=>s(o,n))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,s=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},n=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let r;const a=()=>{n("attach",a),this.attached=!0,this.resize(),s("resize",o),s("detach",r)};r=()=>{this.attached=!1,n("resize",o),this._stop(),this._resize(0,0),s("attach",a)},e.isAttached(this.canvas)?a():r()}unbindEvents(){L(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},L(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,s){const n=s?"set":"remove";let o,r,a,l;for(e==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+n+"DatasetHoverStyle"]()),a=0,l=t.length;a{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[r],index:r}});!Ie(s,e)&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,e))}notifyPlugins(t,e,s){return this._plugins.notify(this,t,e,s)}isPluginEnabled(t){return this._plugins._cache.filter(e=>e.plugin.id===t).length===1}_updateHoverStyles(t,e,s){const n=this.options.hover,o=(l,c)=>l.filter(h=>!c.some(d=>h.datasetIndex===d.datasetIndex&&h.index===d.index)),r=o(e,t),a=s?t:o(t,e);r.length&&this.updateHoverStyle(r,n.mode,!1),a.length&&n.mode&&this.updateHoverStyle(a,n.mode,!0)}_eventHandler(t,e){const s={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},n=r=>(r.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",s,n)===!1)return;const o=this._handleEvent(t,e,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,n),(o||s.changed)&&this.render(),this}_handleEvent(t,e,s){const{_active:n=[],options:o}=this,r=e,a=this._getActiveElements(t,n,s,r),l=Oo(t),c=nl(t,this._lastEvent,s,l);s&&(this._lastEvent=null,F(o.onHover,[t,a,this],this),l&&F(o.onClick,[t,a,this],this));const h=!Ie(a,n);return(h||e)&&(this._active=a,this._updateHoverStyles(a,n,e)),this._lastEvent=c,h}_getActiveElements(t,e,s,n){if(t.type==="mouseout")return[];if(!s)return e;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,n)}},w(pt,"defaults",H),w(pt,"instances",Te),w(pt,"overrides",Tt),w(pt,"registry",rt),w(pt,"version",tl),w(pt,"getChart",Ms),pt);function Ss(){return L(Ti.instances,i=>i._plugins.invalidate())}function ol(i,t,e){const{startAngle:s,x:n,y:o,outerRadius:r,innerRadius:a,options:l}=t,{borderWidth:c,borderJoinStyle:h}=l,d=Math.min(c/r,at(s-e));if(i.beginPath(),i.arc(n,o,r-c/2,s+d/2,e-d/2),a>0){const f=Math.min(c/a,at(s-e));i.arc(n,o,a+c/2,e-f/2,s+f/2,!0)}else{const f=Math.min(c/2,r*at(s-e));if(h==="round")i.arc(n,o,f,e-E/2,s+E/2,!0);else if(h==="bevel"){const u=2*f*f,p=-u*Math.cos(e+E/2)+n,g=-u*Math.sin(e+E/2)+o,m=u*Math.cos(s+E/2)+n,b=u*Math.sin(s+E/2)+o;i.lineTo(p,g),i.lineTo(m,b)}}i.closePath(),i.moveTo(0,0),i.rect(0,0,i.canvas.width,i.canvas.height),i.clip("evenodd")}function rl(i,t,e){const{startAngle:s,pixelMargin:n,x:o,y:r,outerRadius:a,innerRadius:l}=t;let c=n/a;i.beginPath(),i.arc(o,r,a,s-c,e+c),l>n?(c=n/l,i.arc(o,r,l,e+c,s-c,!0)):i.arc(o,r,n,e+V,s-V),i.closePath(),i.clip()}function al(i){return Mi(i,["outerStart","outerEnd","innerStart","innerEnd"])}function ll(i,t,e,s){const n=al(i.options.borderRadius),o=(e-t)/2,r=Math.min(o,s*t/2),a=l=>{const c=(e-Math.min(o,l))*s/2;return Z(l,0,Math.min(o,c))};return{outerStart:a(n.outerStart),outerEnd:a(n.outerEnd),innerStart:Z(n.innerStart,0,r),innerEnd:Z(n.innerEnd,0,r)}}function Ft(i,t,e,s){return{x:e+i*Math.cos(t),y:s+i*Math.sin(t)}}function je(i,t,e,s,n,o){const{x:r,y:a,startAngle:l,pixelMargin:c,innerRadius:h}=t,d=Math.max(t.outerRadius+s+e-c,0),f=h>0?h+s+e+c:0;let u=0;const p=n-l;if(s){const I=h>0?h-s:0,z=d>0?d-s:0,W=(I+z)/2,st=W!==0?p*W/(W+s):p;u=(p-st)/2}const g=Math.max(.001,p*d-e/E)/d,m=(p-g)/2,b=l+m+u,x=n-m-u,{outerStart:_,outerEnd:v,innerStart:y,innerEnd:k}=ll(t,f,d,x-b),M=d-_,S=d-v,P=b+_/M,O=x-v/S,A=f+y,C=f+k,N=b+y/A,Q=x-k/C;if(i.beginPath(),o){const I=(P+O)/2;if(i.arc(r,a,d,P,I),i.arc(r,a,d,I,O),v>0){const Y=Ft(S,O,r,a);i.arc(Y.x,Y.y,v,O,x+V)}const z=Ft(C,x,r,a);if(i.lineTo(z.x,z.y),k>0){const Y=Ft(C,Q,r,a);i.arc(Y.x,Y.y,k,x+V,Q+Math.PI)}const W=(x-k/f+(b+y/f))/2;if(i.arc(r,a,f,x-k/f,W,!0),i.arc(r,a,f,W,b+y/f,!0),y>0){const Y=Ft(A,N,r,a);i.arc(Y.x,Y.y,y,N+Math.PI,b-V)}const st=Ft(M,b,r,a);if(i.lineTo(st.x,st.y),_>0){const Y=Ft(M,P,r,a);i.arc(Y.x,Y.y,_,b-V,P)}}else{i.moveTo(r,a);const I=Math.cos(P)*d+r,z=Math.sin(P)*d+a;i.lineTo(I,z);const W=Math.cos(O)*d+r,st=Math.sin(O)*d+a;i.lineTo(W,st)}i.closePath()}function cl(i,t,e,s,n){const{fullCircles:o,startAngle:r,circumference:a}=t;let l=t.endAngle;if(o){je(i,t,e,s,l,n);for(let c=0;c=E&&u===0&&h!=="miter"&&ol(i,t,g),o||(je(i,t,e,s,g,n),i.stroke())}class Jt extends ct{constructor(e){super();w(this,"circumference");w(this,"endAngle");w(this,"fullCircles");w(this,"innerRadius");w(this,"outerRadius");w(this,"pixelMargin");w(this,"startAngle");this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,s,n){const o=this.getProps(["x","y"],n),{angle:r,distance:a}=tn(o,{x:e,y:s}),{startAngle:l,endAngle:c,innerRadius:h,outerRadius:d,circumference:f}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],n),u=(this.options.spacing+this.options.borderWidth)/2,p=D(f,c-l),g=en(r,l,c)&&l!==c,m=p>=X||g,b=Ct(a,h+u,d+u);return m&&b}getCenterPoint(e){const{x:s,y:n,startAngle:o,endAngle:r,innerRadius:a,outerRadius:l}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],e),{offset:c,spacing:h}=this.options,d=(o+r)/2,f=(a+l+h+c)/2;return{x:s+Math.cos(d)*f,y:n+Math.sin(d)*f}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:s,circumference:n}=this,o=(s.offset||0)/4,r=(s.spacing||0)/2,a=s.circular;if(this.pixelMargin=s.borderAlign==="inner"?.33:0,this.fullCircles=n>X?Math.floor(n/X):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();const l=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(l)*o,Math.sin(l)*o);const c=1-Math.sin(Math.min(E,n||0)),h=o*c;e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,cl(e,this,h,r,a),hl(e,this,h,r,a),e.restore()}}w(Jt,"id","arc"),w(Jt,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1}),w(Jt,"defaultRoutes",{backgroundColor:"backgroundColor"}),w(Jt,"descriptors",{_scriptable:!0,_indexable:e=>e!=="borderDash"});function Ps(i,t,e,s){const n=i.options,{[e]:o}=i.getProps([e],s);return Math.abs(t-o){let{boxHeight:e=t,boxWidth:s=t}=i;return i.usePointStyle&&(e=Math.min(e,t),s=i.pointStyleWidth||Math.min(s,t)),{boxWidth:s,boxHeight:e,itemHeight:Math.max(t,e)}},ml=(i,t)=>i!==null&&t!==null&&i.datasetIndex===t.datasetIndex&&i.index===t.index;class Os extends ct{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,s){this.maxWidth=t,this.maxHeight=e,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=F(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(s=>t.filter(s,this.chart.data))),t.sort&&(e=e.sort((s,n)=>t.sort(s,n,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}const s=t.labels,n=$(s.font),o=n.size,r=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=As(s,o);let c,h;e.font=n.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(r,o,a,l)+10):(h=this.maxHeight,c=this._fitCols(r,n,a,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,s,n){const{ctx:o,maxWidth:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=n+a;let d=t;o.textAlign="left",o.textBaseline="middle";let f=-1,u=-h;return this.legendItems.forEach((p,g)=>{const m=s+e/2+o.measureText(p.text).width;(g===0||c[c.length-1]+m+2*a>r)&&(d+=h,c[c.length-(g>0?0:1)]=0,u+=h,f++),l[g]={left:0,top:u,row:f,width:m,height:n},c[c.length-1]+=m+a}),d}_fitCols(t,e,s,n){const{ctx:o,maxHeight:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=r-t;let d=a,f=0,u=0,p=0,g=0;return this.legendItems.forEach((m,b)=>{const{itemWidth:x,itemHeight:_}=bl(s,e,o,m,n);b>0&&u+_+2*a>h&&(d+=f+a,c.push({width:f,height:u}),p+=f+a,g++,f=u=0),l[b]={left:p,top:u,col:g,width:x,height:_},f=Math.max(f,x),u+=_+a}),d+=f,c.push({width:f,height:u}),d}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:s,labels:{padding:n},rtl:o}}=this,r=Bt(o,this.left,this.width);if(this.isHorizontal()){let a=0,l=U(s,this.left+n,this.right-this.lineWidths[a]);for(const c of e)a!==c.row&&(a=c.row,l=U(s,this.left+n,this.right-this.lineWidths[a])),c.top+=this.top+t+n,c.left=r.leftForLtr(r.x(l),c.width),l+=c.width+n}else{let a=0,l=U(s,this.top+t+n,this.bottom-this.columnSizes[a].height);for(const c of e)c.col!==a&&(a=c.col,l=U(s,this.top+t+n,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+n,c.left=r.leftForLtr(r.x(c.left),c.width),l+=c.height+n}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;ki(t,this),this._draw(),wi(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:s,ctx:n}=this,{align:o,labels:r}=t,a=H.color,l=Bt(t.rtl,this.left,this.width),c=$(r.font),{padding:h}=r,d=c.size,f=d/2;let u;this.drawTitle(),n.textAlign=l.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=c.string;const{boxWidth:p,boxHeight:g,itemHeight:m}=As(r,d),b=function(k,M,S){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;n.save();const P=D(S.lineWidth,1);if(n.fillStyle=D(S.fillStyle,a),n.lineCap=D(S.lineCap,"butt"),n.lineDashOffset=D(S.lineDashOffset,0),n.lineJoin=D(S.lineJoin,"miter"),n.lineWidth=P,n.strokeStyle=D(S.strokeStyle,a),n.setLineDash(D(S.lineDash,[])),r.usePointStyle){const O={radius:g*Math.SQRT2/2,pointStyle:S.pointStyle,rotation:S.rotation,borderWidth:P},A=l.xPlus(k,p/2),C=M+f;hn(n,O,A,C,r.pointStyleWidth&&p)}else{const O=M+Math.max((d-g)/2,0),A=l.leftForLtr(k,p),C=zt(S.borderRadius);n.beginPath(),Object.values(C).some(N=>N!==0)?Be(n,{x:A,y:O,w:p,h:g,radius:C}):n.rect(A,O,p,g),n.fill(),P!==0&&n.stroke()}n.restore()},x=function(k,M,S){ce(n,S.text,k,M+m/2,c,{strikethrough:S.hidden,textAlign:l.textAlign(S.textAlign)})},_=this.isHorizontal(),v=this._computeTitleHeight();_?u={x:U(o,this.left+h,this.right-s[0]),y:this.top+h+v,line:0}:u={x:this.left+h,y:U(o,this.top+v+h,this.bottom-e[0].height),line:0},mn(this.ctx,t.textDirection);const y=m+h;this.legendItems.forEach((k,M)=>{n.strokeStyle=k.fontColor,n.fillStyle=k.fontColor;const S=n.measureText(k.text).width,P=l.textAlign(k.textAlign||(k.textAlign=r.textAlign)),O=p+f+S;let A=u.x,C=u.y;l.setWidth(this.width),_?M>0&&A+O+h>this.right&&(C=u.y+=y,u.line++,A=u.x=U(o,this.left+h,this.right-s[u.line])):M>0&&C+y>this.bottom&&(A=u.x=A+e[u.line].width+h,u.line++,C=u.y=U(o,this.top+v+h,this.bottom-e[u.line].height));const N=l.x(A);if(b(N,C,k),A=jo(P,A+p+f,_?A+O:this.right,t.rtl),x(l.x(A),C,k),_)u.x+=O+h;else if(typeof k.text!="string"){const Q=c.lineHeight;u.y+=Tn(k,Q)+h}else u.y+=y}),bn(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,s=$(e.font),n=J(e.padding);if(!e.display)return;const o=Bt(t.rtl,this.left,this.width),r=this.ctx,a=e.position,l=s.size/2,c=n.top+l;let h,d=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),h=this.top+c,d=U(t.align,d,this.right-f);else{const p=this.columnSizes.reduce((g,m)=>Math.max(g,m.height),0);h=c+U(t.align,this.top,this.bottom-p-t.labels.padding-this._computeTitleHeight())}const u=U(a,d,d+f);r.textAlign=o.textAlign(yi(a)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=s.string,ce(r,e.text,u,h,s)}_computeTitleHeight(){const t=this.options.title,e=$(t.font),s=J(t.padding);return t.display?e.lineHeight+s.height:0}_getLegendItemAt(t,e){let s,n,o;if(Ct(t,this.left,this.right)&&Ct(e,this.top,this.bottom)){for(o=this.legendHitBoxes,s=0;so.length>r.length?o:r)),t+e.size/2+s.measureText(n).width}function _l(i,t,e){let s=i;return typeof t.text!="string"&&(s=Tn(t,e)),s}function Tn(i,t){const e=i.text?i.text.length:0;return t*e}function yl(i,t){return!!((i==="mousemove"||i==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(i==="click"||i==="mouseup"))}var pc={id:"legend",_element:Os,start(i,t,e){const s=i.legend=new Os({ctx:i.ctx,options:e,chart:i});et.configure(i,s,e),et.addBox(i,s)},stop(i){et.removeBox(i,i.legend),delete i.legend},beforeUpdate(i,t,e){const s=i.legend;et.configure(i,s,e),s.options=e},afterUpdate(i){const t=i.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(i,t){t.replay||i.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(i,t,e){const s=t.datasetIndex,n=e.chart;n.isDatasetVisible(s)?(n.hide(s),t.hidden=!0):(n.show(s),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:i=>i.chart.options.color,boxWidth:40,padding:10,generateLabels(i){const t=i.data.datasets,{labels:{usePointStyle:e,pointStyle:s,textAlign:n,color:o,useBorderRadius:r,borderRadius:a}}=i.legend.options;return i._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(e?0:void 0),h=J(c.borderWidth);return{text:t[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:c.borderColor,pointStyle:s||c.pointStyle,rotation:c.rotation,textAlign:n||c.textAlign,borderRadius:r&&(a||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:i=>i.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:i=>!i.startsWith("on"),labels:{_scriptable:i=>!["generateLabels","filter","sort"].includes(i)}}};class Rn extends ct{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const s=this.options;if(this.left=0,this.top=0,!s.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=e;const n=j(s.text)?s.text.length:1;this._padding=J(s.padding);const o=n*$(s.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){const{top:e,left:s,bottom:n,right:o,options:r}=this,a=r.align;let l=0,c,h,d;return this.isHorizontal()?(h=U(a,s,o),d=e+t,c=o-s):(r.position==="left"?(h=s+t,d=U(a,n,e),l=E*-.5):(h=o-t,d=U(a,e,n),l=E*.5),c=n-e),{titleX:h,titleY:d,maxWidth:c,rotation:l}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const s=$(e.font),o=s.lineHeight/2+this._padding.top,{titleX:r,titleY:a,maxWidth:l,rotation:c}=this._drawArgs(o);ce(t,e.text,0,0,s,{color:e.color,maxWidth:l,rotation:c,textAlign:yi(e.align),textBaseline:"middle",translation:[r,a]})}}function vl(i,t){const e=new Rn({ctx:i.ctx,options:t,chart:i});et.configure(i,e,t),et.addBox(i,e),i.titleBlock=e}var mc={id:"title",_element:Rn,start(i,t,e){vl(i,e)},stop(i){const t=i.titleBlock;et.removeBox(i,t),delete i.titleBlock},beforeUpdate(i,t,e){const s=i.titleBlock;et.configure(i,s,e),s.options=e},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const te={average(i){if(!i.length)return!1;let t,e,s=new Set,n=0,o=0;for(t=0,e=i.length;ta+l)/s.size,y:n/o}},nearest(i,t){if(!i.length)return!1;let e=t.x,s=t.y,n=Number.POSITIVE_INFINITY,o,r,a;for(o=0,r=i.length;o-1?i.split(` -`):i}function kl(i,t){const{element:e,datasetIndex:s,index:n}=t,o=i.getDatasetMeta(s).controller,{label:r,value:a}=o.getLabelAndValue(n);return{chart:i,label:r,parsed:o.getParsed(n),raw:i.data.datasets[s].data[n],formattedValue:a,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:e}}function Cs(i,t){const e=i.chart.ctx,{body:s,footer:n,title:o}=i,{boxWidth:r,boxHeight:a}=t,l=$(t.bodyFont),c=$(t.titleFont),h=$(t.footerFont),d=o.length,f=n.length,u=s.length,p=J(t.padding);let g=p.height,m=0,b=s.reduce((v,y)=>v+y.before.length+y.lines.length+y.after.length,0);if(b+=i.beforeBody.length+i.afterBody.length,d&&(g+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const v=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;g+=u*v+(b-u)*l.lineHeight+(b-1)*t.bodySpacing}f&&(g+=t.footerMarginTop+f*h.lineHeight+(f-1)*t.footerSpacing);let x=0;const _=function(v){m=Math.max(m,e.measureText(v).width+x)};return e.save(),e.font=c.string,L(i.title,_),e.font=l.string,L(i.beforeBody.concat(i.afterBody),_),x=t.displayColors?r+2+t.boxPadding:0,L(s,v=>{L(v.before,_),L(v.lines,_),L(v.after,_)}),x=0,e.font=h.string,L(i.footer,_),e.restore(),m+=p.width,{width:m,height:g}}function wl(i,t){const{y:e,height:s}=t;return ei.height-s/2?"bottom":"center"}function Ml(i,t,e,s){const{x:n,width:o}=s,r=e.caretSize+e.caretPadding;if(i==="left"&&n+o+r>t.width||i==="right"&&n-o-r<0)return!0}function Sl(i,t,e,s){const{x:n,width:o}=e,{width:r,chartArea:{left:a,right:l}}=i;let c="center";return s==="center"?c=n<=(a+l)/2?"left":"right":n<=o/2?c="left":n>=r-o/2&&(c="right"),Ml(c,i,t,e)&&(c="center"),c}function Ds(i,t,e){const s=e.yAlign||t.yAlign||wl(i,e);return{xAlign:e.xAlign||t.xAlign||Sl(i,t,e,s),yAlign:s}}function Pl(i,t){let{x:e,width:s}=i;return t==="right"?e-=s:t==="center"&&(e-=s/2),e}function Al(i,t,e){let{y:s,height:n}=i;return t==="top"?s+=e:t==="bottom"?s-=n+e:s-=n/2,s}function Ts(i,t,e,s){const{caretSize:n,caretPadding:o,cornerRadius:r}=i,{xAlign:a,yAlign:l}=e,c=n+o,{topLeft:h,topRight:d,bottomLeft:f,bottomRight:u}=zt(r);let p=Pl(t,a);const g=Al(t,l,c);return l==="center"?a==="left"?p+=c:a==="right"&&(p-=c):a==="left"?p-=Math.max(h,f)+n:a==="right"&&(p+=Math.max(d,u)+n),{x:Z(p,0,s.width-t.width),y:Z(g,0,s.height-t.height)}}function ke(i,t,e){const s=J(e.padding);return t==="center"?i.x+i.width/2:t==="right"?i.x+i.width-s.right:i.x+s.left}function Rs(i){return ot([],ft(i))}function Ol(i,t,e){return jt(i,{tooltip:t,tooltipItems:e,type:"tooltip"})}function Ls(i,t){const e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}const Ln={beforeTitle:ht,title(i){if(i.length>0){const t=i[0],e=t.chart.data.labels,s=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(s>0&&t.dataIndex"u"?Ln[t].call(e,s):n}class ui extends ct{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,s=this.options.setContext(this.getContext()),n=s.enabled&&e.options.animation&&s.animations,o=new xn(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=Ol(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){const{callbacks:s}=e,n=K(s,"beforeTitle",this,t),o=K(s,"title",this,t),r=K(s,"afterTitle",this,t);let a=[];return a=ot(a,ft(n)),a=ot(a,ft(o)),a=ot(a,ft(r)),a}getBeforeBody(t,e){return Rs(K(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:s}=e,n=[];return L(t,o=>{const r={before:[],lines:[],after:[]},a=Ls(s,o);ot(r.before,ft(K(a,"beforeLabel",this,o))),ot(r.lines,K(a,"label",this,o)),ot(r.after,ft(K(a,"afterLabel",this,o))),n.push(r)}),n}getAfterBody(t,e){return Rs(K(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:s}=e,n=K(s,"beforeFooter",this,t),o=K(s,"footer",this,t),r=K(s,"afterFooter",this,t);let a=[];return a=ot(a,ft(n)),a=ot(a,ft(o)),a=ot(a,ft(r)),a}_createItems(t){const e=this._active,s=this.chart.data,n=[],o=[],r=[];let a=[],l,c;for(l=0,c=e.length;lt.filter(h,d,f,s))),t.itemSort&&(a=a.sort((h,d)=>t.itemSort(h,d,s))),L(a,h=>{const d=Ls(t.callbacks,h);n.push(K(d,"labelColor",this,h)),o.push(K(d,"labelPointStyle",this,h)),r.push(K(d,"labelTextColor",this,h))}),this.labelColors=n,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,e){const s=this.options.setContext(this.getContext()),n=this._active;let o,r=[];if(!n.length)this.opacity!==0&&(o={opacity:0});else{const a=te[s.position].call(this,n,this._eventPosition);r=this._createItems(s),this.title=this.getTitle(r,s),this.beforeBody=this.getBeforeBody(r,s),this.body=this.getBody(r,s),this.afterBody=this.getAfterBody(r,s),this.footer=this.getFooter(r,s);const l=this._size=Cs(this,s),c=Object.assign({},a,l),h=Ds(this.chart,s,c),d=Ts(s,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,s,n){const o=this.getCaretPosition(t,s,n);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,s){const{xAlign:n,yAlign:o}=this,{caretSize:r,cornerRadius:a}=s,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:d}=zt(a),{x:f,y:u}=t,{width:p,height:g}=e;let m,b,x,_,v,y;return o==="center"?(v=u+g/2,n==="left"?(m=f,b=m-r,_=v+r,y=v-r):(m=f+p,b=m+r,_=v-r,y=v+r),x=m):(n==="left"?b=f+Math.max(l,h)+r:n==="right"?b=f+p-Math.max(c,d)-r:b=this.caretX,o==="top"?(_=u,v=_-r,m=b-r,x=b+r):(_=u+g,v=_+r,m=b+r,x=b-r),y=_),{x1:m,x2:b,x3:x,y1:_,y2:v,y3:y}}drawTitle(t,e,s){const n=this.title,o=n.length;let r,a,l;if(o){const c=Bt(s.rtl,this.x,this.width);for(t.x=ke(this,s.titleAlign,s),e.textAlign=c.textAlign(s.titleAlign),e.textBaseline="middle",r=$(s.titleFont),a=s.titleSpacing,e.fillStyle=s.titleColor,e.font=r.string,l=0;lx!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Be(t,{x:g,y:p,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),Be(t,{x:m,y:p+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(g,p,c,l),t.strokeRect(g,p,c,l),t.fillStyle=r.backgroundColor,t.fillRect(m,p+1,c-2,l-2))}t.fillStyle=this.labelTextColors[s]}drawBody(t,e,s){const{body:n}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=s,d=$(s.bodyFont);let f=d.lineHeight,u=0;const p=Bt(s.rtl,this.x,this.width),g=function(S){e.fillText(S,p.x(t.x+u),t.y+f/2),t.y+=f+o},m=p.textAlign(r);let b,x,_,v,y,k,M;for(e.textAlign=r,e.textBaseline="middle",e.font=d.string,t.x=ke(this,m,s),e.fillStyle=s.bodyColor,L(this.beforeBody,g),u=a&&m!=="right"?r==="center"?c/2+h:c+2+h:0,v=0,k=n.length;v0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,s=this.$animations,n=s&&s.x,o=s&&s.y;if(n||o){const r=te[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Cs(this,t),l=Object.assign({},r,this._size),c=Ds(e,t,l),h=Ts(t,l,c,e);(n._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let s=this.opacity;if(!s)return;this._updateAnimationTarget(e);const n={width:this.width,height:this.height},o={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;const r=J(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=s,this.drawBackground(o,t,n,e),mn(t,e.textDirection),o.y+=r.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),bn(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const s=this._active,n=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!Ie(s,n),r=this._positionChanged(n,e);(o||r)&&(this._active=n,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,s=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const n=this.options,o=this._active||[],r=this._getActiveElements(t,o,e,s),a=this._positionChanged(r,t),l=e||!Ie(r,o)||a;return l&&(this._active=r,(n.enabled||n.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,s,n){const o=this.options;if(t.type==="mouseout")return[];if(!n)return e.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const r=this.chart.getElementsAtEventForMode(t,o.mode,o,s);return o.reverse&&r.reverse(),r}_positionChanged(t,e){const{caretX:s,caretY:n,options:o}=this,r=te[o.position].call(this,t,e);return r!==!1&&(s!==r.x||n!==r.y)}}w(ui,"positioners",te);var bc={id:"tooltip",_element:ui,positioners:te,afterInit(i,t,e){e&&(i.tooltip=new ui({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){const t=i.tooltip;if(t&&t._willRender()){const e={tooltip:t};if(i.notifyPlugins("beforeTooltipDraw",{...e,cancelable:!0})===!1)return;t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e)}},afterEvent(i,t){if(i.tooltip){const e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Ln},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:i=>i!=="filter"&&i!=="itemSort"&&i!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const Cl=(i,t,e,s)=>(typeof t=="string"?(e=i.push(t)-1,s.unshift({index:e,label:t})):isNaN(t)&&(e=null),e);function Dl(i,t,e,s){const n=i.indexOf(t);if(n===-1)return Cl(i,t,e,s);const o=i.lastIndexOf(t);return n!==o?e:n}const Tl=(i,t)=>i===null?null:Z(Math.round(i),0,t);function Is(i){const t=this.getLabels();return i>=0&&ie.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}w(Fs,"id","category"),w(Fs,"defaults",{ticks:{callback:Is}});function Rl(i,t){const e=[],{bounds:n,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:d,includeBounds:f}=i,u=o||1,p=h-1,{min:g,max:m}=t,b=!R(r),x=!R(a),_=!R(c),v=(m-g)/(d+1);let y=Hi((m-g)/p/u)*u,k,M,S,P;if(y<1e-14&&!b&&!x)return[{value:g},{value:m}];P=Math.ceil(m/y)-Math.floor(g/y),P>p&&(y=Hi(P*y/p/u)*u),R(l)||(k=Math.pow(10,l),y=Math.ceil(y*k)/k),n==="ticks"?(M=Math.floor(g/y)*y,S=Math.ceil(m/y)*y):(M=g,S=m),b&&x&&o&&Ro((a-r)/o,y/1e3)?(P=Math.round(Math.min((a-r)/y,h)),y=(a-r)/P,M=r,S=a):_?(M=b?r:M,S=x?a:S,P=c-1,y=(S-M)/P):(P=(S-M)/y,Oe(P,Math.round(P),y/1e3)?P=Math.round(P):P=Math.ceil(P));const O=Math.max(Wi(y),Wi(M));k=Math.pow(10,R(l)?O:l),M=Math.round(M*k)/k,S=Math.round(S*k)/k;let A=0;for(b&&(f&&M!==r?(e.push({value:r}),Ma)break;e.push({value:C})}return x&&f&&S!==a?e.length&&Oe(e[e.length-1].value,a,Es(a,v,i))?e[e.length-1].value=a:e.push({value:a}):(!x||S===a)&&e.push({value:S}),e}function Es(i,t,{horizontal:e,minRotation:s}){const n=Ot(s),o=(e?Math.sin(n):Math.cos(n))||.001,r=.75*t*(""+i).length;return Math.min(t/o,r)}class Ll extends Nt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return R(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:s}=this.getUserBounds();let{min:n,max:o}=this;const r=l=>n=e?n:l,a=l=>o=s?o:l;if(t){const l=yt(n),c=yt(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(n===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(n-l)}this.min=n,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:e,stepSize:s}=t,n;return s?(n=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e=e||11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let s=this.getTickLimit();s=Math.max(2,s);const n={maxTicks:s,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},o=this._range||this,r=Rl(n,o);return t.bounds==="ticks"&&Lo(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let e=this.min,s=this.max;if(super.configure(),this.options.offset&&t.length){const n=(s-e)/Math.max(t.length-1,1)/2;e-=n,s+=n}this._startValue=e,this._endValue=s,this._valueRange=s-e}getLabelForValue(t){return ln(t,this.chart.options.locale,this.options.ticks.format)}}class zs extends Ll{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=it(t)?t:0,this.max=it(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,s=Ot(this.options.ticks.minRotation),n=(t?Math.sin(s):Math.cos(s))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,o.lineHeight/n))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}w(zs,"id","linear"),w(zs,"defaults",{ticks:{callback:cn.formatters.numeric}});const Ye={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},G=Object.keys(Ye);function Bs(i,t){return i-t}function Hs(i,t){if(R(t))return null;const e=i._adapter,{parser:s,round:n,isoWeekday:o}=i._parseOpts;let r=t;return typeof s=="function"&&(r=s(r)),it(r)||(r=typeof s=="string"?e.parse(r,s):e.parse(r)),r===null?null:(n&&(r=n==="week"&&(ze(o)||o===!0)?e.startOf(r,"isoWeek",o):e.startOf(r,n)),+r)}function Ws(i,t,e,s){const n=G.length;for(let o=G.indexOf(i);o=G.indexOf(e);o--){const r=G[o];if(Ye[r].common&&i._adapter.diff(n,s,r)>=t-1)return r}return G[e?G.indexOf(e):0]}function Fl(i){for(let t=G.indexOf(i)+1,e=G.length;t=t?e[s]:e[n];i[o]=!0}}function El(i,t,e,s){const n=i._adapter,o=+n.startOf(t[0].value,s),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+n.add(a,1,s))l=e[a],l>=0&&(t[l].major=!0);return t}function Ns(i,t,e){const s=[],n={},o=t.length;let r,a;for(r=0;r+t.value))}initOffsets(t=[]){let e=0,s=0,n,o;this.options.offset&&t.length&&(n=this.getDecimalForValue(t[0]),t.length===1?e=1-n:e=(this.getDecimalForValue(t[1])-n)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?s=o:s=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;e=Z(e,0,r),s=Z(s,0,r),this._offsets={start:e,end:s,factor:1/(e+1+s)}}_generate(){const t=this._adapter,e=this.min,s=this.max,n=this.options,o=n.time,r=o.unit||Ws(o.minUnit,e,s,this._getLabelCapacity(e)),a=D(n.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=ze(l)||l===!0,h={};let d=e,f,u;if(c&&(d=+t.startOf(d,"isoWeek",l)),d=+t.startOf(d,c?"day":r),t.diff(s,e,r)>1e5*a)throw new Error(e+" and "+s+" are too far apart with stepSize of "+a+" "+r);const p=n.ticks.source==="data"&&this.getDataTimestamps();for(f=d,u=0;f+g)}getLabelForValue(t){const e=this._adapter,s=this.options.time;return s.tooltipFormat?e.format(t,s.tooltipFormat):e.format(t,s.displayFormats.datetime)}format(t,e){const n=this.options.time.displayFormats,o=this._unit,r=e||n[o];return this._adapter.format(t,r)}_tickFormatFunction(t,e,s,n){const o=this.options,r=o.ticks.callback;if(r)return F(r,[t,e,s],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&a[l],d=c&&a[c],f=s[e],u=c&&d&&f&&f.major;return this._adapter.format(t,n||(u?d:h))}generateTickLabels(t){let e,s,n;for(e=0,s=t.length;e0?a:1}getDataTimestamps(){let t=this._cache.data||[],e,s;if(t.length)return t;const n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(e=0,s=n.length;e=i[s].pos&&t<=i[n].pos&&({lo:s,hi:n}=li(i,"pos",t)),{pos:o,time:a}=i[s],{pos:r,time:l}=i[n]):(t>=i[s].time&&t<=i[n].time&&({lo:s,hi:n}=li(i,"time",t)),{time:o,pos:a}=i[s],{time:r,pos:l}=i[n]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class Vs extends Ne{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=we(e,this.min),this._tableRange=we(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:s}=this,n=[],o=[];let r,a,l,c,h;for(r=0,a=t.length;r=e&&c<=s&&n.push(c);if(n.length<2)return[{time:e,pos:0},{time:s,pos:1}];for(r=0,a=n.length;rn-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),s=this.getLabelTimestamps();return e.length&&s.length?t=this.normalize(e.concat(s)):t=e.length?e:s,t=this._cache.all=t,t}getDecimalForValue(t){return(we(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,s=this.getDecimalForPixel(t)/e.factor-e.end;return we(this._table,s*this._tableRange+this._minPos,!0)}}w(Vs,"id","timeseries"),w(Vs,"defaults",Ne.defaults);const In={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},zl={ariaLabel:{type:String},ariaDescribedby:{type:String}},Bl={type:{type:String,required:!0},destroyDelay:{type:Number,default:0},...In,...zl},Hl=Xn[0]==="2"?(i,t)=>Object.assign(i,{attrs:t}):(i,t)=>Object.assign(i,t);function Et(i){return Ks(i)?ri(i):i}function Wl(i){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:i;return Ks(t)?new Proxy(i,{}):i}function jl(i,t){const e=i.options;e&&t&&Object.assign(e,t)}function Fn(i,t){i.labels=t}function En(i,t,e){const s=[];i.datasets=t.map(n=>{const o=i.datasets.find(r=>r[e]===n[e]);return!o||!n.data||s.includes(o)?{...n}:(s.push(o),Object.assign(o,n),o)})}function Nl(i,t){const e={labels:[],datasets:[]};return Fn(e,i.labels),En(e,i.datasets,t),e}const Vl=Us({props:Bl,setup(i,t){let{expose:e,slots:s}=t;const n=Kn(null),o=Xs(null);e({chart:o});const r=()=>{if(!n.value)return;const{type:c,data:h,options:d,plugins:f,datasetIdKey:u}=i,p=Nl(h,u),g=Wl(p,h);o.value=new Ti(n.value,{type:c,data:g,options:{...d},plugins:f})},a=()=>{const c=ri(o.value);c&&(i.destroyDelay>0?setTimeout(()=>{c.destroy(),o.value=null},i.destroyDelay):(c.destroy(),o.value=null))},l=c=>{c.update(i.updateMode)};return qn(r),Gn(a),Zn([()=>i.options,()=>i.data],(c,h)=>{let[d,f]=c,[u,p]=h;const g=ri(o.value);if(!g)return;let m=!1;if(d){const b=Et(d),x=Et(u);b&&b!==x&&(jl(g,b),m=!0)}if(f){const b=Et(f.labels),x=Et(p.labels),_=Et(f.datasets),v=Et(p.datasets);b!==x&&(Fn(g.config.data,b),m=!0),_&&_!==v&&(En(g.config.data,_,i.datasetIdKey),m=!0)}m&&Qn(()=>{l(g)})},{deep:!0}),()=>oi("canvas",{role:"img","aria-label":i.ariaLabel,"aria-describedby":i.ariaDescribedby,ref:n},[oi("p",{},[s.default?s.default():""])])}});function $l(i,t){return Ti.register(t),Us({props:In,setup(e,s){let{expose:n}=s;const o=Xs(null),r=a=>{o.value=a==null?void 0:a.chart};return n({chart:o}),()=>oi(Vl,Hl({ref:r},{type:i,...e}))}})}const xc=$l("bar",Ce);/*! - * chartjs-plugin-datalabels v2.2.0 - * https://chartjs-plugin-datalabels.netlify.app - * (c) 2017-2022 chartjs-plugin-datalabels contributors - * Released under the MIT license - */var $s=function(){if(typeof window<"u"){if(window.devicePixelRatio)return window.devicePixelRatio;var i=window.screen;if(i)return(i.deviceXDPI||1)/(i.logicalXDPI||1)}return 1}(),oe={toTextLines:function(i){var t=[],e;for(i=[].concat(i);i.length;)e=i.pop(),typeof e=="string"?t.unshift.apply(t,e.split(` -`)):Array.isArray(e)?i.push.apply(i,e):R(i)||t.unshift(""+e);return t},textSize:function(i,t,e){var s=[].concat(t),n=s.length,o=i.font,r=0,a;for(i.font=e.string,a=0;ae.right&&(s|=Bn),te.bottom&&(s|=Hn),s}function Xl(i,t){for(var e=i.x0,s=i.y0,n=i.x1,o=i.y1,r=Me(e,s,t),a=Me(n,o,t),l,c,h;!(!(r|a)||r&a);)l=r||a,l&Wn?(c=e+(n-e)*(t.top-s)/(o-s),h=t.top):l&Hn?(c=e+(n-e)*(t.bottom-s)/(o-s),h=t.bottom):l&Bn?(h=s+(o-s)*(t.right-e)/(n-e),c=t.right):l&zn&&(h=s+(o-s)*(t.left-e)/(n-e),c=t.left),l===r?(e=c,s=h,r=Me(e,s,t)):(n=c,o=h,a=Me(n,o,t));return{x0:e,x1:n,y0:s,y1:o}}function Se(i,t){var e=t.anchor,s=i,n,o;return t.clamp&&(s=Xl(s,t.area)),e==="start"?(n=s.x0,o=s.y0):e==="end"?(n=s.x1,o=s.y1):(n=(s.x0+s.x1)/2,o=(s.y0+s.y1)/2),Yl(n,o,i.vx,i.vy,t.align)}var Pe={arc:function(i,t){var e=(i.startAngle+i.endAngle)/2,s=Math.cos(e),n=Math.sin(e),o=i.innerRadius,r=i.outerRadius;return Se({x0:i.x+s*o,y0:i.y+n*o,x1:i.x+s*r,y1:i.y+n*r,vx:s,vy:n},t)},point:function(i,t){var e=ni(i,t.origin),s=e.x*i.options.radius,n=e.y*i.options.radius;return Se({x0:i.x-s,y0:i.y-n,x1:i.x+s,y1:i.y+n,vx:e.x,vy:e.y},t)},bar:function(i,t){var e=ni(i,t.origin),s=i.x,n=i.y,o=0,r=0;return i.horizontal?(s=Math.min(i.x,i.base),o=Math.abs(i.base-i.x)):(n=Math.min(i.y,i.base),r=Math.abs(i.base-i.y)),Se({x0:s,y0:n+r,x1:s+o,y1:n,vx:e.x,vy:e.y},t)},fallback:function(i,t){var e=ni(i,t.origin);return Se({x0:i.x,y0:i.y,x1:i.x+(i.width||0),y1:i.y+(i.height||0),vx:e.x,vy:e.y},t)}},gt=oe.rasterize;function Kl(i){var t=i.borderWidth||0,e=i.padding,s=i.size.height,n=i.size.width,o=-n/2,r=-s/2;return{frame:{x:o-e.left-t,y:r-e.top-t,w:n+e.width+t*2,h:s+e.height+t*2},text:{x:o,y:r,w:n,h:s}}}function ql(i,t){var e=t.chart.getDatasetMeta(t.datasetIndex).vScale;if(!e)return null;if(e.xCenter!==void 0&&e.yCenter!==void 0)return{x:e.xCenter,y:e.yCenter};var s=e.getBasePixel();return i.horizontal?{x:s,y:null}:{x:null,y:s}}function Gl(i){return i instanceof Jt?Pe.arc:i instanceof Re?Pe.point:i instanceof Le?Pe.bar:Pe.fallback}function Zl(i,t,e,s,n,o){var r=Math.PI/2;if(o){var a=Math.min(o,n/2,s/2),l=t+a,c=e+a,h=t+s-a,d=e+n-a;i.moveTo(t,c),ls.x+s.w+e*2||i.y>s.y+s.h+e*2)},intersects:function(i){var t=this._points(),e=i._points(),s=[Ae(t[0],t[1]),Ae(t[0],t[3])],n,o,r;for(this._rotation!==i._rotation&&s.push(Ae(e[0],e[1]),Ae(e[0],e[3])),n=0;n=0;--e)for(n=i[e].$layout,s=e-1;s>=0&&n._visible;--s)o=i[s].$layout,o._visible&&n._box.intersects(o._box)&&t(n,o);return i}function oc(i){var t,e,s,n,o,r,a;for(t=0,e=i.length;tl.getProps([c],!0)[c]}),o=s.geometry(),r=Vn(a,s.model(),o),n._box.update(r,o,s.rotation()));return nc(i,function(l,c){var h=l._hidable,d=c._hidable;h&&d||d?c._visible=!1:h&&(l._visible=!1)})}var re={prepare:function(i){var t=[],e,s,n,o,r;for(e=0,n=i.length;e=0;--e)if(s=i[e].$layout,s&&s._visible&&s._box.contains(t))return i[e];return null},draw:function(i,t){var e,s,n,o,r,a;for(e=0,s=t.length;e(pe(),fe("div",Rt,[e.title||t.$slots.header?(pe(),fe("div",Ot,[de(t.$slots,"header",{},()=>[Be("h3",null,St(e.title),1)])])):Fe("",!0),Be("div",At,[de(t.$slots,"default",{},void 0)]),t.$slots.footer?(pe(),fe("div",Tt,[de(t.$slots,"footer",{},void 0)])):Fe("",!0)]))}},sr=Et(Ct,[["__scopeId","data-v-2f260fa2"]]);function Xe(e,t){return function(){return e.apply(t,arguments)}}const{toString:xt}=Object.prototype,{getPrototypeOf:Se}=Object,{iterator:se,toStringTag:Ge}=Symbol,oe=(e=>t=>{const n=xt.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),_=e=>(e=e.toLowerCase(),t=>oe(t)===e),ie=e=>t=>typeof t===e,{isArray:H}=Array,q=ie("undefined");function V(e){return e!==null&&!q(e)&&e.constructor!==null&&!q(e.constructor)&&T(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Qe=_("ArrayBuffer");function Nt(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Qe(e.buffer),t}const Pt=ie("string"),T=ie("function"),Ze=ie("number"),W=e=>e!==null&&typeof e=="object",_t=e=>e===!0||e===!1,ee=e=>{if(oe(e)!=="object")return!1;const t=Se(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Ge in e)&&!(se in e)},Ft=e=>{if(!W(e)||V(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},Bt=_("Date"),Lt=_("File"),Ut=_("Blob"),kt=_("FileList"),Dt=e=>W(e)&&T(e.pipe),jt=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||T(e.append)&&((t=oe(e))==="formdata"||t==="object"&&T(e.toString)&&e.toString()==="[object FormData]"))},$t=_("URLSearchParams"),[It,vt,qt,Ht]=["ReadableStream","Request","Response","Headers"].map(_),Mt=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function K(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),H(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const j=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,et=e=>!q(e)&&e!==j;function ge(){const{caseless:e,skipUndefined:t}=et(this)&&this||{},n={},r=(s,o)=>{const i=e&&Ye(n,o)||o;ee(n[i])&&ee(s)?n[i]=ge(n[i],s):ee(s)?n[i]=ge({},s):H(s)?n[i]=s.slice():(!t||!q(s))&&(n[i]=s)};for(let s=0,o=arguments.length;s(K(t,(s,o)=>{n&&T(s)?e[o]=Xe(s,n):e[o]=s},{allOwnKeys:r}),e),Jt=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Vt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Wt=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&Se(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Kt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Xt=e=>{if(!e)return null;if(H(e))return e;let t=e.length;if(!Ze(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Gt=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Se(Uint8Array)),Qt=(e,t)=>{const r=(e&&e[se]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},Zt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Yt=_("HTMLFormElement"),en=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Le=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),tn=_("RegExp"),tt=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};K(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},nn=e=>{tt(e,(t,n)=>{if(T(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(T(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},rn=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return H(e)?r(e):r(String(e).split(t)),n},sn=()=>{},on=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function an(e){return!!(e&&T(e.append)&&e[Ge]==="FormData"&&e[se])}const cn=e=>{const t=new Array(10),n=(r,s)=>{if(W(r)){if(t.indexOf(r)>=0)return;if(V(r))return r;if(!("toJSON"in r)){t[s]=r;const o=H(r)?[]:{};return K(r,(i,c)=>{const d=n(i,s+1);!q(d)&&(o[c]=d)}),t[s]=void 0,o}}return r};return n(e,0)},ln=_("AsyncFunction"),un=e=>e&&(W(e)||T(e))&&T(e.then)&&T(e.catch),nt=((e,t)=>e?setImmediate:t?((n,r)=>(j.addEventListener("message",({source:s,data:o})=>{s===j&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),j.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",T(j.postMessage)),fn=typeof queueMicrotask<"u"?queueMicrotask.bind(j):typeof process<"u"&&process.nextTick||nt,dn=e=>e!=null&&T(e[se]),a={isArray:H,isArrayBuffer:Qe,isBuffer:V,isFormData:jt,isArrayBufferView:Nt,isString:Pt,isNumber:Ze,isBoolean:_t,isObject:W,isPlainObject:ee,isEmptyObject:Ft,isReadableStream:It,isRequest:vt,isResponse:qt,isHeaders:Ht,isUndefined:q,isDate:Bt,isFile:Lt,isBlob:Ut,isRegExp:tn,isFunction:T,isStream:Dt,isURLSearchParams:$t,isTypedArray:Gt,isFileList:kt,forEach:K,merge:ge,extend:zt,trim:Mt,stripBOM:Jt,inherits:Vt,toFlatObject:Wt,kindOf:oe,kindOfTest:_,endsWith:Kt,toArray:Xt,forEachEntry:Qt,matchAll:Zt,isHTMLForm:Yt,hasOwnProperty:Le,hasOwnProp:Le,reduceDescriptors:tt,freezeMethods:nn,toObjectSet:rn,toCamelCase:en,noop:sn,toFiniteNumber:on,findKey:Ye,global:j,isContextDefined:et,isSpecCompliantForm:an,toJSONObject:cn,isAsyncFn:ln,isThenable:un,setImmediate:nt,asap:fn,isIterable:dn};function g(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(g,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const rt=g.prototype,st={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{st[e]={value:e}});Object.defineProperties(g,st);Object.defineProperty(rt,"isAxiosError",{value:!0});g.from=(e,t,n,r,s,o)=>{const i=Object.create(rt);a.toFlatObject(e,i,function(l){return l!==Error.prototype},f=>f!=="isAxiosError");const c=e&&e.message?e.message:"Error",d=t==null&&e?e.code:t;return g.call(i,c,d,n,r,s),e&&i.cause==null&&Object.defineProperty(i,"cause",{value:e,configurable:!0}),i.name=e&&e.name||"Error",o&&Object.assign(i,o),i};const pn=null;function be(e){return a.isPlainObject(e)||a.isArray(e)}function ot(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function Ue(e,t,n){return e?e.concat(t).map(function(s,o){return s=ot(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function hn(e){return a.isArray(e)&&!e.some(be)}const mn=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function ae(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,p){return!a.isUndefined(p[m])});const r=n.metaTokens,s=n.visitor||l,o=n.dots,i=n.indexes,d=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function f(u){if(u===null)return"";if(a.isDate(u))return u.toISOString();if(a.isBoolean(u))return u.toString();if(!d&&a.isBlob(u))throw new g("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(u)||a.isTypedArray(u)?d&&typeof Blob=="function"?new Blob([u]):Buffer.from(u):u}function l(u,m,p){let E=u;if(u&&!p&&typeof u=="object"){if(a.endsWith(m,"{}"))m=r?m:m.slice(0,-2),u=JSON.stringify(u);else if(a.isArray(u)&&hn(u)||(a.isFileList(u)||a.endsWith(m,"[]"))&&(E=a.toArray(u)))return m=ot(m),E.forEach(function(S,A){!(a.isUndefined(S)||S===null)&&t.append(i===!0?Ue([m],A,o):i===null?m:m+"[]",f(S))}),!1}return be(u)?!0:(t.append(Ue(p,m,o),f(u)),!1)}const h=[],b=Object.assign(mn,{defaultVisitor:l,convertValue:f,isVisitable:be});function R(u,m){if(!a.isUndefined(u)){if(h.indexOf(u)!==-1)throw Error("Circular reference detected in "+m.join("."));h.push(u),a.forEach(u,function(E,x){(!(a.isUndefined(E)||E===null)&&s.call(t,E,a.isString(x)?x.trim():x,m,b))===!0&&R(E,m?m.concat(x):[x])}),h.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return R(e),t}function ke(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function Re(e,t){this._pairs=[],e&&ae(e,this,t)}const it=Re.prototype;it.append=function(t,n){this._pairs.push([t,n])};it.toString=function(t){const n=t?function(r){return t.call(this,r,ke)}:ke;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function yn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function at(e,t,n){if(!t)return e;const r=n&&n.encode||yn;a.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new Re(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class De{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const ct={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},gn=typeof URLSearchParams<"u"?URLSearchParams:Re,bn=typeof FormData<"u"?FormData:null,wn=typeof Blob<"u"?Blob:null,En={isBrowser:!0,classes:{URLSearchParams:gn,FormData:bn,Blob:wn},protocols:["http","https","file","blob","url","data"]},Oe=typeof window<"u"&&typeof document<"u",we=typeof navigator=="object"&&navigator||void 0,Sn=Oe&&(!we||["ReactNative","NativeScript","NS"].indexOf(we.product)<0),Rn=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",On=Oe&&window.location.href||"http://localhost",An=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Oe,hasStandardBrowserEnv:Sn,hasStandardBrowserWebWorkerEnv:Rn,navigator:we,origin:On},Symbol.toStringTag,{value:"Module"})),O={...An,...En};function Tn(e,t){return ae(e,new O.classes.URLSearchParams,{visitor:function(n,r,s,o){return O.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function Cn(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function xn(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return i=!i&&a.isArray(s)?s.length:i,d?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=xn(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(Cn(r),s,n,0)}),n}return null}function Nn(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const X={transitional:ct,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(lt(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Tn(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return ae(c?{"files[]":t}:t,d&&new d,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),Nn(t)):t}],transformResponse:[function(t){const n=this.transitional||X.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t,this.parseReviver)}catch(c){if(i)throw c.name==="SyntaxError"?g.from(c,g.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:O.classes.FormData,Blob:O.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{X.headers[e]={}});const Pn=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),_n=e=>{const t={};let n,r,s;return e&&e.split(` -`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&Pn[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},je=Symbol("internals");function J(e){return e&&String(e).trim().toLowerCase()}function te(e){return e===!1||e==null?e:a.isArray(e)?e.map(te):String(e)}function Fn(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const Bn=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function he(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function Ln(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function Un(e,t){const n=a.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}let C=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(c,d,f){const l=J(d);if(!l)throw new Error("header name must be a non-empty string");const h=a.findKey(s,l);(!h||s[h]===void 0||f===!0||f===void 0&&s[h]!==!1)&&(s[h||d]=te(c))}const i=(c,d)=>a.forEach(c,(f,l)=>o(f,l,d));if(a.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(a.isString(t)&&(t=t.trim())&&!Bn(t))i(_n(t),n);else if(a.isObject(t)&&a.isIterable(t)){let c={},d,f;for(const l of t){if(!a.isArray(l))throw TypeError("Object iterator must return a key-value pair");c[f=l[0]]=(d=c[f])?a.isArray(d)?[...d,l[1]]:[d,l[1]]:l[1]}i(c,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=J(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return Fn(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=J(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||he(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=J(i),i){const c=a.findKey(r,i);c&&(!n||he(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||he(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,o)=>{const i=a.findKey(r,o);if(i){n[i]=te(s),delete n[o];return}const c=t?Ln(o):String(o).trim();c!==o&&delete n[o],n[c]=te(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[je]=this[je]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=J(i);r[c]||(Un(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}};C.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(C.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(C);function me(e,t){const n=this||X,r=t||n,s=C.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function ut(e){return!!(e&&e.__CANCEL__)}function M(e,t,n){g.call(this,e??"canceled",g.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(M,g,{__CANCEL__:!0});function ft(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new g("Request failed with status code "+n.status,[g.ERR_BAD_REQUEST,g.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function kn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Dn(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(d){const f=Date.now(),l=r[o];i||(i=f),n[s]=d,r[s]=f;let h=o,b=0;for(;h!==s;)b+=n[h++],h=h%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),f-i{n=l,s=null,o&&(clearTimeout(o),o=null),e(...f)};return[(...f)=>{const l=Date.now(),h=l-n;h>=r?i(f,l):(s=f,o||(o=setTimeout(()=>{o=null,i(s)},r-h)))},()=>s&&i(s)]}const re=(e,t,n=3)=>{let r=0;const s=Dn(50,250);return jn(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,d=i-r,f=s(d),l=i<=c;r=i;const h={loaded:i,total:c,progress:c?i/c:void 0,bytes:d,rate:f||void 0,estimated:f&&c&&l?(c-i)/f:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(h)},n)},$e=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Ie=e=>(...t)=>a.asap(()=>e(...t)),$n=O.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,O.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(O.origin),O.navigator&&/(msie|trident)/i.test(O.navigator.userAgent)):()=>!0,In=O.hasStandardBrowserEnv?{write(e,t,n,r,s,o,i){if(typeof document>"u")return;const c=[`${e}=${encodeURIComponent(t)}`];a.isNumber(n)&&c.push(`expires=${new Date(n).toUTCString()}`),a.isString(r)&&c.push(`path=${r}`),a.isString(s)&&c.push(`domain=${s}`),o===!0&&c.push("secure"),a.isString(i)&&c.push(`SameSite=${i}`),document.cookie=c.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function vn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function qn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function dt(e,t,n){let r=!vn(t);return e&&(r||n==!1)?qn(e,t):t}const ve=e=>e instanceof C?{...e}:e;function I(e,t){t=t||{};const n={};function r(f,l,h,b){return a.isPlainObject(f)&&a.isPlainObject(l)?a.merge.call({caseless:b},f,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(f,l,h,b){if(a.isUndefined(l)){if(!a.isUndefined(f))return r(void 0,f,h,b)}else return r(f,l,h,b)}function o(f,l){if(!a.isUndefined(l))return r(void 0,l)}function i(f,l){if(a.isUndefined(l)){if(!a.isUndefined(f))return r(void 0,f)}else return r(void 0,l)}function c(f,l,h){if(h in t)return r(f,l);if(h in e)return r(void 0,f)}const d={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(f,l,h)=>s(ve(f),ve(l),h,!0)};return a.forEach(Object.keys({...e,...t}),function(l){const h=d[l]||s,b=h(e[l],t[l],l);a.isUndefined(b)&&h!==c||(n[l]=b)}),n}const pt=e=>{const t=I({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;if(t.headers=i=C.from(i),t.url=at(dt(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),a.isFormData(n)){if(O.hasStandardBrowserEnv||O.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(a.isFunction(n.getHeaders)){const d=n.getHeaders(),f=["content-type","content-length"];Object.entries(d).forEach(([l,h])=>{f.includes(l.toLowerCase())&&i.set(l,h)})}}if(O.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&$n(t.url))){const d=s&&o&&In.read(o);d&&i.set(s,d)}return t},Hn=typeof XMLHttpRequest<"u",Mn=Hn&&function(e){return new Promise(function(n,r){const s=pt(e);let o=s.data;const i=C.from(s.headers).normalize();let{responseType:c,onUploadProgress:d,onDownloadProgress:f}=s,l,h,b,R,u;function m(){R&&R(),u&&u(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let p=new XMLHttpRequest;p.open(s.method.toUpperCase(),s.url,!0),p.timeout=s.timeout;function E(){if(!p)return;const S=C.from("getAllResponseHeaders"in p&&p.getAllResponseHeaders()),P={data:!c||c==="text"||c==="json"?p.responseText:p.response,status:p.status,statusText:p.statusText,headers:S,config:e,request:p};ft(function(N){n(N),m()},function(N){r(N),m()},P),p=null}"onloadend"in p?p.onloadend=E:p.onreadystatechange=function(){!p||p.readyState!==4||p.status===0&&!(p.responseURL&&p.responseURL.indexOf("file:")===0)||setTimeout(E)},p.onabort=function(){p&&(r(new g("Request aborted",g.ECONNABORTED,e,p)),p=null)},p.onerror=function(A){const P=A&&A.message?A.message:"Network Error",k=new g(P,g.ERR_NETWORK,e,p);k.event=A||null,r(k),p=null},p.ontimeout=function(){let A=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const P=s.transitional||ct;s.timeoutErrorMessage&&(A=s.timeoutErrorMessage),r(new g(A,P.clarifyTimeoutError?g.ETIMEDOUT:g.ECONNABORTED,e,p)),p=null},o===void 0&&i.setContentType(null),"setRequestHeader"in p&&a.forEach(i.toJSON(),function(A,P){p.setRequestHeader(P,A)}),a.isUndefined(s.withCredentials)||(p.withCredentials=!!s.withCredentials),c&&c!=="json"&&(p.responseType=s.responseType),f&&([b,u]=re(f,!0),p.addEventListener("progress",b)),d&&p.upload&&([h,R]=re(d),p.upload.addEventListener("progress",h),p.upload.addEventListener("loadend",R)),(s.cancelToken||s.signal)&&(l=S=>{p&&(r(!S||S.type?new M(null,e,p):S),p.abort(),p=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const x=kn(s.url);if(x&&O.protocols.indexOf(x)===-1){r(new g("Unsupported protocol "+x+":",g.ERR_BAD_REQUEST,e));return}p.send(o||null)})},zn=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(f){if(!s){s=!0,c();const l=f instanceof Error?f:this.reason;r.abort(l instanceof g?l:new M(l instanceof Error?l.message:l))}};let i=t&&setTimeout(()=>{i=null,o(new g(`timeout ${t} of ms exceeded`,g.ETIMEDOUT))},t);const c=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(o):f.removeEventListener("abort",o)}),e=null)};e.forEach(f=>f.addEventListener("abort",o));const{signal:d}=r;return d.unsubscribe=()=>a.asap(c),d}},Jn=function*(e,t){let n=e.byteLength;if(n{const s=Vn(e,t);let o=0,i,c=d=>{i||(i=!0,r&&r(d))};return new ReadableStream({async pull(d){try{const{done:f,value:l}=await s.next();if(f){c(),d.close();return}let h=l.byteLength;if(n){let b=o+=h;n(b)}d.enqueue(new Uint8Array(l))}catch(f){throw c(f),f}},cancel(d){return c(d),s.return()}},{highWaterMark:2})},He=64*1024,{isFunction:Y}=a,Kn=(({Request:e,Response:t})=>({Request:e,Response:t}))(a.global),{ReadableStream:Me,TextEncoder:ze}=a.global,Je=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Xn=e=>{e=a.merge.call({skipUndefined:!0},Kn,e);const{fetch:t,Request:n,Response:r}=e,s=t?Y(t):typeof fetch=="function",o=Y(n),i=Y(r);if(!s)return!1;const c=s&&Y(Me),d=s&&(typeof ze=="function"?(u=>m=>u.encode(m))(new ze):async u=>new Uint8Array(await new n(u).arrayBuffer())),f=o&&c&&Je(()=>{let u=!1;const m=new n(O.origin,{body:new Me,method:"POST",get duplex(){return u=!0,"half"}}).headers.has("Content-Type");return u&&!m}),l=i&&c&&Je(()=>a.isReadableStream(new r("").body)),h={stream:l&&(u=>u.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(u=>{!h[u]&&(h[u]=(m,p)=>{let E=m&&m[u];if(E)return E.call(m);throw new g(`Response type '${u}' is not supported`,g.ERR_NOT_SUPPORT,p)})});const b=async u=>{if(u==null)return 0;if(a.isBlob(u))return u.size;if(a.isSpecCompliantForm(u))return(await new n(O.origin,{method:"POST",body:u}).arrayBuffer()).byteLength;if(a.isArrayBufferView(u)||a.isArrayBuffer(u))return u.byteLength;if(a.isURLSearchParams(u)&&(u=u+""),a.isString(u))return(await d(u)).byteLength},R=async(u,m)=>{const p=a.toFiniteNumber(u.getContentLength());return p??b(m)};return async u=>{let{url:m,method:p,data:E,signal:x,cancelToken:S,timeout:A,onDownloadProgress:P,onUploadProgress:k,responseType:N,headers:le,withCredentials:G="same-origin",fetchOptions:Te}=pt(u),Ce=t||fetch;N=N?(N+"").toLowerCase():"text";let Q=zn([x,S&&S.toAbortSignal()],A),z=null;const D=Q&&Q.unsubscribe&&(()=>{Q.unsubscribe()});let xe;try{if(k&&f&&p!=="get"&&p!=="head"&&(xe=await R(le,E))!==0){let U=new n(m,{method:"POST",body:E,duplex:"half"}),v;if(a.isFormData(E)&&(v=U.headers.get("content-type"))&&le.setContentType(v),U.body){const[ue,Z]=$e(xe,re(Ie(k)));E=qe(U.body,He,ue,Z)}}a.isString(G)||(G=G?"include":"omit");const F=o&&"credentials"in n.prototype,Ne={...Te,signal:Q,method:p.toUpperCase(),headers:le.normalize().toJSON(),body:E,duplex:"half",credentials:F?G:void 0};z=o&&new n(m,Ne);let L=await(o?Ce(z,Te):Ce(m,Ne));const Pe=l&&(N==="stream"||N==="response");if(l&&(P||Pe&&D)){const U={};["status","statusText","headers"].forEach(_e=>{U[_e]=L[_e]});const v=a.toFiniteNumber(L.headers.get("content-length")),[ue,Z]=P&&$e(v,re(Ie(P),!0))||[];L=new r(qe(L.body,He,ue,()=>{Z&&Z(),D&&D()}),U)}N=N||"text";let wt=await h[a.findKey(h,N)||"text"](L,u);return!Pe&&D&&D(),await new Promise((U,v)=>{ft(U,v,{data:wt,headers:C.from(L.headers),status:L.status,statusText:L.statusText,config:u,request:z})})}catch(F){throw D&&D(),F&&F.name==="TypeError"&&/Load failed|fetch/i.test(F.message)?Object.assign(new g("Network Error",g.ERR_NETWORK,u,z),{cause:F.cause||F}):g.from(F,F&&F.code,u,z)}}},Gn=new Map,ht=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:s}=t,o=[r,s,n];let i=o.length,c=i,d,f,l=Gn;for(;c--;)d=o[c],f=l.get(d),f===void 0&&l.set(d,f=c?new Map:Xn(t)),l=f;return f};ht();const Ae={http:pn,xhr:Mn,fetch:{get:ht}};a.forEach(Ae,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Ve=e=>`- ${e}`,Qn=e=>a.isFunction(e)||e===null||e===!1;function Zn(e,t){e=a.isArray(e)?e:[e];const{length:n}=e;let r,s;const o={};for(let i=0;i`adapter ${d} `+(f===!1?"is not supported by the environment":"is not available in the build"));let c=n?i.length>1?`since : -`+i.map(Ve).join(` -`):" "+Ve(i[0]):"as no adapter specified";throw new g("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return s}const mt={getAdapter:Zn,adapters:Ae};function ye(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new M(null,e)}function We(e){return ye(e),e.headers=C.from(e.headers),e.data=me.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),mt.getAdapter(e.adapter||X.adapter,e)(e).then(function(r){return ye(e),r.data=me.call(e,e.transformResponse,r),r.headers=C.from(r.headers),r},function(r){return ut(r)||(ye(e),r&&r.response&&(r.response.data=me.call(e,e.transformResponse,r.response),r.response.headers=C.from(r.response.headers))),Promise.reject(r)})}const yt="1.13.2",ce={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ce[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Ke={};ce.transitional=function(t,n,r){function s(o,i){return"[Axios v"+yt+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,c)=>{if(t===!1)throw new g(s(i," has been removed"+(n?" in "+n:"")),g.ERR_DEPRECATED);return n&&!Ke[i]&&(Ke[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,c):!0}};ce.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Yn(e,t,n){if(typeof e!="object")throw new g("options must be an object",g.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const c=e[o],d=c===void 0||i(c,o,e);if(d!==!0)throw new g("option "+o+" must be "+d,g.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new g("Unknown option "+o,g.ERR_BAD_OPTION)}}const ne={assertOptions:Yn,validators:ce},B=ne.validators;let $=class{constructor(t){this.defaults=t||{},this.interceptors={request:new De,response:new De}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` -`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=I(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&ne.assertOptions(r,{silentJSONParsing:B.transitional(B.boolean),forcedJSONParsing:B.transitional(B.boolean),clarifyTimeoutError:B.transitional(B.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:ne.assertOptions(s,{encode:B.function,serialize:B.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ne.assertOptions(n,{baseUrl:B.spelling("baseURL"),withXsrfToken:B.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],u=>{delete o[u]}),n.headers=C.concat(i,o);const c=[];let d=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(n)===!1||(d=d&&m.synchronous,c.unshift(m.fulfilled,m.rejected))});const f=[];this.interceptors.response.forEach(function(m){f.push(m.fulfilled,m.rejected)});let l,h=0,b;if(!d){const u=[We.bind(this),void 0];for(u.unshift(...c),u.push(...f),b=u.length,l=Promise.resolve(n);h{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new M(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new gt(function(s){t=s}),cancel:t}}};function tr(e){return function(n){return e.apply(null,n)}}function nr(e){return a.isObject(e)&&e.isAxiosError===!0}const Ee={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Ee).forEach(([e,t])=>{Ee[t]=e});function bt(e){const t=new $(e),n=Xe($.prototype.request,t);return a.extend(n,$.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return bt(I(e,s))},n}const w=bt(X);w.Axios=$;w.CanceledError=M;w.CancelToken=er;w.isCancel=ut;w.VERSION=yt;w.toFormData=ae;w.AxiosError=g;w.Cancel=w.CanceledError;w.all=function(t){return Promise.all(t)};w.spread=tr;w.isAxiosError=nr;w.mergeConfig=I;w.AxiosHeaders=C;w.formToJSON=e=>lt(a.isHTMLForm(e)?new FormData(e):e);w.getAdapter=mt.getAdapter;w.HttpStatusCode=Ee;w.default=w;const{Axios:ar,AxiosError:cr,CanceledError:lr,isCancel:ur,CancelToken:fr,VERSION:dr,all:pr,Cancel:hr,isAxiosError:mr,spread:yr,toFormData:gr,AxiosHeaders:br,HttpStatusCode:wr,formToJSON:Er,getAdapter:Sr,mergeConfig:Rr}=w,y=w.create({baseURL:"/api",timeout:3e4,headers:{"Content-Type":"application/json"}});y.interceptors.request.use(e=>e,e=>Promise.reject(e));y.interceptors.response.use(e=>e.data,e=>(console.error("API Error:",e),Promise.reject(e)));const Or={getAll:()=>y.get("/servers"),getAllActive:()=>y.get("/servers/active"),getById:e=>y.get(`/servers/${e}`),create:e=>y.post("/servers",e),update:(e,t)=>y.put(`/servers/${e}`,t),delete:e=>y.delete(`/servers/${e}`),testConnection:e=>y.post(`/servers/${e}/test-connection`)},Ar={getByServerId:e=>y.get(`/log-paths/server/${e}`),getActiveByServerId:e=>y.get(`/log-paths/server/${e}/active`),getById:e=>y.get(`/log-paths/${e}`),create:e=>y.post("/log-paths",e),update:(e,t)=>y.put(`/log-paths/${e}`,t),delete:e=>y.delete(`/log-paths/${e}`)},Tr={getAll:()=>y.get("/patterns"),getAllActive:()=>y.get("/patterns/active"),getById:e=>y.get(`/patterns/${e}`),create:e=>y.post("/patterns",e),update:(e,t)=>y.put(`/patterns/${e}`,t),delete:e=>y.delete(`/patterns/${e}`),test:(e,t)=>y.post("/patterns/test",null,{params:{regex:e,sampleText:t}})},Cr={getAll:()=>y.get("/settings"),getAllAsMap:()=>y.get("/settings/map"),getValue:e=>y.get(`/settings/${e}`),save:e=>y.post("/settings",e),saveAll:e=>y.put("/settings",e),delete:e=>y.delete(`/settings/${e}`)},xr={startWithProgress:(e,t,n,r)=>{const s=new EventSource(`/api/scan/start/${e}`);return s.addEventListener("progress",o=>{const i=JSON.parse(o.data);t&&t(i)}),s.addEventListener("complete",o=>{const i=JSON.parse(o.data);n&&n(i),s.close()}),s.addEventListener("error",o=>{o.data&&r&&r(o.data),s.close()}),s.onerror=()=>{s.close()},s},startAllWithProgress:(e,t,n)=>{const r=new EventSource("/api/scan/start-all");return r.addEventListener("progress",s=>{const o=JSON.parse(s.data);e&&e(o)}),r.addEventListener("complete",s=>{const o=JSON.parse(s.data);t&&t(o),r.close()}),r.addEventListener("error",s=>{s.data&&n&&n(s.data),r.close()}),r.onerror=()=>{r.close()},r},execute:e=>y.post(`/scan/execute/${e}`),getProgress:e=>y.get(`/scan/progress/${e}`),getHistory:e=>y.get(`/scan/history/${e}`),reset:e=>y.delete(`/scan/reset/${e}`),resetAll:()=>y.delete("/scan/reset-all"),getStatsByFile:e=>y.get("/scan/stats/by-file",{params:{serverId:e}}),getStatsByServer:()=>y.get("/scan/stats/by-server"),getStatsByPattern:e=>y.get("/scan/stats/by-pattern",{params:{serverId:e}}),getDailyStatsByServer:(e=30)=>y.get("/scan/stats/daily-by-server",{params:{days:e}}),getMonthlyStatsByServer:(e,t)=>y.get("/scan/stats/monthly-by-server",{params:{year:e,month:t}}),getTimeStatsByServer:(e,t=5)=>y.get("/scan/stats/time-by-server",{params:{date:e,intervalMinutes:t}})},Nr={search:e=>y.get("/error-logs",{params:e}),getById:e=>y.get(`/error-logs/${e}`),getByServer:(e,t)=>y.get(`/error-logs/server/${e}`,{params:t}),getTree:()=>y.get("/error-logs/tree"),getFiles:e=>y.get("/error-logs/files",{params:{serverId:e}}),deleteByIds:e=>y.delete("/error-logs/batch",{data:e}),deleteByFile:(e,t)=>y.delete("/error-logs/by-file",{params:{serverId:e,filePath:t}})};export{sr as C,xr as a,Cr as b,Nr as e,Ar as l,Tr as p,Or as s}; diff --git a/build/resources/main/static/assets/index-BJ4-9mFZ.css b/build/resources/main/static/assets/index-BJ4-9mFZ.css deleted file mode 100644 index 6a5a3bf..0000000 --- a/build/resources/main/static/assets/index-BJ4-9mFZ.css +++ /dev/null @@ -1 +0,0 @@ -*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#app{min-height:100vh;background:#f5f5f5}.header{background:#2c3e50;color:#fff;padding:1rem 2rem;display:flex;align-items:center;gap:2rem}.header h1{font-size:1.5rem;margin:0}.header .logo{text-decoration:none;color:#fff}.header nav{display:flex;gap:1rem}.header nav a{color:#ecf0f1;text-decoration:none;padding:.5rem 1rem;border-radius:4px;transition:background .2s}.header nav a:hover{background:#34495e}.header nav a.router-link-active{background:#3498db}.main{padding:1.5rem} diff --git a/build/resources/main/static/assets/index-DFoOAXeQ.js b/build/resources/main/static/assets/index-DFoOAXeQ.js deleted file mode 100644 index a1398d7..0000000 --- a/build/resources/main/static/assets/index-DFoOAXeQ.js +++ /dev/null @@ -1,30 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-D7yH75no.js","assets/index--fsvNaiQ.js","assets/index-ikHL8uxD.css","assets/Button-Ddldcbk7.js","assets/Badge-SZTgBg80.js","assets/chartjs-plugin-datalabels.esm-B8xtR40N.js","assets/Dashboard-CILG6x2p.css","assets/ErrorLogs-DWDLe7x0.js","assets/Modal-BaZTW7NU.js","assets/FormInput-BsW78DWl.js","assets/ErrorLogs-BZmKr5Li.css","assets/ServerManage-cIpW_dU_.js","assets/ServerManage-8NeMNC-c.css","assets/MonthlyStats-BMU-a3Ge.js","assets/MonthlyStats-Bt4dp30j.css","assets/DailyStats-03BWk9_D.js","assets/DailyStats-DaWyYZ7V.css","assets/PatternManage-CxrI6HBG.js","assets/PatternManage-BexqVEVy.css","assets/Settings-Co7-fA4D.js","assets/Settings-CipHZo9K.css"])))=>i.map(i=>d[i]); -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/** -* @vue/shared v3.5.26 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Rs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const z={},It=[],Ke=()=>{},Xr=()=>!1,Dn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ss=e=>e.startsWith("onUpdate:"),pe=Object.assign,ws=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ro=Object.prototype.hasOwnProperty,$=(e,t)=>Ro.call(e,t),H=Array.isArray,Nt=e=>dn(e)==="[object Map]",Gt=e=>dn(e)==="[object Set]",zs=e=>dn(e)==="[object Date]",B=e=>typeof e=="function",re=e=>typeof e=="string",Ne=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",Zr=e=>(X(e)||B(e))&&B(e.then)&&B(e.catch),ei=Object.prototype.toString,dn=e=>ei.call(e),So=e=>dn(e).slice(8,-1),ti=e=>dn(e)==="[object Object]",Cs=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Qt=Rs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ln=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},wo=/-\w/g,Oe=Ln(e=>e.replace(wo,t=>t.slice(1).toUpperCase())),Co=/\B([A-Z])/g,xt=Ln(e=>e.replace(Co,"-$1").toLowerCase()),Vn=Ln(e=>e.charAt(0).toUpperCase()+e.slice(1)),$n=Ln(e=>e?`on${Vn(e)}`:""),ht=(e,t)=>!Object.is(e,t),bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Fn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Xs;const Hn=()=>Xs||(Xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Os(e){if(H(e)){const t={};for(let n=0;n{if(n){const s=n.split(To);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ts(e){let t="";if(re(e))t=e;else if(H(e))for(let n=0;nhn(n,t))}const ri=e=>!!(e&&e.__v_isRef===!0),Lo=e=>re(e)?e:e==null?"":H(e)||X(e)&&(e.toString===ei||!B(e.toString))?ri(e)?Lo(e.value):JSON.stringify(e,ii,2):String(e),ii=(e,t)=>ri(t)?ii(e,t.value):Nt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Jn(s,i)+" =>"]=r,n),{})}:Gt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Jn(n))}:Ne(t)?Jn(t):X(t)&&!H(t)&&!ti(t)?String(t):t,Jn=(e,t="")=>{var n;return Ne(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.26 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Ae;class oi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Ae,!t&&Ae&&(this.index=(Ae.scopes||(Ae.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Ae=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(zt){let t=zt;for(zt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Yt;){let t=Yt;for(Yt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ui(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ai(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ms(s),Ho(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function ls(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(di(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function di(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===sn)||(e.globalVersion=sn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ls(e))))return;e.flags|=2;const t=e.dep,n=ee,s=Ie;ee=e,Ie=!0;try{ui(e);const r=e.fn(e._value);(t.version===0||ht(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ee=n,Ie=s,ai(e),e.flags&=-3}}function Ms(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ms(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ho(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ie=!0;const hi=[];function et(){hi.push(Ie),Ie=!1}function tt(){const e=hi.pop();Ie=e===void 0?!0:e}function Zs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ee;ee=void 0;try{t()}finally{ee=n}}}let sn=0;class jo{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ds{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ee||!Ie||ee===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ee)n=this.activeLink=new jo(ee,this),ee.deps?(n.prevDep=ee.depsTail,ee.depsTail.nextDep=n,ee.depsTail=n):ee.deps=ee.depsTail=n,pi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ee.depsTail,n.nextDep=void 0,ee.depsTail.nextDep=n,ee.depsTail=n,ee.deps===n&&(ee.deps=s)}return n}trigger(t){this.version++,sn++,this.notify(t)}notify(t){Is();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ns()}}}function pi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)pi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const cs=new WeakMap,Et=Symbol(""),fs=Symbol(""),rn=Symbol("");function ae(e,t,n){if(Ie&&ee){let s=cs.get(e);s||cs.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Ds),r.map=s,r.key=n),r.track()}}function Ye(e,t,n,s,r,i){const o=cs.get(e);if(!o){sn++;return}const l=c=>{c&&c.trigger()};if(Is(),t==="clear")o.forEach(l);else{const c=H(e),d=c&&Cs(n);if(c&&n==="length"){const u=Number(s);o.forEach((h,g)=>{(g==="length"||g===rn||!Ne(g)&&g>=u)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),d&&l(o.get(rn)),t){case"add":c?d&&l(o.get("length")):(l(o.get(Et)),Nt(e)&&l(o.get(fs)));break;case"delete":c||(l(o.get(Et)),Nt(e)&&l(o.get(fs)));break;case"set":Nt(e)&&l(o.get(Et));break}}Ns()}function Ct(e){const t=q(e);return t===e?t:(ae(t,"iterate",rn),Ce(e)?t:t.map(Me))}function jn(e){return ae(e=q(e),"iterate",rn),e}function ct(e,t){return nt(e)?At(e)?Ft(Me(t)):Ft(t):Me(t)}const Bo={__proto__:null,[Symbol.iterator](){return Yn(this,Symbol.iterator,e=>ct(this,e))},concat(...e){return Ct(this).concat(...e.map(t=>H(t)?Ct(t):t))},entries(){return Yn(this,"entries",e=>(e[1]=ct(this,e[1]),e))},every(e,t){return qe(this,"every",e,t,void 0,arguments)},filter(e,t){return qe(this,"filter",e,t,n=>n.map(s=>ct(this,s)),arguments)},find(e,t){return qe(this,"find",e,t,n=>ct(this,n),arguments)},findIndex(e,t){return qe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return qe(this,"findLast",e,t,n=>ct(this,n),arguments)},findLastIndex(e,t){return qe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return qe(this,"forEach",e,t,void 0,arguments)},includes(...e){return zn(this,"includes",e)},indexOf(...e){return zn(this,"indexOf",e)},join(e){return Ct(this).join(e)},lastIndexOf(...e){return zn(this,"lastIndexOf",e)},map(e,t){return qe(this,"map",e,t,void 0,arguments)},pop(){return kt(this,"pop")},push(...e){return kt(this,"push",e)},reduce(e,...t){return er(this,"reduce",e,t)},reduceRight(e,...t){return er(this,"reduceRight",e,t)},shift(){return kt(this,"shift")},some(e,t){return qe(this,"some",e,t,void 0,arguments)},splice(...e){return kt(this,"splice",e)},toReversed(){return Ct(this).toReversed()},toSorted(e){return Ct(this).toSorted(e)},toSpliced(...e){return Ct(this).toSpliced(...e)},unshift(...e){return kt(this,"unshift",e)},values(){return Yn(this,"values",e=>ct(this,e))}};function Yn(e,t,n){const s=jn(e),r=s[t]();return s!==e&&!Ce(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const Uo=Array.prototype;function qe(e,t,n,s,r,i){const o=jn(e),l=o!==e&&!Ce(e),c=o[t];if(c!==Uo[t]){const h=c.apply(e,i);return l?Me(h):h}let d=n;o!==e&&(l?d=function(h,g){return n.call(this,ct(e,h),g,e)}:n.length>2&&(d=function(h,g){return n.call(this,h,g,e)}));const u=c.call(o,d,s);return l&&r?r(u):u}function er(e,t,n,s){const r=jn(e);let i=n;return r!==e&&(Ce(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ct(e,l),c,e)}),r[t](i,...s)}function zn(e,t,n){const s=q(e);ae(s,"iterate",rn);const r=s[t](...n);return(r===-1||r===!1)&&Fs(n[0])?(n[0]=q(n[0]),s[t](...n)):r}function kt(e,t,n=[]){et(),Is();const s=q(e)[t].apply(e,n);return Ns(),tt(),s}const Go=Rs("__proto__,__v_isRef,__isVue"),gi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ne));function Ko(e){Ne(e)||(e=String(e));const t=q(this);return ae(t,"has",e),t.hasOwnProperty(e)}class mi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Zo:bi:i?vi:yi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=H(t);if(!r){let c;if(o&&(c=Bo[n]))return c;if(n==="hasOwnProperty")return Ko}const l=Reflect.get(t,n,he(t)?t:s);if((Ne(n)?gi.has(n):Go(n))||(r||ae(t,"get",n),i))return l;if(he(l)){const c=o&&Cs(n)?l:l.value;return r&&X(c)?as(c):c}return X(l)?r?as(l):Bn(l):l}}class _i extends mi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const o=H(t)&&Cs(n);if(!this._isShallow){const d=nt(i);if(!Ce(s)&&!nt(s)&&(i=q(i),s=q(s)),!o&&he(i)&&!he(s))return d||(i.value=s),!0}const l=o?Number(n)e,mn=e=>Reflect.getPrototypeOf(e);function Jo(e,t,n){return function(...s){const r=this.__v_raw,i=q(r),o=Nt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,d=r[e](...s),u=n?us:t?Ft:Me;return!t&&ae(i,"iterate",c?fs:Et),{next(){const{value:h,done:g}=d.next();return g?{value:h,done:g}:{value:l?[u(h[0]),u(h[1])]:u(h),done:g}},[Symbol.iterator](){return this}}}}function _n(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Qo(e,t){const n={get(r){const i=this.__v_raw,o=q(i),l=q(r);e||(ht(r,l)&&ae(o,"get",r),ae(o,"get",l));const{has:c}=mn(o),d=t?us:e?Ft:Me;if(c.call(o,r))return d(i.get(r));if(c.call(o,l))return d(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ae(q(r),"iterate",Et),r.size},has(r){const i=this.__v_raw,o=q(i),l=q(r);return e||(ht(r,l)&&ae(o,"has",r),ae(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=q(l),d=t?us:e?Ft:Me;return!e&&ae(c,"iterate",Et),l.forEach((u,h)=>r.call(i,d(u),d(h),o))}};return pe(n,e?{add:_n("add"),set:_n("set"),delete:_n("delete"),clear:_n("clear")}:{add(r){!t&&!Ce(r)&&!nt(r)&&(r=q(r));const i=q(this);return mn(i).has.call(i,r)||(i.add(r),Ye(i,"add",r,r)),this},set(r,i){!t&&!Ce(i)&&!nt(i)&&(i=q(i));const o=q(this),{has:l,get:c}=mn(o);let d=l.call(o,r);d||(r=q(r),d=l.call(o,r));const u=c.call(o,r);return o.set(r,i),d?ht(i,u)&&Ye(o,"set",r,i):Ye(o,"add",r,i),this},delete(r){const i=q(this),{has:o,get:l}=mn(i);let c=o.call(i,r);c||(r=q(r),c=o.call(i,r)),l&&l.call(i,r);const d=i.delete(r);return c&&Ye(i,"delete",r,void 0),d},clear(){const r=q(this),i=r.size!==0,o=r.clear();return i&&Ye(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Jo(r,e,t)}),n}function Ls(e,t){const n=Qo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get($(n,r)&&r in s?n:s,r,i)}const Yo={get:Ls(!1,!1)},zo={get:Ls(!1,!0)},Xo={get:Ls(!0,!1)};const yi=new WeakMap,vi=new WeakMap,bi=new WeakMap,Zo=new WeakMap;function el(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function tl(e){return e.__v_skip||!Object.isExtensible(e)?0:el(So(e))}function Bn(e){return nt(e)?e:Vs(e,!1,ko,Yo,yi)}function Ei(e){return Vs(e,!1,$o,zo,vi)}function as(e){return Vs(e,!0,qo,Xo,bi)}function Vs(e,t,n,s,r){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=tl(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function At(e){return nt(e)?At(e.__v_raw):!!(e&&e.__v_isReactive)}function nt(e){return!!(e&&e.__v_isReadonly)}function Ce(e){return!!(e&&e.__v_isShallow)}function Fs(e){return e?!!e.__v_raw:!1}function q(e){const t=e&&e.__v_raw;return t?q(t):e}function Ai(e){return!$(e,"__v_skip")&&Object.isExtensible(e)&&ni(e,"__v_skip",!0),e}const Me=e=>X(e)?Bn(e):e,Ft=e=>X(e)?as(e):e;function he(e){return e?e.__v_isRef===!0:!1}function xi(e){return Ri(e,!1)}function nl(e){return Ri(e,!0)}function Ri(e,t){return he(e)?e:new sl(e,t)}class sl{constructor(t,n){this.dep=new Ds,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:q(t),this._value=n?t:Me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ce(t)||nt(t);t=s?t:q(t),ht(t,n)&&(this._rawValue=t,this._value=s?t:Me(t),this.dep.trigger())}}function Mt(e){return he(e)?e.value:e}const rl={get:(e,t,n)=>t==="__v_raw"?e:Mt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return he(r)&&!he(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Si(e){return At(e)?e:new Proxy(e,rl)}class il{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Ds(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=sn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ee!==this)return fi(this,!0),!0}get value(){const t=this.dep.track();return di(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ol(e,t,n=!1){let s,r;return B(e)?s=e:(s=e.get,r=e.set),new il(s,r,n)}const yn={},wn=new WeakMap;let vt;function ll(e,t=!1,n=vt){if(n){let s=wn.get(n);s||wn.set(n,s=[]),s.push(e)}}function cl(e,t,n=z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,d=N=>r?N:Ce(N)||r===!1||r===0?ze(N,1):ze(N);let u,h,g,m,S=!1,x=!1;if(he(e)?(h=()=>e.value,S=Ce(e)):At(e)?(h=()=>d(e),S=!0):H(e)?(x=!0,S=e.some(N=>At(N)||Ce(N)),h=()=>e.map(N=>{if(he(N))return N.value;if(At(N))return d(N);if(B(N))return c?c(N,2):N()})):B(e)?t?h=c?()=>c(e,2):e:h=()=>{if(g){et();try{g()}finally{tt()}}const N=vt;vt=u;try{return c?c(e,3,[m]):e(m)}finally{vt=N}}:h=Ke,t&&r){const N=h,K=r===!0?1/0:r;h=()=>ze(N(),K)}const M=Fo(),I=()=>{u.stop(),M&&M.active&&ws(M.effects,u)};if(i&&t){const N=t;t=(...K)=>{N(...K),I()}}let P=x?new Array(e.length).fill(yn):yn;const V=N=>{if(!(!(u.flags&1)||!u.dirty&&!N))if(t){const K=u.run();if(r||S||(x?K.some((te,J)=>ht(te,P[J])):ht(K,P))){g&&g();const te=vt;vt=u;try{const J=[K,P===yn?void 0:x&&P[0]===yn?[]:P,m];P=K,c?c(t,3,J):t(...J)}finally{vt=te}}}else u.run()};return l&&l(V),u=new li(h),u.scheduler=o?()=>o(V,!1):V,m=N=>ll(N,!1,u),g=u.onStop=()=>{const N=wn.get(u);if(N){if(c)c(N,4);else for(const K of N)K();wn.delete(u)}},t?s?V(!0):P=u.run():o?o(V.bind(null,!0),!0):u.run(),I.pause=u.pause.bind(u),I.resume=u.resume.bind(u),I.stop=I,I}function ze(e,t=1/0,n){if(t<=0||!X(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,he(e))ze(e.value,t,n);else if(H(e))for(let s=0;s{ze(s,t,n)});else if(ti(e)){for(const s in e)ze(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ze(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.26 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function pn(e,t,n,s){try{return s?e(...s):e()}catch(r){Un(r,t,n)}}function We(e,t,n,s){if(B(e)){const r=pn(e,t,n,s);return r&&Zr(r)&&r.catch(i=>{Un(i,t,n)}),r}if(H(e)){const r=[];for(let i=0;i>>1,r=ye[s],i=on(r);i=on(n)?ye.push(e):ye.splice(ul(t),0,e),e.flags|=1,Ci()}}function Ci(){Cn||(Cn=wi.then(Ti))}function al(e){H(e)?Dt.push(...e):ft&&e.id===-1?ft.splice(Ot+1,0,e):e.flags&1||(Dt.push(e),e.flags|=1),Ci()}function tr(e,t,n=Ue+1){for(;non(n)-on(s));if(Dt.length=0,ft){ft.push(...t);return}for(ft=t,Ot=0;Ote.id==null?e.flags&2?-1:1/0:e.id;function Ti(e){try{for(Ue=0;Ue{s._d&&Nn(-1);const i=On(t);let o;try{o=e(...r)}finally{On(i),s._d&&Nn(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function hu(e,t){if(fe===null)return e;const n=kn(fe),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&B(t)?t.call(s&&s.proxy):t}}const dl=Symbol.for("v-scx"),hl=()=>Xe(dl);function An(e,t,n){return Ii(e,t,n)}function Ii(e,t,n=z){const{immediate:s,deep:r,flush:i,once:o}=n,l=pe({},n),c=t&&s||!t&&i!=="post";let d;if(fn){if(i==="sync"){const m=hl();d=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=Ke,m.resume=Ke,m.pause=Ke,m}}const u=de;l.call=(m,S,x)=>We(m,u,S,x);let h=!1;i==="post"?l.scheduler=m=>{me(m,u&&u.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(m,S)=>{S?m():js(m)}),l.augmentJob=m=>{t&&(m.flags|=4),h&&(m.flags|=2,u&&(m.id=u.uid,m.i=u))};const g=cl(e,t,l);return fn&&(d?d.push(g):c&&g()),g}function pl(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?Ni(s,e):()=>s[e]:e.bind(s,s);let i;B(t)?i=t:(i=t.handler,n=t);const o=gn(this),l=Ii(r,i.bind(s),n);return o(),l}function Ni(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,Xt=e=>e&&(e.disabled||e.disabled===""),nr=e=>e&&(e.defer||e.defer===""),sr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,rr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,ds=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Di={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,d){const{mc:u,pc:h,pbc:g,o:{insert:m,querySelector:S,createText:x,createComment:M}}=d,I=Xt(t.props);let{shapeFlag:P,children:V,dynamicChildren:N}=t;if(e==null){const K=t.el=x(""),te=t.anchor=x("");m(K,n,s),m(te,n,s);const J=(ie,ue)=>{P&16&&u(V,ie,ue,r,i,o,l,c)},le=()=>{const ie=t.target=ds(t.props,S),ue=Li(ie,t,x,m);ie&&(o!=="svg"&&sr(ie)?o="svg":o!=="mathml"&&rr(ie)&&(o="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(ie),I||(J(ie,ue),xn(t,!1)))};I&&(J(n,te),xn(t,!0)),nr(t.props)?(t.el.__isMounted=!1,me(()=>{le(),delete t.el.__isMounted},i)):le()}else{if(nr(t.props)&&e.el.__isMounted===!1){me(()=>{Di.process(e,t,n,s,r,i,o,l,c,d)},i);return}t.el=e.el,t.targetStart=e.targetStart;const K=t.anchor=e.anchor,te=t.target=e.target,J=t.targetAnchor=e.targetAnchor,le=Xt(e.props),ie=le?n:te,ue=le?K:J;if(o==="svg"||sr(te)?o="svg":(o==="mathml"||rr(te))&&(o="mathml"),N?(g(e.dynamicChildren,N,ie,r,i,o,l),Ks(e,t,!0)):c||h(e,t,ie,ue,r,i,o,l,!1),I)le?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):vn(t,n,K,d,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Te=t.target=ds(t.props,S);Te&&vn(t,Te,null,d,0)}else le&&vn(t,te,J,d,1);xn(t,I)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:d,targetAnchor:u,target:h,props:g}=e;if(h&&(r(d),r(u)),i&&r(c),o&16){const m=i||!Xt(g);for(let S=0;SZt(S,t&&(H(t)?t[x]:t),n,s,r));return}if(Lt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Zt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?kn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,d=t&&t.r,u=l.refs===z?l.refs={}:l.refs,h=l.setupState,g=q(h),m=h===z?Xr:S=>$(g,S);if(d!=null&&d!==c){if(ir(t),re(d))u[d]=null,m(d)&&(h[d]=null);else if(he(d)){d.value=null;const S=t;S.k&&(u[S.k]=null)}}if(B(c))pn(c,l,12,[o,u]);else{const S=re(c),x=he(c);if(S||x){const M=()=>{if(e.f){const I=S?m(c)?h[c]:u[c]:c.value;if(r)H(I)&&ws(I,i);else if(H(I))I.includes(i)||I.push(i);else if(S)u[c]=[i],m(c)&&(h[c]=u[c]);else{const P=[i];c.value=P,e.k&&(u[e.k]=P)}}else S?(u[c]=o,m(c)&&(h[c]=o)):x&&(c.value=o,e.k&&(u[e.k]=o))};if(o){const I=()=>{M(),Tn.delete(e)};I.id=-1,Tn.set(e,I),me(I,n)}else ir(e),M()}}}function ir(e){const t=Tn.get(e);t&&(t.flags|=8,Tn.delete(e))}Hn().requestIdleCallback;Hn().cancelIdleCallback;const Lt=e=>!!e.type.__asyncLoader,Hi=e=>e.type.__isKeepAlive;function yl(e,t){ji(e,"a",t)}function vl(e,t){ji(e,"da",t)}function ji(e,t,n=de){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Gn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Hi(r.parent.vnode)&&bl(s,t,n,r),r=r.parent}}function bl(e,t,n,s){const r=Gn(t,e,s,!0);Bi(()=>{ws(s[t],r)},n)}function Gn(e,t,n=de,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{et();const l=gn(n),c=We(t,n,e,o);return l(),tt(),c});return s?r.unshift(i):r.push(i),i}}const rt=e=>(t,n=de)=>{(!fn||e==="sp")&&Gn(e,(...s)=>t(...s),n)},El=rt("bm"),Al=rt("m"),xl=rt("bu"),Rl=rt("u"),Sl=rt("bum"),Bi=rt("um"),wl=rt("sp"),Cl=rt("rtg"),Ol=rt("rtc");function Tl(e,t=de){Gn("ec",e,t)}const Pl="components";function or(e,t){return Nl(Pl,e,!0,t)||e}const Il=Symbol.for("v-ndc");function Nl(e,t,n=!0,s=!1){const r=fe||de;if(r){const i=r.type;{const l=yc(i,!1);if(l&&(l===t||l===Oe(t)||l===Vn(Oe(t))))return i}const o=lr(r[e]||i[e],t)||lr(r.appContext[e],t);return!o&&s?i:o}}function lr(e,t){return e&&(e[t]||e[Oe(t)]||e[Vn(Oe(t))])}function gu(e,t,n,s){let r;const i=n,o=H(e);if(o||re(e)){const l=o&&At(e);let c=!1,d=!1;l&&(c=!Ce(e),d=nt(e),e=jn(e)),r=new Array(e.length);for(let u=0,h=e.length;ut(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,d=l.length;c0;return t!=="default"&&(n.name=t),In(),_s(Re,null,[ne("slot",n,s&&s())],d?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),In();const o=i&&Ui(i(n)),l=n.key||o&&o.key,c=_s(Re,{key:(l&&!Ne(l)?l:`_${t}`)+(!o&&s?"_fb":"")},o||(s?s():[]),o&&e._===1?64:-2);return i&&i._c&&(i._d=!0),c}function Ui(e){return e.some(t=>cn(t)?!(t.type===st||t.type===Re&&!Ui(t.children)):!0)?e:null}const hs=e=>e?io(e)?kn(e):hs(e.parent):null,en=pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>hs(e.parent),$root:e=>hs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ki(e),$forceUpdate:e=>e.f||(e.f=()=>{js(e.update)}),$nextTick:e=>e.n||(e.n=Hs.bind(e.proxy)),$watch:e=>pl.bind(e)}),Xn=(e,t)=>e!==z&&!e.__isScriptSetup&&$(e,t),Ml={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;if(t[0]!=="$"){const g=o[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Xn(s,t))return o[t]=1,s[t];if(r!==z&&$(r,t))return o[t]=2,r[t];if($(i,t))return o[t]=3,i[t];if(n!==z&&$(n,t))return o[t]=4,n[t];ps&&(o[t]=0)}}const d=en[t];let u,h;if(d)return t==="$attrs"&&ae(e.attrs,"get",""),d(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(n!==z&&$(n,t))return o[t]=4,n[t];if(h=c.config.globalProperties,$(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Xn(r,t)?(r[t]=n,!0):s!==z&&$(s,t)?(s[t]=n,!0):$(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:o}},l){let c;return!!(n[l]||e!==z&&l[0]!=="$"&&$(e,l)||Xn(t,l)||$(i,l)||$(s,l)||$(en,l)||$(r.config.globalProperties,l)||(c=o.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:$(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function cr(e){return H(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ps=!0;function Dl(e){const t=Ki(e),n=e.proxy,s=e.ctx;ps=!1,t.beforeCreate&&fr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:d,created:u,beforeMount:h,mounted:g,beforeUpdate:m,updated:S,activated:x,deactivated:M,beforeDestroy:I,beforeUnmount:P,destroyed:V,unmounted:N,render:K,renderTracked:te,renderTriggered:J,errorCaptured:le,serverPrefetch:ie,expose:ue,inheritAttrs:Te,components:pt,directives:Le,filters:Kt}=t;if(d&&Ll(d,s,null),o)for(const Y in o){const W=o[Y];B(W)&&(s[Y]=W.bind(n))}if(r){const Y=r.call(n,n);X(Y)&&(e.data=Bn(Y))}if(ps=!0,i)for(const Y in i){const W=i[Y],ke=B(W)?W.bind(n,n):B(W.get)?W.get.bind(n,n):Ke,it=!B(W)&&B(W.set)?W.set.bind(n):Ke,Ve=Pe({get:ke,set:it});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>Ve.value,set:ve=>Ve.value=ve})}if(l)for(const Y in l)Gi(l[Y],s,n,Y);if(c){const Y=B(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(W=>{En(W,Y[W])})}u&&fr(u,e,"c");function ce(Y,W){H(W)?W.forEach(ke=>Y(ke.bind(n))):W&&Y(W.bind(n))}if(ce(El,h),ce(Al,g),ce(xl,m),ce(Rl,S),ce(yl,x),ce(vl,M),ce(Tl,le),ce(Ol,te),ce(Cl,J),ce(Sl,P),ce(Bi,N),ce(wl,ie),H(ue))if(ue.length){const Y=e.exposed||(e.exposed={});ue.forEach(W=>{Object.defineProperty(Y,W,{get:()=>n[W],set:ke=>n[W]=ke,enumerable:!0})})}else e.exposed||(e.exposed={});K&&e.render===Ke&&(e.render=K),Te!=null&&(e.inheritAttrs=Te),pt&&(e.components=pt),Le&&(e.directives=Le),ie&&Fi(e)}function Ll(e,t,n=Ke){H(e)&&(e=gs(e));for(const s in e){const r=e[s];let i;X(r)?"default"in r?i=Xe(r.from||s,r.default,!0):i=Xe(r.from||s):i=Xe(r),he(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function fr(e,t,n){We(H(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Gi(e,t,n,s){let r=s.includes(".")?Ni(n,s):()=>n[s];if(re(e)){const i=t[e];B(i)&&An(r,i)}else if(B(e))An(r,e.bind(n));else if(X(e))if(H(e))e.forEach(i=>Gi(i,t,n,s));else{const i=B(e.handler)?e.handler.bind(n):t[e.handler];B(i)&&An(r,i,e)}}function Ki(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(d=>Pn(c,d,o,!0)),Pn(c,t,o)),X(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Vl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Vl={data:ur,props:ar,emits:ar,methods:Jt,computed:Jt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Jt,directives:Jt,watch:Hl,provide:ur,inject:Fl};function ur(e,t){return t?e?function(){return pe(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function Fl(e,t){return Jt(gs(e),gs(t))}function gs(e){if(H(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Oe(t)}Modifiers`]||e[`${xt(t)}Modifiers`];function Gl(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||z;let r=n;const i=t.startsWith("update:"),o=i&&Ul(s,t.slice(7));o&&(o.trim&&(r=n.map(u=>re(u)?u.trim():u)),o.number&&(r=n.map(Fn)));let l,c=s[l=$n(t)]||s[l=$n(Oe(t))];!c&&i&&(c=s[l=$n(xt(t))]),c&&We(c,e,6,r);const d=s[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,We(d,e,6,r)}}const Kl=new WeakMap;function ki(e,t,n=!1){const s=n?Kl:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!B(e)){const c=d=>{const u=ki(d,t,!0);u&&(l=!0,pe(o,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(X(e)&&s.set(e,null),null):(H(i)?i.forEach(c=>o[c]=null):pe(o,i),X(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!Dn(t)?!1:(t=t.slice(2).replace(/Once$/,""),$(e,t[0].toLowerCase()+t.slice(1))||$(e,xt(t))||$(e,t))}function dr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:d,renderCache:u,props:h,data:g,setupState:m,ctx:S,inheritAttrs:x}=e,M=On(e);let I,P;try{if(n.shapeFlag&4){const N=r||s,K=N;I=Ge(d.call(K,N,u,h,m,g,S)),P=l}else{const N=t;I=Ge(N.length>1?N(h,{attrs:l,slots:o,emit:c}):N(h,null)),P=t.props?l:Wl(l)}}catch(N){tn.length=0,Un(N,e,1),I=ne(st)}let V=I;if(P&&x!==!1){const N=Object.keys(P),{shapeFlag:K}=V;N.length&&K&7&&(i&&N.some(Ss)&&(P=kl(P,i)),V=Ht(V,P,!1,!0))}return n.dirs&&(V=Ht(V,null,!1,!0),V.dirs=V.dirs?V.dirs.concat(n.dirs):n.dirs),n.transition&&Bs(V,n.transition),I=V,On(M),I}const Wl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Dn(n))&&((t||(t={}))[n]=e[n]);return t},kl=(e,t)=>{const n={};for(const s in e)(!Ss(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ql(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,d=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?hr(s,o,d):!!o;if(c&8){const u=t.dynamicProps;for(let h=0;hObject.create(qi),Ji=e=>Object.getPrototypeOf(e)===qi;function Jl(e,t,n,s=!1){const r={},i=$i();e.propsDefaults=Object.create(null),Qi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Ei(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Ql(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=q(r),[c]=e.propsOptions;let d=!1;if((s||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,m]=Yi(h,t,!0);pe(o,g),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!c)return X(e)&&s.set(e,It),It;if(H(i))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Gs=e=>H(e)?e.map(Ge):[Ge(e)],zl=(e,t,n)=>{if(t._n)return t;const s=Je((...r)=>Gs(t(...r)),n);return s._c=!1,s},zi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Us(r))continue;const i=e[r];if(B(i))t[r]=zl(r,i,s);else if(i!=null){const o=Gs(i);t[r]=()=>o}}},Xi=(e,t)=>{const n=Gs(t);e.slots.default=()=>n},Zi=(e,t,n)=>{for(const s in t)(n||!Us(s))&&(e[s]=t[s])},Xl=(e,t,n)=>{const s=e.slots=$i();if(e.vnode.shapeFlag&32){const r=t._;r?(Zi(s,t,n),n&&ni(s,"_",r,!0)):zi(t,s)}else t&&Xi(e,t)},Zl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Zi(r,t,n):(i=!t.$stable,zi(t,r)),o=t}else t&&(Xi(e,t),o={default:1});if(i)for(const l in r)!Us(l)&&o[l]==null&&delete r[l]},me=rc;function ec(e){return tc(e)}function tc(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:d,setElementText:u,parentNode:h,nextSibling:g,setScopeId:m=Ke,insertStaticContent:S}=e,x=(f,a,p,_=null,b=null,y=null,w=void 0,R=null,A=!!a.dynamicChildren)=>{if(f===a)return;f&&!qt(f,a)&&(_=v(f),ve(f,b,y,!0),f=null),a.patchFlag===-2&&(A=!1,a.dynamicChildren=null);const{type:E,ref:F,shapeFlag:O}=a;switch(E){case Wn:M(f,a,p,_);break;case st:I(f,a,p,_);break;case es:f==null&&P(a,p,_,w);break;case Re:pt(f,a,p,_,b,y,w,R,A);break;default:O&1?K(f,a,p,_,b,y,w,R,A):O&6?Le(f,a,p,_,b,y,w,R,A):(O&64||O&128)&&E.process(f,a,p,_,b,y,w,R,A,D)}F!=null&&b?Zt(F,f&&f.ref,y,a||f,!a):F==null&&f&&f.ref!=null&&Zt(f.ref,null,y,f,!0)},M=(f,a,p,_)=>{if(f==null)s(a.el=l(a.children),p,_);else{const b=a.el=f.el;a.children!==f.children&&d(b,a.children)}},I=(f,a,p,_)=>{f==null?s(a.el=c(a.children||""),p,_):a.el=f.el},P=(f,a,p,_)=>{[f.el,f.anchor]=S(f.children,a,p,_,f.el,f.anchor)},V=({el:f,anchor:a},p,_)=>{let b;for(;f&&f!==a;)b=g(f),s(f,p,_),f=b;s(a,p,_)},N=({el:f,anchor:a})=>{let p;for(;f&&f!==a;)p=g(f),r(f),f=p;r(a)},K=(f,a,p,_,b,y,w,R,A)=>{if(a.type==="svg"?w="svg":a.type==="math"&&(w="mathml"),f==null)te(a,p,_,b,y,w,R,A);else{const E=f.el&&f.el._isVueCE?f.el:null;try{E&&E._beginPatch(),ie(f,a,b,y,w,R,A)}finally{E&&E._endPatch()}}},te=(f,a,p,_,b,y,w,R)=>{let A,E;const{props:F,shapeFlag:O,transition:L,dirs:j}=f;if(A=f.el=o(f.type,y,F&&F.is,F),O&8?u(A,f.children):O&16&&le(f.children,A,null,_,b,Zn(f,y),w,R),j&&mt(f,null,_,"created"),J(A,f,f.scopeId,w,_),F){for(const Z in F)Z!=="value"&&!Qt(Z)&&i(A,Z,null,F[Z],y,_);"value"in F&&i(A,"value",null,F.value,y),(E=F.onVnodeBeforeMount)&&Be(E,_,f)}j&&mt(f,null,_,"beforeMount");const G=nc(b,L);G&&L.beforeEnter(A),s(A,a,p),((E=F&&F.onVnodeMounted)||G||j)&&me(()=>{E&&Be(E,_,f),G&&L.enter(A),j&&mt(f,null,_,"mounted")},b)},J=(f,a,p,_,b)=>{if(p&&m(f,p),_)for(let y=0;y<_.length;y++)m(f,_[y]);if(b){let y=b.subTree;if(a===y||no(y.type)&&(y.ssContent===a||y.ssFallback===a)){const w=b.vnode;J(f,w,w.scopeId,w.slotScopeIds,b.parent)}}},le=(f,a,p,_,b,y,w,R,A=0)=>{for(let E=A;E{const R=a.el=f.el;let{patchFlag:A,dynamicChildren:E,dirs:F}=a;A|=f.patchFlag&16;const O=f.props||z,L=a.props||z;let j;if(p&&_t(p,!1),(j=L.onVnodeBeforeUpdate)&&Be(j,p,a,f),F&&mt(a,f,p,"beforeUpdate"),p&&_t(p,!0),(O.innerHTML&&L.innerHTML==null||O.textContent&&L.textContent==null)&&u(R,""),E?ue(f.dynamicChildren,E,R,p,_,Zn(a,b),y):w||W(f,a,R,null,p,_,Zn(a,b),y,!1),A>0){if(A&16)Te(R,O,L,p,b);else if(A&2&&O.class!==L.class&&i(R,"class",null,L.class,b),A&4&&i(R,"style",O.style,L.style,b),A&8){const G=a.dynamicProps;for(let Z=0;Z{j&&Be(j,p,a,f),F&&mt(a,f,p,"updated")},_)},ue=(f,a,p,_,b,y,w)=>{for(let R=0;R{if(a!==p){if(a!==z)for(const y in a)!Qt(y)&&!(y in p)&&i(f,y,a[y],null,b,_);for(const y in p){if(Qt(y))continue;const w=p[y],R=a[y];w!==R&&y!=="value"&&i(f,y,R,w,b,_)}"value"in p&&i(f,"value",a.value,p.value,b)}},pt=(f,a,p,_,b,y,w,R,A)=>{const E=a.el=f?f.el:l(""),F=a.anchor=f?f.anchor:l("");let{patchFlag:O,dynamicChildren:L,slotScopeIds:j}=a;j&&(R=R?R.concat(j):j),f==null?(s(E,p,_),s(F,p,_),le(a.children||[],p,F,b,y,w,R,A)):O>0&&O&64&&L&&f.dynamicChildren&&f.dynamicChildren.length===L.length?(ue(f.dynamicChildren,L,p,b,y,w,R),(a.key!=null||b&&a===b.subTree)&&Ks(f,a,!0)):W(f,a,p,F,b,y,w,R,A)},Le=(f,a,p,_,b,y,w,R,A)=>{a.slotScopeIds=R,f==null?a.shapeFlag&512?b.ctx.activate(a,p,_,w,A):Kt(a,p,_,b,y,w,A):Rt(f,a,A)},Kt=(f,a,p,_,b,y,w)=>{const R=f.component=dc(f,_,b);if(Hi(f)&&(R.ctx.renderer=D),pc(R,!1,w),R.asyncDep){if(b&&b.registerDep(R,ce,w),!f.el){const A=R.subTree=ne(st);I(null,A,a,p),f.placeholder=A.el}}else ce(R,f,a,p,b,y,w)},Rt=(f,a,p)=>{const _=a.component=f.component;if(ql(f,a,p))if(_.asyncDep&&!_.asyncResolved){Y(_,a,p);return}else _.next=a,_.update();else a.el=f.el,_.vnode=a},ce=(f,a,p,_,b,y,w)=>{const R=()=>{if(f.isMounted){let{next:O,bu:L,u:j,parent:G,vnode:Z}=f;{const He=eo(f);if(He){O&&(O.el=Z.el,Y(f,O,w)),He.asyncDep.then(()=>{f.isUnmounted||R()});return}}let Q=O,be;_t(f,!1),O?(O.el=Z.el,Y(f,O,w)):O=Z,L&&bn(L),(be=O.props&&O.props.onVnodeBeforeUpdate)&&Be(be,G,O,Z),_t(f,!0);const Ee=dr(f),Fe=f.subTree;f.subTree=Ee,x(Fe,Ee,h(Fe.el),v(Fe),f,b,y),O.el=Ee.el,Q===null&&$l(f,Ee.el),j&&me(j,b),(be=O.props&&O.props.onVnodeUpdated)&&me(()=>Be(be,G,O,Z),b)}else{let O;const{el:L,props:j}=a,{bm:G,m:Z,parent:Q,root:be,type:Ee}=f,Fe=Lt(a);_t(f,!1),G&&bn(G),!Fe&&(O=j&&j.onVnodeBeforeMount)&&Be(O,Q,a),_t(f,!0);{be.ce&&be.ce._def.shadowRoot!==!1&&be.ce._injectChildStyle(Ee);const He=f.subTree=dr(f);x(null,He,p,_,f,b,y),a.el=He.el}if(Z&&me(Z,b),!Fe&&(O=j&&j.onVnodeMounted)){const He=a;me(()=>Be(O,Q,He),b)}(a.shapeFlag&256||Q&&Lt(Q.vnode)&&Q.vnode.shapeFlag&256)&&f.a&&me(f.a,b),f.isMounted=!0,a=p=_=null}};f.scope.on();const A=f.effect=new li(R);f.scope.off();const E=f.update=A.run.bind(A),F=f.job=A.runIfDirty.bind(A);F.i=f,F.id=f.uid,A.scheduler=()=>js(F),_t(f,!0),E()},Y=(f,a,p)=>{a.component=f;const _=f.vnode.props;f.vnode=a,f.next=null,Ql(f,a.props,_,p),Zl(f,a.children,p),et(),tr(f),tt()},W=(f,a,p,_,b,y,w,R,A=!1)=>{const E=f&&f.children,F=f?f.shapeFlag:0,O=a.children,{patchFlag:L,shapeFlag:j}=a;if(L>0){if(L&128){it(E,O,p,_,b,y,w,R,A);return}else if(L&256){ke(E,O,p,_,b,y,w,R,A);return}}j&8?(F&16&&we(E,b,y),O!==E&&u(p,O)):F&16?j&16?it(E,O,p,_,b,y,w,R,A):we(E,b,y,!0):(F&8&&u(p,""),j&16&&le(O,p,_,b,y,w,R,A))},ke=(f,a,p,_,b,y,w,R,A)=>{f=f||It,a=a||It;const E=f.length,F=a.length,O=Math.min(E,F);let L;for(L=0;LF?we(f,b,y,!0,!1,O):le(a,p,_,b,y,w,R,A,O)},it=(f,a,p,_,b,y,w,R,A)=>{let E=0;const F=a.length;let O=f.length-1,L=F-1;for(;E<=O&&E<=L;){const j=f[E],G=a[E]=A?ut(a[E]):Ge(a[E]);if(qt(j,G))x(j,G,p,null,b,y,w,R,A);else break;E++}for(;E<=O&&E<=L;){const j=f[O],G=a[L]=A?ut(a[L]):Ge(a[L]);if(qt(j,G))x(j,G,p,null,b,y,w,R,A);else break;O--,L--}if(E>O){if(E<=L){const j=L+1,G=jL)for(;E<=O;)ve(f[E],b,y,!0),E++;else{const j=E,G=E,Z=new Map;for(E=G;E<=L;E++){const xe=a[E]=A?ut(a[E]):Ge(a[E]);xe.key!=null&&Z.set(xe.key,E)}let Q,be=0;const Ee=L-G+1;let Fe=!1,He=0;const Wt=new Array(Ee);for(E=0;E=Ee){ve(xe,b,y,!0);continue}let je;if(xe.key!=null)je=Z.get(xe.key);else for(Q=G;Q<=L;Q++)if(Wt[Q-G]===0&&qt(xe,a[Q])){je=Q;break}je===void 0?ve(xe,b,y,!0):(Wt[je-G]=E+1,je>=He?He=je:Fe=!0,x(xe,a[je],p,null,b,y,w,R,A),be++)}const Js=Fe?sc(Wt):It;for(Q=Js.length-1,E=Ee-1;E>=0;E--){const xe=G+E,je=a[xe],Qs=a[xe+1],Ys=xe+1{const{el:y,type:w,transition:R,children:A,shapeFlag:E}=f;if(E&6){Ve(f.component.subTree,a,p,_);return}if(E&128){f.suspense.move(a,p,_);return}if(E&64){w.move(f,a,p,D);return}if(w===Re){s(y,a,p);for(let O=0;OR.enter(y),b);else{const{leave:O,delayLeave:L,afterLeave:j}=R,G=()=>{f.ctx.isUnmounted?r(y):s(y,a,p)},Z=()=>{y._isLeaving&&y[_l](!0),O(y,()=>{G(),j&&j()})};L?L(y,G,Z):Z()}else s(y,a,p)},ve=(f,a,p,_=!1,b=!1)=>{const{type:y,props:w,ref:R,children:A,dynamicChildren:E,shapeFlag:F,patchFlag:O,dirs:L,cacheIndex:j}=f;if(O===-2&&(b=!1),R!=null&&(et(),Zt(R,null,p,f,!0),tt()),j!=null&&(a.renderCache[j]=void 0),F&256){a.ctx.deactivate(f);return}const G=F&1&&L,Z=!Lt(f);let Q;if(Z&&(Q=w&&w.onVnodeBeforeUnmount)&&Be(Q,a,f),F&6)gt(f.component,p,_);else{if(F&128){f.suspense.unmount(p,_);return}G&&mt(f,null,a,"beforeUnmount"),F&64?f.type.remove(f,a,p,D,_):E&&!E.hasOnce&&(y!==Re||O>0&&O&64)?we(E,a,p,!1,!0):(y===Re&&O&384||!b&&F&16)&&we(A,a,p),_&&St(f)}(Z&&(Q=w&&w.onVnodeUnmounted)||G)&&me(()=>{Q&&Be(Q,a,f),G&&mt(f,null,a,"unmounted")},p)},St=f=>{const{type:a,el:p,anchor:_,transition:b}=f;if(a===Re){wt(p,_);return}if(a===es){N(f);return}const y=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(f.shapeFlag&1&&b&&!b.persisted){const{leave:w,delayLeave:R}=b,A=()=>w(p,y);R?R(f.el,y,A):A()}else y()},wt=(f,a)=>{let p;for(;f!==a;)p=g(f),r(f),f=p;r(a)},gt=(f,a,p)=>{const{bum:_,scope:b,job:y,subTree:w,um:R,m:A,a:E}=f;gr(A),gr(E),_&&bn(_),b.stop(),y&&(y.flags|=8,ve(w,f,a,p)),R&&me(R,a),me(()=>{f.isUnmounted=!0},a)},we=(f,a,p,_=!1,b=!1,y=0)=>{for(let w=y;w{if(f.shapeFlag&6)return v(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const a=g(f.anchor||f.el),p=a&&a[Mi];return p?g(p):a};let T=!1;const C=(f,a,p)=>{let _;f==null?a._vnode&&(ve(a._vnode,null,null,!0),_=a._vnode.component):x(a._vnode||null,f,a,null,null,null,p),a._vnode=f,T||(T=!0,tr(_),Oi(),T=!1)},D={p:x,um:ve,m:Ve,r:St,mt:Kt,mc:le,pc:W,pbc:ue,n:v,o:e};return{render:C,hydrate:void 0,createApp:Bl(C)}}function Zn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function _t({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function nc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ks(e,t,n=!1){const s=e.children,r=t.children;if(H(s)&&H(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function eo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:eo(t)}function gr(e){if(e)for(let t=0;te.__isSuspense;function rc(e,t){t&&t.pendingBranch?H(e)?t.effects.push(...e):t.effects.push(e):al(e)}const Re=Symbol.for("v-fgt"),Wn=Symbol.for("v-txt"),st=Symbol.for("v-cmt"),es=Symbol.for("v-stc"),tn=[];let Se=null;function In(e=!1){tn.push(Se=e?null:[])}function ic(){tn.pop(),Se=tn[tn.length-1]||null}let ln=1;function Nn(e,t=!1){ln+=e,e<0&&Se&&t&&(Se.hasOnce=!0)}function so(e){return e.dynamicChildren=ln>0?Se||It:null,ic(),ln>0&&Se&&Se.push(e),e}function oc(e,t,n,s,r,i){return so(Pt(e,t,n,s,r,i,!0))}function _s(e,t,n,s,r){return so(ne(e,t,n,s,r,!0))}function cn(e){return e?e.__v_isVNode===!0:!1}function qt(e,t){return e.type===t.type&&e.key===t.key}const ro=({key:e})=>e??null,Rn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||he(e)||B(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function Pt(e,t=null,n=null,s=0,r=null,i=e===Re?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ro(t),ref:t&&Rn(t),scopeId:Pi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:fe};return l?(Ws(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),ln>0&&!o&&Se&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Se.push(c),c}const ne=lc;function lc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Il)&&(e=st),cn(e)){const l=Ht(e,t,!0);return n&&Ws(l,n),ln>0&&!i&&Se&&(l.shapeFlag&6?Se[Se.indexOf(e)]=l:Se.push(l)),l.patchFlag=-2,l}if(vc(e)&&(e=e.__vccOpts),t){t=cc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Ts(l)),X(c)&&(Fs(c)&&!H(c)&&(c=pe({},c)),t.style=Os(c))}const o=re(e)?1:no(e)?128:gl(e)?64:X(e)?4:B(e)?2:0;return Pt(e,t,n,s,r,o,i,!0)}function cc(e){return e?Fs(e)||Ji(e)?pe({},e):e:null}function Ht(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,d=t?fc(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&ro(d),ref:t&&t.ref?n&&i?H(i)?i.concat(Rn(t)):[i,Rn(t)]:Rn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Re?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ht(e.ssContent),ssFallback:e.ssFallback&&Ht(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Bs(u,c.clone(u)),u}function lt(e=" ",t=0){return ne(Wn,null,e,t)}function _u(e="",t=!1){return t?(In(),_s(st,null,e)):ne(st,null,e)}function Ge(e){return e==null||typeof e=="boolean"?ne(st):H(e)?ne(Re,null,e.slice()):cn(e)?ut(e):ne(Wn,null,String(e))}function ut(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ht(e)}function Ws(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(H(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ws(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ji(t)?t._ctx=fe:r===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),s&64?(n=16,t=[lt(t)]):n=8);e.children=t,e.shapeFlag|=n}function fc(...e){const t={};for(let n=0;nde||fe;let Mn,ys;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Mn=t("__VUE_INSTANCE_SETTERS__",n=>de=n),ys=t("__VUE_SSR_SETTERS__",n=>fn=n)}const gn=e=>{const t=de;return Mn(e),e.scope.on(),()=>{e.scope.off(),Mn(t)}},mr=()=>{de&&de.scope.off(),Mn(null)};function io(e){return e.vnode.shapeFlag&4}let fn=!1;function pc(e,t=!1,n=!1){t&&ys(t);const{props:s,children:r}=e.vnode,i=io(e);Jl(e,s,i,t),Xl(e,r,n||t);const o=i?gc(e,t):void 0;return t&&ys(!1),o}function gc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ml);const{setup:s}=n;if(s){et();const r=e.setupContext=s.length>1?_c(e):null,i=gn(e),o=pn(s,e,0,[e.props,r]),l=Zr(o);if(tt(),i(),(l||e.sp)&&!Lt(e)&&Fi(e),l){if(o.then(mr,mr),t)return o.then(c=>{_r(e,c)}).catch(c=>{Un(c,e,0)});e.asyncDep=o}else _r(e,o)}else oo(e)}function _r(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=Si(t)),oo(e)}function oo(e,t,n){const s=e.type;e.render||(e.render=s.render||Ke);{const r=gn(e);et();try{Dl(e)}finally{tt(),r()}}}const mc={get(e,t){return ae(e,"get",""),e[t]}};function _c(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,mc),slots:e.slots,emit:e.emit,expose:t}}function kn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Si(Ai(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in en)return en[n](e)},has(t,n){return n in t||n in en}})):e.proxy}function yc(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function vc(e){return B(e)&&"__vccOpts"in e}const Pe=(e,t)=>ol(e,t,fn);function lo(e,t,n){try{Nn(-1);const s=arguments.length;return s===2?X(t)&&!H(t)?cn(t)?ne(e,null,[t]):ne(e,t):ne(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&cn(n)&&(n=[n]),ne(e,t,n))}finally{Nn(1)}}const bc="3.5.26";/** -* @vue/runtime-dom v3.5.26 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let vs;const yr=typeof window<"u"&&window.trustedTypes;if(yr)try{vs=yr.createPolicy("vue",{createHTML:e=>e})}catch{}const co=vs?e=>vs.createHTML(e):e=>e,Ec="http://www.w3.org/2000/svg",Ac="http://www.w3.org/1998/Math/MathML",Qe=typeof document<"u"?document:null,vr=Qe&&Qe.createElement("template"),xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Qe.createElementNS(Ec,e):t==="mathml"?Qe.createElementNS(Ac,e):n?Qe.createElement(e,{is:n}):Qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Qe.createTextNode(e),createComment:e=>Qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{vr.innerHTML=co(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=vr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Rc=Symbol("_vtc");function Sc(e,t,n){const s=e[Rc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const br=Symbol("_vod"),wc=Symbol("_vsh"),Cc=Symbol(""),Oc=/(?:^|;)\s*display\s*:/;function Tc(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Sn(s,l,"")}else for(const o in t)n[o]==null&&Sn(s,o,"");for(const o in n)o==="display"&&(i=!0),Sn(s,o,n[o])}else if(r){if(t!==n){const o=s[Cc];o&&(n+=";"+o),s.cssText=n,i=Oc.test(n)}}else t&&e.removeAttribute("style");br in e&&(e[br]=i?s.display:"",e[wc]&&(s.display="none"))}const Er=/\s*!important$/;function Sn(e,t,n){if(H(n))n.forEach(s=>Sn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Pc(e,t);Er.test(n)?e.setProperty(xt(s),n.replace(Er,""),"important"):e[s]=n}}const Ar=["Webkit","Moz","ms"],ts={};function Pc(e,t){const n=ts[t];if(n)return n;let s=Oe(t);if(s!=="filter"&&s in e)return ts[t]=s;s=Vn(s);for(let r=0;rns||(Dc.then(()=>ns=0),ns=Date.now());function Vc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;We(Fc(s,n.value),t,5,[s])};return n.value=e,n.attached=Lc(),n}function Fc(e,t){if(H(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Or=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Hc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Sc(e,s,o):t==="style"?Tc(e,n,s):Dn(t)?Ss(t)||Nc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):jc(e,t,s,o))?(Sr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Rr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Sr(e,Oe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Rr(e,t,s,o))};function jc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Or(t)&&B(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Or(t)&&re(n)?!1:t in e}const jt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return H(t)?n=>bn(t,n):t};function Bc(e){e.target.composing=!0}function Tr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ze=Symbol("_assign");function Pr(e,t,n){return t&&(e=e.trim()),n&&(e=Fn(e)),e}const yu={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Ze]=jt(r);const i=s||r.props&&r.props.type==="number";dt(e,t?"change":"input",o=>{o.target.composing||e[Ze](Pr(e.value,n,i))}),(n||i)&&dt(e,"change",()=>{e.value=Pr(e.value,n,i)}),t||(dt(e,"compositionstart",Bc),dt(e,"compositionend",Tr),dt(e,"change",Tr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[Ze]=jt(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Fn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},vu={deep:!0,created(e,t,n){e[Ze]=jt(n),dt(e,"change",()=>{const s=e._modelValue,r=un(e),i=e.checked,o=e[Ze];if(H(s)){const l=Ps(s,r),c=l!==-1;if(i&&!c)o(s.concat(r));else if(!i&&c){const d=[...s];d.splice(l,1),o(d)}}else if(Gt(s)){const l=new Set(s);i?l.add(r):l.delete(r),o(l)}else o(fo(e,i))})},mounted:Ir,beforeUpdate(e,t,n){e[Ze]=jt(n),Ir(e,t,n)}};function Ir(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(H(t))r=Ps(t,s.props.value)>-1;else if(Gt(t))r=t.has(s.props.value);else{if(t===n)return;r=hn(t,fo(e,!0))}e.checked!==r&&(e.checked=r)}const bu={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Gt(t);dt(e,"change",()=>{const i=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?Fn(un(o)):un(o));e[Ze](e.multiple?r?new Set(i):i:i[0]),e._assigning=!0,Hs(()=>{e._assigning=!1})}),e[Ze]=jt(s)},mounted(e,{value:t}){Nr(e,t)},beforeUpdate(e,t,n){e[Ze]=jt(n)},updated(e,{value:t}){e._assigning||Nr(e,t)}};function Nr(e,t){const n=e.multiple,s=H(t);if(!(n&&!s&&!Gt(t))){for(let r=0,i=e.options.length;rString(d)===String(l)):o.selected=Ps(t,l)>-1}else o.selected=t.has(l);else if(hn(un(o),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function un(e){return"_value"in e?e._value:e.value}function fo(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Uc=["ctrl","shift","alt","meta"],Gc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Uc.some(n=>e[`${n}Key`]&&!t.includes(n))},Eu=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const t=Wc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=$c(s);if(!r)return;const i=t._component;!B(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,qc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function qc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function $c(e){return re(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Jc=Symbol();var Dr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Dr||(Dr={}));function Qc(){const e=Vo(!0),t=e.run(()=>xi({}));let n=[],s=[];const r=Ai({install(i){r._a=i,i.provide(Jc,r),i.config.globalProperties.$pinia=r,s.forEach(o=>n.push(o)),s=[]},use(i){return this._a?n.push(i):s.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Yc=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},zc={},Xc={id:"app"},Zc={class:"header"},ef={class:"main"};function tf(e,t){const n=or("router-link"),s=or("router-view");return In(),oc("div",Xc,[Pt("header",Zc,[ne(n,{to:"/",class:"logo"},{default:Je(()=>[...t[0]||(t[0]=[Pt("h1",null,"📊 LogHunter",-1)])]),_:1}),Pt("nav",null,[ne(n,{to:"/"},{default:Je(()=>[...t[1]||(t[1]=[lt("대시보드",-1)])]),_:1}),ne(n,{to:"/errors"},{default:Je(()=>[...t[2]||(t[2]=[lt("에러 이력",-1)])]),_:1}),ne(n,{to:"/stats/monthly"},{default:Je(()=>[...t[3]||(t[3]=[lt("월별현황",-1)])]),_:1}),ne(n,{to:"/stats/daily"},{default:Je(()=>[...t[4]||(t[4]=[lt("일별현황",-1)])]),_:1}),ne(n,{to:"/servers"},{default:Je(()=>[...t[5]||(t[5]=[lt("서버 관리",-1)])]),_:1}),ne(n,{to:"/patterns"},{default:Je(()=>[...t[6]||(t[6]=[lt("패턴 관리",-1)])]),_:1}),ne(n,{to:"/settings"},{default:Je(()=>[...t[7]||(t[7]=[lt("설정",-1)])]),_:1})])]),Pt("main",ef,[ne(s)])])}const nf=Yc(zc,[["render",tf]]),sf="modulepreload",rf=function(e){return"/"+e},Lr={},yt=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=rf(c),c in Lr)return;Lr[c]=!0;const d=c.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const h=document.createElement("link");if(h.rel=d?"stylesheet":sf,d||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),d)return new Promise((g,m)=>{h.addEventListener("load",g),h.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})};/*! - * vue-router v4.6.4 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Tt=typeof document<"u";function uo(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function of(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&uo(e.default)}const k=Object.assign;function ss(e,t){const n={};for(const s in t){const r=t[s];n[s]=De(r)?r.map(e):e(r)}return n}const nn=()=>{},De=Array.isArray;function Vr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const ao=/#/g,lf=/&/g,cf=/\//g,ff=/=/g,uf=/\?/g,ho=/\+/g,af=/%5B/g,df=/%5D/g,po=/%5E/g,hf=/%60/g,go=/%7B/g,pf=/%7C/g,mo=/%7D/g,gf=/%20/g;function ks(e){return e==null?"":encodeURI(""+e).replace(pf,"|").replace(af,"[").replace(df,"]")}function mf(e){return ks(e).replace(go,"{").replace(mo,"}").replace(po,"^")}function bs(e){return ks(e).replace(ho,"%2B").replace(gf,"+").replace(ao,"%23").replace(lf,"%26").replace(hf,"`").replace(go,"{").replace(mo,"}").replace(po,"^")}function _f(e){return bs(e).replace(ff,"%3D")}function yf(e){return ks(e).replace(ao,"%23").replace(uf,"%3F")}function vf(e){return yf(e).replace(cf,"%2F")}function an(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const bf=/\/$/,Ef=e=>e.replace(bf,"");function rs(e,t,n="/"){let s,r={},i="",o="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),i=t.slice(c,l>0?l:t.length),r=e(i.slice(1))),l>=0&&(s=s||t.slice(0,l),o=t.slice(l,t.length)),s=Sf(s??t,n),{fullPath:s+i+o,path:s,query:r,hash:an(o)}}function Af(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Fr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function xf(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Bt(t.matched[s],n.matched[r])&&_o(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Bt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function _o(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Rf(e[n],t[n]))return!1;return!0}function Rf(e,t){return De(e)?Hr(e,t):De(t)?Hr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Hr(e,t){return De(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Sf(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let i=n.length-1,o,l;for(o=0;o1&&i--;else break;return n.slice(0,i).join("/")+"/"+s.slice(o).join("/")}const ot={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Es=function(e){return e.pop="pop",e.push="push",e}({}),is=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function wf(e){if(!e)if(Tt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Ef(e)}const Cf=/^[^#]+#/;function Of(e,t){return e.replace(Cf,"#")+t}function Tf(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const qn=()=>({left:window.scrollX,top:window.scrollY});function Pf(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Tf(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function jr(e,t){return(history.state?history.state.position-t:-1)+e}const As=new Map;function If(e,t){As.set(e,t)}function Nf(e){const t=As.get(e);return As.delete(e),t}function Mf(e){return typeof e=="string"||e&&typeof e=="object"}function yo(e){return typeof e=="string"||typeof e=="symbol"}let se=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const vo=Symbol("");se.MATCHER_NOT_FOUND+"",se.NAVIGATION_GUARD_REDIRECT+"",se.NAVIGATION_ABORTED+"",se.NAVIGATION_CANCELLED+"",se.NAVIGATION_DUPLICATED+"";function Ut(e,t){return k(new Error,{type:e,[vo]:!0},t)}function $e(e,t){return e instanceof Error&&vo in e&&(t==null||!!(e.type&t))}const Df=["params","query","hash"];function Lf(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Df)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Vf(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&bs(r)):[s&&bs(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Ff(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=De(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Hf=Symbol(""),Ur=Symbol(""),qs=Symbol(""),bo=Symbol(""),xs=Symbol("");function $t(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function at(e,t,n,s,r,i=o=>o()){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const d=g=>{g===!1?c(Ut(se.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?c(g):Mf(g)?c(Ut(se.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(o&&s.enterCallbacks[r]===o&&typeof g=="function"&&o.push(g),l())},u=i(()=>e.call(s&&s.instances[r],t,n,d));let h=Promise.resolve(u);e.length<3&&(h=h.then(d)),h.catch(g=>c(g))})}function os(e,t,n,s,r=i=>i()){const i=[];for(const o of e)for(const l in o.components){let c=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(uo(c)){const d=(c.__vccOpts||c)[t];d&&i.push(at(d,n,s,o,l,r))}else{let d=c();i.push(()=>d.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${o.path}"`);const h=of(u)?u.default:u;o.mods[l]=u,o.components[l]=h;const g=(h.__vccOpts||h)[t];return g&&at(g,n,s,o,l,r)()}))}}return i}function jf(e,t){const n=[],s=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;oBt(d,l))?s.push(l):n.push(l));const c=e.matched[o];c&&(t.matched.find(d=>Bt(d,c))||r.push(c))}return[n,s,r]}/*! - * vue-router v4.6.4 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let Bf=()=>location.protocol+"//"+location.host;function Eo(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(o);return l[0]!=="/"&&(l="/"+l),Fr(l,"")}return Fr(n,e)+s+r}function Uf(e,t,n,s){let r=[],i=[],o=null;const l=({state:g})=>{const m=Eo(e,location),S=n.value,x=t.value;let M=0;if(g){if(n.value=m,t.value=g,o&&o===S){o=null;return}M=x?g.position-x.position:0}else s(m);r.forEach(I=>{I(n.value,S,{delta:M,type:Es.pop,direction:M?M>0?is.forward:is.back:is.unknown})})};function c(){o=n.value}function d(g){r.push(g);const m=()=>{const S=r.indexOf(g);S>-1&&r.splice(S,1)};return i.push(m),m}function u(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(k({},g.state,{scroll:qn()}),"")}}function h(){for(const g of i)g();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:c,listen:d,destroy:h}}function Gr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?qn():null}}function Gf(e){const{history:t,location:n}=window,s={value:Eo(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(c,d,u){const h=e.indexOf("#"),g=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+c:Bf()+e+c;try{t[u?"replaceState":"pushState"](d,"",g),r.value=d}catch(m){console.error(m),n[u?"replace":"assign"](g)}}function o(c,d){i(c,k({},t.state,Gr(r.value.back,c,r.value.forward,!0),d,{position:r.value.position}),!0),s.value=c}function l(c,d){const u=k({},r.value,t.state,{forward:c,scroll:qn()});i(u.current,u,!0),i(c,k({},Gr(s.value,c,null),{position:u.position+1},d),!1),s.value=c}return{location:s,state:r,push:l,replace:o}}function Kf(e){e=wf(e);const t=Gf(e),n=Uf(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=k({location:"",base:e,go:s,createHref:Of.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let bt=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var oe=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(oe||{});const Wf={type:bt.Static,value:""},kf=/[a-zA-Z0-9_]/;function qf(e){if(!e)return[[]];if(e==="/")return[[Wf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${d}": ${m}`)}let n=oe.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let l=0,c,d="",u="";function h(){d&&(n===oe.Static?i.push({type:bt.Static,value:d}):n===oe.Param||n===oe.ParamRegExp||n===oe.ParamRegExpEnd?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),i.push({type:bt.Param,value:d,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),d="")}function g(){d+=c}for(;lt.length?t.length===1&&t[0]===_e.Static+_e.Segment?1:-1:0}function Ao(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const zf={strict:!1,end:!0,sensitive:!1};function Xf(e,t,n){const s=Qf(qf(e.path),n),r=k(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Zf(e,t){const n=[],s=new Map;t=Vr(zf,t);function r(h){return s.get(h)}function i(h,g,m){const S=!m,x=qr(h);x.aliasOf=m&&m.record;const M=Vr(t,h),I=[x];if("alias"in h){const N=typeof h.alias=="string"?[h.alias]:h.alias;for(const K of N)I.push(qr(k({},x,{components:m?m.record.components:x.components,path:K,aliasOf:m?m.record:x})))}let P,V;for(const N of I){const{path:K}=N;if(g&&K[0]!=="/"){const te=g.record.path,J=te[te.length-1]==="/"?"":"/";N.path=g.record.path+(K&&J+K)}if(P=Xf(N,g,M),m?m.alias.push(P):(V=V||P,V!==P&&V.alias.push(P),S&&h.name&&!$r(P)&&o(h.name)),xo(P)&&c(P),x.children){const te=x.children;for(let J=0;J{o(V)}:nn}function o(h){if(yo(h)){const g=s.get(h);g&&(s.delete(h),n.splice(n.indexOf(g),1),g.children.forEach(o),g.alias.forEach(o))}else{const g=n.indexOf(h);g>-1&&(n.splice(g,1),h.record.name&&s.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function l(){return n}function c(h){const g=nu(h,n);n.splice(g,0,h),h.record.name&&!$r(h)&&s.set(h.record.name,h)}function d(h,g){let m,S={},x,M;if("name"in h&&h.name){if(m=s.get(h.name),!m)throw Ut(se.MATCHER_NOT_FOUND,{location:h});M=m.record.name,S=k(kr(g.params,m.keys.filter(V=>!V.optional).concat(m.parent?m.parent.keys.filter(V=>V.optional):[]).map(V=>V.name)),h.params&&kr(h.params,m.keys.map(V=>V.name))),x=m.stringify(S)}else if(h.path!=null)x=h.path,m=n.find(V=>V.re.test(x)),m&&(S=m.parse(x),M=m.record.name);else{if(m=g.name?s.get(g.name):n.find(V=>V.re.test(g.path)),!m)throw Ut(se.MATCHER_NOT_FOUND,{location:h,currentLocation:g});M=m.record.name,S=k({},g.params,h.params),x=m.stringify(S)}const I=[];let P=m;for(;P;)I.unshift(P.record),P=P.parent;return{name:M,path:x,params:S,matched:I,meta:tu(I)}}e.forEach(h=>i(h));function u(){n.length=0,s.clear()}return{addRoute:i,resolve:d,removeRoute:o,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function kr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function qr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:eu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function eu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function $r(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function tu(e){return e.reduce((t,n)=>k(t,n.meta),{})}function nu(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;Ao(e,t[i])<0?s=i:n=i+1}const r=su(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function su(e){let t=e;for(;t=t.parent;)if(xo(t)&&Ao(e,t)===0)return t}function xo({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Jr(e){const t=Xe(qs),n=Xe(bo),s=Pe(()=>{const c=Mt(e.to);return t.resolve(c)}),r=Pe(()=>{const{matched:c}=s.value,{length:d}=c,u=c[d-1],h=n.matched;if(!u||!h.length)return-1;const g=h.findIndex(Bt.bind(null,u));if(g>-1)return g;const m=Qr(c[d-2]);return d>1&&Qr(u)===m&&h[h.length-1].path!==m?h.findIndex(Bt.bind(null,c[d-2])):g}),i=Pe(()=>r.value>-1&&cu(n.params,s.value.params)),o=Pe(()=>r.value>-1&&r.value===n.matched.length-1&&_o(n.params,s.value.params));function l(c={}){if(lu(c)){const d=t[Mt(e.replace)?"replace":"push"](Mt(e.to)).catch(nn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>d),d}return Promise.resolve()}return{route:s,href:Pe(()=>s.value.href),isActive:i,isExactActive:o,navigate:l}}function ru(e){return e.length===1?e[0]:e}const iu=Vi({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Jr,setup(e,{slots:t}){const n=Bn(Jr(e)),{options:s}=Xe(qs),r=Pe(()=>({[Yr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Yr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&ru(t.default(n));return e.custom?i:lo("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),ou=iu;function lu(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function cu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!De(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function Qr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Yr=(e,t,n)=>e??t??n,fu=Vi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Xe(xs),r=Pe(()=>e.route||s.value),i=Xe(Ur,0),o=Pe(()=>{let d=Mt(i);const{matched:u}=r.value;let h;for(;(h=u[d])&&!h.components;)d++;return d}),l=Pe(()=>r.value.matched[o.value]);En(Ur,Pe(()=>o.value+1)),En(Hf,l),En(xs,r);const c=xi();return An(()=>[c.value,l.value,e.name],([d,u,h],[g,m,S])=>{u&&(u.instances[h]=d,m&&m!==u&&d&&d===g&&(u.leaveGuards.size||(u.leaveGuards=m.leaveGuards),u.updateGuards.size||(u.updateGuards=m.updateGuards))),d&&u&&(!m||!Bt(u,m)||!g)&&(u.enterCallbacks[h]||[]).forEach(x=>x(d))},{flush:"post"}),()=>{const d=r.value,u=e.name,h=l.value,g=h&&h.components[u];if(!g)return zr(n.default,{Component:g,route:d});const m=h.props[u],S=m?m===!0?d.params:typeof m=="function"?m(d):m:null,M=lo(g,k({},S,t,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(h.instances[u]=null)},ref:c}));return zr(n.default,{Component:M,route:d})||M}}});function zr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const uu=fu;function au(e){const t=Zf(e.routes,e),n=e.parseQuery||Vf,s=e.stringifyQuery||Br,r=e.history,i=$t(),o=$t(),l=$t(),c=nl(ot);let d=ot;Tt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=ss.bind(null,v=>""+v),h=ss.bind(null,vf),g=ss.bind(null,an);function m(v,T){let C,D;return yo(v)?(C=t.getRecordMatcher(v),D=T):D=v,t.addRoute(D,C)}function S(v){const T=t.getRecordMatcher(v);T&&t.removeRoute(T)}function x(){return t.getRoutes().map(v=>v.record)}function M(v){return!!t.getRecordMatcher(v)}function I(v,T){if(T=k({},T||c.value),typeof v=="string"){const p=rs(n,v,T.path),_=t.resolve({path:p.path},T),b=r.createHref(p.fullPath);return k(p,_,{params:g(_.params),hash:an(p.hash),redirectedFrom:void 0,href:b})}let C;if(v.path!=null)C=k({},v,{path:rs(n,v.path,T.path).path});else{const p=k({},v.params);for(const _ in p)p[_]==null&&delete p[_];C=k({},v,{params:h(p)}),T.params=h(T.params)}const D=t.resolve(C,T),U=v.hash||"";D.params=u(g(D.params));const f=Af(s,k({},v,{hash:mf(U),path:D.path})),a=r.createHref(f);return k({fullPath:f,hash:U,query:s===Br?Ff(v.query):v.query||{}},D,{redirectedFrom:void 0,href:a})}function P(v){return typeof v=="string"?rs(n,v,c.value.path):k({},v)}function V(v,T){if(d!==v)return Ut(se.NAVIGATION_CANCELLED,{from:T,to:v})}function N(v){return J(v)}function K(v){return N(k(P(v),{replace:!0}))}function te(v,T){const C=v.matched[v.matched.length-1];if(C&&C.redirect){const{redirect:D}=C;let U=typeof D=="function"?D(v,T):D;return typeof U=="string"&&(U=U.includes("?")||U.includes("#")?U=P(U):{path:U},U.params={}),k({query:v.query,hash:v.hash,params:U.path!=null?{}:v.params},U)}}function J(v,T){const C=d=I(v),D=c.value,U=v.state,f=v.force,a=v.replace===!0,p=te(C,D);if(p)return J(k(P(p),{state:typeof p=="object"?k({},U,p.state):U,force:f,replace:a}),T||C);const _=C;_.redirectedFrom=T;let b;return!f&&xf(s,D,C)&&(b=Ut(se.NAVIGATION_DUPLICATED,{to:_,from:D}),Ve(D,D,!0,!1)),(b?Promise.resolve(b):ue(_,D)).catch(y=>$e(y)?$e(y,se.NAVIGATION_GUARD_REDIRECT)?y:it(y):W(y,_,D)).then(y=>{if(y){if($e(y,se.NAVIGATION_GUARD_REDIRECT))return J(k({replace:a},P(y.to),{state:typeof y.to=="object"?k({},U,y.to.state):U,force:f}),T||_)}else y=pt(_,D,!0,a,U);return Te(_,D,y),y})}function le(v,T){const C=V(v,T);return C?Promise.reject(C):Promise.resolve()}function ie(v){const T=wt.values().next().value;return T&&typeof T.runWithContext=="function"?T.runWithContext(v):v()}function ue(v,T){let C;const[D,U,f]=jf(v,T);C=os(D.reverse(),"beforeRouteLeave",v,T);for(const p of D)p.leaveGuards.forEach(_=>{C.push(at(_,v,T))});const a=le.bind(null,v,T);return C.push(a),we(C).then(()=>{C=[];for(const p of i.list())C.push(at(p,v,T));return C.push(a),we(C)}).then(()=>{C=os(U,"beforeRouteUpdate",v,T);for(const p of U)p.updateGuards.forEach(_=>{C.push(at(_,v,T))});return C.push(a),we(C)}).then(()=>{C=[];for(const p of f)if(p.beforeEnter)if(De(p.beforeEnter))for(const _ of p.beforeEnter)C.push(at(_,v,T));else C.push(at(p.beforeEnter,v,T));return C.push(a),we(C)}).then(()=>(v.matched.forEach(p=>p.enterCallbacks={}),C=os(f,"beforeRouteEnter",v,T,ie),C.push(a),we(C))).then(()=>{C=[];for(const p of o.list())C.push(at(p,v,T));return C.push(a),we(C)}).catch(p=>$e(p,se.NAVIGATION_CANCELLED)?p:Promise.reject(p))}function Te(v,T,C){l.list().forEach(D=>ie(()=>D(v,T,C)))}function pt(v,T,C,D,U){const f=V(v,T);if(f)return f;const a=T===ot,p=Tt?history.state:{};C&&(D||a?r.replace(v.fullPath,k({scroll:a&&p&&p.scroll},U)):r.push(v.fullPath,U)),c.value=v,Ve(v,T,C,a),it()}let Le;function Kt(){Le||(Le=r.listen((v,T,C)=>{if(!gt.listening)return;const D=I(v),U=te(D,gt.currentRoute.value);if(U){J(k(U,{replace:!0,force:!0}),D).catch(nn);return}d=D;const f=c.value;Tt&&If(jr(f.fullPath,C.delta),qn()),ue(D,f).catch(a=>$e(a,se.NAVIGATION_ABORTED|se.NAVIGATION_CANCELLED)?a:$e(a,se.NAVIGATION_GUARD_REDIRECT)?(J(k(P(a.to),{force:!0}),D).then(p=>{$e(p,se.NAVIGATION_ABORTED|se.NAVIGATION_DUPLICATED)&&!C.delta&&C.type===Es.pop&&r.go(-1,!1)}).catch(nn),Promise.reject()):(C.delta&&r.go(-C.delta,!1),W(a,D,f))).then(a=>{a=a||pt(D,f,!1),a&&(C.delta&&!$e(a,se.NAVIGATION_CANCELLED)?r.go(-C.delta,!1):C.type===Es.pop&&$e(a,se.NAVIGATION_ABORTED|se.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),Te(D,f,a)}).catch(nn)}))}let Rt=$t(),ce=$t(),Y;function W(v,T,C){it(v);const D=ce.list();return D.length?D.forEach(U=>U(v,T,C)):console.error(v),Promise.reject(v)}function ke(){return Y&&c.value!==ot?Promise.resolve():new Promise((v,T)=>{Rt.add([v,T])})}function it(v){return Y||(Y=!v,Kt(),Rt.list().forEach(([T,C])=>v?C(v):T()),Rt.reset()),v}function Ve(v,T,C,D){const{scrollBehavior:U}=e;if(!Tt||!U)return Promise.resolve();const f=!C&&Nf(jr(v.fullPath,0))||(D||!C)&&history.state&&history.state.scroll||null;return Hs().then(()=>U(v,T,f)).then(a=>a&&Pf(a)).catch(a=>W(a,v,T))}const ve=v=>r.go(v);let St;const wt=new Set,gt={currentRoute:c,listening:!0,addRoute:m,removeRoute:S,clearRoutes:t.clearRoutes,hasRoute:M,getRoutes:x,resolve:I,options:e,push:N,replace:K,go:ve,back:()=>ve(-1),forward:()=>ve(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:ce.add,isReady:ke,install(v){v.component("RouterLink",ou),v.component("RouterView",uu),v.config.globalProperties.$router=gt,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>Mt(c)}),Tt&&!St&&c.value===ot&&(St=!0,N(r.location).catch(D=>{}));const T={};for(const D in ot)Object.defineProperty(T,D,{get:()=>c.value[D],enumerable:!0});v.provide(qs,gt),v.provide(bo,Ei(T)),v.provide(xs,c);const C=v.unmount;wt.add(v),v.unmount=function(){wt.delete(v),wt.size<1&&(d=ot,Le&&Le(),Le=null,c.value=ot,St=!1,Y=!1),C()}}};function we(v){return v.reduce((T,C)=>T.then(()=>ie(C)),Promise.resolve())}return gt}const du=au({history:Kf(),routes:[{path:"/",name:"dashboard",component:()=>yt(()=>import("./Dashboard-D7yH75no.js"),__vite__mapDeps([0,1,2,3,4,5,6]))},{path:"/errors",name:"errors",component:()=>yt(()=>import("./ErrorLogs-DWDLe7x0.js"),__vite__mapDeps([7,1,2,8,9,3,4,10]))},{path:"/servers",name:"servers",component:()=>yt(()=>import("./ServerManage-cIpW_dU_.js"),__vite__mapDeps([11,1,2,8,9,3,4,12]))},{path:"/stats/monthly",name:"monthly-stats",component:()=>yt(()=>import("./MonthlyStats-BMU-a3Ge.js"),__vite__mapDeps([13,1,2,5,14]))},{path:"/stats/daily",name:"daily-stats",component:()=>yt(()=>import("./DailyStats-03BWk9_D.js"),__vite__mapDeps([15,1,2,5,16]))},{path:"/patterns",name:"patterns",component:()=>yt(()=>import("./PatternManage-CxrI6HBG.js"),__vite__mapDeps([17,1,2,8,9,3,4,18]))},{path:"/settings",name:"settings",component:()=>yt(()=>import("./Settings-Co7-fA4D.js"),__vite__mapDeps([19,1,2,9,3,20]))}]}),$s=kc(nf);$s.use(Qc());$s.use(du);$s.mount("#app");export{bc as A,Bi as B,An as C,q as D,Fs as E,Re as F,mu as G,pu as T,Yc as _,oc as a,Pt as b,Pe as c,_s as d,_u as e,ne as f,gu as g,In as h,lt as i,Os as j,Bn as k,hu as l,Eu as m,Ts as n,Al as o,Hs as p,vu as q,xi as r,yu as s,Lo as t,Mt as u,bu as v,Je as w,Vi as x,nl as y,lo as z}; diff --git a/build/resources/main/static/assets/index-ikHL8uxD.css b/build/resources/main/static/assets/index-ikHL8uxD.css deleted file mode 100644 index 549fc96..0000000 --- a/build/resources/main/static/assets/index-ikHL8uxD.css +++ /dev/null @@ -1 +0,0 @@ -.data-table-wrapper[data-v-db5e24a9]{overflow-x:auto}.data-table[data-v-db5e24a9]{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.data-table th[data-v-db5e24a9],.data-table td[data-v-db5e24a9]{padding:12px 16px;text-align:left;border-bottom:1px solid #eee}.data-table th[data-v-db5e24a9]{background:#f8f9fa;font-weight:600;color:#495057}.data-table tbody tr[data-v-db5e24a9]:hover{background:#f8f9fa}.data-table tbody tr:last-child td[data-v-db5e24a9]{border-bottom:none}.actions-col[data-v-db5e24a9]{width:120px;text-align:center}.loading-cell[data-v-db5e24a9],.empty-cell[data-v-db5e24a9]{text-align:center;color:#6c757d;padding:40px!important}.modal-overlay[data-v-90993dd3]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-90993dd3]{background:#fff;border-radius:8px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 4px 20px #00000026}.modal-header[data-v-90993dd3]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eee}.modal-header h3[data-v-90993dd3]{margin:0;font-size:1.1rem}.close-btn[data-v-90993dd3]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0;line-height:1}.close-btn[data-v-90993dd3]:hover{color:#333}.modal-body[data-v-90993dd3]{padding:20px;overflow-y:auto;flex:1}.modal-footer[data-v-90993dd3]{padding:16px 20px;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:8px}.form-group[data-v-45f49038]{margin-bottom:16px}label[data-v-45f49038]{display:block;margin-bottom:6px;font-weight:500;color:#333}.required[data-v-45f49038]{color:#e74c3c}.form-input[data-v-45f49038]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;transition:border-color .2s}.form-input[data-v-45f49038]:focus{outline:none;border-color:#3498db}.form-input[data-v-45f49038]:disabled{background:#f5f5f5;cursor:not-allowed}textarea.form-input[data-v-45f49038]{resize:vertical}select.form-input[data-v-45f49038]{cursor:pointer}.error-text[data-v-45f49038]{display:block;margin-top:4px;font-size:12px;color:#e74c3c}.hint-text[data-v-45f49038]{display:block;margin-top:4px;font-size:12px;color:#6c757d}.btn[data-v-c92354e1]{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.btn[data-v-c92354e1]:disabled{opacity:.6;cursor:not-allowed}.btn-sm[data-v-c92354e1]{padding:6px 12px;font-size:12px}.btn-lg[data-v-c92354e1]{padding:12px 24px;font-size:16px}.btn-primary[data-v-c92354e1]{background:#3498db;color:#fff}.btn-primary[data-v-c92354e1]:hover:not(:disabled){background:#2980b9}.btn-secondary[data-v-c92354e1]{background:#6c757d;color:#fff}.btn-secondary[data-v-c92354e1]:hover:not(:disabled){background:#5a6268}.btn-danger[data-v-c92354e1]{background:#e74c3c;color:#fff}.btn-danger[data-v-c92354e1]:hover:not(:disabled){background:#c0392b}.btn-success[data-v-c92354e1]{background:#27ae60;color:#fff}.btn-success[data-v-c92354e1]:hover:not(:disabled){background:#1e8449}.btn-warning[data-v-c92354e1]{background:#f39c12;color:#fff}.btn-warning[data-v-c92354e1]:hover:not(:disabled){background:#d68910}.spinner[data-v-c92354e1]{width:14px;height:14px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin-c92354e1 .8s linear infinite}@keyframes spin-c92354e1{to{transform:rotate(360deg)}}.badge[data-v-b7bd2350]{display:inline-block;padding:4px 8px;font-size:12px;font-weight:500;border-radius:4px}.badge-default[data-v-b7bd2350]{background:#e9ecef;color:#495057}.badge-critical[data-v-b7bd2350],.badge-error[data-v-b7bd2350]{background:#e74c3c;color:#fff}.badge-warn[data-v-b7bd2350]{background:#f39c12;color:#fff}.badge-success[data-v-b7bd2350]{background:#27ae60;color:#fff}.badge-info[data-v-b7bd2350]{background:#3498db;color:#fff}.card[data-v-2f260fa2]{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.card-header[data-v-2f260fa2]{padding:16px 20px;border-bottom:1px solid #eee}.card-header h3[data-v-2f260fa2]{margin:0;font-size:1.1rem;color:#333}.card-body[data-v-2f260fa2]{padding:20px}.card-footer[data-v-2f260fa2]{padding:16px 20px;border-top:1px solid #eee;background:#f8f9fa} diff --git a/build/resources/main/static/index.html b/build/resources/main/static/index.html deleted file mode 100644 index 70ddf37..0000000 --- a/build/resources/main/static/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - LogHunter - - - - - -
- - diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanController.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanController.class.uniqueId7 deleted file mode 100644 index 7afc099..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanController.class.uniqueId7 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$DailyStat.class.uniqueId10 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$DailyStat.class.uniqueId10 deleted file mode 100644 index 2dc0dd6..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$DailyStat.class.uniqueId10 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$FileErrorStats.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$FileErrorStats.class.uniqueId0 deleted file mode 100644 index 4920e7a..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$FileErrorStats.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$PatternErrorStats.class.uniqueId9 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$PatternErrorStats.class.uniqueId9 deleted file mode 100644 index c12f2f7..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$PatternErrorStats.class.uniqueId9 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ResetResult.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ResetResult.class.uniqueId11 deleted file mode 100644 index b9eea6d..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ResetResult.class.uniqueId11 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ScanProgress.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ScanProgress.class.uniqueId1 deleted file mode 100644 index 3f7a3b5..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ScanProgress.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ScanResult.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ScanResult.class.uniqueId3 deleted file mode 100644 index 6909022..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ScanResult.class.uniqueId3 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerDailyStats.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerDailyStats.class.uniqueId6 deleted file mode 100644 index e2ba987..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerDailyStats.class.uniqueId6 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerErrorStats.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerErrorStats.class.uniqueId4 deleted file mode 100644 index 1b6d2db..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerErrorStats.class.uniqueId4 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerTimeStats.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerTimeStats.class.uniqueId5 deleted file mode 100644 index 1203a7a..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$ServerTimeStats.class.uniqueId5 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$TimeStat.class.uniqueId8 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$TimeStat.class.uniqueId8 deleted file mode 100644 index 402139e..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService$TimeStat.class.uniqueId8 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/ScanService.class.uniqueId2 deleted file mode 100644 index 1010628..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ScanService.class.uniqueId2 and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin deleted file mode 100644 index d1ca677..0000000 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and /dev/null differ