gitextract_yy2emyho/ ├── .config/ │ └── dotnet-tools.json ├── .editorconfig ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── labeler.yml │ └── workflows/ │ ├── ci.yml │ ├── crowdin.yml │ ├── dotnet-format.yml │ ├── labeler.yml │ └── release.yml ├── .gitignore ├── .globalconfig ├── CONTRIBUTING.md ├── CodeAnalysis/ │ ├── BannedSymbols.txt │ └── osu.ruleset ├── Directory.Build.props ├── LICENSE ├── README.md ├── appveyor.yml ├── cake.config ├── osu.Game.Rulesets.Karaoke/ │ ├── Beatmaps/ │ │ ├── ElementId.cs │ │ ├── Formats/ │ │ │ ├── KaraokeJsonBeatmapDecoder.cs │ │ │ ├── KaraokeJsonBeatmapEncoder.cs │ │ │ ├── KaraokeLegacyBeatmapDecoder.cs │ │ │ └── KaraokeLegacyBeatmapEncoder.cs │ │ ├── IHasPrimaryKey.cs │ │ ├── IKaraokeBeatmapResourcesProvider.cs │ │ ├── KaraokeBeatmap.cs │ │ ├── KaraokeBeatmapConverter.cs │ │ ├── KaraokeBeatmapExtension.cs │ │ ├── KaraokeBeatmapProcessor.cs │ │ ├── KaraokeBeatmapResourcesProvider.cs │ │ ├── Metadatas/ │ │ │ ├── NoteInfo.cs │ │ │ ├── Page.cs │ │ │ ├── PageInfo.cs │ │ │ ├── Singer.cs │ │ │ ├── SingerInfo.cs │ │ │ ├── SingerState.cs │ │ │ └── Types/ │ │ │ └── ISinger.cs │ │ └── Utils/ │ │ └── SingerUtils.cs │ ├── Bindables/ │ │ ├── BindableCultureInfo.cs │ │ └── BindableFontUsage.cs │ ├── Configuration/ │ │ ├── KaraokeRulesetConfigManager.cs │ │ ├── KaraokeRulesetEditCheckerConfigManager.cs │ │ ├── KaraokeRulesetEditConfigManager.cs │ │ ├── KaraokeRulesetEditGeneratorConfigManager.cs │ │ ├── KaraokeRulesetLyricEditorConfigManager.cs │ │ └── KaraokeSessionStatics.cs │ ├── Difficulty/ │ │ ├── KaraokeDifficultyAttributes.cs │ │ ├── KaraokeDifficultyCalculator.cs │ │ ├── KaraokePerformanceAttributes.cs │ │ ├── KaraokePerformanceCalculator.cs │ │ ├── Preprocessing/ │ │ │ └── KaraokeDifficultyHitObject.cs │ │ └── Skills/ │ │ └── Strain.cs │ ├── Edit/ │ │ ├── Blueprints/ │ │ │ ├── KaraokeSelectionBlueprint.cs │ │ │ ├── Lyrics/ │ │ │ │ └── LyricSelectionBlueprint.cs │ │ │ └── Notes/ │ │ │ ├── Components/ │ │ │ │ └── EditBodyPiece.cs │ │ │ └── NoteSelectionBlueprint.cs │ │ ├── ChangeHandlers/ │ │ │ ├── BeatmapListPropertyChangeHandler.cs │ │ │ ├── BeatmapPropertyChangeHandler.cs │ │ │ ├── Beatmaps/ │ │ │ │ ├── BeatmapPagesChangeHandler.cs │ │ │ │ ├── BeatmapSingersChangeHandler.cs │ │ │ │ ├── BeatmapTranslationsChangeHandler.cs │ │ │ │ ├── IBeatmapPagesChangeHandler.cs │ │ │ │ ├── IBeatmapSingersChangeHandler.cs │ │ │ │ └── IBeatmapTranslationsChangeHandler.cs │ │ │ ├── ChangeForbiddenException.cs │ │ │ ├── HitObjectChangeHandler.cs │ │ │ ├── HitObjectPropertyChangeHandler.cs │ │ │ ├── HitObjectsChangeHandler.cs │ │ │ ├── IAutoGenerateChangeHandler.cs │ │ │ ├── IHitObjectPropertyChangeHandler.cs │ │ │ ├── IImportBeatmapChangeHandler.cs │ │ │ ├── ILockChangeHandler.cs │ │ │ ├── ImportBeatmapChangeHandler.cs │ │ │ ├── LockChangeHandler.cs │ │ │ ├── Lyrics/ │ │ │ │ ├── ILyricLanguageChangeHandler.cs │ │ │ │ ├── ILyricListPropertyChangeHandler.cs │ │ │ │ ├── ILyricPropertyAutoGenerateChangeHandler.cs │ │ │ │ ├── ILyricPropertyChangeHandler.cs │ │ │ │ ├── ILyricReferenceChangeHandler.cs │ │ │ │ ├── ILyricRubyTagsChangeHandler.cs │ │ │ │ ├── ILyricSingerChangeHandler.cs │ │ │ │ ├── ILyricTextChangeHandler.cs │ │ │ │ ├── ILyricTimeTagsChangeHandler.cs │ │ │ │ ├── ILyricTranslationChangeHandler.cs │ │ │ │ ├── ILyricsChangeHandler.cs │ │ │ │ ├── LyricLanguageChangeHandler.cs │ │ │ │ ├── LyricPropertyAutoGenerateChangeHandler.cs │ │ │ │ ├── LyricPropertyChangeHandler.cs │ │ │ │ ├── LyricReferenceChangeHandler.cs │ │ │ │ ├── LyricRubyTagsChangeHandler.cs │ │ │ │ ├── LyricSingerChangeHandler.cs │ │ │ │ ├── LyricTextChangeHandler.cs │ │ │ │ ├── LyricTimeTagsChangeHandler.cs │ │ │ │ ├── LyricTranslationChangeHandler.cs │ │ │ │ └── LyricsChangeHandler.cs │ │ │ ├── Notes/ │ │ │ │ ├── INotePropertyChangeHandler.cs │ │ │ │ ├── INotesChangeHandler.cs │ │ │ │ ├── NotePropertyChangeHandler.cs │ │ │ │ └── NotesChangeHandler.cs │ │ │ └── Stages/ │ │ │ ├── ClassicStageChangeHandler.cs │ │ │ ├── IClassicStageChangeHandler.cs │ │ │ ├── IStageElementCategoryChangeHandler.cs │ │ │ ├── IStagesChangeHandler.cs │ │ │ ├── StageElementCategoryChangeHandler.cs │ │ │ ├── StagePropertyChangeHandler.cs │ │ │ └── StagesChangeHandler.cs │ │ ├── Checks/ │ │ │ ├── CheckBeatmapAvailableTranslations.cs │ │ │ ├── CheckBeatmapNoteInfo.cs │ │ │ ├── CheckBeatmapPageInfo.cs │ │ │ ├── CheckBeatmapProperty.cs │ │ │ ├── CheckClassicStageInfo.cs │ │ │ ├── CheckHitObjectProperty.cs │ │ │ ├── CheckHitObjectReferenceProperty.cs │ │ │ ├── CheckLyricLanguage.cs │ │ │ ├── CheckLyricReferenceLyric.cs │ │ │ ├── CheckLyricRubyTag.cs │ │ │ ├── CheckLyricSinger.cs │ │ │ ├── CheckLyricText.cs │ │ │ ├── CheckLyricTimeTag.cs │ │ │ ├── CheckLyricTranslations.cs │ │ │ ├── CheckNoteReferenceLyric.cs │ │ │ ├── CheckNoteText.cs │ │ │ ├── CheckNoteTime.cs │ │ │ ├── CheckStageInfo.cs │ │ │ └── Issues/ │ │ │ ├── BeatmapClassicLyricTimingPointIssue.cs │ │ │ ├── BeatmapPageIssue.cs │ │ │ ├── LyricIssue.cs │ │ │ ├── LyricRubyTagIssue.cs │ │ │ ├── LyricTimeTagIssue.cs │ │ │ └── NoteIssue.cs │ │ ├── Components/ │ │ │ ├── ContextMenu/ │ │ │ │ ├── LyricLockContextMenu.cs │ │ │ │ └── SingerContextMenu.cs │ │ │ ├── Cursor/ │ │ │ │ └── TimeTagTooltip.cs │ │ │ ├── Menus/ │ │ │ │ ├── KaraokeEditorMenu.cs │ │ │ │ └── KaraokeSkinEditorMenu.cs │ │ │ └── Sprites/ │ │ │ ├── DrawableTextIndex.cs │ │ │ └── DrawableTimeTag.cs │ │ ├── Debugging/ │ │ │ └── DebugBeatmapManager.cs │ │ ├── DrawableKaraokeEditorRuleset.cs │ │ ├── EditorNotePlayfield.cs │ │ ├── Export/ │ │ │ └── ExportLyricManager.cs │ │ ├── Generator/ │ │ │ ├── Beatmaps/ │ │ │ │ ├── BeatmapPropertyDetector.cs │ │ │ │ ├── BeatmapPropertyGenerator.cs │ │ │ │ └── Pages/ │ │ │ │ ├── PageGenerator.cs │ │ │ │ └── PageGeneratorConfig.cs │ │ │ ├── ConfigCategoryAttribute.cs │ │ │ ├── ConfigSourceAttribute.cs │ │ │ ├── DetectorNotSupportedException.cs │ │ │ ├── GeneratorConfig.cs │ │ │ ├── GeneratorConfigExtension.cs │ │ │ ├── GeneratorNotSupportedException.cs │ │ │ ├── GeneratorSelector.cs │ │ │ ├── Lyrics/ │ │ │ │ ├── Language/ │ │ │ │ │ ├── LanguageDetector.cs │ │ │ │ │ └── LanguageDetectorConfig.cs │ │ │ │ ├── LyricGeneratorSelector.cs │ │ │ │ ├── LyricPropertyDetector.cs │ │ │ │ ├── LyricPropertyGenerator.cs │ │ │ │ ├── Notes/ │ │ │ │ │ ├── NoteGenerator.cs │ │ │ │ │ └── NoteGeneratorConfig.cs │ │ │ │ ├── ReferenceLyric/ │ │ │ │ │ ├── ReferenceLyricDetector.cs │ │ │ │ │ └── ReferenceLyricDetectorConfig.cs │ │ │ │ ├── Romanisation/ │ │ │ │ │ ├── Ja/ │ │ │ │ │ │ ├── JaRomanisationGenerator.cs │ │ │ │ │ │ └── JaRomanisationGeneratorConfig.cs │ │ │ │ │ ├── RomanisationGenerateResult.cs │ │ │ │ │ ├── RomanisationGenerator.cs │ │ │ │ │ ├── RomanisationGeneratorConfig.cs │ │ │ │ │ └── RomanisationGeneratorSelector.cs │ │ │ │ ├── RubyTags/ │ │ │ │ │ ├── Ja/ │ │ │ │ │ │ ├── JaRubyTagGenerator.cs │ │ │ │ │ │ └── JaRubyTagGeneratorConfig.cs │ │ │ │ │ ├── RubyTagGenerator.cs │ │ │ │ │ ├── RubyTagGeneratorConfig.cs │ │ │ │ │ └── RubyTagGeneratorSelector.cs │ │ │ │ └── TimeTags/ │ │ │ │ ├── Ja/ │ │ │ │ │ ├── JaTimeTagGenerator.cs │ │ │ │ │ └── JaTimeTagGeneratorConfig.cs │ │ │ │ ├── TimeTagGenerator.cs │ │ │ │ ├── TimeTagGeneratorConfig.cs │ │ │ │ ├── TimeTagGeneratorSelector.cs │ │ │ │ └── Zh/ │ │ │ │ ├── ZhTimeTagGenerator.cs │ │ │ │ └── ZhTimeTagGeneratorConfig.cs │ │ │ ├── PropertyDetector.cs │ │ │ ├── PropertyGenerator.cs │ │ │ └── Stages/ │ │ │ ├── Classic/ │ │ │ │ ├── ClassicLyricLayoutCategoryGenerator.cs │ │ │ │ ├── ClassicLyricLayoutCategoryGeneratorConfig.cs │ │ │ │ ├── ClassicLyricTimingInfoGenerator.cs │ │ │ │ ├── ClassicLyricTimingInfoGeneratorConfig.cs │ │ │ │ ├── ClassicStageInfoGenerator.cs │ │ │ │ └── ClassicStageInfoGeneratorConfig.cs │ │ │ ├── Preview/ │ │ │ │ ├── PreviewStageInfoGenerator.cs │ │ │ │ └── PreviewStageInfoGeneratorConfig.cs │ │ │ ├── StageInfoGenerator.cs │ │ │ ├── StageInfoGeneratorConfig.cs │ │ │ ├── StageInfoGeneratorSelector.cs │ │ │ └── StageInfoPropertyGenerator.cs │ │ ├── KaraokeBeatmapVerifier.cs │ │ ├── KaraokeBlueprintContainer.cs │ │ ├── KaraokeEditorPlayfield.cs │ │ ├── KaraokeHitObjectComposer.cs │ │ ├── KaraokeSelectionHandler.cs │ │ ├── Setup/ │ │ │ ├── Components/ │ │ │ │ ├── FormLanguageList.cs │ │ │ │ └── FormSingerList.cs │ │ │ ├── KaraokeNoteSection.cs │ │ │ ├── KaraokeSingerSection.cs │ │ │ └── KaraokeTranslationSection.cs │ │ └── Utils/ │ │ ├── EditorBeatmapUtils.cs │ │ ├── HitObjectWritableUtils.cs │ │ ├── LockStateUtils.cs │ │ ├── ValueChangedEventUtils.cs │ │ └── ZoomableScrollContainerUtils.cs │ ├── Extensions/ │ │ ├── EnumerableExtensions.cs │ │ ├── OsuGameExtensions.cs │ │ ├── RegexExtensions.cs │ │ ├── ScrollContainerExtensions.cs │ │ ├── TrickyCompositeDrawableExtension.cs │ │ └── TypeExtensions.cs │ ├── Flags/ │ │ └── FlagState.cs │ ├── Graphics/ │ │ ├── Containers/ │ │ │ ├── OrderRearrangeableListContainer.cs │ │ │ └── RearrangeableTextFlowListContainer.cs │ │ ├── Cursor/ │ │ │ ├── BackgroundToolTip.cs │ │ │ ├── LyricToolTip.cs │ │ │ └── SingerToolTip.cs │ │ ├── Drawables/ │ │ │ ├── DrawableCircleSingerAvatar.cs │ │ │ ├── DrawableSingerAvatar.cs │ │ │ └── SingerDisplay.cs │ │ ├── KaraokeIcon.cs │ │ ├── Shapes/ │ │ │ ├── CornerBackground.cs │ │ │ └── RightTriangle.cs │ │ ├── Sprites/ │ │ │ ├── DisplayLyricProcessor.cs │ │ │ ├── DrawableKaraokeSpriteText.cs │ │ │ ├── DrawableLyricSpriteText.cs │ │ │ ├── LyricDisplayProperty.cs │ │ │ ├── LyricDisplayType.cs │ │ │ ├── LyricStyle.cs │ │ │ └── Processor/ │ │ │ ├── BaseDisplayProcessor.cs │ │ │ ├── LyricFirstDisplayProcessor.cs │ │ │ └── RomanisedSyllableFirstDisplayProcessor.cs │ │ ├── UserInterface/ │ │ │ ├── BindableBoolMenuItem.cs │ │ │ └── BindableEnumMenuItem.cs │ │ └── UserInterfaceV2/ │ │ ├── FontSelector.cs │ │ ├── LabelledColourSelector.cs │ │ ├── LabelledHueSelector.cs │ │ ├── LabelledImageSelector.cs │ │ ├── LabelledRealTimeSliderBar.cs │ │ ├── LanguageSelector.cs │ │ └── LanguageSelectorPopover.cs │ ├── IO/ │ │ ├── Archives/ │ │ │ └── CachedFontArchiveReader.cs │ │ ├── Serialization/ │ │ │ ├── Converters/ │ │ │ │ ├── ColourConverter.cs │ │ │ │ ├── CultureInfoConverter.cs │ │ │ │ ├── DictionaryConverter.cs │ │ │ │ ├── ElementIdConverter.cs │ │ │ │ ├── FontUsageConverter.cs │ │ │ │ ├── GenericTypeConverter.cs │ │ │ │ ├── KaraokeSkinElementConverter.cs │ │ │ │ ├── LyricConverter.cs │ │ │ │ ├── ReferenceLyricPropertyConfigConverter.cs │ │ │ │ ├── RubyTagConverter.cs │ │ │ │ ├── RubyTagsConverter.cs │ │ │ │ ├── ShaderConverter.cs │ │ │ │ ├── SortableJsonConverter.cs │ │ │ │ ├── StageInfoConverter.cs │ │ │ │ ├── TimeTagConverter.cs │ │ │ │ ├── TimeTagsConverter.cs │ │ │ │ ├── ToneConverter.cs │ │ │ │ └── TranslationConverter.cs │ │ │ ├── KaraokeJsonSerializableExtensions.cs │ │ │ ├── SkinJsonSerializableExtensions.cs │ │ │ └── WritablePropertiesOnlyResolver.cs │ │ └── Stores/ │ │ ├── FntGlyphStore.cs │ │ ├── KaraokeLocalFontStore.cs │ │ └── TtfGlyphStore.cs │ ├── Integration/ │ │ └── Formats/ │ │ ├── IDecoder.cs │ │ ├── IEncoder.cs │ │ ├── KarDecoder.cs │ │ ├── KarEncoder.cs │ │ ├── LrcDecoder.cs │ │ ├── LrcEncoder.cs │ │ ├── LrcParserUtils.cs │ │ ├── LyricTextDecoder.cs │ │ └── LyricTextEncoder.cs │ ├── Judgements/ │ │ ├── KaraokeJudgement.cs │ │ ├── KaraokeJudgementResult.cs │ │ ├── KaraokeLyricJudgement.cs │ │ └── KaraokeNoteJudgement.cs │ ├── KaraokeControlInputManager.cs │ ├── KaraokeEditInputManager.cs │ ├── KaraokeInputManager.cs │ ├── KaraokeRuleset.cs │ ├── KaraokeSkinComponentLookup.cs │ ├── KaraokeSkinComponents.cs │ ├── Localisation/ │ │ ├── ChangelogStrings.cs │ │ ├── CommonStrings.cs │ │ └── KaraokeSettingsSubsectionStrings.cs │ ├── Mods/ │ │ ├── IApplicableToMicrophone.cs │ │ ├── IApplicableToSettingHUDOverlay.cs │ │ ├── IApplicableToStage.cs │ │ ├── IApplicableToStageElement.cs │ │ ├── IApplicableToStageHitObjectCommand.cs │ │ ├── IApplicableToStageInfo.cs │ │ ├── IApplicableToStagePlayfieldCommand.cs │ │ ├── KaraokeModAutoplay.cs │ │ ├── KaraokeModAutoplayBySinger.cs │ │ ├── KaraokeModClassicStage.cs │ │ ├── KaraokeModDisableNote.cs │ │ ├── KaraokeModFlashlight.cs │ │ ├── KaraokeModHiddenNote.cs │ │ ├── KaraokeModLyricConfiguration.cs │ │ ├── KaraokeModNoFail.cs │ │ ├── KaraokeModPerfect.cs │ │ ├── KaraokeModPractice.cs │ │ ├── KaraokeModPreviewStage.cs │ │ ├── KaraokeModSnow.cs │ │ ├── KaraokeModSuddenDeath.cs │ │ ├── KaraokeModTranslation.cs │ │ ├── KaraokeModWindowsUpdate.cs │ │ ├── LanguageSettingsControl.cs │ │ └── ModStage.cs │ ├── Objects/ │ │ ├── BarLine.cs │ │ ├── Drawables/ │ │ │ ├── DrawableBarLine.cs │ │ │ ├── DrawableKaraokeHitObject.cs │ │ │ ├── DrawableKaraokeScrollingHitObject.cs │ │ │ ├── DrawableLyric.cs │ │ │ └── DrawableNote.cs │ │ ├── KaraokeHitObject.cs │ │ ├── LegacyProperties.cs │ │ ├── Lyric.cs │ │ ├── Lyric_Binding.cs │ │ ├── Lyric_Working.cs │ │ ├── Note.cs │ │ ├── Note_Binding.cs │ │ ├── Note_Working.cs │ │ ├── Properties/ │ │ │ ├── IReferenceLyricPropertyConfig.cs │ │ │ ├── ReferenceLyricConfig.cs │ │ │ └── SyncLyricConfig.cs │ │ ├── RubyTag.cs │ │ ├── TimeTag.cs │ │ ├── Title.cs │ │ ├── TitlePart.cs │ │ ├── Tone.cs │ │ ├── Types/ │ │ │ ├── IHasLock.cs │ │ │ ├── IHasOrder.cs │ │ │ ├── IHasPage.cs │ │ │ ├── IHasSingers.cs │ │ │ ├── IHasText.cs │ │ │ └── IHasWorkingProperty.cs │ │ ├── Utils/ │ │ │ ├── LyricUtils.cs │ │ │ ├── LyricsUtils.cs │ │ │ ├── NoteUtils.cs │ │ │ ├── NotesUtils.cs │ │ │ ├── OrderUtils.cs │ │ │ ├── RubyTagUtils.cs │ │ │ ├── RubyTagsUtils.cs │ │ │ ├── TimeTagUtils.cs │ │ │ └── TimeTagsUtils.cs │ │ └── Workings/ │ │ ├── HitObjectWorkingPropertyValidator.cs │ │ ├── InvalidWorkingPropertyAssignException.cs │ │ ├── LyricWorkingProperty.cs │ │ ├── LyricWorkingPropertyValidator.cs │ │ ├── NoteWorkingProperty.cs │ │ └── NoteWorkingPropertyValidator.cs │ ├── Online/ │ │ └── API/ │ │ └── Requests/ │ │ ├── ChangelogRequestUtils.cs │ │ ├── GetChangelogBuildRequest.cs │ │ ├── GetChangelogRequest.cs │ │ ├── GithubAPIRequest.cs │ │ └── Responses/ │ │ ├── APIChangelogBuild.cs │ │ └── APIChangelogIndex.cs │ ├── Overlays/ │ │ ├── Changelog/ │ │ │ ├── ChangeLogMarkdownContainer.cs │ │ │ ├── ChangelogBadgeInfo.cs │ │ │ ├── ChangelogBuild.cs │ │ │ ├── ChangelogContent.cs │ │ │ ├── ChangelogHeader.cs │ │ │ ├── ChangelogListing.cs │ │ │ ├── ChangelogPullRequestInfo.cs │ │ │ ├── ChangelogSingleBuild.cs │ │ │ └── Sidebar/ │ │ │ ├── ChangelogSection.cs │ │ │ ├── ChangelogSidebar.cs │ │ │ └── YearsPanel.cs │ │ ├── Dialog/ │ │ │ └── OkPopupDialog.cs │ │ └── KaraokeChangelogOverlay.cs │ ├── Replays/ │ │ ├── KaraokeAutoGenerator.cs │ │ ├── KaraokeAutoGeneratorBySinger.cs │ │ ├── KaraokeFramedReplayInputHandler.cs │ │ └── KaraokeReplayFrame.cs │ ├── Resources/ │ │ └── Skin/ │ │ └── Default/ │ │ ├── default.json │ │ ├── lyric-font-infos.json │ │ └── note-styles.json │ ├── Scoring/ │ │ ├── KaraokeHitWindows.cs │ │ ├── KaraokeLyricHitWindows.cs │ │ ├── KaraokeNoteHitWindows.cs │ │ └── KaraokeScoreProcessor.cs │ ├── Screens/ │ │ ├── Edit/ │ │ │ ├── AutoGenerateSection.cs │ │ │ ├── AutoGenerateSubsection.cs │ │ │ ├── Beatmaps/ │ │ │ │ ├── BeatmapEditorRoundedScreen.cs │ │ │ │ ├── BeatmapEditorScreen.cs │ │ │ │ ├── Components/ │ │ │ │ │ ├── Menus/ │ │ │ │ │ │ ├── AutoFocusToEditLyricMenu.cs │ │ │ │ │ │ ├── GeneratorConfigMenu.cs │ │ │ │ │ │ ├── ImportLyricMenu.cs │ │ │ │ │ │ ├── LockStateMenu.cs │ │ │ │ │ │ ├── LyricEditorModeMenu.cs │ │ │ │ │ │ ├── LyricEditorPreferLayoutMenu.cs │ │ │ │ │ │ └── LyricEditorTextSizeMenu.cs │ │ │ │ │ └── UserInterfaceV2/ │ │ │ │ │ └── LyricSelector.cs │ │ │ │ ├── ILyricsProvider.cs │ │ │ │ ├── KaraokeBeatmapEditor.cs │ │ │ │ ├── KaraokeBeatmapEditorScreenMode.cs │ │ │ │ ├── Lyrics/ │ │ │ │ │ ├── BindableBlueprintContainer.cs │ │ │ │ │ ├── CaretPosition/ │ │ │ │ │ │ ├── Algorithms/ │ │ │ │ │ │ │ ├── CaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── CharGapCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── CharIndexCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── ClickingCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── CreateRemoveTimeTagCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── CreateRubyTagCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── CuttingCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── ICaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── IIndexCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── IndexCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── NavigateCaretPositionAlgorithm.cs │ │ │ │ │ │ │ ├── RecordingTimeTagCaretMoveMode.cs │ │ │ │ │ │ │ ├── RecordingTimeTagCaretPositionAlgorithm.cs │ │ │ │ │ │ │ └── TypingCaretPositionAlgorithm.cs │ │ │ │ │ │ ├── ClickingCaretPosition.cs │ │ │ │ │ │ ├── CreateRemoveTimeTagCaretPosition.cs │ │ │ │ │ │ ├── CreateRubyTagCaretPosition.cs │ │ │ │ │ │ ├── CuttingCaretPosition.cs │ │ │ │ │ │ ├── ICaretPosition.cs │ │ │ │ │ │ ├── ICharGapCaretPosition.cs │ │ │ │ │ │ ├── ICharIndexCaretPosition.cs │ │ │ │ │ │ ├── IIndexCaretPosition.cs │ │ │ │ │ │ ├── NavigateCaretPosition.cs │ │ │ │ │ │ ├── RecordingTimeTagCaretPosition.cs │ │ │ │ │ │ └── TypingCaretPosition.cs │ │ │ │ │ ├── ClipboardToast.cs │ │ │ │ │ ├── Content/ │ │ │ │ │ │ ├── ApplySelectingArea.cs │ │ │ │ │ │ ├── CircleCheckbox.cs │ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ │ ├── Badges/ │ │ │ │ │ │ │ │ ├── Badge.cs │ │ │ │ │ │ │ │ ├── LanguageBadge.cs │ │ │ │ │ │ │ │ ├── ReferenceLyricBadge.cs │ │ │ │ │ │ │ │ ├── SingerBadge.cs │ │ │ │ │ │ │ │ └── TimeTagBadge.cs │ │ │ │ │ │ │ ├── FixedInfo/ │ │ │ │ │ │ │ │ ├── InvalidInfo.cs │ │ │ │ │ │ │ │ ├── LockInfo.cs │ │ │ │ │ │ │ │ └── OrderInfo.cs │ │ │ │ │ │ │ └── Lyrics/ │ │ │ │ │ │ │ ├── BlueprintLayer.cs │ │ │ │ │ │ │ ├── Blueprints/ │ │ │ │ │ │ │ │ ├── LyricPropertyBlueprintContainer.cs │ │ │ │ │ │ │ │ ├── RubyBlueprintContainer.cs │ │ │ │ │ │ │ │ ├── RubyTagSelectionBlueprint.cs │ │ │ │ │ │ │ │ ├── TimeTagBlueprintContainer.cs │ │ │ │ │ │ │ │ └── TimeTagSelectionBlueprint.cs │ │ │ │ │ │ │ ├── CaretLayer.cs │ │ │ │ │ │ │ ├── Carets/ │ │ │ │ │ │ │ │ ├── DrawableCaret.cs │ │ │ │ │ │ │ │ ├── DrawableCaretState.cs │ │ │ │ │ │ │ │ ├── DrawableCreateRemoveTimeTagCaret.cs │ │ │ │ │ │ │ │ ├── DrawableCreateRubyTagCaret.cs │ │ │ │ │ │ │ │ ├── DrawableCuttingCaret.cs │ │ │ │ │ │ │ │ ├── DrawableRangeCaret.cs │ │ │ │ │ │ │ │ ├── DrawableRecordingTimeTagCaret.cs │ │ │ │ │ │ │ │ ├── DrawableTypingCaret.cs │ │ │ │ │ │ │ │ └── ICanAcceptRangeIndex.cs │ │ │ │ │ │ │ ├── EditLyricLayer.cs │ │ │ │ │ │ │ ├── GridLayer.cs │ │ │ │ │ │ │ ├── IInteractableLyricState.cs │ │ │ │ │ │ │ ├── IPreviewLyricPositionProvider.cs │ │ │ │ │ │ │ ├── InteractLyricLayer.cs │ │ │ │ │ │ │ ├── InteractableLyric.cs │ │ │ │ │ │ │ ├── Layer.cs │ │ │ │ │ │ │ ├── LayerLoader.cs │ │ │ │ │ │ │ ├── LyricLayer.cs │ │ │ │ │ │ │ ├── PreviewKaraokeSpriteText.cs │ │ │ │ │ │ │ ├── TimeTagLayer.cs │ │ │ │ │ │ │ └── UIEventLayer.cs │ │ │ │ │ │ ├── Compose/ │ │ │ │ │ │ │ ├── BottomEditor/ │ │ │ │ │ │ │ │ ├── AdjustTimeTagBottomEditor.cs │ │ │ │ │ │ │ │ ├── AdjustTimeTags/ │ │ │ │ │ │ │ │ │ ├── AdjustTimeTagBlueprintContainer.cs │ │ │ │ │ │ │ │ │ ├── AdjustTimeTagScrollContainer.cs │ │ │ │ │ │ │ │ │ ├── AdjustTimeTagSelectionBlueprint.cs │ │ │ │ │ │ │ │ │ ├── CurrentTimeMarker.cs │ │ │ │ │ │ │ │ │ └── TimeTagOrderedSelectionContainer.cs │ │ │ │ │ │ │ │ ├── BaseBottomEditor.cs │ │ │ │ │ │ │ │ ├── NoteBottomEditor.cs │ │ │ │ │ │ │ │ ├── Notes/ │ │ │ │ │ │ │ │ │ ├── NoteEditPopover.cs │ │ │ │ │ │ │ │ │ ├── NoteEditor.cs │ │ │ │ │ │ │ │ │ ├── NoteEditorBlueprintContainer.cs │ │ │ │ │ │ │ │ │ └── NoteEditorSelectionBlueprint.cs │ │ │ │ │ │ │ │ ├── RecordingTimeTagBottomEditor.cs │ │ │ │ │ │ │ │ ├── RecordingTimeTags/ │ │ │ │ │ │ │ │ │ ├── CentreMarker.cs │ │ │ │ │ │ │ │ │ ├── RecordingTimeTagPart.cs │ │ │ │ │ │ │ │ │ ├── RecordingTimeTagScrollContainer.cs │ │ │ │ │ │ │ │ │ └── TimeTagsVisualisation.cs │ │ │ │ │ │ │ │ └── TimeTagScrollContainer.cs │ │ │ │ │ │ │ ├── ComposeContent.cs │ │ │ │ │ │ │ ├── CreateNewLyricDetailRow.cs │ │ │ │ │ │ │ ├── DetailLyricList.cs │ │ │ │ │ │ │ ├── DetailRow.cs │ │ │ │ │ │ │ ├── EditLyricDetailRow.cs │ │ │ │ │ │ │ ├── LyricComposer.cs │ │ │ │ │ │ │ ├── LyricEditor.cs │ │ │ │ │ │ │ ├── Panel.cs │ │ │ │ │ │ │ ├── PanelDirection.cs │ │ │ │ │ │ │ ├── Panels/ │ │ │ │ │ │ │ │ ├── InvalidPanel.cs │ │ │ │ │ │ │ │ ├── IssueSection.cs │ │ │ │ │ │ │ │ ├── PanelSection.cs │ │ │ │ │ │ │ │ └── PropertyPanel.cs │ │ │ │ │ │ │ ├── SpecialActionToolbar.cs │ │ │ │ │ │ │ └── Toolbar/ │ │ │ │ │ │ │ ├── Carets/ │ │ │ │ │ │ │ │ ├── MoveToCaretPositionButton.cs │ │ │ │ │ │ │ │ ├── MoveToFirstIndexButton.cs │ │ │ │ │ │ │ │ ├── MoveToLastIndexButton.cs │ │ │ │ │ │ │ │ ├── MoveToNextIndexButton.cs │ │ │ │ │ │ │ │ ├── MoveToNextLyricButton.cs │ │ │ │ │ │ │ │ ├── MoveToPreviousIndexButton.cs │ │ │ │ │ │ │ │ └── MoveToPreviousLyricButton.cs │ │ │ │ │ │ │ ├── Panels/ │ │ │ │ │ │ │ │ ├── ToggleInvalidInfoPanelButton.cs │ │ │ │ │ │ │ │ └── TogglePropertyPanelButton.cs │ │ │ │ │ │ │ ├── Playback/ │ │ │ │ │ │ │ │ └── PlaybackSwitchButton.cs │ │ │ │ │ │ │ ├── Separator.cs │ │ │ │ │ │ │ ├── ToolbarButton.cs │ │ │ │ │ │ │ ├── ToolbarEditActionButton.cs │ │ │ │ │ │ │ ├── ToolbarToggleButton.cs │ │ │ │ │ │ │ └── View/ │ │ │ │ │ │ │ └── AdjustFontSizeButton.cs │ │ │ │ │ │ ├── ContentWrapper.cs │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── CreateNewLyricPreviewRow.cs │ │ │ │ │ │ │ ├── EditLyricPreviewRow.cs │ │ │ │ │ │ │ ├── InfoControl.cs │ │ │ │ │ │ │ ├── ListContent.cs │ │ │ │ │ │ │ ├── PreviewLyricList.cs │ │ │ │ │ │ │ └── PreviewRow.cs │ │ │ │ │ │ ├── LyricList.cs │ │ │ │ │ │ ├── MainContent.cs │ │ │ │ │ │ └── Row.cs │ │ │ │ │ ├── DeleteLyricDialog.cs │ │ │ │ │ ├── IIssueNavigator.cs │ │ │ │ │ ├── ILyricEditorClipboard.cs │ │ │ │ │ ├── ILyricEditorState.cs │ │ │ │ │ ├── ILyricEditorVerifier.cs │ │ │ │ │ ├── IssueNavigator.cs │ │ │ │ │ ├── LyricEditor.cs │ │ │ │ │ ├── LyricEditorClipboard.cs │ │ │ │ │ ├── LyricEditorColourProvider.cs │ │ │ │ │ ├── LyricEditorIssueTable.cs │ │ │ │ │ ├── LyricEditorLayout.cs │ │ │ │ │ ├── LyricEditorMode.cs │ │ │ │ │ ├── LyricEditorScreen.cs │ │ │ │ │ ├── LyricEditorSkin.cs │ │ │ │ │ ├── LyricEditorVerifier.cs │ │ │ │ │ ├── OsuColourExtensions.cs │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ │ ├── BlockSectionWrapper.cs │ │ │ │ │ │ │ └── Markdown/ │ │ │ │ │ │ │ ├── LyricEditorDescriptionTextFlowContainer.cs │ │ │ │ │ │ │ ├── SwitchModeDescriptionAction.cs │ │ │ │ │ │ │ └── SwitchMoteText.cs │ │ │ │ │ │ ├── LabelledObjectFieldSwitchButton.cs │ │ │ │ │ │ ├── LabelledObjectFieldTextBox.cs │ │ │ │ │ │ ├── Language/ │ │ │ │ │ │ │ ├── AssignLanguageSubsection.cs │ │ │ │ │ │ │ ├── LanguageAutoGenerateSubsection.cs │ │ │ │ │ │ │ ├── LanguageEditModeSpecialAction.cs │ │ │ │ │ │ │ ├── LanguageIssueSection.cs │ │ │ │ │ │ │ ├── LanguageSettingsHeader.cs │ │ │ │ │ │ │ └── LanguageSwitchSpecialActionSection.cs │ │ │ │ │ │ ├── LanguageSettings.cs │ │ │ │ │ │ ├── LyricEditorAutoGenerateSubsection.cs │ │ │ │ │ │ ├── LyricEditorIssueSection.cs │ │ │ │ │ │ ├── LyricEditorSettings.cs │ │ │ │ │ │ ├── LyricEditorSettingsHeader.cs │ │ │ │ │ │ ├── LyricPropertiesSection.cs │ │ │ │ │ │ ├── LyricPropertySection.cs │ │ │ │ │ │ ├── NoteSettings.cs │ │ │ │ │ │ ├── Notes/ │ │ │ │ │ │ │ ├── NoteAutoGenerateSubsection.cs │ │ │ │ │ │ │ ├── NoteClearSubsection.cs │ │ │ │ │ │ │ ├── NoteConfigSection.cs │ │ │ │ │ │ │ ├── NoteEditModeSpecialAction.cs │ │ │ │ │ │ │ ├── NoteEditPropertyMode.cs │ │ │ │ │ │ │ ├── NoteEditPropertyModeSection.cs │ │ │ │ │ │ │ ├── NoteEditPropertySection.cs │ │ │ │ │ │ │ ├── NoteIssueSection.cs │ │ │ │ │ │ │ ├── NoteSettingsHeader.cs │ │ │ │ │ │ │ └── NoteSwitchSpecialActionSection.cs │ │ │ │ │ │ ├── Reference/ │ │ │ │ │ │ │ ├── LabelledReferenceLyricSelector.cs │ │ │ │ │ │ │ ├── ReferenceLyricAutoGenerateSection.cs │ │ │ │ │ │ │ ├── ReferenceLyricConfigSection.cs │ │ │ │ │ │ │ ├── ReferenceLyricIssueSection.cs │ │ │ │ │ │ │ ├── ReferenceLyricSection.cs │ │ │ │ │ │ │ └── ReferenceLyricSettingsHeader.cs │ │ │ │ │ │ ├── ReferenceSettings.cs │ │ │ │ │ │ ├── Romanisation/ │ │ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ │ │ └── LabelledRomanisedTextBox.cs │ │ │ │ │ │ │ ├── RomanisationAutoGenerateSection.cs │ │ │ │ │ │ │ ├── RomanisationEditSection.cs │ │ │ │ │ │ │ ├── RomanisationIssueSection.cs │ │ │ │ │ │ │ └── RomanisationSettingsHeader.cs │ │ │ │ │ │ ├── RomanisationSettings.cs │ │ │ │ │ │ ├── Ruby/ │ │ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ │ │ └── LabelledRubyTagTextBox.cs │ │ │ │ │ │ │ ├── RubyTagAutoGenerateSection.cs │ │ │ │ │ │ │ ├── RubyTagConfigToolSection.cs │ │ │ │ │ │ │ ├── RubyTagEditModeSubsection.cs │ │ │ │ │ │ │ ├── RubyTagEditSection.cs │ │ │ │ │ │ │ ├── RubyTagIssueSection.cs │ │ │ │ │ │ │ └── RubyTagSettingsHeader.cs │ │ │ │ │ │ ├── RubyTagSettings.cs │ │ │ │ │ │ ├── SelectLyricButton.cs │ │ │ │ │ │ ├── SettingsDirection.cs │ │ │ │ │ │ ├── SingerSettings.cs │ │ │ │ │ │ ├── Singers/ │ │ │ │ │ │ │ └── SingerEditSection.cs │ │ │ │ │ │ ├── SpecialActionSection.cs │ │ │ │ │ │ ├── SwitchSubsection.cs │ │ │ │ │ │ ├── Text/ │ │ │ │ │ │ │ ├── TextDeleteSubsection.cs │ │ │ │ │ │ │ ├── TextEditModeSpecialAction.cs │ │ │ │ │ │ │ ├── TextIssueSection.cs │ │ │ │ │ │ │ ├── TextSettingsHeader.cs │ │ │ │ │ │ │ └── TextSwitchSpecialActionSection.cs │ │ │ │ │ │ ├── TextSettings.cs │ │ │ │ │ │ ├── TimeTagSettings.cs │ │ │ │ │ │ └── TimeTags/ │ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ │ └── LabelledOpacityAdjustment.cs │ │ │ │ │ │ ├── CreateTimeTagActionSection.cs │ │ │ │ │ │ ├── CreateTimeTagTypeSubsection.cs │ │ │ │ │ │ ├── RecordingTapControl.cs │ │ │ │ │ │ ├── TapButton.cs │ │ │ │ │ │ ├── TimeTagAdjustConfigSection.cs │ │ │ │ │ │ ├── TimeTagAutoGenerateSection.cs │ │ │ │ │ │ ├── TimeTagIssueSection.cs │ │ │ │ │ │ ├── TimeTagRecordingConfigSection.cs │ │ │ │ │ │ ├── TimeTagRecordingToolSection.cs │ │ │ │ │ │ └── TimeTagSettingsHeader.cs │ │ │ │ │ └── States/ │ │ │ │ │ ├── ILyricCaretState.cs │ │ │ │ │ ├── ILyricSelectionState.cs │ │ │ │ │ ├── LyricCaretState.cs │ │ │ │ │ ├── LyricEditorSelectingAction.cs │ │ │ │ │ ├── LyricSelectionState.cs │ │ │ │ │ ├── Modes/ │ │ │ │ │ │ ├── CreateTimeTagType.cs │ │ │ │ │ │ ├── EditLanguageModeState.cs │ │ │ │ │ │ ├── EditNoteModeState.cs │ │ │ │ │ │ ├── EditReferenceLyricModeState.cs │ │ │ │ │ │ ├── EditRomanisationModeState.cs │ │ │ │ │ │ ├── EditRubyModeState.cs │ │ │ │ │ │ ├── EditTextModeState.cs │ │ │ │ │ │ ├── EditTimeTagModeState.cs │ │ │ │ │ │ ├── IEditLanguageModeState.cs │ │ │ │ │ │ ├── IEditNoteModeState.cs │ │ │ │ │ │ ├── IEditReferenceLyricModeState.cs │ │ │ │ │ │ ├── IEditRomanisationModeState.cs │ │ │ │ │ │ ├── IEditRubyModeState.cs │ │ │ │ │ │ ├── IEditTextModeState.cs │ │ │ │ │ │ ├── IEditTimeTagModeState.cs │ │ │ │ │ │ ├── IHasBlueprintSelection.cs │ │ │ │ │ │ ├── IHasEditStep.cs │ │ │ │ │ │ ├── IHasSpecialAction.cs │ │ │ │ │ │ ├── LanguageEditStep.cs │ │ │ │ │ │ ├── ModeStateWithBlueprintContainer.cs │ │ │ │ │ │ ├── NoteEditStep.cs │ │ │ │ │ │ ├── ReferenceLyricEditStep.cs │ │ │ │ │ │ ├── RomanisationTagEditStep.cs │ │ │ │ │ │ ├── RubyTagEditMode.cs │ │ │ │ │ │ ├── RubyTagEditStep.cs │ │ │ │ │ │ ├── TextEditStep.cs │ │ │ │ │ │ └── TimeTagEditStep.cs │ │ │ │ │ ├── MovingCaretAction.cs │ │ │ │ │ └── RangeCaretPosition.cs │ │ │ │ ├── LyricsProvider.cs │ │ │ │ ├── Pages/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ └── Timeline/ │ │ │ │ │ │ ├── LyricBlueprintContainer.cs │ │ │ │ │ │ ├── PageBlueprintContainer.cs │ │ │ │ │ │ ├── PageSelectionBlueprint.cs │ │ │ │ │ │ ├── PagesTimeLine.cs │ │ │ │ │ │ └── PreviewLyricSelectionBlueprint.cs │ │ │ │ │ ├── IPageEditorVerifier.cs │ │ │ │ │ ├── IPageStateProvider.cs │ │ │ │ │ ├── PageEditor.cs │ │ │ │ │ ├── PageEditorEditMode.cs │ │ │ │ │ ├── PageEditorVerifier.cs │ │ │ │ │ ├── PageScreen.cs │ │ │ │ │ └── Settings/ │ │ │ │ │ ├── ConfirmReGeneratePageDialog.cs │ │ │ │ │ ├── PageAutoGenerateSection.cs │ │ │ │ │ ├── PageEditorIssueSection.cs │ │ │ │ │ ├── PageEditorSettingsHeader.cs │ │ │ │ │ ├── PageSettings.cs │ │ │ │ │ └── PagesSection.cs │ │ │ │ ├── Singers/ │ │ │ │ │ ├── DeleteSingerDialog.cs │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ ├── AvatarSection.cs │ │ │ │ │ │ ├── EditSingerSection.cs │ │ │ │ │ │ ├── MetadataSection.cs │ │ │ │ │ │ └── SingerEditPopover.cs │ │ │ │ │ ├── ISingerScreenScrollingInfoProvider.cs │ │ │ │ │ ├── Rows/ │ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ │ ├── SingerAvatar.cs │ │ │ │ │ │ │ └── Timeline/ │ │ │ │ │ │ │ ├── LyricTimelineSelectionBlueprint.cs │ │ │ │ │ │ │ ├── SingerLyricEditorBlueprintContainer.cs │ │ │ │ │ │ │ └── SingerLyricTimeline.cs │ │ │ │ │ │ ├── CreateNewLyricPlacementRow.cs │ │ │ │ │ │ ├── DefaultLyricPlacementRow.cs │ │ │ │ │ │ ├── LyricPlacementRow.cs │ │ │ │ │ │ └── SingerLyricPlacementRow.cs │ │ │ │ │ ├── SingerEditSection.cs │ │ │ │ │ ├── SingerRearrangeableList.cs │ │ │ │ │ ├── SingerRearrangeableListItem.cs │ │ │ │ │ └── SingerScreen.cs │ │ │ │ └── Translations/ │ │ │ │ ├── Components/ │ │ │ │ │ ├── CreateNewTranslationButton.cs │ │ │ │ │ ├── LanguageDropdown.cs │ │ │ │ │ ├── LyricTranslationTextBox.cs │ │ │ │ │ ├── PreviewLyricSpriteText.cs │ │ │ │ │ └── RemoveTranslationButton.cs │ │ │ │ ├── DeleteLanguagePopupDialog.cs │ │ │ │ ├── ITranslationInfoProvider.cs │ │ │ │ ├── TranslationEditSection.cs │ │ │ │ └── TranslationScreen.cs │ │ │ ├── BottomBar.cs │ │ │ ├── Components/ │ │ │ │ ├── Containers/ │ │ │ │ │ └── BindableScrollContainer.cs │ │ │ │ ├── Issues/ │ │ │ │ │ ├── IssueIcon.cs │ │ │ │ │ └── IssuesToolTip.cs │ │ │ │ ├── Markdown/ │ │ │ │ │ ├── DescriptionFormat.cs │ │ │ │ │ ├── DescriptionTextFlowContainer.cs │ │ │ │ │ ├── IDescriptionAction.cs │ │ │ │ │ ├── InputKeyDescriptionAction.cs │ │ │ │ │ └── InputKeyText.cs │ │ │ │ ├── Menus/ │ │ │ │ │ └── GenericScreenSelectionTabControl.cs │ │ │ │ ├── Timeline/ │ │ │ │ │ ├── EditableLyricTimelineSelectionBlueprint.cs │ │ │ │ │ ├── EditableTimeline.cs │ │ │ │ │ ├── EditableTimelineBlueprintContainer.cs │ │ │ │ │ └── EditableTimelineSelectionBlueprint.cs │ │ │ │ └── UserInterface/ │ │ │ │ ├── DeleteIconButton.cs │ │ │ │ └── LanguagesSelector.cs │ │ │ ├── EditorSection.cs │ │ │ ├── EditorSectionButton.cs │ │ │ ├── EditorSettings.cs │ │ │ ├── EditorSettingsHeader.cs │ │ │ ├── EditorTable.cs │ │ │ ├── EditorVerifier.cs │ │ │ ├── GeneratorConfigPopover.cs │ │ │ ├── GenericEditor.cs │ │ │ ├── GenericEditorScreen.cs │ │ │ ├── IEditorVerifier.cs │ │ │ ├── ISectionItemsEditorProvider.cs │ │ │ ├── Import/ │ │ │ │ └── Lyrics/ │ │ │ │ ├── AssignLanguage/ │ │ │ │ │ ├── AssignLanguageNavigation.cs │ │ │ │ │ ├── AssignLanguageStepScreen.cs │ │ │ │ │ └── UseLanguageDetectorPopupDialog.cs │ │ │ │ ├── DragFile/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ └── DrawableDragFile.cs │ │ │ │ │ ├── DragFileStepScreen.cs │ │ │ │ │ └── ImportLyricDialog.cs │ │ │ │ ├── EditLyric/ │ │ │ │ │ ├── EditLyricNavigation.cs │ │ │ │ │ └── EditLyricStepScreen.cs │ │ │ │ ├── GenerateRuby/ │ │ │ │ │ ├── GenerateRubyNavigation.cs │ │ │ │ │ ├── GenerateRubyStepScreen.cs │ │ │ │ │ └── UseAutoGenerateRubyPopupDialog.cs │ │ │ │ ├── GenerateTimeTag/ │ │ │ │ │ ├── AlreadyContainTimeTagPopupDialog.cs │ │ │ │ │ ├── GenerateTimeTagNavigation.cs │ │ │ │ │ ├── GenerateTimeTagStepScreen.cs │ │ │ │ │ ├── UseAutoGenerateRomanisationPopupDialog.cs │ │ │ │ │ └── UseAutoGenerateTimeTagPopupDialog.cs │ │ │ │ ├── IHasTopNavigation.cs │ │ │ │ ├── IImportStateResolver.cs │ │ │ │ ├── ILyricImporterStepScreen.cs │ │ │ │ ├── ImportLyricHeader.cs │ │ │ │ ├── ImportLyricManager.cs │ │ │ │ ├── ImportLyricOverlay.cs │ │ │ │ ├── LyricImporter.cs │ │ │ │ ├── LyricImporterStep.cs │ │ │ │ ├── LyricImporterStepScreen.cs │ │ │ │ ├── LyricImporterStepScreenWithLyricEditor.cs │ │ │ │ ├── LyricImporterSubScreenStack.cs │ │ │ │ ├── NotImportStepScreenException.cs │ │ │ │ ├── RollBackPopupDialog.cs │ │ │ │ ├── RollBackResetPopupDialog.cs │ │ │ │ ├── Success/ │ │ │ │ │ └── SuccessStepScreen.cs │ │ │ │ └── TopNavigation.cs │ │ │ ├── IssueSection.cs │ │ │ ├── IssueTable.cs │ │ │ ├── SectionItemsEditor.cs │ │ │ ├── SectionTimingInfoItemsEditor.cs │ │ │ ├── Stages/ │ │ │ │ └── Classic/ │ │ │ │ ├── ClassicStageEditor.cs │ │ │ │ ├── ClassicStageEditorScreenMode.cs │ │ │ │ ├── ClassicStageScreen.cs │ │ │ │ ├── Config/ │ │ │ │ │ └── ConfigScreen.cs │ │ │ │ └── Stage/ │ │ │ │ ├── IStageEditorStateProvider.cs │ │ │ │ ├── IStageEditorVerifier.cs │ │ │ │ ├── Settings/ │ │ │ │ │ ├── StageEditorIssueSection.cs │ │ │ │ │ ├── StageEditorSettingsHeader.cs │ │ │ │ │ ├── StageSettings.cs │ │ │ │ │ └── TimingPointsSection.cs │ │ │ │ ├── StageCategoryScreenStack.cs │ │ │ │ ├── StageEditor.cs │ │ │ │ ├── StageEditorEditCategory.cs │ │ │ │ ├── StageEditorEditMode.cs │ │ │ │ ├── StageEditorVerifier.cs │ │ │ │ └── StageScreen.cs │ │ │ ├── WorkspaceScreen.cs │ │ │ └── WorkspaceScreenStack.cs │ │ ├── Section.cs │ │ ├── Settings/ │ │ │ ├── Header.cs │ │ │ ├── KaraokeSettings.cs │ │ │ ├── KaraokeSettingsColourProvider.cs │ │ │ ├── KaraokeSettingsPanel.cs │ │ │ ├── KaraokeSettingsSection.cs │ │ │ ├── KaraokeSettingsSubsection.cs │ │ │ ├── KaraokeVersionManager.cs │ │ │ ├── Previews/ │ │ │ │ ├── DefaultPreview.cs │ │ │ │ ├── Gameplay/ │ │ │ │ │ ├── LyricPreview.cs │ │ │ │ │ ├── NotePlayfieldPreview.cs │ │ │ │ │ └── ShowCursorPreview.cs │ │ │ │ ├── Graphics/ │ │ │ │ │ └── ManageFontPreview.cs │ │ │ │ ├── Input/ │ │ │ │ │ ├── MicrophoneDevicePreview.cs │ │ │ │ │ └── MicrophoneSoundVisualizer.cs │ │ │ │ ├── SettingsSubsectionPreview.cs │ │ │ │ └── UnderConstructionPreview.cs │ │ │ ├── Sections/ │ │ │ │ ├── ConfigSection.cs │ │ │ │ ├── Gameplay/ │ │ │ │ │ ├── GeneralSettings.cs │ │ │ │ │ ├── NoteSettings.cs │ │ │ │ │ └── ScoringSettings.cs │ │ │ │ ├── Graphics/ │ │ │ │ │ ├── LyricFontSettings.cs │ │ │ │ │ ├── ManageFontSettings.cs │ │ │ │ │ ├── NoteFontSettings.cs │ │ │ │ │ └── TransparentSettings.cs │ │ │ │ ├── Input/ │ │ │ │ │ └── MicrophoneSettings.cs │ │ │ │ ├── ScoringSection.cs │ │ │ │ └── StyleSection.cs │ │ │ ├── SettingsFont.cs │ │ │ └── SettingsMicrophoneDeviceDropdown.cs │ │ └── Skin/ │ │ ├── Config/ │ │ │ ├── ConfigScreen.cs │ │ │ ├── IntervalSection.cs │ │ │ ├── LyricConfigSection.cs │ │ │ ├── LyricFontInfoManager.cs │ │ │ ├── PositionSection.cs │ │ │ └── RubyAndRomanisationSection.cs │ │ ├── KaraokeSkinEditor.cs │ │ ├── KaraokeSkinEditorScreen.cs │ │ ├── KaraokeSkinEditorScreenMode.cs │ │ └── Style/ │ │ ├── LyricColorSection.cs │ │ ├── LyricFontSection.cs │ │ ├── LyricShadowSection.cs │ │ ├── LyricStylePreview.cs │ │ ├── NoteColorSection.cs │ │ ├── NoteFontSection.cs │ │ ├── NoteStylePreview.cs │ │ ├── StyleScreen.cs │ │ └── StyleSection.cs │ ├── Skinning/ │ │ ├── Argon/ │ │ │ └── KaraokeArgonSkinTransformer.cs │ │ ├── Default/ │ │ │ ├── DefaultBodyPiece.cs │ │ │ └── KaraokeDefaultSkinTransformer.cs │ │ ├── Elements/ │ │ │ ├── ElementType.cs │ │ │ ├── IKaraokeSkinElement.cs │ │ │ ├── InvalidDrawableTypeException.cs │ │ │ ├── LayoutGroup.cs │ │ │ ├── LyricFontInfo.cs │ │ │ └── NoteStyle.cs │ │ ├── Fonts/ │ │ │ ├── BitmapFontCompressor.cs │ │ │ ├── BitmapFontImageGenerator.cs │ │ │ ├── FontInfo.cs │ │ │ └── FontManager.cs │ │ ├── InternalSkinStorageResourceProvider.cs │ │ ├── KaraokeBeatmapSkin.cs │ │ ├── KaraokeIndexLookup.cs │ │ ├── KaraokeSkin.cs │ │ ├── KaraokeSkinConfigurationLookup.cs │ │ ├── KaraokeSkinLookup.cs │ │ ├── Legacy/ │ │ │ ├── KaraokeClassicSkinTransformer.cs │ │ │ ├── KaraokeLegacySkinTransformer.cs │ │ │ ├── LegacyColumnBackground.cs │ │ │ ├── LegacyHitExplosion.cs │ │ │ ├── LegacyJudgementLine.cs │ │ │ ├── LegacyKaraokeColumnElement.cs │ │ │ ├── LegacyKaraokeElement.cs │ │ │ ├── LegacyNotePiece.cs │ │ │ └── LegacyStageBackground.cs │ │ ├── Tools/ │ │ │ └── SkinConverterTool.cs │ │ └── Triangles/ │ │ └── KaraokeTrianglesSkinTransformer.cs │ ├── Stages/ │ │ ├── Commands/ │ │ │ ├── IStageCommand.cs │ │ │ ├── Lyrics/ │ │ │ │ └── LyricStyleCommand.cs │ │ │ ├── StageAlphaCommand.cs │ │ │ ├── StageAnchorCommand.cs │ │ │ ├── StageCommand.cs │ │ │ ├── StageHeightCommand.cs │ │ │ ├── StageOriginCommand.cs │ │ │ ├── StagePaddingCommand.cs │ │ │ ├── StageScaleCommand.cs │ │ │ ├── StageWidthCommand.cs │ │ │ ├── StageXCommand.cs │ │ │ └── StageYCommand.cs │ │ ├── Drawables/ │ │ │ ├── DrawableStage.cs │ │ │ ├── DrawableStageBeatmapCoverInfo.cs │ │ │ ├── IStageElementRunner.cs │ │ │ ├── IStageHitObjectRunner.cs │ │ │ ├── IStagePlayfieldRunner.cs │ │ │ ├── StageElementRunner.cs │ │ │ ├── StageHitObjectRunner.cs │ │ │ ├── StagePlayfieldRunner.cs │ │ │ └── StageRunner.cs │ │ ├── HitObjectCommandProvider.cs │ │ ├── IHitObjectCommandProvider.cs │ │ ├── IPlayfieldCommandProvider.cs │ │ ├── IStageElement.cs │ │ ├── IStageElementProvider.cs │ │ ├── IStageElementWithDuration.cs │ │ ├── Infos/ │ │ │ ├── Classic/ │ │ │ │ ├── ClassicLyricCommandProvider.cs │ │ │ │ ├── ClassicLyricLayout.cs │ │ │ │ ├── ClassicLyricLayoutAlignment.cs │ │ │ │ ├── ClassicLyricLayoutCategory.cs │ │ │ │ ├── ClassicLyricTimingInfo.cs │ │ │ │ ├── ClassicLyricTimingPoint.cs │ │ │ │ ├── ClassicPlayfieldCommandProvider.cs │ │ │ │ ├── ClassicStageDefinition.cs │ │ │ │ ├── ClassicStageInfo.cs │ │ │ │ ├── ClassicStyle.cs │ │ │ │ └── ClassicStyleCategory.cs │ │ │ ├── Preview/ │ │ │ │ ├── PreviewElementProvider.cs │ │ │ │ ├── PreviewLyricCommandProvider.cs │ │ │ │ ├── PreviewLyricLayout.cs │ │ │ │ ├── PreviewLyricLayoutCategory.cs │ │ │ │ ├── PreviewPlayfieldCommandProvider.cs │ │ │ │ ├── PreviewStageDefinition.cs │ │ │ │ ├── PreviewStageInfo.cs │ │ │ │ ├── PreviewStageTimingCalculator.cs │ │ │ │ ├── PreviewStyle.cs │ │ │ │ └── PreviewStyleCategory.cs │ │ │ ├── StageDefinition.cs │ │ │ ├── StageElement.cs │ │ │ ├── StageElementCategory.cs │ │ │ ├── StageInfo.cs │ │ │ └── Types/ │ │ │ └── IHasCalculatedProperty.cs │ │ ├── PlayfieldCommandProvider.cs │ │ ├── StageBeatmapCoverInfo.cs │ │ ├── StageElementProvider.cs │ │ └── StageSprite.cs │ ├── Statistics/ │ │ ├── BeatmapMetadataGraph.cs │ │ ├── NotScorableGraph.cs │ │ └── ScoringResultGraph.cs │ ├── Timing/ │ │ └── StopClock.cs │ ├── UI/ │ │ ├── Components/ │ │ │ ├── CenterLine.cs │ │ │ ├── DefaultColumnBackground.cs │ │ │ ├── DefaultJudgementLine.cs │ │ │ ├── RealTimeScoringVisualization.cs │ │ │ ├── ReplayScoringVisualization.cs │ │ │ ├── ScoringMarker.cs │ │ │ ├── ScoringStatus.cs │ │ │ └── VoiceVisualization.cs │ │ ├── DefaultHitExplosion.cs │ │ ├── DrawableKaraokeRuleset.cs │ │ ├── DrawableNoteJudgement.cs │ │ ├── HUD/ │ │ │ ├── BindableNumberExtension.cs │ │ │ ├── GeneralSettingOverlay.cs │ │ │ ├── ISettingHUDOverlay.cs │ │ │ ├── PracticeOverlay.cs │ │ │ ├── SettingButton.cs │ │ │ ├── SettingButtonsDisplay.cs │ │ │ ├── SettingOverlay.cs │ │ │ └── SettingOverlayContainer.cs │ │ ├── KaraokePlayfield.cs │ │ ├── KaraokePlayfieldAdjustmentContainer.cs │ │ ├── KaraokeReplayRecorder.cs │ │ ├── KaraokeScrollingDirection.cs │ │ ├── KaraokeSettingsSubsection.cs │ │ ├── LyricPlayfield.cs │ │ ├── NotePlayfield.cs │ │ ├── PlayerSettings/ │ │ │ ├── ClickablePlayerSliderBar.cs │ │ │ ├── ILyricNavigator.cs │ │ │ ├── LyricsPreview.cs │ │ │ ├── PitchSettings.cs │ │ │ ├── PlaybackSettings.cs │ │ │ ├── PlayerDropdown.cs │ │ │ └── PracticeSettings.cs │ │ ├── Position/ │ │ │ ├── INotePositionInfo.cs │ │ │ ├── NotePositionCalculator.cs │ │ │ └── NotePositionInfo.cs │ │ └── Scrolling/ │ │ └── ScrollingNotePlayfield.cs │ ├── Utils/ │ │ ├── ActivatorUtils.cs │ │ ├── AssemblyUtils.cs │ │ ├── BindablesUtils.cs │ │ ├── CharUtils.cs │ │ ├── ComparableUtils.cs │ │ ├── CultureInfoUtils.cs │ │ ├── EnumUtils.cs │ │ ├── FontUsageUtils.cs │ │ ├── FontUtils.cs │ │ ├── JpStringUtils.cs │ │ ├── RectangleFUtils.cs │ │ ├── StackTraceUtils.cs │ │ ├── TextIndexUtils.cs │ │ ├── TypeUtils.cs │ │ └── VersionUtils.cs │ └── osu.Game.Rulesets.Karaoke.csproj ├── osu.Game.Rulesets.Karaoke.Architectures/ │ ├── BaseTest.cs │ ├── Edit/ │ │ └── Checks/ │ │ ├── TestCheck.cs │ │ └── TestCheckTest.cs │ ├── Extensions.cs │ ├── MethodUtils.cs │ ├── Project.cs │ ├── TestClass.cs │ ├── TestTestClass.cs │ └── osu.Game.Rulesets.Karaoke.Architectures.csproj ├── osu.Game.Rulesets.Karaoke.Tests/ │ ├── .vscode/ │ │ ├── launch.json │ │ └── tasks.json │ ├── Asserts/ │ │ ├── ObjectAssert.cs │ │ ├── RubyTagAssert.cs │ │ └── TimeTagAssert.cs │ ├── Beatmaps/ │ │ ├── ElementIdTest.cs │ │ ├── Formats/ │ │ │ ├── KaraokeLegacyBeatmapDecoderTest.cs │ │ │ └── KaraokeLegacyBeatmapEncoderTest.cs │ │ ├── KaraokeBeatmapConversionTest.cs │ │ ├── Metadatas/ │ │ │ ├── PageInfoTest.cs │ │ │ └── SingerInfoTest.cs │ │ ├── TestKaraokeBeatmap.cs │ │ └── Utils/ │ │ └── SingerUtilsTest.cs │ ├── Bindables/ │ │ ├── BindableCultureInfoTest.cs │ │ └── BindableFontUsageTest.cs │ ├── Difficulty/ │ │ ├── DifficultyCalculatorTest.cs │ │ └── KaraokeDifficultyCalculatorTest.cs │ ├── Editor/ │ │ ├── ChangeHandlers/ │ │ │ ├── BaseChangeHandlerTest.cs │ │ │ ├── BaseHitObjectChangeHandlerTest.cs │ │ │ ├── BaseHitObjectPropertyChangeHandlerTest.cs │ │ │ ├── Beatmaps/ │ │ │ │ ├── BeatmapPagesChangeHandlerTest.cs │ │ │ │ ├── BeatmapSingersChangeHandlerTest.cs │ │ │ │ └── BeatmapTranslationsChangeHandlerTest.cs │ │ │ ├── ImportBeatmapChangeHandlerTest.cs │ │ │ ├── LockChangeHandlerTest.cs │ │ │ ├── Lyrics/ │ │ │ │ ├── LyricLanguageChangeHandlerTest.cs │ │ │ │ ├── LyricPropertyAutoGenerateChangeHandlerTest.cs │ │ │ │ ├── LyricPropertyChangeHandlerTest.cs │ │ │ │ ├── LyricReferenceChangeHandlerTest.cs │ │ │ │ ├── LyricRubyTagsChangeHandlerTest.cs │ │ │ │ ├── LyricSingerChangeHandlerTest.cs │ │ │ │ ├── LyricTextChangeHandlerTest.cs │ │ │ │ ├── LyricTimeTagsChangeHandlerTest.cs │ │ │ │ ├── LyricTranslationChangeHandlerTest.cs │ │ │ │ └── LyricsChangeHandlerTest.cs │ │ │ ├── Notes/ │ │ │ │ ├── NotePropertyChangeHandlerTest.cs │ │ │ │ └── NotesChangeHandlerTest.cs │ │ │ └── Stages/ │ │ │ ├── BaseStageInfoChangeHandlerTest.cs │ │ │ ├── ClassicStageChangeHandlerTest.cs │ │ │ ├── StageElementCategoryChangeHandlerTest.cs │ │ │ └── StagesChangeHandlerTest.cs │ │ ├── Checks/ │ │ │ ├── BaseCheckTest.cs │ │ │ ├── BeatmapPropertyCheckTest.cs │ │ │ ├── CheckBeatmapAvailableTranslationsTest.cs │ │ │ ├── CheckBeatmapNoteInfoTest.cs │ │ │ ├── CheckBeatmapPageInfoTest.cs │ │ │ ├── CheckClassicStageInfoTest.cs │ │ │ ├── CheckLyricLanguageTest.cs │ │ │ ├── CheckLyricReferenceLyricTest.cs │ │ │ ├── CheckLyricRubyTagTest.cs │ │ │ ├── CheckLyricSingerTest.cs │ │ │ ├── CheckLyricTextTest.cs │ │ │ ├── CheckLyricTimeTagTest.cs │ │ │ ├── CheckLyricTranslationsTest.cs │ │ │ ├── CheckNoteReferenceLyricTest.cs │ │ │ ├── CheckNoteTextTest.cs │ │ │ ├── CheckNoteTimeTest.cs │ │ │ ├── CheckStageInfoTest.cs │ │ │ └── HitObjectCheckTest.cs │ │ ├── Generator/ │ │ │ ├── BaseGeneratorSelectorTest.cs │ │ │ ├── BasePropertyDetectorTest.cs │ │ │ ├── BasePropertyGeneratorTest.cs │ │ │ ├── Beatmaps/ │ │ │ │ ├── BaseBeatmapDetectorTest.cs │ │ │ │ ├── BaseBeatmapGeneratorTest.cs │ │ │ │ └── Pages/ │ │ │ │ └── PageGeneratorTest.cs │ │ │ ├── GeneratorConfigExtensionTest.cs │ │ │ ├── GeneratorConfigHelper.cs │ │ │ ├── Lyrics/ │ │ │ │ ├── BaseLyricDetectorTest.cs │ │ │ │ ├── BaseLyricGeneratorSelectorTest.cs │ │ │ │ ├── BaseLyricGeneratorTest.cs │ │ │ │ ├── Language/ │ │ │ │ │ └── LanguageDetectorTest.cs │ │ │ │ ├── Notes/ │ │ │ │ │ └── NoteGeneratorTest.cs │ │ │ │ ├── ReferenceLyric/ │ │ │ │ │ └── ReferenceLyricDetectorTest.cs │ │ │ │ ├── Romanisation/ │ │ │ │ │ ├── BaseRomanisationGeneratorTest.cs │ │ │ │ │ ├── Ja/ │ │ │ │ │ │ └── JaRomanisationGeneratorTest.cs │ │ │ │ │ ├── RomanisationGenerateResultHelper.cs │ │ │ │ │ └── RomanisationGeneratorSelectorTest.cs │ │ │ │ ├── RubyTags/ │ │ │ │ │ ├── BaseRubyTagGeneratorTest.cs │ │ │ │ │ ├── Ja/ │ │ │ │ │ │ └── JaRubyTagGeneratorTest.cs │ │ │ │ │ └── RubyTagGeneratorSelectorTest.cs │ │ │ │ └── TimeTags/ │ │ │ │ ├── BaseTimeTagGeneratorTest.cs │ │ │ │ ├── Ja/ │ │ │ │ │ └── JaTimeTagGeneratorTest.cs │ │ │ │ ├── TimeTagGeneratorSelectorTest.cs │ │ │ │ └── Zh/ │ │ │ │ └── ZhTimeTagGeneratorTest.cs │ │ │ └── Stages/ │ │ │ ├── BaseStageElementCategoryGeneratorTest.cs │ │ │ ├── BaseStageInfoGeneratorTest.cs │ │ │ ├── BaseStageInfoPropertyGeneratorTest.cs │ │ │ ├── Classic/ │ │ │ │ ├── ClassicLyricLayoutCategoryGeneratorTest.cs │ │ │ │ ├── ClassicLyricTimingInfoGeneratorTest.cs │ │ │ │ └── ClassicStageInfoGeneratorTest.cs │ │ │ ├── Preview/ │ │ │ │ └── PreviewStageInfoGeneratorTest.cs │ │ │ └── StageInfoGeneratorSelectorTest.cs │ │ ├── TestSceneEditor.cs │ │ ├── TestSceneSetupScreen.cs │ │ ├── TestSceneTimeTagTooltip.cs │ │ └── Utils/ │ │ ├── HitObjectWritableUtilsTest.cs │ │ ├── LockStateUtilsTest.cs │ │ └── ValueChangedEventUtilsTest.cs │ ├── Extensions/ │ │ ├── EnumerableExtensionsTest.cs │ │ ├── PlayerTestSceneExtensions.cs │ │ └── PrimaryKeyObjectExtension.cs │ ├── Flags/ │ │ └── FlagStateTest.cs │ ├── Graphics/ │ │ ├── Sprites/ │ │ │ ├── DisplayLyricProcessorTest.cs │ │ │ └── Processor/ │ │ │ ├── DisplayProcessorTestScene.cs │ │ │ ├── TestSceneLyricFirstDisplayProcessor.cs │ │ │ └── TestSceneRomanisedSyllableFirstDisplayProcessor.cs │ │ ├── TestSceneFontSelector.cs │ │ ├── TestSceneLanguageSelector.cs │ │ ├── TestSceneLyricTooltip.cs │ │ ├── TestSceneRightTriangle.cs │ │ └── TestSceneSingerToolTip.cs │ ├── Helper/ │ │ ├── TestCaseCheckHelper.cs │ │ ├── TestCaseElementIdHelper.cs │ │ ├── TestCaseNoteHelper.cs │ │ ├── TestCaseTagHelper.cs │ │ └── TestCaseToneHelper.cs │ ├── IO/ │ │ ├── Serialization/ │ │ │ ├── Converters/ │ │ │ │ ├── BaseSingleConverterTest.cs │ │ │ │ ├── ColourConverterTest.cs │ │ │ │ ├── CultureInfoConverterTest.cs │ │ │ │ ├── ElementIdConverterTest.cs │ │ │ │ ├── FontUsageConverterTest.cs │ │ │ │ ├── KaraokeSkinElementConverterTest.cs │ │ │ │ ├── LyricConverterTest.cs │ │ │ │ ├── ReferenceLyricPropertyConfigConverterTest.cs │ │ │ │ ├── RubyTagConverterTest.cs │ │ │ │ ├── RubyTagsConverterTest.cs │ │ │ │ ├── ShaderConverterTest.cs │ │ │ │ ├── StageInfoConverterTest.cs │ │ │ │ ├── TimeTagConverterTest.cs │ │ │ │ ├── TimeTagsConverterTest.cs │ │ │ │ ├── ToneConverterTest.cs │ │ │ │ └── TranslationConverterTest.cs │ │ │ ├── KaraokeJsonSerializableExtensionsTest.cs │ │ │ └── SkinJsonSerializableExtensionsTest.cs │ │ └── Stores/ │ │ ├── BaseGlyphStoreTest.cs │ │ └── TtfGlyphStoreTest.cs │ ├── Integration/ │ │ └── Formats/ │ │ ├── KarDecoderTest.cs │ │ ├── KarEncoderTest.cs │ │ ├── KarFileTest.cs │ │ ├── LrcDecoderTest.cs │ │ ├── LrcEncoderTest.cs │ │ ├── LrcParserUtilsTest.cs │ │ ├── LyricTextDecoderTest.cs │ │ └── LyricTextEncoderTest.cs │ ├── KaraokeTestBrowser.cs │ ├── Mods/ │ │ ├── KaraokeModStageTestScene.cs │ │ ├── KaraokeModTestScene.cs │ │ ├── ModsTest.cs │ │ ├── TestSceneKaraokeModAutoplay.cs │ │ ├── TestSceneKaraokeModAutoplayBySinger.cs │ │ ├── TestSceneKaraokeModClassicStage.cs │ │ ├── TestSceneKaraokeModDisableNote.cs │ │ ├── TestSceneKaraokeModFlashlight.cs │ │ ├── TestSceneKaraokeModFun.cs │ │ ├── TestSceneKaraokeModLyricConfiguration.cs │ │ ├── TestSceneKaraokeModPerfect.cs │ │ ├── TestSceneKaraokeModPractice.cs │ │ ├── TestSceneKaraokeModPreviewStage.cs │ │ ├── TestSceneKaraokeModSuddenDeath.cs │ │ └── TestSceneKaraokeModTranslation.cs │ ├── Objects/ │ │ ├── LyricTest.cs │ │ ├── NoteTest.cs │ │ ├── RubyTagTest.cs │ │ ├── TimeTagTest.cs │ │ ├── ToneCalculationTest.cs │ │ ├── Utils/ │ │ │ ├── LyricUtilsTest.cs │ │ │ ├── LyricsUtilsTest.cs │ │ │ ├── NoteUtilsTest.cs │ │ │ ├── NotesUtilsTest.cs │ │ │ ├── OrderUtilsTest.cs │ │ │ ├── RubyTagUtilsTest.cs │ │ │ ├── RubyTagsUtilsTest.cs │ │ │ ├── TimeTagUtilsTest.cs │ │ │ └── TimeTagsUtilsTest.cs │ │ └── Workings/ │ │ ├── HitObjectWorkingPropertyValidatorTest.cs │ │ ├── LyricWorkingPropertyValidatorTest.cs │ │ └── NoteWorkingPropertyValidatorTest.cs │ ├── Overlays/ │ │ ├── Changelog/ │ │ │ ├── ChangelogPullRequestInfoTest.cs │ │ │ ├── TestSceneKaraokeChangeLogMarkdownContainer.cs │ │ │ └── TestSceneKaraokeChangeLogOverlay.cs │ │ └── TestSceneOverlayColourProvider.cs │ ├── Ranking/ │ │ ├── TestKaraokeScoreInfo.cs │ │ ├── TestSceneBeatmapMetadataGraph.cs │ │ ├── TestSceneHitEventTimingDistributionGraph.cs │ │ ├── TestSceneNotScorableGraph.cs │ │ ├── TestSceneScoringResultGraph.cs │ │ └── TestSceneStatisticsPanel.cs │ ├── Replays/ │ │ ├── TestSceneAutoGeneration.cs │ │ └── TestSceneAutoGenerationBySinger.cs │ ├── Resources/ │ │ ├── TestResources.cs │ │ ├── Testing/ │ │ │ ├── Beatmaps/ │ │ │ │ ├── karaoke-file-samples-expected-conversion.json │ │ │ │ ├── karaoke-file-samples-without-note.osu │ │ │ │ ├── karaoke-file-samples.osu │ │ │ │ ├── karaoke-note-samples.osu │ │ │ │ └── karaoke-translation-samples.osu │ │ │ ├── Fonts/ │ │ │ │ └── Fnt/ │ │ │ │ └── OpenSans/ │ │ │ │ └── LICENSE.txt │ │ │ ├── Kar/ │ │ │ │ ├── default.kar │ │ │ │ └── light.kar │ │ │ └── Track/ │ │ │ └── demo.json │ │ └── special-skin/ │ │ ├── default.json │ │ ├── lyric-font-infos.json │ │ └── note-styles.json │ ├── Screens/ │ │ ├── Edit/ │ │ │ ├── Beatmap/ │ │ │ │ ├── BeatmapEditorScreenTestScene.cs │ │ │ │ ├── Components/ │ │ │ │ │ └── TestSceneLyricSelector.cs │ │ │ │ ├── Lyrics/ │ │ │ │ │ ├── CaretPosition/ │ │ │ │ │ │ ├── Algorithms/ │ │ │ │ │ │ │ ├── BaseCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── BaseCharIndexCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── BaseIndexCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── ClickingCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── CreateRemoveTimeTagCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── CreateRubyTagCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── CuttingCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── NavigateCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ ├── RecordingTimeTagCaretPositionAlgorithmTest.cs │ │ │ │ │ │ │ └── TypingCaretPositionAlgorithmTest.cs │ │ │ │ │ │ └── IndexCaretPositionTest.cs │ │ │ │ │ ├── Content/ │ │ │ │ │ │ ├── SingleLyricEditorTest.cs │ │ │ │ │ │ ├── TestSceneInteractableLyric.cs │ │ │ │ │ │ └── TestScenePreviewKaraokeSpriteText.cs │ │ │ │ │ ├── LyricEditorTest.cs │ │ │ │ │ ├── LyricEditorVerifierTest.cs │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ └── TestSceneLyricEditorDescriptionTextFlowContainer.cs │ │ │ │ │ ├── States/ │ │ │ │ │ │ ├── BaseLyricCaretStateTest.cs │ │ │ │ │ │ ├── LyricCaretStateActionTest.cs │ │ │ │ │ │ ├── LyricCaretStateMoveCaretTest.cs │ │ │ │ │ │ └── LyricCaretStateSwitchModeTest.cs │ │ │ │ │ └── TestSceneLyricEditorColourProvider.cs │ │ │ │ ├── TestSceneEditorMenuBar.cs │ │ │ │ ├── TestSceneKaraokeBeatmapEditor.cs │ │ │ │ ├── TestSceneLyricEditorScreen.cs │ │ │ │ ├── TestScenePageScreen.cs │ │ │ │ ├── TestSceneSingerScreen.cs │ │ │ │ └── TestSceneTranslationsScreen.cs │ │ │ ├── Components/ │ │ │ │ ├── Issues/ │ │ │ │ │ ├── TestSceneIssueIcon.cs │ │ │ │ │ └── TestSceneIssuesToolTip.cs │ │ │ │ └── Markdown/ │ │ │ │ └── TestSceneDescriptionTextFlowContainer.cs │ │ │ ├── GenericEditorScreenTestScene.cs │ │ │ ├── GenericEditorTestScene.cs │ │ │ ├── Import/ │ │ │ │ └── TestSceneLyricImporter.cs │ │ │ └── Stages/ │ │ │ └── Classic/ │ │ │ ├── ClassicStageScreenTestScene.cs │ │ │ ├── TestSceneClassicStageEditor.cs │ │ │ ├── TestSceneConfigScreen.cs │ │ │ └── TestSceneStageScreen.cs │ │ ├── ScreenTestScene.cs │ │ ├── Settings/ │ │ │ ├── Previews/ │ │ │ │ └── TestSceneMicrophoneSoundVisualizer.cs │ │ │ └── TestSceneKaraokeSettings.cs │ │ ├── Skin/ │ │ │ ├── KaraokeSkinEditorScreenTestScene.cs │ │ │ ├── TestSceneConfigScreen.cs │ │ │ ├── TestSceneKaraokeSkinEditor.cs │ │ │ └── TestSceneStyleScreen.cs │ │ ├── TestManageFontPreview.cs │ │ └── TestSceneGeneratorConfigPopover.cs │ ├── Skinning/ │ │ ├── Fonts/ │ │ │ ├── BitmapFontCompressorTest.cs │ │ │ └── BitmapFontImageGeneratorTest.cs │ │ ├── KaraokeBeatmapSkinDecodingTest.cs │ │ ├── KaraokeHitObjectTestScene.cs │ │ ├── KaraokeSkinDecodingTest.cs │ │ ├── KaraokeSkinnableColumnTestScene.cs │ │ ├── KaraokeSkinnableTestScene.cs │ │ ├── NotePlayfieldTestContainer.cs │ │ ├── TestSceneColumnBackground.cs │ │ ├── TestSceneDrawableJudgement.cs │ │ ├── TestSceneHitExplosion.cs │ │ ├── TestSceneLyric.cs │ │ ├── TestSceneNote.cs │ │ └── TestSceneNotePlayfield.cs │ ├── Stages/ │ │ ├── Drawables/ │ │ │ └── TestSceneDrawableStageBeatmapCoverInfo.cs │ │ └── Infos/ │ │ ├── Classic/ │ │ │ └── ClassicLyricTimingInfoTest.cs │ │ ├── Preview/ │ │ │ └── PreviewStageTimingCalculatorTest.cs │ │ └── StageElementCategoryTest.cs │ ├── TestSceneOsuGame.cs │ ├── UI/ │ │ ├── Position/ │ │ │ └── NotePositionCalculatorTest.cs │ │ ├── TestSceneControlLayer.cs │ │ ├── TestSceneKaraokePlayer.cs │ │ ├── TestSceneNotePlayfield.cs │ │ ├── TestSceneRulesetIcon.cs │ │ └── TestSceneScoringStatus.cs │ ├── Utils/ │ │ ├── BindablesUtilsTest.cs │ │ ├── CharUtilsTest.cs │ │ ├── ComparableUtilsTest.cs │ │ ├── CultureInfoUtilsTest.cs │ │ ├── EnumUtilsTest.cs │ │ ├── FontUsageUtilsTest.cs │ │ ├── FontUtilsTest.cs │ │ ├── JpStringUtilsTest.cs │ │ ├── RectangleFUtilsTest.cs │ │ ├── TextIndexUtilsTest.cs │ │ ├── TypeUtilsTest.cs │ │ └── VersionUtilsTest.cs │ ├── VisualTestRunner.cs │ └── osu.Game.Rulesets.Karaoke.Tests.csproj ├── osu.Game.Rulesets.Karaoke.sln ├── osu.Game.Rulesets.Karaoke.sln.DotSettings └── osu.licenseheader